Warning, /plasma/plasma-mobile/containments/homescreens/halcyon/package/contents/ui/HomeScreen.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.Controls as QQC2
0006 import QtQuick.Layouts
0007 import QtQuick.Window
0008
0009 import org.kde.plasma.plasmoid
0010 import org.kde.plasma.components 3.0 as PC3
0011 import org.kde.draganddrop as DragDrop
0012
0013 import org.kde.kirigami as Kirigami
0014 import org.kde.plasma.private.mobileshell.state as MobileShellState
0015 import org.kde.plasma.private.mobileshell.windowplugin as WindowPlugin
0016
0017 Item {
0018 id: root
0019
0020 required property real topMargin
0021 required property real bottomMargin
0022 required property real leftMargin
0023 required property real rightMargin
0024
0025 required property bool interactive
0026 required property var searchWidget
0027
0028 property alias page: swipeView.currentIndex
0029
0030 property bool settingsOpen: false
0031 property real settingsOpenFactor: settingsOpen ? 1 : 0
0032
0033 Behavior on settingsOpenFactor {
0034 NumberAnimation { duration: 200 }
0035 }
0036
0037 function triggerHomescreen() {
0038 swipeView.setCurrentIndex(0);
0039 swipeView.focusChild();
0040 favoritesView.closeFolder();
0041 favoritesView.goToBeginning();
0042 gridAppList.goToBeginning();
0043 }
0044
0045 function openConfigure() {
0046 settingsOpen = true;
0047 }
0048
0049 function openContainmentSettings() {
0050 Plasmoid.internalAction("configure").trigger();
0051 Plasmoid.editMode = false;
0052 }
0053
0054 Connections {
0055 target: WindowPlugin.WindowMaximizedTracker
0056
0057 function onShowingWindowChanged(){
0058 if (WindowPlugin.WindowMaximizedTracker.showingWindow) {
0059 swipeView.focusChild();
0060 }
0061 }
0062 }
0063
0064 SettingsScreen {
0065 id: settings
0066 bottomMargin: root.bottomMargin
0067 anchors.fill: parent
0068 opacity: root.settingsOpenFactor
0069 visible: opacity > 0
0070 homeScreen: root
0071 z: 1
0072 }
0073
0074 QQC2.SwipeView {
0075 id: swipeView
0076 opacity: Math.min(1 - root.settingsOpenFactor, 1 - searchWidget.openFactor)
0077 interactive: root.interactive
0078
0079 anchors.fill: parent
0080 anchors.topMargin: root.topMargin
0081 anchors.bottomMargin: root.bottomMargin
0082 anchors.leftMargin: root.leftMargin
0083 anchors.rightMargin: root.rightMargin
0084
0085 function focusChild() {
0086 currentItem.focusRequested();
0087 }
0088
0089 onCurrentIndexChanged: focusChild()
0090
0091 Item {
0092 height: swipeView.height
0093 width: swipeView.width
0094
0095 signal focusRequested()
0096
0097 // open wallpaper menu when held on click
0098 TapHandler {
0099 onPressedChanged: {
0100 if (pressed) {
0101 favoritesView.resetHighlight();
0102 }
0103 }
0104
0105 onLongPressed: root.openConfigure()
0106 }
0107
0108 FavoritesView {
0109 id: favoritesView
0110 anchors.fill: parent
0111 searchWidget: root.searchWidget
0112 interactive: root.interactive && swipeView.contentItem.contentX === 0
0113 onOpenConfigureRequested: root.openConfigure()
0114
0115 onPageForwardRequested: {
0116 swipeView.setCurrentIndex(1);
0117 swipeView.focusChild();
0118 resetHighlight();
0119 }
0120 }
0121 }
0122
0123 Item {
0124 width: swipeView.width
0125 height: swipeView.height
0126
0127 signal focusRequested()
0128
0129 GridAppList {
0130 id: gridAppList
0131
0132 anchors.fill: parent
0133
0134 property int horizontalMargin: Math.round(swipeView.width * 0.05)
0135 interactive: root.interactive
0136 leftMargin: horizontalMargin
0137 rightMargin: horizontalMargin
0138
0139 leftEdgeCallback: () => {
0140 swipeView.setCurrentIndex(0);
0141 swipeView.focusChild();
0142 currentIndex = -1;
0143 }
0144 }
0145 }
0146 }
0147 }