File indexing completed on 2024-04-28 16:51:32
0001 #pragma once 0002 0003 #include <KRunner/QueryMatch> 0004 #include <QDBusArgument> 0005 #include <QList> 0006 #include <QString> 0007 #include <QVariantMap> 0008 0009 struct RemoteMatch { 0010 // sssuda{sv} 0011 QString id; 0012 QString text; 0013 QString iconName; 0014 Plasma::QueryMatch::Type type = Plasma::QueryMatch::NoMatch; 0015 qreal relevance = 0; 0016 QVariantMap properties; 0017 }; 0018 0019 typedef QList<RemoteMatch> RemoteMatches; 0020 0021 struct RemoteAction { 0022 QString id; 0023 QString text; 0024 QString iconName; 0025 }; 0026 0027 typedef QList<RemoteAction> RemoteActions; 0028 0029 struct RemoteImage { 0030 // iiibiiay (matching notification spec image-data attribute) 0031 int width; 0032 int height; 0033 int rowStride; 0034 bool hasAlpha; 0035 int bitsPerSample; 0036 int channels; 0037 QByteArray data; 0038 }; 0039 0040 inline QDBusArgument &operator<<(QDBusArgument &argument, const RemoteMatch &match) 0041 { 0042 argument.beginStructure(); 0043 argument << match.id; 0044 argument << match.text; 0045 argument << match.iconName; 0046 argument << match.type; 0047 argument << match.relevance; 0048 argument << match.properties; 0049 argument.endStructure(); 0050 return argument; 0051 } 0052 0053 inline const QDBusArgument &operator>>(const QDBusArgument &argument, RemoteMatch &match) 0054 { 0055 argument.beginStructure(); 0056 argument >> match.id; 0057 argument >> match.text; 0058 argument >> match.iconName; 0059 uint type; 0060 argument >> type; 0061 match.type = static_cast<Plasma::QueryMatch::Type>(type); 0062 argument >> match.relevance; 0063 argument >> match.properties; 0064 argument.endStructure(); 0065 0066 return argument; 0067 } 0068 0069 inline QDBusArgument &operator<<(QDBusArgument &argument, const RemoteAction &action) 0070 { 0071 argument.beginStructure(); 0072 argument << action.id; 0073 argument << action.text; 0074 argument << action.iconName; 0075 argument.endStructure(); 0076 return argument; 0077 } 0078 0079 inline const QDBusArgument &operator>>(const QDBusArgument &argument, RemoteAction &action) 0080 { 0081 argument.beginStructure(); 0082 argument >> action.id; 0083 argument >> action.text; 0084 argument >> action.iconName; 0085 argument.endStructure(); 0086 return argument; 0087 } 0088 0089 inline QDBusArgument &operator<<(QDBusArgument &argument, const RemoteImage &image) 0090 { 0091 argument.beginStructure(); 0092 argument << image.width; 0093 argument << image.height; 0094 argument << image.rowStride; 0095 argument << image.hasAlpha; 0096 argument << image.bitsPerSample; 0097 argument << image.channels; 0098 argument << image.data; 0099 argument.endStructure(); 0100 return argument; 0101 } 0102 0103 inline const QDBusArgument &operator>>(const QDBusArgument &argument, RemoteImage &image) 0104 { 0105 argument.beginStructure(); 0106 argument >> image.width; 0107 argument >> image.height; 0108 argument >> image.rowStride; 0109 argument >> image.hasAlpha; 0110 argument >> image.bitsPerSample; 0111 argument >> image.channels; 0112 argument >> image.data; 0113 argument.endStructure(); 0114 return argument; 0115 } 0116 0117 Q_DECLARE_METATYPE(RemoteMatch) 0118 Q_DECLARE_METATYPE(RemoteMatches) 0119 Q_DECLARE_METATYPE(RemoteAction) 0120 Q_DECLARE_METATYPE(RemoteActions) 0121 Q_DECLARE_METATYPE(RemoteImage)