summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBernd Weimer <bernd.weimer@pelagicore.com>2017-12-06 19:32:28 +0100
committerBernd Weimer <bernd.weimer@pelagicore.com>2017-12-08 21:02:42 +0000
commitc77ac0226c7f323bdb93fe214bc335a5d1e386cd (patch)
tree44599f5738c9adbcb466444263204225f79a52b3
parentfc1d71b43d7acde7b6da0ef0ccf26dad43207767 (diff)
Expose installation state to QML
Task-number: AUTOSUITE-135 Change-Id: Ide64d7681f66a3f3c0a521b13854431c07266652 Reviewed-by: Robert Griebl <robert.griebl@pelagicore.com>
-rw-r--r--src/application-lib/application.cpp13
-rw-r--r--src/application-lib/application.h3
-rw-r--r--src/manager-lib/applicationmanager.cpp5
3 files changed, 21 insertions, 0 deletions
diff --git a/src/application-lib/application.cpp b/src/application-lib/application.cpp
index 860acee0..646f6cf5 100644
--- a/src/application-lib/application.cpp
+++ b/src/application-lib/application.cpp
@@ -231,6 +231,19 @@
\sa {Installation Locations}
*/
/*!
+ \qmlproperty enumeration Application::state
+ \readonly
+
+ This property holds the current installation state of the application. It can be one of:
+
+ \list
+ \li Application.Installed - The application is completely installed and ready to be used.
+ \li Application.BeingInstalled - The application is currently in the process of being installed.
+ \li Application.BeingUpdated - The application is currently in the process of being updated.
+ \li Application.BeingRemoved - The application is currently in the process of being removed.
+ \endlist
+*/
+/*!
\qmlsignal Application::activated()
This signal is emitted when the application is started or when it's already running but has
diff --git a/src/application-lib/application.h b/src/application-lib/application.h
index 8b7753d3..cfc09ac8 100644
--- a/src/application-lib/application.h
+++ b/src/application-lib/application.h
@@ -85,6 +85,7 @@ class Application : public QObject
Q_PROPERTY(BackgroundMode backgroundMode READ backgroundMode NOTIFY bulkChange)
Q_PROPERTY(bool supportsApplicationInterface READ supportsApplicationInterface NOTIFY bulkChange)
Q_PROPERTY(QString codeDir READ codeDir NOTIFY bulkChange)
+ Q_PROPERTY(State state READ state NOTIFY stateChanged)
public:
enum ExitStatus { NormalExit, CrashExit, ForcedExit };
@@ -155,6 +156,7 @@ public:
BeingRemoved
};
State state() const;
+ Q_ENUM(State)
qreal progress() const;
void setSupportsApplicationInterface(bool supportsAppInterface);
@@ -173,6 +175,7 @@ signals:
void lastExitCodeChanged() const;
void lastExitStatusChanged() const;
void activated() const;
+ void stateChanged() const;
private:
Application();
diff --git a/src/manager-lib/applicationmanager.cpp b/src/manager-lib/applicationmanager.cpp
index f15b57b4..c15e2862 100644
--- a/src/manager-lib/applicationmanager.cpp
+++ b/src/manager-lib/applicationmanager.cpp
@@ -1173,11 +1173,13 @@ bool ApplicationManager::startingApplicationInstallation(Application *installApp
return false;
newapp->mergeInto(const_cast<Application *>(app));
app->m_state = Application::BeingUpdated;
+ emit app->stateChanged();
app->m_progress = 0;
} else { // installation
newapp->setParent(this);
newapp->block();
newapp->m_state = Application::BeingInstalled;
+ emit newapp->stateChanged();
newapp->m_progress = 0;
app = newapp.take();
beginInsertRows(QModelIndex(), d->apps.count(), d->apps.count());
@@ -1202,6 +1204,7 @@ bool ApplicationManager::startingApplicationRemoval(const QString &id)
return false;
app->m_state = Application::BeingRemoved;
+ emit app->stateChanged();
app->m_progress = 0;
emitDataChanged(app, QVector<int> { IsUpdating });
return true;
@@ -1239,6 +1242,7 @@ bool ApplicationManager::finishedApplicationInstall(const QString &id)
}
const_cast<Application *>(app)->setInstallationReport(ir.take());
app->m_state = Application::Installed;
+ emit app->stateChanged();
app->m_progress = 0;
try {
@@ -1304,6 +1308,7 @@ bool ApplicationManager::canceledApplicationInstall(const QString &id)
case Application::BeingUpdated:
case Application::BeingRemoved:
app->m_state = Application::Installed;
+ emit app->stateChanged();
app->m_progress = 0;
emitDataChanged(app, QVector<int> { IsUpdating });