File indexing completed on 2025-01-12 03:40:51
0001 /* This file is part of the dbusmenu-qt library 0002 SPDX-FileCopyrightText: 2009 Canonical 0003 Author: Aurelien Gateau <aurelien.gateau@canonical.com> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 #include "dbusmenutypes_p.h" 0008 0009 // Local 0010 #include "dbusmenushortcut_p.h" 0011 #include "debug_p.h" 0012 0013 // Qt 0014 #include <QDBusArgument> 0015 #include <QDBusMetaType> 0016 0017 //// DBusMenuItem 0018 QDBusArgument &operator<<(QDBusArgument &argument, const DBusMenuItem &obj) 0019 { 0020 argument.beginStructure(); 0021 argument << obj.id << obj.properties; 0022 argument.endStructure(); 0023 return argument; 0024 } 0025 0026 const QDBusArgument &operator>>(const QDBusArgument &argument, DBusMenuItem &obj) 0027 { 0028 argument.beginStructure(); 0029 argument >> obj.id >> obj.properties; 0030 argument.endStructure(); 0031 return argument; 0032 } 0033 0034 //// DBusMenuItemKeys 0035 QDBusArgument &operator<<(QDBusArgument &argument, const DBusMenuItemKeys &obj) 0036 { 0037 argument.beginStructure(); 0038 argument << obj.id << obj.properties; 0039 argument.endStructure(); 0040 return argument; 0041 } 0042 0043 const QDBusArgument &operator>>(const QDBusArgument &argument, DBusMenuItemKeys &obj) 0044 { 0045 argument.beginStructure(); 0046 argument >> obj.id >> obj.properties; 0047 argument.endStructure(); 0048 return argument; 0049 } 0050 0051 //// DBusMenuLayoutItem 0052 QDBusArgument &operator<<(QDBusArgument &argument, const DBusMenuLayoutItem &obj) 0053 { 0054 argument.beginStructure(); 0055 argument << obj.id << obj.properties; 0056 argument.beginArray(qMetaTypeId<QDBusVariant>()); 0057 const auto childrens = obj.children; 0058 for (const DBusMenuLayoutItem &child : childrens) { 0059 argument << QDBusVariant(QVariant::fromValue<DBusMenuLayoutItem>(child)); 0060 } 0061 argument.endArray(); 0062 argument.endStructure(); 0063 return argument; 0064 } 0065 0066 const QDBusArgument &operator>>(const QDBusArgument &argument, DBusMenuLayoutItem &obj) 0067 { 0068 argument.beginStructure(); 0069 argument >> obj.id >> obj.properties; 0070 argument.beginArray(); 0071 while (!argument.atEnd()) { 0072 QDBusVariant dbusVariant; 0073 argument >> dbusVariant; 0074 QDBusArgument childArgument = dbusVariant.variant().value<QDBusArgument>(); 0075 0076 DBusMenuLayoutItem child; 0077 childArgument >> child; 0078 obj.children.append(child); 0079 } 0080 argument.endArray(); 0081 argument.endStructure(); 0082 return argument; 0083 } 0084 0085 void DBusMenuTypes_register() 0086 { 0087 static bool registered = false; 0088 if (registered) { 0089 return; 0090 } 0091 qDBusRegisterMetaType<DBusMenuItem>(); 0092 qDBusRegisterMetaType<DBusMenuItemList>(); 0093 qDBusRegisterMetaType<DBusMenuItemKeys>(); 0094 qDBusRegisterMetaType<DBusMenuItemKeysList>(); 0095 qDBusRegisterMetaType<DBusMenuLayoutItem>(); 0096 qDBusRegisterMetaType<DBusMenuLayoutItemList>(); 0097 qDBusRegisterMetaType<DBusMenuShortcut>(); 0098 registered = true; 0099 }