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();