1 /*
2     SPDX-FileCopyrightText: 2008 Michael Jansen <kde@michael-jansen.biz>
3 
4     SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6 
7 #include "kglobalshortcutinfo.h"
8 #include "kglobalshortcutinfo_p.h"
9 
operator <<(QDBusArgument & argument,const KGlobalShortcutInfo & shortcut)10 QDBusArgument &operator<<(QDBusArgument &argument, const KGlobalShortcutInfo &shortcut)
11 {
12     argument.beginStructure();
13     /* clang-format off */
14     argument << shortcut.uniqueName()
15              << shortcut.friendlyName()
16              << shortcut.componentUniqueName()
17              << shortcut.componentFriendlyName()
18              << shortcut.contextUniqueName()
19              << shortcut.contextFriendlyName();
20     /* clang-format on */
21     argument.beginArray(qMetaTypeId<int>());
22 
23     const QList<QKeySequence> keys = shortcut.keys();
24     for (const QKeySequence &key : keys) {
25         argument << key[0];
26     }
27     argument.endArray();
28     argument.beginArray(qMetaTypeId<int>());
29 
30     const QList<QKeySequence> defaultKeys = shortcut.defaultKeys();
31     for (const QKeySequence &key : defaultKeys) {
32         argument << key[0];
33     }
34     argument.endArray();
35     argument.endStructure();
36     return argument;
37 }
38 
operator >>(const QDBusArgument & argument,KGlobalShortcutInfo & shortcut)39 const QDBusArgument &operator>>(const QDBusArgument &argument, KGlobalShortcutInfo &shortcut)
40 {
41     argument.beginStructure();
42     /* clang-format off */
43     argument >> shortcut.d->uniqueName
44              >> shortcut.d->friendlyName
45              >> shortcut.d->componentUniqueName
46              >> shortcut.d->componentFriendlyName
47              >> shortcut.d->contextUniqueName
48              >> shortcut.d->contextFriendlyName;
49     /* clang-format on */
50 
51     argument.beginArray();
52     while (!argument.atEnd()) {
53         int key;
54         argument >> key;
55         shortcut.d->keys.append(QKeySequence(key));
56     }
57     argument.endArray();
58     argument.beginArray();
59     while (!argument.atEnd()) {
60         int key;
61         argument >> key;
62         shortcut.d->defaultKeys.append(QKeySequence(key));
63     }
64     argument.endArray();
65     argument.endStructure();
66     return argument;
67 }
68