diff options
-rw-r--r-- | src/application-lib/application.cpp | 13 | ||||
-rw-r--r-- | src/application-lib/application.h | 3 | ||||
-rw-r--r-- | src/manager-lib/applicationmanager.cpp | 5 |
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 }); |