File indexing completed on 2024-05-05 17:43:52
0001 /* 0002 SPDX-FileCopyrightText: 2018 Kai Uwe Broulik <kde@privat.broulik.de> 0003 0004 SPDX-License-Identifier: LGPL-2.1-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <QDBusSignature> 0010 #include <QList> 0011 #include <QMap> 0012 #include <QVariant> 0013 0014 class QDBusArgument; 0015 0016 // Various 0017 using VariantMapList = QList<QVariantMap>; 0018 Q_DECLARE_METATYPE(VariantMapList); 0019 0020 using StringBoolMap = QMap<QString, bool>; 0021 Q_DECLARE_METATYPE(StringBoolMap); 0022 0023 // Menu item itself (Start method) 0024 struct GMenuItem { 0025 uint id; 0026 uint section; 0027 VariantMapList items; 0028 }; 0029 Q_DECLARE_METATYPE(GMenuItem); 0030 0031 QDBusArgument &operator<<(QDBusArgument &argument, const GMenuItem &item); 0032 const QDBusArgument &operator>>(const QDBusArgument &argument, GMenuItem &item); 0033 0034 using GMenuItemList = QList<GMenuItem>; 0035 Q_DECLARE_METATYPE(GMenuItemList); 0036 0037 // Information about what section or submenu to use for a particular entry 0038 struct GMenuSection { 0039 uint subscription; 0040 uint menu; 0041 }; 0042 Q_DECLARE_METATYPE(GMenuSection); 0043 0044 QDBusArgument &operator<<(QDBusArgument &argument, const GMenuSection &item); 0045 const QDBusArgument &operator>>(const QDBusArgument &argument, GMenuSection &item); 0046 0047 // Changes of a menu item (Changed signal) 0048 struct GMenuChange { 0049 uint subscription; 0050 uint menu; 0051 0052 uint changePosition; 0053 uint itemsToRemoveCount; 0054 VariantMapList itemsToInsert; 0055 }; 0056 Q_DECLARE_METATYPE(GMenuChange); 0057 0058 QDBusArgument &operator<<(QDBusArgument &argument, const GMenuChange &item); 0059 const QDBusArgument &operator>>(const QDBusArgument &argument, GMenuChange &item); 0060 0061 using GMenuChangeList = QList<GMenuChange>; 0062 Q_DECLARE_METATYPE(GMenuChangeList); 0063 0064 // An application action 0065 struct GMenuAction { 0066 bool enabled; 0067 QDBusSignature signature; 0068 QVariantList state; 0069 }; 0070 Q_DECLARE_METATYPE(GMenuAction); 0071 0072 QDBusArgument &operator<<(QDBusArgument &argument, const GMenuAction &item); 0073 const QDBusArgument &operator>>(const QDBusArgument &argument, GMenuAction &item); 0074 0075 using GMenuActionMap = QMap<QString, GMenuAction>; 0076 Q_DECLARE_METATYPE(GMenuActionMap); 0077 0078 struct GMenuActionsChange { 0079 QStringList removed; 0080 QMap<QString, bool> enabledChanged; 0081 QVariantMap stateChanged; 0082 GMenuActionMap added; 0083 }; 0084 Q_DECLARE_METATYPE(GMenuActionsChange); 0085 0086 QDBusArgument &operator<<(QDBusArgument &argument, const GMenuActionsChange &item); 0087 const QDBusArgument &operator>>(const QDBusArgument &argument, GMenuActionsChange &item); 0088 0089 void GDBusMenuTypes_register();