File indexing completed on 2024-05-05 05:35:44
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 int categoryRelevance = qToUnderlying(KRunner::QueryMatch::CategoryRelevance::Lowest); 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.categoryRelevance; 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 argument >> match.categoryRelevance; 0060 argument >> match.relevance; 0061 argument >> match.properties; 0062 argument.endStructure(); 0063 0064 return argument; 0065 } 0066 0067 inline QDBusArgument &operator<<(QDBusArgument &argument, const RemoteAction &action) 0068 { 0069 argument.beginStructure(); 0070 argument << action.id; 0071 argument << action.text; 0072 argument << action.iconName; 0073 argument.endStructure(); 0074 return argument; 0075 } 0076 0077 inline const QDBusArgument &operator>>(const QDBusArgument &argument, RemoteAction &action) 0078 { 0079 argument.beginStructure(); 0080 argument >> action.id; 0081 argument >> action.text; 0082 argument >> action.iconName; 0083 argument.endStructure(); 0084 return argument; 0085 } 0086 0087 inline QDBusArgument &operator<<(QDBusArgument &argument, const RemoteImage &image) 0088 { 0089 argument.beginStructure(); 0090 argument << image.width; 0091 argument << image.height; 0092 argument << image.rowStride; 0093 argument << image.hasAlpha; 0094 argument << image.bitsPerSample; 0095 argument << image.channels; 0096 argument << image.data; 0097 argument.endStructure(); 0098 return argument; 0099 } 0100 0101 inline const QDBusArgument &operator>>(const QDBusArgument &argument, RemoteImage &image) 0102 { 0103 argument.beginStructure(); 0104 argument >> image.width; 0105 argument >> image.height; 0106 argument >> image.rowStride; 0107 argument >> image.hasAlpha; 0108 argument >> image.bitsPerSample; 0109 argument >> image.channels; 0110 argument >> image.data; 0111 argument.endStructure(); 0112 return argument; 0113 } 0114 0115 Q_DECLARE_METATYPE(RemoteMatch) 0116 Q_DECLARE_METATYPE(RemoteMatches) 0117 Q_DECLARE_METATYPE(RemoteAction) 0118 Q_DECLARE_METATYPE(RemoteActions) 0119 Q_DECLARE_METATYPE(RemoteImage)