dbus/dbusmenu: add DBusMenu support
This commit is contained in:
parent
7cc1b54587
commit
61061644a5
13 changed files with 984 additions and 11 deletions
92
src/dbus/dbusmenu/dbus_menu_types.cpp
Normal file
92
src/dbus/dbusmenu/dbus_menu_types.cpp
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
#include "dbus_menu_types.hpp"
|
||||
|
||||
#include <qdbusargument.h>
|
||||
#include <qdbusextratypes.h>
|
||||
#include <qdebug.h>
|
||||
#include <qmetatype.h>
|
||||
#include <qvariant.h>
|
||||
|
||||
const QDBusArgument& operator>>(const QDBusArgument& argument, DBusMenuLayout& layout) {
|
||||
layout.children.clear();
|
||||
|
||||
argument.beginStructure();
|
||||
argument >> layout.id;
|
||||
argument >> layout.properties;
|
||||
|
||||
argument.beginArray();
|
||||
while (!argument.atEnd()) {
|
||||
auto childArgument = qdbus_cast<QDBusVariant>(argument).variant().value<QDBusArgument>();
|
||||
auto child = qdbus_cast<DBusMenuLayout>(childArgument);
|
||||
layout.children.append(child);
|
||||
}
|
||||
argument.endArray();
|
||||
|
||||
argument.endStructure();
|
||||
return argument;
|
||||
}
|
||||
|
||||
const QDBusArgument& operator<<(QDBusArgument& argument, const DBusMenuLayout& layout) {
|
||||
argument.beginStructure();
|
||||
argument << layout.id;
|
||||
argument << layout.properties;
|
||||
|
||||
argument.beginArray(qMetaTypeId<QDBusVariant>());
|
||||
for (const auto& child: layout.children) {
|
||||
argument << QDBusVariant(QVariant::fromValue(child));
|
||||
}
|
||||
argument.endArray();
|
||||
|
||||
argument.endStructure();
|
||||
return argument;
|
||||
}
|
||||
|
||||
const QDBusArgument& operator>>(const QDBusArgument& argument, DBusMenuItemProperties& item) {
|
||||
argument.beginStructure();
|
||||
argument >> item.id;
|
||||
argument >> item.properties;
|
||||
argument.endStructure();
|
||||
return argument;
|
||||
}
|
||||
|
||||
const QDBusArgument& operator<<(QDBusArgument& argument, const DBusMenuItemProperties& item) {
|
||||
argument.beginStructure();
|
||||
argument << item.id;
|
||||
argument << item.properties;
|
||||
argument.endStructure();
|
||||
return argument;
|
||||
}
|
||||
|
||||
const QDBusArgument& operator>>(const QDBusArgument& argument, DBusMenuItemPropertyNames& names) {
|
||||
argument.beginStructure();
|
||||
argument >> names.id;
|
||||
argument >> names.properties;
|
||||
argument.endStructure();
|
||||
return argument;
|
||||
}
|
||||
|
||||
const QDBusArgument& operator<<(QDBusArgument& argument, const DBusMenuItemPropertyNames& names) {
|
||||
argument.beginStructure();
|
||||
argument << names.id;
|
||||
argument << names.properties;
|
||||
argument.endStructure();
|
||||
return argument;
|
||||
}
|
||||
|
||||
QDebug operator<<(QDebug debug, const DBusMenuLayout& layout) {
|
||||
debug.nospace() << "DBusMenuLayout(id=" << layout.id << ", properties=" << layout.properties
|
||||
<< ", children=" << layout.children << ")";
|
||||
|
||||
return debug;
|
||||
}
|
||||
|
||||
QDebug operator<<(QDebug debug, const DBusMenuItemProperties& item) {
|
||||
debug.nospace() << "DBusMenuItemProperties(id=" << item.id << ", properties=" << item.properties
|
||||
<< ")";
|
||||
return debug;
|
||||
}
|
||||
|
||||
QDebug operator<<(QDebug debug, const DBusMenuItemPropertyNames& names) {
|
||||
debug.nospace() << "DBusMenuItemPropertyNames(id=" << names.id
|
||||
<< ", properties=" << names.properties << ")";
|
||||
return debug;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue