Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qdbusmenuadaptor.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4/*
5 This file was originally created by qdbusxml2cpp version 0.8
6 Command line was:
7 qdbusxml2cpp -a dbusmenu ../../3rdparty/dbus-ifaces/dbus-menu.xml
8
9 However it is maintained manually.
10*/
11
12#include <QMetaObject>
13#include <QByteArray>
14#include <QList>
15#include <QMap>
16#include <QString>
17#include <QStringList>
18#include <QVariant>
19#include <QLocale>
20
21#include <private/qdbusmenuadaptor_p.h>
22#include <private/qdbusplatformmenu_p.h>
23
25
26using namespace Qt::StringLiterals;
27
28QDBusMenuAdaptor::QDBusMenuAdaptor(QDBusPlatformMenu *topLevelMenu)
29 : QDBusAbstractAdaptor(topLevelMenu)
30 , m_topLevelMenu(topLevelMenu)
31{
32 setAutoRelaySignals(true);
33}
34
38
40{
41 qCDebug(qLcMenu);
42 return "normal"_L1;
43}
44
46{
47 return QLocale().textDirection() == Qt::RightToLeft ? "rtl"_L1 : "ltr"_L1;
48}
49
51{
52 return 4;
53}
54
56{
57 qCDebug(qLcMenu) << id;
58 if (id == 0) {
59 emit m_topLevelMenu->aboutToShow();
60 } else {
62 if (item) {
63 const QDBusPlatformMenu *menu = static_cast<const QDBusPlatformMenu *>(item->menu());
64 if (menu)
65 emit const_cast<QDBusPlatformMenu *>(menu)->aboutToShow();
66 }
67 }
68 return false; // updateNeeded (we don't know that, so false)
69}
70
71QList<int> QDBusMenuAdaptor::AboutToShowGroup(const QList<int> &ids, QList<int> &idErrors)
72{
73 qCDebug(qLcMenu) << ids;
74 Q_UNUSED(idErrors);
75 idErrors.clear();
76 for (int id : ids)
77 AboutToShow(id);
78 return QList<int>(); // updatesNeeded
79}
80
81void QDBusMenuAdaptor::Event(int id, const QString &eventId, const QDBusVariant &data, uint timestamp)
82{
84 Q_UNUSED(timestamp);
86 qCDebug(qLcMenu) << id << (item ? item->text() : ""_L1) << eventId;
87 if (item && eventId == "clicked"_L1)
88 item->trigger();
89 if (item && eventId == "hovered"_L1)
90 emit item->hovered();
91 if (eventId == "closed"_L1) {
92 // There is no explicit AboutToHide method, so map closed event to aboutToHide method
93 const QDBusPlatformMenu *menu = nullptr;
94 if (item)
95 menu = static_cast<const QDBusPlatformMenu *>(item->menu());
96 else if (id == 0)
97 menu = m_topLevelMenu;
98 if (menu)
99 emit const_cast<QDBusPlatformMenu *>(menu)->aboutToHide();
100 }
101}
102
104{
105 for (const QDBusMenuEvent &ev : events)
106 Event(ev.m_id, ev.m_eventId, ev.m_data, ev.m_timestamp);
107 return QList<int>(); // idErrors
108}
109
111{
112 qCDebug(qLcMenu) << ids << propertyNames << "=>" << QDBusMenuItem::items(ids, propertyNames);
113 return QDBusMenuItem::items(ids, propertyNames);
114}
115
116uint QDBusMenuAdaptor::GetLayout(int parentId, int recursionDepth, const QStringList &propertyNames, QDBusMenuLayoutItem &layout)
117{
118 uint ret = layout.populate(parentId, recursionDepth, propertyNames, m_topLevelMenu);
119 qCDebug(qLcMenu) << parentId << "depth" << recursionDepth << propertyNames << layout.m_id << layout.m_properties << "revision" << ret << layout;
120 return ret;
121}
122
124{
125 qCDebug(qLcMenu) << id << name;
126 // handle method call com.canonical.dbusmenu.GetProperty
128 return value;
129}
130
132
133#include "moc_qdbusmenuadaptor_p.cpp"
QString textDirection() const
QDBusMenuItemList GetGroupProperties(const QList< int > &ids, const QStringList &propertyNames)
uint GetLayout(int parentId, int recursionDepth, const QStringList &propertyNames, QDBusMenuLayoutItem &layout)
bool AboutToShow(int id)
void Event(int id, const QString &eventId, const QDBusVariant &data, uint timestamp)
QDBusVariant GetProperty(int id, const QString &name)
QList< int > EventGroup(const QDBusMenuEventList &events)
QList< int > AboutToShowGroup(const QList< int > &ids, QList< int > &idErrors)
virtual Q_CLASSINFO("D-Bus Introspection", "" " <interface name=\"com.canonical.dbusmenu\">\n" " <property access=\"read\" type=\"u\" name=\"Version\">\n" " </property>\n" " <property access=\"read\" type=\"s\" name=\"TextDirection\">\n" " </property>\n" " <property access=\"read\" type=\"s\" name=\"Status\">\n" " </property>\n" " <property access=\"read\" type=\"as\" name=\"IconThemePath\">\n" " </property>\n" " <method name=\"GetLayout\">\n" " <annotation value=\"QDBusMenuLayoutItem\" name=\"org.qtproject.QtDBus.QtTypeName.Out1\"/>\n" " <arg direction=\"in\" type=\"i\" name=\"parentId\"/>\n" " <arg direction=\"in\" type=\"i\" name=\"recursionDepth\"/>\n" " <arg direction=\"in\" type=\"as\" name=\"propertyNames\"/>\n" " <arg direction=\"out\" type=\"u\" name=\"revision\"/>\n" " <arg direction=\"out\" type=\"(ia{sv}av)\" name=\"layout\"/>\n" " </method>\n" " <method name=\"GetGroupProperties\">\n" " <annotation value=\"QList&lt;int&gt;\" name=\"org.qtproject.QtDBus.QtTypeName.In0\"/>\n" " <annotation value=\"QDBusMenuItemList\" name=\"org.qtproject.QtDBus.QtTypeName.Out0\"/>\n" " <arg direction=\"in\" type=\"ai\" name=\"ids\"/>\n" " <arg direction=\"in\" type=\"as\" name=\"propertyNames\"/>\n" " <arg direction=\"out\" type=\"a(ia{sv})\" name=\"properties\"/>\n" " </method>\n" " <method name=\"GetProperty\">\n" " <arg direction=\"in\" type=\"i\" name=\"id\"/>\n" " <arg direction=\"in\" type=\"s\" name=\"name\"/>\n" " <arg direction=\"out\" type=\"v\" name=\"value\"/>\n" " </method>\n" " <method name=\"Event\">\n" " <arg direction=\"in\" type=\"i\" name=\"id\"/>\n" " <arg direction=\"in\" type=\"s\" name=\"eventId\"/>\n" " <arg direction=\"in\" type=\"v\" name=\"data\"/>\n" " <arg direction=\"in\" type=\"u\" name=\"timestamp\"/>\n" " </method>\n" " <method name=\"EventGroup\">\n" " <annotation value=\"QList&lt;QDBusMenuEvent&gt;\" name=\"org.qtproject.QtDBus.QtTypeName.In0\"/>\n" " <annotation value=\"QList&lt;int&gt;\" name=\"org.qtproject.QtDBus.QtTypeName.Out0\"/>\n" " <arg direction=\"in\" type=\"a(isvu)\" name=\"events\"/>\n" " <arg direction=\"out\" type=\"ai\" name=\"idErrors\"/>\n" " </method>\n" " <method name=\"AboutToShow\">\n" " <arg direction=\"in\" type=\"i\" name=\"id\"/>\n" " <arg direction=\"out\" type=\"b\" name=\"needUpdate\"/>\n" " </method>\n" " <method name=\"AboutToShowGroup\">\n" " <annotation value=\"QList&lt;int&gt;\" name=\"org.qtproject.QtDBus.QtTypeName.In0\"/>\n" " <annotation value=\"QList&lt;int&gt;\" name=\"org.qtproject.QtDBus.QtTypeName.Out0\"/>\n" " <annotation value=\"QList&lt;int&gt;\" name=\"org.qtproject.QtDBus.QtTypeName.Out1\"/>\n" " <arg direction=\"in\" type=\"ai\" name=\"ids\"/>\n" " <arg direction=\"out\" type=\"ai\" name=\"updatesNeeded\"/>\n" " <arg direction=\"out\" type=\"ai\" name=\"idErrors\"/>\n" " </method>\n" " <signal name=\"ItemsPropertiesUpdated\">\n" " <annotation value=\"QDBusMenuItemList\" name=\"org.qtproject.QtDBus.QtTypeName.In0\"/>\n" " <annotation value=\"QDBusMenuItemKeysList\" name=\"org.qtproject.QtDBus.QtTypeName.In1\"/>\n" " <arg direction=\"out\" type=\"a(ia{sv})\" name=\"updatedProps\"/>\n" " <arg direction=\"out\" type=\"a(ias)\" name=\"removedProps\"/>\n" " </signal>\n" " <signal name=\"LayoutUpdated\">\n" " <arg direction=\"out\" type=\"u\" name=\"revision\"/>\n" " <arg direction=\"out\" type=\"i\" name=\"parent\"/>\n" " </signal>\n" " <signal name=\"ItemActivationRequested\">\n" " <arg direction=\"out\" type=\"i\" name=\"id\"/>\n" " <arg direction=\"out\" type=\"u\" name=\"timestamp\"/>\n" " </signal>\n" " </interface>\n" "") public ~QDBusMenuAdaptor()
QString status() const
static QDBusMenuItemList items(const QList< int > &ids, const QStringList &propertyNames)
static QDBusPlatformMenuItem * byId(int id)
\inmodule QtDBus
Definition qlist.h:75
Qt::LayoutDirection textDirection() const
Definition qlocale.cpp:3344
void aboutToShow()
\inmodule QtCore
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
Combined button and popup list for selecting options.
@ RightToLeft
QList< QDBusMenuItem > QDBusMenuItemList
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
#define qCDebug(category,...)
return ret
GLenum GLenum GLsizei const GLuint * ids
GLenum GLuint id
[7]
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLuint name
#define emit
#define Q_UNUSED(x)
unsigned int uint
Definition qtypes.h:34
QVBoxLayout * layout
QGraphicsItem * item
QMenu menu
[5]