File indexing completed on 2024-03-24 03:59:37
0001 /* 0002 SPDX-FileCopyrightText: 2017, 2018 David Edmundson <davidedmundson@kde.org> 0003 SPDX-FileCopyrightText: 2020 Alexander Lohnau <alexander.lohnau@gmx.de> 0004 SPDX-FileCopyrightText: 2020 Kai Uwe Broulik <kde@broulik.de> 0005 0006 SPDX-License-Identifier: LGPL-2.0-or-later 0007 */ 0008 0009 #pragma once 0010 0011 #include "action.h" 0012 #include <KRunner/QueryMatch> 0013 #include <QDBusArgument> 0014 #include <QList> 0015 #include <QString> 0016 #include <QVariantMap> 0017 0018 struct RemoteMatch { 0019 // sssida{sv} 0020 QString id; 0021 QString text; 0022 QString iconName; 0023 int categoryRelevance = qToUnderlying(KRunner::QueryMatch::CategoryRelevance::Lowest); 0024 qreal relevance = 0; 0025 QVariantMap properties; 0026 }; 0027 0028 typedef QList<RemoteMatch> RemoteMatches; 0029 0030 struct RemoteImage { 0031 // iiibiiay (matching notification spec image-data attribute) 0032 int width = 0; 0033 int height = 0; 0034 int rowStride = 0; 0035 bool hasAlpha = false; 0036 int bitsPerSample = 0; 0037 int channels = 0; 0038 QByteArray data; 0039 }; 0040 0041 inline QDBusArgument &operator<<(QDBusArgument &argument, const RemoteMatch &match) 0042 { 0043 argument.beginStructure(); 0044 argument << match.id; 0045 argument << match.text; 0046 argument << match.iconName; 0047 argument << match.categoryRelevance; 0048 argument << match.relevance; 0049 argument << match.properties; 0050 argument.endStructure(); 0051 return argument; 0052 } 0053 0054 inline const QDBusArgument &operator>>(const QDBusArgument &argument, RemoteMatch &match) 0055 { 0056 argument.beginStructure(); 0057 argument >> match.id; 0058 argument >> match.text; 0059 argument >> match.iconName; 0060 argument >> match.categoryRelevance; 0061 argument >> match.relevance; 0062 argument >> match.properties; 0063 argument.endStructure(); 0064 0065 return argument; 0066 } 0067 0068 inline QDBusArgument &operator<<(QDBusArgument &argument, const KRunner::Action &action) 0069 { 0070 argument.beginStructure(); 0071 argument << action.id(); 0072 argument << action.text(); 0073 argument << action.iconSource(); 0074 argument.endStructure(); 0075 return argument; 0076 } 0077 0078 inline const QDBusArgument &operator>>(const QDBusArgument &argument, KRunner::Action &action) 0079 { 0080 QString id; 0081 QString text; 0082 QString iconName; 0083 argument.beginStructure(); 0084 argument >> id; 0085 argument >> text; 0086 argument >> iconName; 0087 argument.endStructure(); 0088 action = KRunner::Action(id, iconName, text); 0089 return argument; 0090 } 0091 0092 inline QDBusArgument &operator<<(QDBusArgument &argument, const RemoteImage &image) 0093 { 0094 argument.beginStructure(); 0095 argument << image.width; 0096 argument << image.height; 0097 argument << image.rowStride; 0098 argument << image.hasAlpha; 0099 argument << image.bitsPerSample; 0100 argument << image.channels; 0101 argument << image.data; 0102 argument.endStructure(); 0103 return argument; 0104 } 0105 0106 inline const QDBusArgument &operator>>(const QDBusArgument &argument, RemoteImage &image) 0107 { 0108 argument.beginStructure(); 0109 argument >> image.width; 0110 argument >> image.height; 0111 argument >> image.rowStride; 0112 argument >> image.hasAlpha; 0113 argument >> image.bitsPerSample; 0114 argument >> image.channels; 0115 argument >> image.data; 0116 argument.endStructure(); 0117 return argument; 0118 } 0119 0120 Q_DECLARE_METATYPE(QList<KRunner::Action>) 0121 Q_DECLARE_METATYPE(RemoteMatch) 0122 Q_DECLARE_METATYPE(RemoteMatches) 0123 Q_DECLARE_METATYPE(RemoteImage)