Merge lp:~jonas-drange/ubuntu-system-settings/lp1509022 into lp:ubuntu-system-settings

Proposed by Jonas G. Drange
Status: Merged
Approved by: Ken VanDine
Approved revision: 1637
Merged at revision: 1651
Proposed branch: lp:~jonas-drange/ubuntu-system-settings/lp1509022
Merge into: lp:ubuntu-system-settings
Diff against target: 203 lines (+48/-40)
2 files modified
plugins/system-update/system_update.cpp (+39/-37)
plugins/system-update/system_update.h (+9/-3)
To merge this branch: bzr merge lp:~jonas-drange/ubuntu-system-settings/lp1509022
Reviewer Review Type Date Requested Status
Ken VanDine Approve
PS Jenkins bot continuous-integration Needs Fixing
Review via email: mp+292794@code.launchpad.net

Commit message

add servicewatcher to system image binding

Description of the change

add servicewatcher to system image binding

To post a comment you must log in.
1637. By Jonas G. Drange

-1 to indicate uninitialized target number

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Ken VanDine (ken-vandine) wrote :

Nicely simplified, I like it!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'plugins/system-update/system_update.cpp'
--- plugins/system-update/system_update.cpp 2016-03-02 17:26:10 +0000
+++ plugins/system-update/system_update.cpp 2016-04-25 11:52:41 +0000
@@ -39,11 +39,15 @@
39SystemUpdate::SystemUpdate(QObject *parent) :39SystemUpdate::SystemUpdate(QObject *parent) :
40 QObject(parent),40 QObject(parent),
41 m_currentBuildNumber(-1),41 m_currentBuildNumber(-1),
42 m_targetBuildNumber(-1),
42 m_detailedVersion(),43 m_detailedVersion(),
43 m_lastUpdateDate(),44 m_lastUpdateDate(),
44 m_downloadMode(-1),45 m_downloadMode(-1),
45 m_systemBusConnection (QDBusConnection::systemBus()),46 m_systemBusConnection(QDBusConnection::systemBus()),
46 m_SystemServiceIface ("com.canonical.SystemImage",47 m_serviceWatcher("com.canonical.SystemImage",
48 m_systemBusConnection,
49 QDBusServiceWatcher::WatchForOwnerChange),
50 m_SystemServiceIface("com.canonical.SystemImage",
47 "/Service",51 "/Service",
48 "com.canonical.SystemImage",52 "com.canonical.SystemImage",
49 m_systemBusConnection)53 m_systemBusConnection)
@@ -52,6 +56,33 @@
5256
53 qDBusRegisterMetaType<QMap<QString, QString> >();57 qDBusRegisterMetaType<QMap<QString, QString> >();
5458
59 connect(&m_serviceWatcher,
60 SIGNAL(serviceOwnerChanged(QString, QString, QString)),
61 this,
62 SLOT(slotNameOwnerChanged(QString, QString, QString)));
63
64 setUpInterface();
65}
66
67SystemUpdate::~SystemUpdate() {
68}
69
70
71void SystemUpdate::slotNameOwnerChanged(const QString &name,
72 const QString &oldOwner,
73 const QString &newOwner) {
74 Q_UNUSED (oldOwner);
75 Q_UNUSED (newOwner);
76
77 if (name != "com.canonical.SystemImage")
78 return;
79 qWarning() << "got si slot name owner change, setting up...";
80 if (m_SystemServiceIface.isValid())
81 setUpInterface();
82}
83
84void SystemUpdate::setUpInterface() {
85 qWarning() << "setting up the si interface...";
55 connect(&m_SystemServiceIface, SIGNAL(UpdateAvailableStatus(bool, bool, QString, int, QString, QString)),86 connect(&m_SystemServiceIface, SIGNAL(UpdateAvailableStatus(bool, bool, QString, int, QString, QString)),
56 this, SLOT(ProcessAvailableStatus(bool, bool, QString, int, QString, QString)));87 this, SLOT(ProcessAvailableStatus(bool, bool, QString, int, QString, QString)));
57 // signals to forward directly to QML88 // signals to forward directly to QML
@@ -71,9 +102,8 @@
71 this, SLOT(ProcessSettingChanged(QString, QString)));102 this, SLOT(ProcessSettingChanged(QString, QString)));
72 connect(&m_SystemServiceIface, SIGNAL(Rebooting(bool)),103 connect(&m_SystemServiceIface, SIGNAL(Rebooting(bool)),
73 this, SIGNAL(rebooting(bool)));104 this, SIGNAL(rebooting(bool)));
74}
75105
76SystemUpdate::~SystemUpdate() {106 initializeProperties();
77}107}
78108
79void SystemUpdate::checkForUpdate() {109void SystemUpdate::checkForUpdate() {
@@ -106,7 +136,8 @@
106 Q_EMIT updateProcessFailed(_("Can't pause current request (can't contact service)"));136 Q_EMIT updateProcessFailed(_("Can't pause current request (can't contact service)"));
107}137}
108138
109void SystemUpdate::setCurrentDetailedVersion() {139
140void SystemUpdate::initializeProperties() {
110 QDBusPendingReply<QMap<QString, QString> > reply = m_SystemServiceIface.call("Information");141 QDBusPendingReply<QMap<QString, QString> > reply = m_SystemServiceIface.call("Information");
111 reply.waitForFinished();142 reply.waitForFinished();
112 if (reply.isValid()) {143 if (reply.isValid()) {
@@ -114,6 +145,7 @@
114 m_currentBuildNumber = result["current_build_number"].toInt();145 m_currentBuildNumber = result["current_build_number"].toInt();
115 m_deviceName = result["device_name"];146 m_deviceName = result["device_name"];
116 m_lastUpdateDate = QDateTime::fromString(result["last_update_date"], Qt::ISODate);147 m_lastUpdateDate = QDateTime::fromString(result["last_update_date"], Qt::ISODate);
148 m_targetBuildNumber = result["target_build_number"].toInt();
117149
118 QMap<QString, QVariant> details;150 QMap<QString, QVariant> details;
119 QStringList keyvalue = result["version_detail"].split(",", QString::SkipEmptyParts);151 QStringList keyvalue = result["version_detail"].split(",", QString::SkipEmptyParts);
@@ -130,68 +162,37 @@
130}162}
131163
132bool SystemUpdate::checkTarget() {164bool SystemUpdate::checkTarget() {
133 int target = 0;165 return m_targetBuildNumber > m_currentBuildNumber;
134 int current = 0;
135 QDBusPendingReply<QMap<QString, QString> > reply = m_SystemServiceIface.call("Information");
136 reply.waitForFinished();
137 if (reply.isValid()) {
138 QMap<QString, QString> result = reply.argumentAt<0>();
139 target = result.value("target_build_number", "0").toInt();
140 current = result.value("current_build_number", "0").toInt();
141 } else {
142 qWarning() << "Error when retrieving version information: " << reply.error();
143 }
144
145 return target > current;
146}166}
147167
148QString SystemUpdate::deviceName() {168QString SystemUpdate::deviceName() {
149 if (m_deviceName.isNull())
150 setCurrentDetailedVersion();
151
152 return m_deviceName;169 return m_deviceName;
153}170}
154171
155QDateTime SystemUpdate::lastUpdateDate() {172QDateTime SystemUpdate::lastUpdateDate() {
156 if (!m_lastUpdateDate.isValid())
157 setCurrentDetailedVersion();
158
159 return m_lastUpdateDate;173 return m_lastUpdateDate;
160}174}
161175
162int SystemUpdate::currentBuildNumber() {176int SystemUpdate::currentBuildNumber() {
163 if (m_currentBuildNumber == -1)
164 setCurrentDetailedVersion();
165
166 return m_currentBuildNumber;177 return m_currentBuildNumber;
167}178}
168179
169QString SystemUpdate::currentUbuntuBuildNumber() {180QString SystemUpdate::currentUbuntuBuildNumber() {
170 if (!m_detailedVersion.contains("ubuntu"))
171 setCurrentDetailedVersion();
172 QString val = m_detailedVersion.value("ubuntu").toString();181 QString val = m_detailedVersion.value("ubuntu").toString();
173 return val.isEmpty() ? _("Unavailable") : val;182 return val.isEmpty() ? _("Unavailable") : val;
174}183}
175184
176QString SystemUpdate::currentDeviceBuildNumber() {185QString SystemUpdate::currentDeviceBuildNumber() {
177 if (!m_detailedVersion.contains("device"))
178 setCurrentDetailedVersion();
179 QString val = m_detailedVersion.value("device").toString();186 QString val = m_detailedVersion.value("device").toString();
180 return val.isEmpty() ? _("Unavailable") : val;187 return val.isEmpty() ? _("Unavailable") : val;
181}188}
182189
183QString SystemUpdate::currentCustomBuildNumber() {190QString SystemUpdate::currentCustomBuildNumber() {
184 if (!m_detailedVersion.contains("custom"))
185 setCurrentDetailedVersion();
186 QString val = m_detailedVersion.value("custom").toString();191 QString val = m_detailedVersion.value("custom").toString();
187 return val.isEmpty() ? _("Unavailable") : val;192 return val.isEmpty() ? _("Unavailable") : val;
188}193}
189194
190QMap<QString, QVariant> SystemUpdate::detailedVersionDetails() {195QMap<QString, QVariant> SystemUpdate::detailedVersionDetails() {
191 if (m_detailedVersion.empty()) {
192 setCurrentDetailedVersion();
193 }
194
195 return m_detailedVersion;196 return m_detailedVersion;
196}197}
197198
@@ -242,6 +243,7 @@
242 QString lastUpdateDate,243 QString lastUpdateDate,
243 QString errorReason)244 QString errorReason)
244{245{
246 qWarning()<<"ProcessAvailableStatus";
245 update = new Update(this);247 update = new Update(this);
246 QString packageName(UBUNTU_PACKAGE_NAME);248 QString packageName(UBUNTU_PACKAGE_NAME);
247 update->initializeApplication(packageName, "Ubuntu",249 update->initializeApplication(packageName, "Ubuntu",
248250
=== modified file 'plugins/system-update/system_update.h'
--- plugins/system-update/system_update.h 2016-03-02 15:23:21 +0000
+++ plugins/system-update/system_update.h 2016-04-25 11:52:41 +0000
@@ -24,6 +24,7 @@
2424
25#include <QtDBus>25#include <QtDBus>
26#include <QDBusInterface>26#include <QDBusInterface>
27#include <QDBusServiceWatcher>
27#include <QObject>28#include <QObject>
28#include <QProcess>29#include <QProcess>
29#include <QUrl>30#include <QUrl>
@@ -79,20 +80,25 @@
7980
80private Q_SLOTS:81private Q_SLOTS:
81 void updateDownloadProgress(int percentage, double eta);82 void updateDownloadProgress(int percentage, double eta);
83 void slotNameOwnerChanged(const QString&, const QString&, const QString&);
8284
83private:85private:
86 // Synchronously initialize properties from the Information call.
87 void initializeProperties();
88 // Sets up connections on the DBus interface.
89 void setUpInterface();
90
84 int m_currentBuildNumber;91 int m_currentBuildNumber;
92 int m_targetBuildNumber;
85 QMap<QString, QVariant> m_detailedVersion;93 QMap<QString, QVariant> m_detailedVersion;
86 QDateTime m_lastUpdateDate;94 QDateTime m_lastUpdateDate;
87 int m_downloadMode;95 int m_downloadMode;
88 QString m_deviceName;96 QString m_deviceName;
8997
90 QDBusConnection m_systemBusConnection;98 QDBusConnection m_systemBusConnection;
91 QString m_objectPath;99 QDBusServiceWatcher m_serviceWatcher;
92 QDBusInterface m_SystemServiceIface;100 QDBusInterface m_SystemServiceIface;
93 Update *update;101 Update *update;
94
95 void setCurrentDetailedVersion();
96};102};
97103
98}104}

Subscribers

People subscribed via source and target branches