File indexing completed on 2024-04-28 03:55:30
0001 /* 0002 This file is part of the KDE libraries 0003 SPDX-FileCopyrightText: 2020 Henri Chain <henri.chain@enioka.com> 0004 0005 SPDX-License-Identifier: LGPL-2.0-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0006 */ 0007 0008 #ifndef DBUSTYPES_H 0009 #define DBUSTYPES_H 0010 0011 #include <QDBusArgument> 0012 0013 struct QVariantMultiItem { 0014 QString key; 0015 QVariant value; 0016 }; 0017 Q_DECLARE_METATYPE(QVariantMultiItem) 0018 using QVariantMultiMap = QList<QVariantMultiItem>; 0019 Q_DECLARE_METATYPE(QVariantMultiMap) 0020 0021 inline QDBusArgument &operator<<(QDBusArgument &argument, const QVariantMultiItem &item) 0022 { 0023 argument.beginStructure(); 0024 argument << item.key << QDBusVariant(item.value); 0025 argument.endStructure(); 0026 return argument; 0027 } 0028 0029 inline const QDBusArgument &operator>>(const QDBusArgument &argument, QVariantMultiItem &item) 0030 { 0031 argument.beginStructure(); 0032 argument >> item.key >> item.value; 0033 argument.endStructure(); 0034 return argument; 0035 } 0036 0037 struct ExecCommand { 0038 QString path; 0039 QStringList argv; 0040 bool ignoreFailure; 0041 }; 0042 Q_DECLARE_METATYPE(ExecCommand) 0043 using ExecCommandList = QList<ExecCommand>; 0044 Q_DECLARE_METATYPE(ExecCommandList) 0045 0046 inline QDBusArgument &operator<<(QDBusArgument &argument, const ExecCommand &execCommand) 0047 { 0048 argument.beginStructure(); 0049 argument << execCommand.path << execCommand.argv << execCommand.ignoreFailure; 0050 argument.endStructure(); 0051 return argument; 0052 } 0053 0054 inline const QDBusArgument &operator>>(const QDBusArgument &argument, ExecCommand &execCommand) 0055 { 0056 argument.beginStructure(); 0057 argument >> execCommand.path >> execCommand.argv >> execCommand.ignoreFailure; 0058 argument.endStructure(); 0059 return argument; 0060 } 0061 0062 struct TransientAux { 0063 QString name; 0064 QVariantMultiMap properties; 0065 }; 0066 Q_DECLARE_METATYPE(TransientAux) 0067 using TransientAuxList = QList<TransientAux>; 0068 Q_DECLARE_METATYPE(TransientAuxList) 0069 0070 inline QDBusArgument &operator<<(QDBusArgument &argument, const TransientAux &aux) 0071 { 0072 argument.beginStructure(); 0073 argument << aux.name << aux.properties; 0074 argument.endStructure(); 0075 return argument; 0076 } 0077 0078 inline const QDBusArgument &operator>>(const QDBusArgument &argument, TransientAux &aux) 0079 { 0080 argument.beginStructure(); 0081 argument >> aux.name >> aux.properties; 0082 argument.endStructure(); 0083 return argument; 0084 } 0085 0086 #endif // DBUSTYPES_H