ukui-search/libsearch/appdata/app-info-dbus-argument.h

83 lines
2.7 KiB
C
Raw Normal View History

#ifndef APPINFODBUSARGUMENT_H
#define APPINFODBUSARGUMENT_H
#include <QDBusArgument>
#include "application-property.h"
namespace UkuiSearch {
QDBusArgument &operator << (QDBusArgument &argument, const ApplicationProperty::Property &property) {
argument.beginStructure();
argument << static_cast<int>(property);
argument.endStructure();
return argument;
}
const QDBusArgument &operator >> (const QDBusArgument &argument, ApplicationProperty::Property &property) {
int value;
argument.beginStructure();
argument >> value;
argument.endStructure();
property = static_cast<ApplicationProperty::Property>(value);
return argument;
}
QDBusArgument &operator << (QDBusArgument &argument, const ApplicationPropertyMap &appPropertyInfo)
{
argument.beginMap(/*qMetaTypeId<ApplicationProperty::Property>()*/QVariant::Int, qMetaTypeId<QDBusVariant>());
for (auto i = appPropertyInfo.constBegin(); i != appPropertyInfo.constEnd(); ++i) {
QDBusVariant dbusVariant(i.value());
argument.beginMapEntry();
argument << static_cast<int>(i.key()) << dbusVariant;
argument.endMapEntry();
}
argument.endMap();
return argument;
}
const QDBusArgument &operator >> (const QDBusArgument &argument, ApplicationPropertyMap &appPropertyInfo)
{
argument.beginMap();
while (!argument.atEnd()) {
int key;
QVariant value;
argument.beginMapEntry();
argument >> key >> value;
argument.endMapEntry();
appPropertyInfo.insert(static_cast<ApplicationProperty::Property>(key), value);
}
argument.endMap();
return argument;
}
QDBusArgument &operator << (QDBusArgument &argument, const ApplicationInfoMap &appInfo)
{
argument.beginMap(QVariant::String, qMetaTypeId<ApplicationPropertyMap>());
for (auto i = appInfo.constBegin(); i != appInfo.constEnd(); ++i) {
argument.beginMapEntry();
argument << i.key() << i.value();
argument.endMapEntry();
}
argument.endMap();
return argument;
}
const QDBusArgument &operator >> (const QDBusArgument &argument, ApplicationInfoMap &appInfo)
{
argument.beginMap();
while (!argument.atEnd()) {
QString key;
ApplicationPropertyMap value;
argument.beginMapEntry();
argument >> key >> value;
argument.endMapEntry();
appInfo.insert(key, value);
}
argument.endMap();
return argument;
}
}
#endif // APPINFODBUSARGUMENT_H