/*
- * Copyright (C) 2016 Mentor Graphics Development (Deutschland) GmbH
+ * Copyright (C) 2016, 2017 Mentor Graphics Development (Deutschland) GmbH
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#include "include/appframework.hpp"
-AppInfo::AppInfo(QObject *parent) :
- QObject(parent)
+#include <QtCore/QJsonObject>
+
+class AppInfo::Private : public QSharedData
+{
+public:
+ Private();
+ Private(const Private &other);
+
+ QString id;
+ QString version;
+ int width;
+ int height;
+ QString name;
+ QString description;
+ QString shortname;
+ QString author;
+ QString iconPath;
+};
+
+AppInfo::Private::Private()
+ : width(-1)
+ , height(-1)
{
}
-AppInfo::AppInfo(const AppInfo &other) :
- QObject(other.parent()),
- name(other.getName()),
- iconPath(other.getIconPath()),
- description(other.getDescription())
+AppInfo::Private::Private(const Private &other)
+ : QSharedData(other)
+ , id(other.id)
+ , version(other.version)
+ , width(other.width)
+ , height(other.height)
+ , name(other.name)
+ , description(other.description)
+ , shortname(other.shortname)
+ , author(other.author)
+ , iconPath(other.iconPath)
{
}
-AppInfo& AppInfo::operator=(const AppInfo &other)
+AppInfo::AppInfo()
+ : d(new Private)
{
- setParent(other.parent());
- name = other.getName();
- iconPath = other.getIconPath();
- description = other.getDescription();
+}
- return *this;
+AppInfo::AppInfo(const AppInfo &other)
+ : d(other.d)
+{
}
AppInfo::~AppInfo()
{
}
-void AppInfo::registerMetaType()
+AppInfo &AppInfo::operator =(const AppInfo &other)
+{
+ d = other.d;
+ return *this;
+}
+
+QString AppInfo::id() const
+{
+ return d->id;
+}
+
+QString AppInfo::version() const
+{
+ return d->version;
+}
+
+int AppInfo::width() const
+{
+ return d->width;
+}
+
+int AppInfo::height() const
+{
+ return d->height;
+}
+
+QString AppInfo::name() const
+{
+ return d->name;
+}
+
+QString AppInfo::description() const
{
- qRegisterMetaType<AppInfo>("AppInfo");
- qDBusRegisterMetaType<AppInfo>();
+ return d->description;
}
+QString AppInfo::shortname() const
+{
+ return d->shortname;
+}
-// Marshall the MyStructure data into a D-Bus argument
-QDBusArgument &operator<<(QDBusArgument &argument, const AppInfo &appInfo)
+QString AppInfo::author() const
+{
+ return d->author;
+}
+
+QString AppInfo::iconPath() const
+{
+ return d->iconPath;
+}
+
+void AppInfo::read(const QJsonObject &json)
+{
+ d->id = json["id"].toString();
+ d->version = json["version"].toString();
+ d->width = json["width"].toInt();
+ d->height = json["height"].toInt();
+ d->name = json["name"].toString();
+ d->description = json["description"].toString();
+ d->shortname = json["shortname"].toString();
+ d->author = json["author"].toString();
+ d->iconPath = json["iconPath"].toString();
+}
+
+QDBusArgument &operator <<(QDBusArgument &argument, const AppInfo &appInfo)
{
argument.beginStructure();
- argument << appInfo.name << appInfo.iconPath << appInfo.description;
+ argument << appInfo.d->id;
+ argument << appInfo.d->version;
+ argument << appInfo.d->width;
+ argument << appInfo.d->height;
+ argument << appInfo.d->name;
+ argument << appInfo.d->description;
+ argument << appInfo.d->shortname;
+ argument << appInfo.d->author;
+ argument << appInfo.d->iconPath;
argument.endStructure();
- qDebug("appInfo.name:<< %s", appInfo.name.toStdString().c_str());
+
return argument;
}
-// Retrieve the MyStructure data from the D-Bus argument
-const QDBusArgument &operator>>(const QDBusArgument &argument, AppInfo &appInfo)
+const QDBusArgument &operator >>(const QDBusArgument &argument, AppInfo &appInfo)
{
argument.beginStructure();
- argument >> appInfo.name >> appInfo.iconPath >> appInfo.description;
+ argument >> appInfo.d->id;
+ argument >> appInfo.d->version;
+ argument >> appInfo.d->width;
+ argument >> appInfo.d->height;
+ argument >> appInfo.d->name;
+ argument >> appInfo.d->description;
+ argument >> appInfo.d->shortname;
+ argument >> appInfo.d->author;
+ argument >> appInfo.d->iconPath;
argument.endStructure();
- qDebug("appInfo.name:>> %s", appInfo.name.toStdString().c_str());
return argument;
}