File indexing completed on 2024-12-08 03:39:24

0001 /*
0002     SPDX-FileCopyrightText: 2008 Michael Jansen <kde@michael-jansen.biz>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "kglobalshortcutinfo.h"
0008 #include "kglobalshortcutinfo_p.h"
0009 
0010 QDBusArgument &operator<<(QDBusArgument &argument, const QKeySequence &sequence)
0011 {
0012     argument.beginStructure();
0013     argument.beginArray(qMetaTypeId<int>());
0014     for (int i = 0; i < maxSequenceLength; i++) {
0015         argument << (i < sequence.count() ? sequence[i].toCombined() : 0);
0016     }
0017     argument.endArray();
0018     argument.endStructure();
0019     return argument;
0020 }
0021 
0022 const QDBusArgument &operator>>(const QDBusArgument &argument, QKeySequence &sequence)
0023 {
0024     int s1;
0025     int s2;
0026     int s3;
0027     int s4;
0028     argument.beginStructure();
0029     argument.beginArray();
0030     argument >> s1 >> s2 >> s3 >> s4;
0031     sequence = QKeySequence(s1, s2, s3, s4);
0032     argument.endArray();
0033     argument.endStructure();
0034     return argument;
0035 }
0036 
0037 QDBusArgument &operator<<(QDBusArgument &argument, const KGlobalShortcutInfo &shortcut)
0038 {
0039     argument.beginStructure();
0040     /* clang-format off */
0041     argument << shortcut.uniqueName()
0042              << shortcut.friendlyName()
0043              << shortcut.componentUniqueName()
0044              << shortcut.componentFriendlyName()
0045              << shortcut.contextUniqueName()
0046              << shortcut.contextFriendlyName();
0047     /* clang-format on */
0048     argument.beginArray(qMetaTypeId<int>());
0049 
0050     const QList<QKeySequence> keys = shortcut.keys();
0051     for (const QKeySequence &key : keys) {
0052         argument << key[0].toCombined();
0053     }
0054     argument.endArray();
0055     argument.beginArray(qMetaTypeId<int>());
0056 
0057     const QList<QKeySequence> defaultKeys = shortcut.defaultKeys();
0058     for (const QKeySequence &key : defaultKeys) {
0059         argument << key[0].toCombined();
0060     }
0061     argument.endArray();
0062     argument.endStructure();
0063     return argument;
0064 }
0065 
0066 const QDBusArgument &operator>>(const QDBusArgument &argument, KGlobalShortcutInfo &shortcut)
0067 {
0068     argument.beginStructure();
0069     /* clang-format off */
0070     argument >> shortcut.d->uniqueName
0071              >> shortcut.d->friendlyName
0072              >> shortcut.d->componentUniqueName
0073              >> shortcut.d->componentFriendlyName
0074              >> shortcut.d->contextUniqueName
0075              >> shortcut.d->contextFriendlyName;
0076     /* clang-format on */
0077 
0078     argument.beginArray();
0079     while (!argument.atEnd()) {
0080         int key;
0081         argument >> key;
0082         shortcut.d->keys.append(QKeySequence(key));
0083     }
0084     argument.endArray();
0085     argument.beginArray();
0086     while (!argument.atEnd()) {
0087         int key;
0088         argument >> key;
0089         shortcut.d->defaultKeys.append(QKeySequence(key));
0090     }
0091     argument.endArray();
0092     argument.endStructure();
0093     return argument;
0094 }