aboutsummaryrefslogtreecommitdiff
path: root/examples/ayatanaqmlmenumodel.qml
diff options
context:
space:
mode:
authorMike Gabriel <mike.gabriel@das-netzwerkteam.de>2021-11-17 13:18:35 +0100
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2021-11-17 13:18:35 +0100
commit62a8b8b6886c3b638e309ae3dd28390b1dda83f9 (patch)
tree92ca3bc27908d3fc03703d82987a5bfe25b74ae4 /examples/ayatanaqmlmenumodel.qml
parent8089cd5052ff617c05ef981b24881d4b89b5436c (diff)
parentf4e75e132debc82f017ebb95c38b560cdd82d52c (diff)
downloadqmenumodel-62a8b8b6886c3b638e309ae3dd28390b1dda83f9.tar.gz
qmenumodel-62a8b8b6886c3b638e309ae3dd28390b1dda83f9.tar.bz2
qmenumodel-62a8b8b6886c3b638e309ae3dd28390b1dda83f9.zip
Merge branch 'tari01-pr/rename-unity-symbols'
Attributes GH PR #8: https://github.com/AyatanaIndicators/qmenumodel/pull/8
Diffstat (limited to 'examples/ayatanaqmlmenumodel.qml')
-rw-r--r--examples/ayatanaqmlmenumodel.qml118
1 files changed, 118 insertions, 0 deletions
diff --git a/examples/ayatanaqmlmenumodel.qml b/examples/ayatanaqmlmenumodel.qml
new file mode 100644
index 0000000..00984f0
--- /dev/null
+++ b/examples/ayatanaqmlmenumodel.qml
@@ -0,0 +1,118 @@
+/*
+ * Copyright 2013 Canonical Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Authors: Lars Uebernickel <lars.uebernickel@canonical.com>
+ */
+
+import QtQuick 2.0
+import QMenuModel 0.1
+
+Item {
+ width: 400;
+ height: 500;
+
+ AyatanaMenuModel {
+ id: menu
+ busName: "org.ayatana.indicator.sound"
+ actions: { "indicator": "/org/ayatana/indicator/sound" }
+ menuObjectPath: "/org/ayatana/indicator/sound/desktop"
+ }
+
+ ListView {
+ id: listview
+ anchors.fill: parent
+ anchors.margins: 10
+ spacing: 3
+ model: menu
+
+ delegate: Loader {
+ sourceComponent: {
+ if (isSeparator) {
+ return separator;
+ }
+ else if (type == "org.ayatana.indicator.slider") {
+ listview.model.loadExtendedAttributes(index, {'min-icon': 'icon',
+ 'max-icon': 'icon'});
+ return slider;
+ }
+ else {
+ return menuitem;
+ }
+ }
+
+ Component {
+ id: separator
+ Rectangle {
+ width: listview.width
+ height: 4
+ color: "blue"
+ }
+ }
+
+ Component {
+ id: slider
+ Rectangle {
+ width: listview.width
+ color: "#ddd"
+ height: 40
+ Row {
+ anchors.fill: parent
+ Image {
+ source: ext.minIcon
+ }
+ Text {
+ text: model.actionState
+ }
+ Image {
+ source: ext.maxIcon
+ }
+ }
+ }
+ }
+
+ Component {
+ id: menuitem
+ Rectangle {
+ width: listview.width
+ height: 40
+ color: "#ddd"
+ Row {
+ anchors.fill: parent
+ anchors.margins: 5
+ Image {
+ source: icon
+ }
+ Text {
+ height: parent.height
+ verticalAlignment: Text.AlignVCenter
+ color: sensitive ? "black" : "#aaa";
+ text: label
+ }
+ }
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ var submenu = listview.model.submenu(index);
+ if (submenu)
+ listview.model = submenu;
+ else
+ action.activate();
+ }
+ }
+ }
+ }
+ }
+ }
+}