Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
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// Qt-Security score:significant reason:default
4
5/*
6 This file was originally created by qdbusxml2cpp version 0.8
7 Command line was:
8 qdbusxml2cpp -a dbusmenu ../../3rdparty/dbus-ifaces/dbus-menu.xml
9
10 However it is maintained manually.
11*/
12
13#include <QMetaObject>
14#include <QByteArray>
15#include <QList>
16#include <QMap>
17#include <QString>
18#include <QStringList>
19#include <QVariant>
20#include <QLocale>
21
22#include <private/qdbusmenuadaptor_p.h>
23#include <private/qdbusplatformmenu_p.h>
24
25QT_BEGIN_NAMESPACE
26
27using namespace Qt::StringLiterals;
28
29QDBusMenuAdaptor::QDBusMenuAdaptor(QDBusPlatformMenu *topLevelMenu)
30 : QDBusAbstractAdaptor(topLevelMenu)
31 , m_topLevelMenu(topLevelMenu)
32{
33 setAutoRelaySignals(true);
34}
35
36QDBusMenuAdaptor::~QDBusMenuAdaptor()
37{
38}
39
40QString QDBusMenuAdaptor::status() const
41{
42 qCDebug(qLcMenu);
43 return "normal"_L1;
44}
45
46QString QDBusMenuAdaptor::textDirection() const
47{
48 return QLocale().textDirection() == Qt::RightToLeft ? "rtl"_L1 : "ltr"_L1;
49}
50
51uint QDBusMenuAdaptor::version() const
52{
53 return 4;
54}
55
56bool QDBusMenuAdaptor::AboutToShow(int id)
57{
58 qCDebug(qLcMenu) << id;
59 if (id == 0) {
60 emit m_topLevelMenu->aboutToShow();
61 } else {
62 QDBusPlatformMenuItem *item = QDBusPlatformMenuItem::byId(id);
63 if (item) {
64 const QDBusPlatformMenu *menu = static_cast<const QDBusPlatformMenu *>(item->menu());
65 if (menu)
66 emit const_cast<QDBusPlatformMenu *>(menu)->aboutToShow();
67 }
68 }
69 return false; // updateNeeded (we don't know that, so false)
70}
71
72QList<int> QDBusMenuAdaptor::AboutToShowGroup(const QList<int> &ids, QList<int> &idErrors)
73{
74 qCDebug(qLcMenu) << ids;
75 Q_UNUSED(idErrors);
76 idErrors.clear();
77 for (int id : ids)
78 AboutToShow(id);
79 return QList<int>(); // updatesNeeded
80}
81
82void QDBusMenuAdaptor::Event(int id, const QString &eventId, const QDBusVariant &data, uint timestamp)
83{
84 Q_UNUSED(data);
85 Q_UNUSED(timestamp);
86 QDBusPlatformMenuItem *item = QDBusPlatformMenuItem::byId(id);
87 qCDebug(qLcMenu) << id << (item ? item->text() : ""_L1) << eventId;
88 if (item && eventId == "clicked"_L1)
89 item->trigger();
90 if (item && eventId == "hovered"_L1)
91 emit item->hovered();
92 if (eventId == "closed"_L1) {
93 // There is no explicit AboutToHide method, so map closed event to aboutToHide method
94 const QDBusPlatformMenu *menu = nullptr;
95 if (item)
96 menu = static_cast<const QDBusPlatformMenu *>(item->menu());
97 else if (id == 0)
98 menu = m_topLevelMenu;
99 if (menu)
100 emit const_cast<QDBusPlatformMenu *>(menu)->aboutToHide();
101 }
102}
103
104QList<int> QDBusMenuAdaptor::EventGroup(const QDBusMenuEventList &events)
105{
106 for (const QDBusMenuEvent &ev : events)
107 Event(ev.m_id, ev.m_eventId, ev.m_data, ev.m_timestamp);
108 return QList<int>(); // idErrors
109}
110
111QDBusMenuItemList QDBusMenuAdaptor::GetGroupProperties(const QList<int> &ids, const QStringList &propertyNames)
112{
113 qCDebug(qLcMenu) << ids << propertyNames << "=>" << QDBusMenuItem::items(ids, propertyNames);
114 return QDBusMenuItem::items(ids, propertyNames);
115}
116
117uint QDBusMenuAdaptor::GetLayout(int parentId, int recursionDepth, const QStringList &propertyNames, QDBusMenuLayoutItem &layout)
118{
119 uint ret = layout.populate(parentId, recursionDepth, propertyNames, m_topLevelMenu);
120 qCDebug(qLcMenu) << parentId << "depth" << recursionDepth << propertyNames << layout.m_id << layout.m_properties << "revision" << ret << layout;
121 return ret;
122}
123
124QDBusVariant QDBusMenuAdaptor::GetProperty(int id, const QString &name)
125{
126 qCDebug(qLcMenu) << id << name;
127 // handle method call com.canonical.dbusmenu.GetProperty
128 QDBusVariant value;
129 return value;
130}
131
132QT_END_NAMESPACE
133
134#include "moc_qdbusmenuadaptor_p.cpp"