From 4ccab203994f2472641c429bb4b86535c5128884 Mon Sep 17 00:00:00 2001 From: Tasuku Suzuki Date: Wed, 30 Nov 2016 13:34:30 +0900 Subject: [PATCH] improve AppInfo class hide public member variables and introduce getters and setters for them. Change-Id: I9108e94516238ef2ff8d4ea18db381d4e7e73bec Signed-off-by: Tasuku Suzuki --- HomeScreen/src/applauncherwidget.cpp | 6 +- .../src/homescreenappframeworkbinderagl.cpp | 2 +- interfaces/include/appframework.hpp | 44 ++++-- interfaces/src/appframework.cpp | 153 +++++++++++++++++---- 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 +#include +#include 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 d; +}; +Q_DECLARE_SHARED(AppInfo) Q_DECLARE_METATYPE(AppInfo) Q_DECLARE_METATYPE(QList) 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 + +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; } -- 2.16.6