File indexing completed on 2024-05-12 05:37:25

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 
0019 using StringBoolMap = QMap<QString, bool>;
0020 
0021 // Menu item itself (Start method)
0022 struct GMenuItem {
0023     uint id;
0024     uint section;
0025     VariantMapList items;
0026 };
0027 
0028 QDBusArgument &operator<<(QDBusArgument &argument, const GMenuItem &item);
0029 const QDBusArgument &operator>>(const QDBusArgument &argument, GMenuItem &item);
0030 
0031 using GMenuItemList = QList<GMenuItem>;
0032 
0033 // Information about what section or submenu to use for a particular entry
0034 struct GMenuSection {
0035     uint subscription;
0036     uint menu;
0037 };
0038 
0039 QDBusArgument &operator<<(QDBusArgument &argument, const GMenuSection &item);
0040 const QDBusArgument &operator>>(const QDBusArgument &argument, GMenuSection &item);
0041 
0042 // Changes of a menu item (Changed signal)
0043 struct GMenuChange {
0044     uint subscription;
0045     uint menu;
0046 
0047     uint changePosition;
0048     uint itemsToRemoveCount;
0049     VariantMapList itemsToInsert;
0050 };
0051 
0052 QDBusArgument &operator<<(QDBusArgument &argument, const GMenuChange &item);
0053 const QDBusArgument &operator>>(const QDBusArgument &argument, GMenuChange &item);
0054 
0055 using GMenuChangeList = QList<GMenuChange>;
0056 
0057 // An application action
0058 struct GMenuAction {
0059     bool enabled;
0060     QDBusSignature signature;
0061     QVariantList state;
0062 };
0063 
0064 QDBusArgument &operator<<(QDBusArgument &argument, const GMenuAction &item);
0065 const QDBusArgument &operator>>(const QDBusArgument &argument, GMenuAction &item);
0066 
0067 using GMenuActionMap = QMap<QString, GMenuAction>;
0068 
0069 struct GMenuActionsChange {
0070     QStringList removed;
0071     QMap<QString, bool> enabledChanged;
0072     QVariantMap stateChanged;
0073     GMenuActionMap added;
0074 };
0075 
0076 QDBusArgument &operator<<(QDBusArgument &argument, const GMenuActionsChange &item);
0077 const QDBusArgument &operator>>(const QDBusArgument &argument, GMenuActionsChange &item);
0078 
0079 void GDBusMenuTypes_register();