summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Griebl <robert.griebl@pelagicore.com>2017-03-15 14:24:34 +0100
committerRobert Griebl <robert.griebl@pelagicore.com>2017-03-15 16:57:32 +0000
commiteedc4d08568a8eb3298ffae5d28de041098e8103 (patch)
tree86de7db1e299647c0674454026765de61caecd6d
parent75d48a6a31585659240c1e022381d33d59a5d998 (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.cpp19
-rw-r--r--src/manager-lib/applicationmanager.cpp3
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: {