@@ -38,7 +38,8 @@ SystemImage::SystemImage(QObject *parent)
3838 this, SLOT(onUpdateFailed(int,QString)));
3939 QDBusConnection::systemBus().connect(SYSTEMIMAGE_SERVICE, SYSTEMIMAGE_PATH, SYSTEMIMAGE_IFACE, QStringLiteral("Applied"),
4040 this, SLOT(onUpdateApplied(bool)));
41−
41+ QDBusConnection::systemBus().connect(SYSTEMIMAGE_SERVICE, SYSTEMIMAGE_PATH, SYSTEMIMAGE_IFACE, QStringLiteral("Rebooting"),
42+ this, SLOT(onRebooting(bool)));
4243 QDBusConnection::systemBus().connect(SYSTEMIMAGE_SERVICE, SYSTEMIMAGE_PATH, SYSTEMIMAGE_IFACE, QStringLiteral("UpdateProgress"),
4344 this, SLOT(onUpdateProgress(int,double)));
4445}
@@ -54,6 +55,8 @@ void SystemImage::checkForUpdate()
5455void SystemImage::applyUpdate()
5556{
5657 qDebug() << "!!! Applying update";
58+ setUpdateApplying(true);
59+
5760 const QDBusMessage msg = QDBusMessage::createMethodCall(SYSTEMIMAGE_SERVICE, SYSTEMIMAGE_PATH, SYSTEMIMAGE_IFACE,
5861 QStringLiteral("ApplyUpdate"));
5962 QDBusConnection::systemBus().asyncCall(msg);
@@ -99,11 +102,13 @@ void SystemImage::onUpdateFailed(int consecutive_failure_count, const QString &l
99102{
100103 Q_UNUSED(consecutive_failure_count)
101104 qWarning() << Q_FUNC_INFO << "System Update failed:" << last_reason;
105+ setUpdateApplying(false);
102106}
103107
104108void SystemImage::onUpdateApplied(bool applied)
105109{
106110 qDebug() << Q_FUNC_INFO << "System Update applied with status:" << applied;
111+ setUpdateApplying(false);
107112 if (applied) {
108113 resetUpdateStatus();
109114 Q_EMIT updateAvailableStatus();
@@ -115,9 +120,24 @@ void SystemImage::onUpdateProgress(int percentage, double eta)
115120 qDebug() << "!!! Download progress:" << percentage << "%, ETA seconds:" << eta;
116121}
117122
123+void SystemImage::onRebooting(bool status)
124+{
125+ setUpdateApplying(false);
126+ qDebug() << "!!! Rebooting:" << status;
127+}
128+
129+void SystemImage::setUpdateApplying(bool status)
130+{
131+ if (status != m_updateApplying) {
132+ m_updateApplying = status;
133+ Q_EMIT updateApplyingChanged();
134+ }
135+}
136+
118137void SystemImage::resetUpdateStatus()
119138{
120139 m_updateAvailable = false;
140+ m_updateApplying = false;
121141 m_downloading = false;
122142 m_downloaded = false;
123143 m_availableVersion.clear();