summaryrefslogtreecommitdiffstats
path: root/src/libs/installer
diff options
context:
space:
mode:
authorArttu Tarkiainen <arttu.tarkiainen@qt.io>2022-10-17 17:03:22 +0300
committerArttu Tarkiainen <arttu.tarkiainen@qt.io>2022-10-18 10:36:38 +0300
commit35d2b7bc8e8fd98c963f4c9ddcf4eb17b4f5a5cd (patch)
treea80c1c428b0f9a497acc952fcfa9e5a07ef1343f /src/libs/installer
parent20b0089be0c45ebf682f48e5d721762aa6eeda6c (diff)
Show information dialog after clearing metadata cache
Show dialog indicating success or failure, including the error message, to add some feedback for the action. Adjust related to code to handle return value of GenericDataCache<T>::clear() function, and fix the wrong return value when an error occurs while deleting cache subdirectories. Change-Id: Ib35f2db3711d85f567f7918c903aebf4236d7041 Reviewed-by: Katja Marttila <katja.marttila@qt.io>
Diffstat (limited to 'src/libs/installer')
-rw-r--r--src/libs/installer/genericdatacache.cpp4
-rw-r--r--src/libs/installer/metadatajob.cpp7
-rw-r--r--src/libs/installer/packagemanagercore.cpp12
-rw-r--r--src/libs/installer/packagemanagercore.h2
4 files changed, 20 insertions, 5 deletions
diff --git a/src/libs/installer/genericdatacache.cpp b/src/libs/installer/genericdatacache.cpp
index efb3c3776..7f21a5365 100644
--- a/src/libs/installer/genericdatacache.cpp
+++ b/src/libs/installer/genericdatacache.cpp
@@ -256,18 +256,20 @@ bool GenericDataCache<T>::clear()
return false;
}
+ bool success = true;
for (T *item : qAsConst(m_items)) {
try {
QInstaller::removeDirectory(item->path());
} catch (const Error &e) {
setErrorString(QCoreApplication::translate("GenericDataCache",
"Error while clearing cache: %1").arg(e.message()));
+ success = false;
}
}
invalidate();
QDir().rmdir(m_path);
- return true;
+ return success;
}
/*!
diff --git a/src/libs/installer/metadatajob.cpp b/src/libs/installer/metadatajob.cpp
index 5ec4d0fde..beddde6a3 100644
--- a/src/libs/installer/metadatajob.cpp
+++ b/src/libs/installer/metadatajob.cpp
@@ -199,7 +199,12 @@ bool MetadataJob::resetCache(bool init)
bool MetadataJob::clearCache()
{
- return m_metaFromCache.clear();
+ if (m_metaFromCache.clear())
+ return true;
+
+ setError(JobError::CacheError);
+ setErrorString(m_metaFromCache.errorString());
+ return false;
}
// -- private slots
diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp
index 2abfab2f6..bfe8e75b0 100644
--- a/src/libs/installer/packagemanagercore.cpp
+++ b/src/libs/installer/packagemanagercore.cpp
@@ -575,12 +575,20 @@ void PackageManagerCore::cancelMetaInfoJob()
/*!
Clears the contents of the cache used to store downloaded metadata.
+ Returns \c true on success, \c false otherwise. An error string can
+ be retrieved with \a error.
\sa {installer::clearLocalCache}{installer.clearLocalCache}
*/
-void PackageManagerCore::clearLocalCache()
+bool PackageManagerCore::clearLocalCache(QString *error)
{
- d->m_metadataJob.clearCache();
+ if (d->m_metadataJob.clearCache())
+ return true;
+
+ if (error)
+ *error = d->m_metadataJob.errorString();
+
+ return false;
}
/*!
diff --git a/src/libs/installer/packagemanagercore.h b/src/libs/installer/packagemanagercore.h
index 4ee97a86f..ebb590e35 100644
--- a/src/libs/installer/packagemanagercore.h
+++ b/src/libs/installer/packagemanagercore.h
@@ -354,7 +354,7 @@ public Q_SLOTS:
void languageChanged();
void setCompleteUninstallation(bool complete);
void cancelMetaInfoJob();
- void clearLocalCache();
+ bool clearLocalCache(QString *error = nullptr);
void componentsToInstallNeedsRecalculation();
void calculateUserSelectedComponentsToInstall(const QList<QModelIndex> &indexes);
void clearComponentsToInstallCalculated();