summaryrefslogtreecommitdiffstats
path: root/src/platformsupport/dbusmenu/qdbusmenutypes.cpp
diff options
context:
space:
mode:
authorShawn Rutledge <shawn.rutledge@digia.com>2015-03-25 13:33:39 +0100
committerFrederik Gladhorn <frederik.gladhorn@theqtcompany.com>2015-03-30 22:01:16 +0000
commit509f77cca28aa3edea5523c5869bae4412ed2ccc (patch)
tree0a2c30d7d95e109659b26ca8c305c96e3a7e6722 /src/platformsupport/dbusmenu/qdbusmenutypes.cpp
parentffc74e6d7031015b18b4b9a695b13e25a325979a (diff)
D-Bus tray icon menus: support submenus
In this case GetLayout will be called with the D-Bus menu ID of the menu item which contains the submenu. Task-number: QTBUG-45191 Change-Id: Ia8108272910eac10f040db5865ec4e070da80edb Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
Diffstat (limited to 'src/platformsupport/dbusmenu/qdbusmenutypes.cpp')
-rw-r--r--src/platformsupport/dbusmenu/qdbusmenutypes.cpp37
1 files changed, 21 insertions, 16 deletions
diff --git a/src/platformsupport/dbusmenu/qdbusmenutypes.cpp b/src/platformsupport/dbusmenu/qdbusmenutypes.cpp
index cacc9817de..73957eacfe 100644
--- a/src/platformsupport/dbusmenu/qdbusmenutypes.cpp
+++ b/src/platformsupport/dbusmenu/qdbusmenutypes.cpp
@@ -87,26 +87,32 @@ uint QDBusMenuLayoutItem::populate(int id, int depth, const QStringList &propert
m_properties.insert(QLatin1String("children-display"), QLatin1String("submenu"));
Q_FOREACH (const QDBusPlatformMenu *menu, QDBusPlatformMenu::topLevelMenus()) {
if (menu)
- Q_FOREACH (const QDBusPlatformMenuItem *item, menu->items()) {
- QDBusMenuLayoutItem child;
- child.populate(item, depth - 1, propertyNames);
- m_children << child;
- }
+ populate(menu, depth, propertyNames);
}
- } else {
- // TODO insert menu properties (name-value pairs)
+ return 1; // revision
}
- QDBusPlatformMenu *menu = QDBusPlatformMenu::byId(id);
- if (depth != 0 && menu) {
- Q_FOREACH (QDBusPlatformMenuItem *item, menu->items()) {
- QDBusMenuLayoutItem child;
- child.populate(item, depth - 1, propertyNames);
- m_children << child;
- }
+
+ const QDBusPlatformMenu *menu = QDBusPlatformMenu::byId(id);
+ if (!menu) {
+ QDBusPlatformMenuItem *item = QDBusPlatformMenuItem::byId(id);
+ if (item)
+ menu = static_cast<const QDBusPlatformMenu *>(item->menu());
}
+ if (depth != 0 && menu)
+ populate(menu, depth, propertyNames);
if (menu)
return menu->revision();
- return 1;
+
+ return 1; // revision
+}
+
+void QDBusMenuLayoutItem::populate(const QDBusPlatformMenu *menu, int depth, const QStringList &propertyNames)
+{
+ Q_FOREACH (QDBusPlatformMenuItem *item, menu->items()) {
+ QDBusMenuLayoutItem child;
+ child.populate(item, depth - 1, propertyNames);
+ m_children << child;
+ }
}
void QDBusMenuLayoutItem::populate(const QDBusPlatformMenuItem *item, int depth, const QStringList &propertyNames)
@@ -116,7 +122,6 @@ void QDBusMenuLayoutItem::populate(const QDBusPlatformMenuItem *item, int depth,
m_id = item->dbusID();
QDBusMenuItem proxy(item);
m_properties = proxy.m_properties;
- // TODO populate m_children
}
const QDBusArgument &operator<<(QDBusArgument &arg, const QDBusMenuLayoutItem &item)