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

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

124 lines
3.6 KiB
QML
Raw Normal View History

/*
2021-03-01 20:03:25 +00:00
* SPDX-FileCopyrightText: 2019 Marco Martin <mart@kde.org>
* SPDX-FileCopyrightText: 2021 Devin Lin <devin@kde.org>
*
2021-03-01 20:03:25 +00:00
* SPDX-License-Identifier: LGPL-2.0-or-later
*/
import QtQuick 2.15
import QtQuick.Window 2.15
2015-02-25 18:38:34 +00:00
import QtQuick.Layouts 1.1
import org.kde.plasma.plasmoid 2.0
import org.kde.plasma.core 2.0 as PlasmaCore
2019-09-04 16:39:31 +00:00
import org.kde.plasma.components 3.0 as PlasmaComponents
2020-07-22 15:17:10 +00:00
import org.kde.plasma.private.mobileshell 1.0 as MobileShell
import org.kde.plasma.private.mobileshell.state 1.0 as MobileShellState
2023-03-06 19:13:48 +00:00
import org.kde.private.mobile.homescreen.folio 1.0 as Folio
import org.kde.plasma.private.mobileshell.windowplugin as WindowPlugin
2020-07-22 15:17:10 +00:00
MobileShell.HomeScreen {
id: root
2019-09-04 16:39:31 +00:00
width: 640
height: 480
onResetHomeScreenPosition: {
homescreen.homeScreenState.animateGoToPageIndex(0, PlasmaCore.Units.longDuration);
homescreen.homeScreenState.closeAppDrawer();
2015-06-20 23:08:46 +00:00
}
onHomeTriggered: {
2022-01-03 05:25:33 +00:00
searchWidget.close();
2021-10-18 03:50:59 +00:00
}
property bool componentComplete: false
2019-09-04 16:39:31 +00:00
Component.onCompleted: {
// ensure the gestures work immediately on load
forceActiveFocus();
}
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
// Always close action drawer
if (MobileShellState.ShellDBusClient.isActionDrawerOpen) {
MobileShellState.ShellDBusClient.closeActionDrawer();
}
if (!WindowPlugin.WindowUtil.isShowingDesktop && WindowPlugin.WindowMaximizedTracker.showingWindow
|| MobileShellState.ShellDBusClient.isActionDrawerOpen
|| searchWidget.isOpen
) {
// Always close the search widget as well
if (searchWidget.isOpen) {
searchWidget.close();
}
} else if (homescreen.homeScreenState.currentView === HomeScreenState.PageView) {
homescreen.homeScreenState.openAppDrawer();
} else {
homescreen.homeScreenState.closeAppDrawer();
}
2019-09-04 16:39:31 +00:00
}
contentItem: Item {
// homescreen component
HomeScreen {
id: homescreen
anchors.fill: parent
topMargin: root.topMargin
bottomMargin: root.bottomMargin
leftMargin: root.leftMargin
rightMargin: root.rightMargin
opacity: (1 - searchWidget.openFactor)
// make the homescreen not interactable when task switcher or startup feedback is on
interactive: !root.overlayShown
}
2022-01-03 05:25:33 +00:00
// search component
MobileShell.KRunnerWidget {
id: searchWidget
anchors.fill: parent
visible: openFactor > 0
topMargin: root.topMargin
bottomMargin: root.bottomMargin
leftMargin: root.leftMargin
rightMargin: root.rightMargin
}
2022-01-03 05:25:33 +00:00
}
Connections {
target: homescreen.homeScreenState
function onSwipeDownGestureBegin() {
searchWidget.startGesture();
}
function onSwipeDownGestureEnd() {
searchWidget.endGesture();
}
function onSwipeDownGestureOffset(offset) {
searchWidget.updateGestureOffset(-offset);
}
}
// listen to app launch errors
Connections {
target: Folio.ApplicationListModel
function onLaunchError(msg) {
MobileShellState.ShellDBusClient.closeAppLaunchAnimation()
}
}
}
2019-09-04 16:39:31 +00:00