aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTasuku Suzuki <tasuku.suzuki@qt.io>2016-11-30 13:34:30 +0900
committerTasuku Suzuki <tasuku.suzuki@qt.io>2016-11-30 15:18:03 +0900
commit4ccab203994f2472641c429bb4b86535c5128884 (patch)
tree131e27f500bbeb7e8181f2e3756c6116dfdb0288
parent75a4e94d7610db25c98f05cdda9491f4e7c0a4db (diff)
improve AppInfo class
hide public member variables and introduce getters and setters for them. Change-Id: I9108e94516238ef2ff8d4ea18db381d4e7e73bec Signed-off-by: Tasuku Suzuki <tasuku.suzuki@qt.io>
-rw-r--r--HomeScreen/src/applauncherwidget.cpp6
-rw-r--r--HomeScreenAppFrameworkBinderAGL/src/homescreenappframeworkbinderagl.cpp2
-rw-r--r--interfaces/include/appframework.hpp44
-rw-r--r--interfaces/src/appframework.cpp153
4 files changed, 159 insertions, 46 deletions
diff --git a/HomeScreen/src/applauncherwidget.cpp b/HomeScreen/src/applauncherwidget.cpp
index 2cd5b17..efa4c2a 100644
--- a/HomeScreen/src/applauncherwidget.cpp
+++ b/HomeScreen/src/applauncherwidget.cpp
@@ -124,7 +124,7 @@ void AppLauncherWidget::populateAppList()
{
mp_appTable->setItem(i / APP_LIST_COLUMN_COUNT,
i % APP_LIST_COLUMN_COUNT,
- new QTableWidgetItem(m_appList.at(i).name));
+ new QTableWidgetItem(m_appList.at(i).name()));
mp_appTable->item(i / APP_LIST_COLUMN_COUNT,
i % APP_LIST_COLUMN_COUNT)->setFlags(Qt::ItemIsEnabled);
mp_appTable->item(i / APP_LIST_COLUMN_COUNT,
@@ -136,8 +136,8 @@ void AppLauncherWidget::on_tableView_clicked(int row, int col)
{
if (m_appList.size() > row * APP_LIST_COLUMN_COUNT + col)
{
- int pid = mp_dBusAppFrameworkProxy->launchApp(m_appList.at(row * APP_LIST_COLUMN_COUNT + col).id);
- qDebug("%d, %d: start app %s", row, col, m_appList.at(row * APP_LIST_COLUMN_COUNT + col).id.toStdString().c_str());
+ int pid = mp_dBusAppFrameworkProxy->launchApp(m_appList.at(row * APP_LIST_COLUMN_COUNT + col).id());
+ qDebug("%d, %d: start app %s", row, col, m_appList.at(row * APP_LIST_COLUMN_COUNT + col).id().toStdString().c_str());
qDebug("pid: %d", pid);
// the new app wants to be visible by default
diff --git a/HomeScreenAppFrameworkBinderAGL/src/homescreenappframeworkbinderagl.cpp b/HomeScreenAppFrameworkBinderAGL/src/homescreenappframeworkbinderagl.cpp
index 593a882..4b0015c 100644
--- a/HomeScreenAppFrameworkBinderAGL/src/homescreenappframeworkbinderagl.cpp
+++ b/HomeScreenAppFrameworkBinderAGL/src/homescreenappframeworkbinderagl.cpp
@@ -51,7 +51,7 @@ HomeScreenAppFrameworkBinderAgl::HomeScreenAppFrameworkBinderAgl(QObject *parent
QJsonObject appObject = appsArray[i].toObject();
AppInfo appInfo;
appInfo.read(appObject);
- qDebug("name %s", appInfo.name.toStdString().c_str());
+ qDebug("name %s", appInfo.name().toStdString().c_str());
m_apps.append(appInfo);
}
diff --git a/interfaces/include/appframework.hpp b/interfaces/include/appframework.hpp
index d4abefb..29c9b2b 100644
--- a/interfaces/include/appframework.hpp
+++ b/interfaces/include/appframework.hpp
@@ -17,31 +17,49 @@
#ifndef APPFRAMEWORK_HPP
#define APPFRAMEWORK_HPP
-#include <QtDBus>
+#include <QtCore/QSharedDataPointer>
+#include <QtDBus/QDBusArgument>
class AppInfo
{
+ Q_GADGET
+ Q_PROPERTY(QString id READ id)
+ Q_PROPERTY(QString version READ version)
+ Q_PROPERTY(int width READ width)
+ Q_PROPERTY(int height READ height)
+ Q_PROPERTY(QString name READ name)
+ Q_PROPERTY(QString description READ description)
+ Q_PROPERTY(QString shortname READ shortname)
+ Q_PROPERTY(QString author READ author)
+ Q_PROPERTY(QString iconPath READ iconPath)
public:
AppInfo();
+ AppInfo(const AppInfo &other);
virtual ~AppInfo();
+ AppInfo &operator =(const AppInfo &other);
+ void swap(AppInfo &other) { qSwap(d, other.d); }
- QString id;
- QString version;
- int width;
- int height;
- QString name;
- QString description;
- QString shortname;
- QString author;
- QString iconPath;
+ QString id() const;
+ QString version() const;
+ int width() const;
+ int height() const;
+ QString name() const;
+ QString description() const;
+ QString shortname() const;
+ QString author() const;
+ QString iconPath() const;
void read(const QJsonObject &json);
- friend QDBusArgument &operator <<(QDBusArgument &argument, const AppInfo &mAppInfo);
- friend const QDBusArgument &operator >>(const QDBusArgument &argument, AppInfo &mAppInfo);
-};
+ friend QDBusArgument &operator <<(QDBusArgument &argument, const AppInfo &appInfo);
+ friend const QDBusArgument &operator >>(const QDBusArgument &argument, AppInfo &appInfo);
+private:
+ class Private;
+ QSharedDataPointer<Private> d;
+};
+Q_DECLARE_SHARED(AppInfo)
Q_DECLARE_METATYPE(AppInfo)
Q_DECLARE_METATYPE(QList<AppInfo>)
diff --git a/interfaces/src/appframework.cpp b/interfaces/src/appframework.cpp
index 15c57c0..ced809e 100644
--- a/interfaces/src/appframework.cpp
+++ b/interfaces/src/appframework.cpp
@@ -16,8 +16,52 @@
#include "include/appframework.hpp"
+#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::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()
+ : d(new Private)
+{
+}
+
+AppInfo::AppInfo(const AppInfo &other)
+ : d(other.d)
{
}
@@ -25,48 +69,99 @@ AppInfo::~AppInfo()
{
}
+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
+{
+ return d->description;
+}
+
+QString AppInfo::shortname() const
+{
+ return d->shortname;
+}
+
+QString AppInfo::author() const
+{
+ return d->author;
+}
+
+QString AppInfo::iconPath() const
+{
+ return d->iconPath;
+}
+
void AppInfo::read(const QJsonObject &json)
{
- id = json["id"].toString();
- version = json["version"].toString();
- width = json["width"].toInt();
- height = json["height"].toInt();
- name = json["name"].toString();
- description = json["description"].toString();
- shortname = json["shortname"].toString();
- author = json["author"].toString();
- iconPath = json["iconPath"].toString();
+ 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 &mAppInfo)
+QDBusArgument &operator <<(QDBusArgument &argument, const AppInfo &appInfo)
{
argument.beginStructure();
- argument << mAppInfo.id;
- argument << mAppInfo.version;
- argument << mAppInfo.width;
- argument << mAppInfo.height;
- argument << mAppInfo.name;
- argument << mAppInfo.description;
- argument << mAppInfo.shortname;
- argument << mAppInfo.author;
- argument << mAppInfo.iconPath;
+ 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();
return argument;
}
-const QDBusArgument &operator >>(const QDBusArgument &argument, AppInfo &mAppInfo)
+const QDBusArgument &operator >>(const QDBusArgument &argument, AppInfo &appInfo)
{
argument.beginStructure();
- argument >> mAppInfo.id;
- argument >> mAppInfo.version;
- argument >> mAppInfo.width;
- argument >> mAppInfo.height;
- argument >> mAppInfo.name;
- argument >> mAppInfo.description;
- argument >> mAppInfo.shortname;
- argument >> mAppInfo.author;
- argument >> mAppInfo.iconPath;
+ 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();
return argument;
}