diff options
author | Arttu Tarkiainen <arttu.tarkiainen@qt.io> | 2022-10-17 17:03:22 +0300 |
---|---|---|
committer | Arttu Tarkiainen <arttu.tarkiainen@qt.io> | 2022-10-18 10:36:38 +0300 |
commit | 35d2b7bc8e8fd98c963f4c9ddcf4eb17b4f5a5cd (patch) | |
tree | a80c1c428b0f9a497acc952fcfa9e5a07ef1343f /src/libs/installer | |
parent | 20b0089be0c45ebf682f48e5d721762aa6eeda6c (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.cpp | 4 | ||||
-rw-r--r-- | src/libs/installer/metadatajob.cpp | 7 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore.cpp | 12 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore.h | 2 |
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(); |