Warning, /plasma/plasma-mobile/containments/homescreens/halcyon/package/contents/ui/main.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-FileCopyrightText: 2022-2023 Devin Lin <devin@kde.org>
0002 // SPDX-License-Identifier: LGPL-2.0-or-later
0003
0004 import QtQuick
0005 import QtQuick.Window
0006 import QtQuick.Layouts
0007
0008 import org.kde.plasma.plasmoid
0009 import org.kde.plasma.components 3.0 as PlasmaComponents
0010 import org.kde.kirigami 2.20 as Kirigami
0011
0012 import org.kde.plasma.private.mobileshell as MobileShell
0013 import org.kde.plasma.private.mobileshell.state as MobileShellState
0014 import org.kde.private.mobile.homescreen.halcyon as Halcyon
0015 import org.kde.plasma.private.mobileshell.windowplugin as WindowPlugin
0016
0017 ContainmentItem {
0018 id: root
0019
0020 Component.onCompleted: {
0021 Halcyon.ApplicationListModel.loadApplications();
0022 Halcyon.PinnedModel.applet = root.plasmoid;
0023 forceActiveFocus();
0024 }
0025
0026 Plasmoid.onActivated: {
0027 // there's a couple of steps:
0028 // - minimize windows (only if we are in an app)
0029 // - open app drawer
0030 // - close app drawer and, if necessary, restore windows
0031
0032 // Always close action drawer
0033 if (MobileShellState.ShellDBusClient.isActionDrawerOpen) {
0034 MobileShellState.ShellDBusClient.closeActionDrawer();
0035 }
0036
0037 if (!WindowPlugin.WindowUtil.isShowingDesktop && WindowPlugin.WindowMaximizedTracker.showingWindow || search.isOpen) {
0038 // Always close the search widget as well
0039 if (search.isOpen) {
0040 search.close();
0041 }
0042
0043 halcyonHomeScreen.page = 0;
0044
0045 WindowPlugin.WindowUtil.isShowingDesktop = true;
0046 } else if (halcyonHomeScreen.page == 0) {
0047 halcyonHomeScreen.page = 1;
0048 } else {
0049 WindowPlugin.WindowUtil.isShowingDesktop = false;
0050 halcyonHomeScreen.page = 0;
0051 }
0052 }
0053
0054 Rectangle {
0055 id: darkenBackground
0056 color: homeScreen.overlayShown ? 'transparent' : (halcyonHomeScreen.page == 1 ? Qt.rgba(0, 0, 0, 0.7) : Qt.rgba(0, 0, 0, 0.2))
0057 anchors.fill: parent
0058 z: -1
0059 Behavior on color {
0060 ColorAnimation { duration: Kirigami.Units.longDuration }
0061 }
0062 }
0063
0064 Rectangle {
0065 id: darkenSettingsBackground
0066 color: Qt.rgba(0, 0, 0, 0.7)
0067 opacity: halcyonHomeScreen.settingsOpenFactor
0068 anchors.fill: parent
0069 z: -1
0070 Behavior on color {
0071 ColorAnimation { duration: Kirigami.Units.longDuration }
0072 }
0073 }
0074
0075 MobileShell.HomeScreen {
0076 id: homeScreen
0077 anchors.fill: parent
0078 plasmoidItem: root
0079
0080 onResetHomeScreenPosition: {
0081 halcyonHomeScreen.triggerHomescreen();
0082 }
0083
0084 onHomeTriggered: {
0085 search.close();
0086 }
0087
0088 // homescreen component
0089 contentItem: Item {
0090 HomeScreen {
0091 id: halcyonHomeScreen
0092 anchors.fill: parent
0093
0094 topMargin: homeScreen.topMargin
0095 bottomMargin: homeScreen.bottomMargin
0096 leftMargin: homeScreen.leftMargin
0097 rightMargin: homeScreen.rightMargin
0098
0099 // make the homescreen not interactable when task switcher or startup feedback is on
0100 interactive: !homeScreen.overlayShown
0101 searchWidget: search
0102 }
0103
0104 // search component
0105 MobileShell.KRunnerWidget {
0106 id: search
0107 anchors.fill: parent
0108 visible: openFactor > 0
0109
0110 onActionTriggered: search.close()
0111
0112 topMargin: homeScreen.topMargin
0113 bottomMargin: homeScreen.bottomMargin
0114 leftMargin: homeScreen.leftMargin
0115 rightMargin: homeScreen.rightMargin
0116 }
0117 }
0118 }
0119 }
0120
0121