on xenial help sign in
implement missing bits of the "running" interfaces
c276a83Lukáš Tinkl
plugins/Greeter/Unity/Launcher/launchermodelas.cpp+5−1
@@ -67,6 +67,8 @@ QVariant LauncherModel::data(const QModelIndex &index, int role) const
67 return item->progress();
67 return item->progress();
68 case RoleFocused:
68 case RoleFocused:
69 return item->focused();
69 return item->focused();
70+ case RoleRunning:
71+ return item->running();
70 }
72 }
71
73
72 return QVariant();
74 return QVariant();
@@ -208,8 +210,9 @@ void LauncherModel::refresh()
208 item->setIcon(asItem.toMap().value("icon").toString());
210 item->setIcon(asItem.toMap().value("icon").toString());
209 item->setCount(asItem.toMap().value("count").toInt());
211 item->setCount(asItem.toMap().value("count").toInt());
210 item->setCountVisible(asItem.toMap().value("countVisible").toBool());
212 item->setCountVisible(asItem.toMap().value("countVisible").toBool());
213+ item->setRunning(asItem.toMap().value("running").toBool());
211 int idx = m_list.indexOf(item);
214 int idx = m_list.indexOf(item);
212− Q_EMIT dataChanged(index(idx), index(idx), QVector<int>() << RoleName << RoleIcon);
215+ Q_EMIT dataChanged(index(idx), index(idx), {RoleName, RoleIcon, RoleCount, RoleCountVisible, RoleRunning});
213 }
216 }
214 break;
217 break;
215 }
218 }
@@ -255,6 +258,7 @@ void LauncherModel::refresh()
255 item->setPinned(true);
258 item->setPinned(true);
256 item->setCount(entry.toMap().value("count").toInt());
259 item->setCount(entry.toMap().value("count").toInt());
257 item->setCountVisible(entry.toMap().value("countVisible").toBool());
260 item->setCountVisible(entry.toMap().value("countVisible").toBool());
261+ item->setRunning(entry.toMap().value("running").toBool());
258 beginInsertRows(QModelIndex(), newPosition, newPosition);
262 beginInsertRows(QModelIndex(), newPosition, newPosition);
259 m_list.insert(newPosition, item);
263 m_list.insert(newPosition, item);
260 endInsertRows();
264 endInsertRows();
plugins/Unity/Launcher/asadapter.cpp+1
@@ -56,5 +56,6 @@ QVariantMap ASAdapter::itemToVariant(LauncherItem *item) const
56 details.insert("count", item->count());
56 details.insert("count", item->count());
57 details.insert("countVisible", item->countVisible());
57 details.insert("countVisible", item->countVisible());
58 details.insert("pinned", item->pinned());
58 details.insert("pinned", item->pinned());
59+ details.insert("running", item->running());
59 return details;
60 return details;
60}
61}
plugins/Unity/Launcher/asadapter.h−3
@@ -21,7 +21,6 @@
21
21
22class LauncherItem;
22class LauncherItem;
23class AccountsServiceDBusAdaptor;
23class AccountsServiceDBusAdaptor;
24−class QDBusInterface;
25
24
26class ASAdapter
25class ASAdapter
27{
26{
@@ -38,8 +37,6 @@ private:
38 AccountsServiceDBusAdaptor *m_accounts;
37 AccountsServiceDBusAdaptor *m_accounts;
39 QString m_user;
38 QString m_user;
40
39
41− QDBusInterface *m_userInterface;
42−
43 friend class LauncherModelTest;
40 friend class LauncherModelTest;
44};
41};
45
42
plugins/Unity/Launcher/dbusinterface.cpp+9
@@ -168,6 +168,8 @@ bool DBusInterface::handleMessage(const QDBusMessage& message, const QDBusConnec
168 retval.append(QVariant::fromValue(QDBusVariant(item->count())));
168 retval.append(QVariant::fromValue(QDBusVariant(item->count())));
169 } else if (message.arguments()[1].toString() == "countVisible") {
169 } else if (message.arguments()[1].toString() == "countVisible") {
170 retval.append(QVariant::fromValue(QDBusVariant(item->countVisible())));
170 retval.append(QVariant::fromValue(QDBusVariant(item->countVisible())));
171+ } else if (message.arguments()[1].toString() == "running") {
172+ retval.append(QVariant::fromValue(QDBusVariant(item->running())));
171 }
173 }
172 } else if (message.member() == "Set") {
174 } else if (message.member() == "Set") {
173 if (message.arguments()[1].toString() == "count") {
175 if (message.arguments()[1].toString() == "count") {
@@ -182,12 +184,19 @@ bool DBusInterface::handleMessage(const QDBusMessage& message, const QDBusConnec
182 Q_EMIT countVisibleChanged(appid, newVisible);
184 Q_EMIT countVisibleChanged(appid, newVisible);
183 notifyPropertyChanged("com.canonical.Unity.Launcher.Item", encodeAppId(appid), "countVisible", newVisible);
185 notifyPropertyChanged("com.canonical.Unity.Launcher.Item", encodeAppId(appid), "countVisible", newVisible);
184 }
186 }
187+ } else if (message.arguments()[1].toString() == "running") {
188+ bool newRunning = message.arguments()[2].value<QDBusVariant>().variant().toBool();
189+ if (!item || newRunning != item->running()) {
190+ Q_EMIT runningChanged(appid, newRunning);
191+ notifyPropertyChanged("com.canonical.Unity.Launcher.Item", encodeAppId(appid), "running", newRunning);
192+ }
185 }
193 }
186 } else if (message.member() == "GetAll") {
194 } else if (message.member() == "GetAll") {
187 if (item) {
195 if (item) {
188 QVariantMap all;
196 QVariantMap all;
189 all.insert("count", item->count());
197 all.insert("count", item->count());
190 all.insert("countVisible", item->countVisible());
198 all.insert("countVisible", item->countVisible());
199+ all.insert("running", item->running());
191 retval.append(all);
200 retval.append(all);
192 }
201 }
193 } else {
202 } else {
plugins/Unity/Launcher/dbusinterface.h+1
@@ -36,6 +36,7 @@ public:
36Q_SIGNALS:
36Q_SIGNALS:
37 void countChanged(const QString &appId, int count);
37 void countChanged(const QString &appId, int count);
38 void countVisibleChanged(const QString &appId, bool countVisible);
38 void countVisibleChanged(const QString &appId, bool countVisible);
39+ void runningChanged(const QString &appId, bool running);
39 void refreshCalled();
40 void refreshCalled();
40
41
41private:
42private:
plugins/Unity/Launcher/gsettings.cpp+1−1
@@ -68,7 +68,7 @@ void GSettings::setStoredApplications(const QStringList &storedApplications)
68void GSettings::onSettingsChanged(const QString &key)
68void GSettings::onSettingsChanged(const QString &key)
69{
69{
70 if (key == "items") {
70 if (key == "items") {
71− QStringList cachedItems = m_gSettings->get("items").toStringList();
71+ const QStringList cachedItems = m_gSettings->get("items").toStringList();
72 if (m_cachedItems != cachedItems) {
72 if (m_cachedItems != cachedItems) {
73 m_cachedItems = cachedItems;
73 m_cachedItems = cachedItems;
74 Q_EMIT changed();
74 Q_EMIT changed();
plugins/Unity/Launcher/launchermodel.cpp+12−1
@@ -36,10 +36,11 @@ LauncherModel::LauncherModel(QObject *parent):
36 m_settings(new GSettings(this)),
36 m_settings(new GSettings(this)),
37 m_dbusIface(new DBusInterface(this)),
37 m_dbusIface(new DBusInterface(this)),
38 m_asAdapter(new ASAdapter()),
38 m_asAdapter(new ASAdapter()),
39− m_appManager(0)
39+ m_appManager(nullptr)
40{
40{
41 connect(m_dbusIface, &DBusInterface::countChanged, this, &LauncherModel::countChanged);
41 connect(m_dbusIface, &DBusInterface::countChanged, this, &LauncherModel::countChanged);
42 connect(m_dbusIface, &DBusInterface::countVisibleChanged, this, &LauncherModel::countVisibleChanged);
42 connect(m_dbusIface, &DBusInterface::countVisibleChanged, this, &LauncherModel::countVisibleChanged);
43+ connect(m_dbusIface, &DBusInterface::runningChanged, this, &LauncherModel::runningChanged);
43 connect(m_dbusIface, &DBusInterface::refreshCalled, this, &LauncherModel::refresh);
44 connect(m_dbusIface, &DBusInterface::refreshCalled, this, &LauncherModel::refresh);
44
45
45 connect(m_settings, &GSettings::changed, this, &LauncherModel::refresh);
46 connect(m_settings, &GSettings::changed, this, &LauncherModel::refresh);
@@ -334,6 +335,16 @@ void LauncherModel::progressChanged(const QString &appId, int progress)
334 }
335 }
335}
336}
336
337
338+void LauncherModel::runningChanged(const QString &appId, bool running)
339+{
340+ const int idx = findApplication(appId);
341+ if (idx >= 0) {
342+ LauncherItem *item = m_list.at(idx);
343+ item->setRunning(running);
344+ Q_EMIT dataChanged(index(idx), index(idx), {RoleRunning});
345+ }
346+}
347+
337void LauncherModel::countChanged(const QString &appId, int count)
348void LauncherModel::countChanged(const QString &appId, int count)
338{
349{
339 const int idx = findApplication(appId);
350 const int idx = findApplication(appId);
plugins/Unity/Launcher/launchermodel.h+1
@@ -73,6 +73,7 @@ private Q_SLOTS:
73 void countChanged(const QString &appId, int count);
73 void countChanged(const QString &appId, int count);
74 void countVisibleChanged(const QString &appId, int count);
74 void countVisibleChanged(const QString &appId, int count);
75 void progressChanged(const QString &appId, int progress);
75 void progressChanged(const QString &appId, int progress);
76+ void runningChanged(const QString &appId, bool running);
76
77
77 void applicationAdded(const QModelIndex &parent, int row);
78 void applicationAdded(const QModelIndex &parent, int row);
78 void applicationRemoved(const QModelIndex &parent, int row);
79 void applicationRemoved(const QModelIndex &parent, int row);