Files
RedBear-OS/local/recipes/kde/kirigami/source/examples/simpleexamples/AbstractApplicationWindow.qml
T
2026-04-14 10:51:06 +01:00

150 lines
4.2 KiB
QML

/*
* SPDX-FileCopyrightText: 2016 Marco Martin <mart@kde.org>
*
* SPDX-License-Identifier: LGPL-2.0-or-later
*/
import QtQuick
import QtQuick.Layouts
import QtQuick.Controls as QQC2
import org.kde.kirigami as Kirigami
Kirigami.AbstractApplicationWindow {
id: root
width: 500
height: 800
visible: true
globalDrawer: Kirigami.GlobalDrawer {
title: "Widget gallery"
titleIcon: "applications-graphics"
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"
Kirigami.Action {
text: "action 4"
}
Kirigami.Action {
text: "action 5"
}
},
Kirigami.Action {
text: "Checkable"
icon.name: "view-list-details"
checkable: true
checked: false
onTriggered: {
print("Action checked:" + checked)
}
},
Kirigami.Action {
text: "Settings"
icon.name: "configure"
checkable: true
//Need to do this, otherwise it breaks the bindings
property bool current: pageStack.currentItem?.objectName === "settingsPage" ?? false
onCurrentChanged: {
checked = current;
}
onTriggered: {
pageStack.push(settingsComponent);
}
}
]
QQC2.CheckBox {
checked: true
text: "Option 1"
}
QQC2.CheckBox {
text: "Option 2"
}
QQC2.CheckBox {
text: "Option 3"
}
QQC2.Slider {
Layout.fillWidth: true
value: 0.5
}
}
contextDrawer: Kirigami.ContextDrawer {
id: contextDrawer
}
pageStack: QQC2.StackView {
anchors.fill: parent
property int currentIndex: 0
focus: true
onCurrentIndexChanged: {
if (depth > currentIndex + 1) {
pop(get(currentIndex));
}
}
onDepthChanged: {
currentIndex = depth-1;
}
initialItem: mainPageComponent
Keys.onReleased: event => {
if (event.key === Qt.Key_Back ||
(event.key === Qt.Key_Left && (event.modifiers & Qt.AltModifier))) {
event.accepted = true;
if (root.contextDrawer && root.contextDrawer.drawerOpen) {
root.contextDrawer.close();
} else if (root.globalDrawer && root.globalDrawer.drawerOpen) {
root.globalDrawer.close();
} else {
var backEvent = {accepted: false}
if (root.pageStack.currentIndex >= 1) {
root.pageStack.currentItem.backRequested(backEvent);
if (!backEvent.accepted) {
if (root.pageStack.depth > 1) {
root.pageStack.currentIndex = Math.max(0, root.pageStack.currentIndex - 1);
backEvent.accepted = true;
} else {
Qt.quit();
}
}
}
if (!backEvent.accepted) {
Qt.quit();
}
}
}
}
}
Component {
id: settingsComponent
Kirigami.Page {
title: "Settings"
objectName: "settingsPage"
Rectangle {
anchors.fill: parent
}
}
}
//Main app content
Component {
id: mainPageComponent
MultipleColumnsGallery {}
}
}