diff options
author | Robert Griebl <robert.griebl@pelagicore.com> | 2017-03-15 14:24:34 +0100 |
---|---|---|
committer | Robert Griebl <robert.griebl@pelagicore.com> | 2017-03-15 16:57:32 +0000 |
commit | eedc4d08568a8eb3298ffae5d28de041098e8103 (patch) | |
tree | 86de7db1e299647c0674454026765de61caecd6d | |
parent | 75d48a6a31585659240c1e022381d33d59a5d998 (diff) |
Fix app icon not updating on app installation
Change-Id: Ia931f0fd077a03538b2e8dcfd8207fc292ef802b
Reviewed-by: Dominik Holland <dominik.holland@pelagicore.com>
-rw-r--r-- | src/application-lib/application.cpp | 19 | ||||
-rw-r--r-- | src/manager-lib/applicationmanager.cpp | 3 |
2 files changed, 20 insertions, 2 deletions
diff --git a/src/application-lib/application.cpp b/src/application-lib/application.cpp index a3e33d62..c106fa12 100644 --- a/src/application-lib/application.cpp +++ b/src/application-lib/application.cpp @@ -333,7 +333,24 @@ QString Application::name(const QString &language) const QString Application::icon() const { - return m_icon.isEmpty() ? QString() : manifestDir().absoluteFilePath(m_icon); + if (m_icon.isEmpty()) + return QString(); + + QDir dir; + switch (m_state) { + default: + case Installed: + dir = manifestDir(); + break; + case BeingInstalled: + case BeingUpdated: + dir = QDir(m_codeDir.absolutePath() + QLatin1Char('+')); + break; + case BeingRemoved: + dir = QDir(m_codeDir.absolutePath() + QLatin1Char('-')); + break; + } + return dir.absoluteFilePath(m_icon); } QUrl Application::iconUrl() const diff --git a/src/manager-lib/applicationmanager.cpp b/src/manager-lib/applicationmanager.cpp index 0aef2961..528f3f09 100644 --- a/src/manager-lib/applicationmanager.cpp +++ b/src/manager-lib/applicationmanager.cpp @@ -1470,9 +1470,10 @@ bool ApplicationManager::finishedApplicationInstall(const QString &id) "updated application database to disk failed:" << e.errorString(); d->database->invalidate(); // make sure that the next AM start will re-read the DB } - emitDataChanged(app, QVector<int> { IsUpdating }); + emitDataChanged(app); unblockApplication(id); + emit app->bulkChange(); // not ideal, but icon and codeDir have changed break; } case Application::BeingRemoved: { |