shift-shell/containments/homescreens/halcyon/package/contents/ui/main.qml

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

109 lines
3.2 KiB
QML
Raw Normal View History

2023-03-05 02:40:06 +00:00
// SPDX-FileCopyrightText: 2022-2023 Devin Lin <devin@kde.org>
// SPDX-License-Identifier: LGPL-2.0-or-later
2023-03-05 02:40:06 +00:00
import QtQuick
import QtQuick.Window
import QtQuick.Layouts
2023-03-05 02:40:06 +00:00
import org.kde.plasma.plasmoid
import org.kde.plasma.core as PlasmaCore
import org.kde.plasma.components 3.0 as PlasmaComponents
2023-03-05 02:40:06 +00:00
import org.kde.plasma.private.mobileshell as MobileShell
import org.kde.plasma.private.mobileshell.state as MobileShellState
import org.kde.private.mobile.homescreen.halcyon as Halcyon
MobileShell.HomeScreen {
id: root
onResetHomeScreenPosition: {
homescreen.triggerHomescreen();
}
onHomeTriggered: {
search.close();
}
Component.onCompleted: {
2022-06-18 19:42:29 +00:00
Halcyon.ApplicationListModel.loadApplications();
forceActiveFocus();
}
Rectangle {
id: darkenBackground
color: root.overlayShown ? 'transparent' : (homescreen.page == 1 ? Qt.rgba(0, 0, 0, 0.7) : Qt.rgba(0, 0, 0, 0.2))
anchors.fill: parent
z: -1
Behavior on color {
ColorAnimation { duration: PlasmaCore.Units.longDuration }
}
}
Plasmoid.onActivated: {
// there's a couple of steps:
// - minimize windows (only if we are in an app)
// - open app drawer
// - close app drawer and, if necessary, restore windows
if (!plasmoid.nativeInterface.showingDesktop && !MobileShellState.Shell.homeScreenVisible
|| MobileShellState.Shell.actionDrawerVisible
|| search.isOpen
) {
// Always close action drawer
if (MobileShellState.Shell.actionDrawerVisible) {
MobileShellState.Shell.closeActionDrawer();
}
// Always close the search widget as well
if (search.isOpen) {
search.close();
}
plasmoid.nativeInterface.showingDesktop = true;
} else if (homescreen.page == 0) {
homescreen.page = 1;
} else {
plasmoid.nativeInterface.showingDesktop = false;
homescreen.page = 0;
}
}
// homescreen component
contentItem: Item {
HomeScreen {
id: homescreen
anchors.fill: parent
topMargin: root.topMargin
bottomMargin: root.bottomMargin
leftMargin: root.leftMargin
rightMargin: root.rightMargin
// make the homescreen not interactable when task switcher or startup feedback is on
interactive: !root.overlayShown
searchWidget: search
}
// search component
MobileShell.KRunnerWidget {
id: search
anchors.fill: parent
visible: openFactor > 0
topMargin: root.topMargin
bottomMargin: root.bottomMargin
leftMargin: root.leftMargin
rightMargin: root.rightMargin
// close search component when task switcher is shown or hidden
Connections {
target: MobileShellState.HomeScreenControls.taskSwitcher
function onVisibleChanged() {
2022-06-18 19:42:29 +00:00
search.close();
}
}
}
}
2023-03-03 06:11:51 +00:00
}