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

118 lines
3.2 KiB
QML

// SPDX-FileCopyrightText: 2022-2023 Devin Lin <devin@kde.org>
// SPDX-License-Identifier: LGPL-2.0-or-later
import QtQuick
import QtQuick.Controls as QQC2
import QtQuick.Layouts
import QtQuick.Window
import org.kde.plasma.plasmoid
import org.kde.plasma.core as PlasmaCore
import org.kde.plasma.extras as PlasmaExtras
import org.kde.plasma.components 3.0 as PC3
import org.kde.draganddrop as DragDrop
import org.kde.kirigami as Kirigami
import org.kde.plasma.private.mobileshell.state as MobileShellState
Item {
id: root
required property real topMargin
required property real bottomMargin
required property real leftMargin
required property real rightMargin
required property bool interactive
required property var searchWidget
property alias page: swipeView.currentIndex
function triggerHomescreen() {
swipeView.setCurrentIndex(0);
swipeView.focusChild();
favoritesView.closeFolder();
favoritesView.goToBeginning();
gridAppList.goToBeginning();
}
function openConfigure() {
if (!MobileShellState.Shell.taskSwitcherVisible) {
plasmoid.action("configure").trigger();
plasmoid.editMode = false;
}
}
Connections {
target: MobileShellState.HomeScreenControls
function onHomeScreenVisibleChanged(){
if (MobileShellState.HomeScreenControls.homeScreenVisible) {
swipeView.focusChild();
}
}
}
QQC2.SwipeView {
id: swipeView
opacity: 1 - searchWidget.openFactor
interactive: root.interactive
anchors.fill: parent
anchors.topMargin: root.topMargin
anchors.bottomMargin: root.bottomMargin
anchors.leftMargin: root.leftMargin
anchors.rightMargin: root.rightMargin
function focusChild() {
currentItem.childFocus = true;
}
onCurrentIndexChanged: focusChild()
Item {
height: swipeView.height
width: swipeView.width
property alias childFocus: favoritesView.focus
// open wallpaper menu when held on click
TapHandler {
onPressedChanged: {
if (pressed) {
favoritesView.resetHighlight();
}
}
onLongPressed: root.openConfigure()
}
FavoritesView {
id: favoritesView
anchors.fill: parent
searchWidget: root.searchWidget
interactive: root.interactive
onOpenConfigureRequested: root.openConfigure()
}
}
Item {
width: swipeView.width
height: swipeView.height
property alias childFocus: gridAppList.focus
GridAppList {
id: gridAppList
anchors.fill: parent
property int horizontalMargin: Math.round(swipeView.width * 0.05)
interactive: root.interactive
leftMargin: horizontalMargin
rightMargin: horizontalMargin
}
}
}
}