improve AppInfo class 43/7343/1
authorTasuku Suzuki <tasuku.suzuki@qt.io>
Wed, 30 Nov 2016 04:34:30 +0000 (13:34 +0900)
committerTasuku Suzuki <tasuku.suzuki@qt.io>
Wed, 30 Nov 2016 06:18:03 +0000 (15:18 +0900)
hide public member variables and introduce getters and setters for them.

Change-Id: I9108e94516238ef2ff8d4ea18db381d4e7e73bec
Signed-off-by: Tasuku Suzuki <tasuku.suzuki@qt.io>
HomeScreen/src/applauncherwidget.cpp
HomeScreenAppFrameworkBinderAGL/src/homescreenappframeworkbinderagl.cpp
interfaces/include/appframework.hpp
interfaces/src/appframework.cpp

index 2cd5b17..efa4c2a 100644 (file)
@@ -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
index 593a882..4b0015c 100644 (file)
@@ -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);
 
     }
index d4abefb..29c9b2b 100644 (file)
 #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>)
 
index 15c57c0..ced809e 100644 (file)
 
 #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;
 }