Advance Wayland and KDE package bring-up
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -0,0 +1,141 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2017 Marco Martin <mart@kde.org>
|
||||
*
|
||||
* SPDX-License-Identifier: LGPL-2.0-or-later
|
||||
*/
|
||||
|
||||
import QtQuick
|
||||
import org.kde.kirigami as Kirigami
|
||||
|
||||
/**
|
||||
* @brief An item that provides the features of ApplicationWindow without the window itself.
|
||||
*
|
||||
* This allows embedding into a larger application.
|
||||
* It's based around the PageRow component that allows adding/removing of pages.
|
||||
*
|
||||
* Example usage:
|
||||
* @code
|
||||
* import org.kde.kirigami as Kirigami
|
||||
*
|
||||
* Kirigami.ApplicationItem {
|
||||
* globalDrawer: Kirigami.GlobalDrawer {
|
||||
* actions: [
|
||||
* Kirigami.Action {
|
||||
* text: "View"
|
||||
* icon.name: "view-list-icons"
|
||||
* Kirigami.Action {
|
||||
* text: "action 1"
|
||||
* }
|
||||
* Kirigami.Action {
|
||||
* text: "action 2"
|
||||
* }
|
||||
* Kirigami.Action {
|
||||
* text: "action 3"
|
||||
* }
|
||||
* },
|
||||
* Kirigami.Action {
|
||||
* text: "Sync"
|
||||
* icon.name: "folder-sync"
|
||||
* }
|
||||
* ]
|
||||
* }
|
||||
*
|
||||
* contextDrawer: Kirigami.ContextDrawer {
|
||||
* id: contextDrawer
|
||||
* }
|
||||
*
|
||||
* pageStack.initialPage: Kirigami.Page {
|
||||
* mainAction: Kirigami.Action {
|
||||
* icon.name: "edit"
|
||||
* onTriggered: {
|
||||
* // do stuff
|
||||
* }
|
||||
* }
|
||||
* contextualActions: [
|
||||
* Kirigami.Action {
|
||||
* icon.name: "edit"
|
||||
* text: "Action text"
|
||||
* onTriggered: {
|
||||
* // do stuff
|
||||
* }
|
||||
* },
|
||||
* Kirigami.Action {
|
||||
* icon.name: "edit"
|
||||
* text: "Action text"
|
||||
* onTriggered: {
|
||||
* // do stuff
|
||||
* }
|
||||
* }
|
||||
* ]
|
||||
* // ...
|
||||
* }
|
||||
* }
|
||||
* @endcode
|
||||
*/
|
||||
Kirigami.AbstractApplicationItem {
|
||||
id: root
|
||||
|
||||
/**
|
||||
* @brief This property holds the PageRow used to allocate the pages and
|
||||
* manage the transitions between them.
|
||||
*
|
||||
* It's using a PageRow, while having the same API as PageStack,
|
||||
* it positions the pages as adjacent columns, with as many columns
|
||||
* as can fit in the screen. An handheld device would usually have a single
|
||||
* fullscreen column, a tablet device would have many tiled columns.
|
||||
*
|
||||
* @property org::kde::kirigami::PageRow pageStack
|
||||
*/
|
||||
readonly property alias pageStack: __pageStack
|
||||
|
||||
// Redefines here as here we can know a pointer to PageRow
|
||||
wideScreen: width >= applicationWindow().pageStack.defaultColumnWidth * 2
|
||||
|
||||
Component.onCompleted: {
|
||||
pageStack.currentItem?.forceActiveFocus();
|
||||
}
|
||||
|
||||
Kirigami.PageRow {
|
||||
id: __pageStack
|
||||
anchors {
|
||||
fill: parent
|
||||
}
|
||||
|
||||
function goBack() {
|
||||
// NOTE: drawers are handling the back button by themselves
|
||||
const backEvent = {accepted: false}
|
||||
if (root.pageStack.currentIndex >= 1) {
|
||||
root.pageStack.currentItem.backRequested(backEvent);
|
||||
if (!backEvent.accepted) {
|
||||
root.pageStack.flickBack();
|
||||
backEvent.accepted = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (Kirigami.Settings.isMobile && !backEvent.accepted && Qt.platform.os !== "ios") {
|
||||
Qt.quit();
|
||||
}
|
||||
}
|
||||
function goForward() {
|
||||
root.pageStack.currentIndex = Math.min(root.pageStack.depth - 1, root.pageStack.currentIndex + 1);
|
||||
}
|
||||
Keys.onBackPressed: event => {
|
||||
goBack();
|
||||
event.accepted = true;
|
||||
}
|
||||
Shortcut {
|
||||
sequences: [StandardKey.Forward]
|
||||
onActivated: __pageStack.goForward();
|
||||
}
|
||||
Shortcut {
|
||||
sequences: [StandardKey.Back]
|
||||
onActivated: __pageStack.goBack();
|
||||
}
|
||||
|
||||
background: Rectangle {
|
||||
color: root.color
|
||||
}
|
||||
|
||||
focus: true
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user