summaryrefslogtreecommitdiffstats
path: root/src/libs/installer/packagemanagercore_p.cpp
diff options
context:
space:
mode:
authorKarsten Heimrich <karsten.heimrich@theqtcompany.com>2015-05-04 14:26:46 +0200
committerKarsten Heimrich <karsten.heimrich@theqtcompany.com>2015-05-05 14:17:33 +0000
commit5c9c7a7281613866d9b0cbf4bec11283ab9c718c (patch)
tree9e4d13d6c8c2c8449158d458f305c6ad648c95ba /src/libs/installer/packagemanagercore_p.cpp
parentb8a7052ac9dffd477e424b34d5cb8d93cce6a6be (diff)
Take over the last used methods from {KD}Application.
Change-Id: I9aaac261bef7aaa48cf0beaee83e15cc5bccd437 Reviewed-by: Jarek Kobus <jaroslaw.kobus@theqtcompany.com>
Diffstat (limited to 'src/libs/installer/packagemanagercore_p.cpp')
-rw-r--r--src/libs/installer/packagemanagercore_p.cpp22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp
index 3c86600dd..7d465cb0a 100644
--- a/src/libs/installer/packagemanagercore_p.cpp
+++ b/src/libs/installer/packagemanagercore_p.cpp
@@ -551,6 +551,7 @@ void PackageManagerCorePrivate::initialize(const QHash<QString, QString> &params
readMaintenanceConfigFiles(QCoreApplication::applicationDirPath());
#endif
}
+ processFilesForDelayedDeletion();
foreach (Operation *currentOperation, m_performedOperationsOld)
currentOperation->setValue(QLatin1String("installer"), QVariant::fromValue(m_core));
@@ -750,8 +751,9 @@ void PackageManagerCorePrivate::writeMaintenanceConfigFiles()
foreach (const Repository &repo, m_data.settings().defaultRepositories())
repos.append(QVariant().fromValue(repo));
cfg.setValue(QLatin1String("DefaultRepositories"), repos);
- cfg.sync();
+ cfg.setValue(QLatin1String("FilesForDelayedDeletion"), m_filesForDelayedDeletion);
+ cfg.sync();
if (cfg.status() != QSettingsWrapper::NoError) {
const QString reason = cfg.status() == QSettingsWrapper::AccessError ? tr("Access error")
: tr("Format error");
@@ -811,6 +813,8 @@ void PackageManagerCorePrivate::readMaintenanceConfigFiles(const QString &target
if (!repos.isEmpty())
m_data.settings().setDefaultRepositories(repos);
+ m_filesForDelayedDeletion = cfg.value(QLatin1String("FilesForDelayedDeletion")).toStringList();
+
QFile file(targetDir + QLatin1String("/network.xml"));
if (!file.open(QIODevice::ReadOnly))
return;
@@ -2321,4 +2325,20 @@ void PackageManagerCorePrivate::handleMethodInvocationRequest(const QString &inv
QMetaObject::invokeMethod(obj, qPrintable(invokableMethodName));
}
+void PackageManagerCorePrivate::processFilesForDelayedDeletion()
+{
+ if (m_filesForDelayedDeletion.isEmpty())
+ return;
+
+ const QStringList filesForDelayedDeletion = std::move(m_filesForDelayedDeletion);
+ foreach (const QString &i, filesForDelayedDeletion) {
+ QFile file(i); //TODO: this should happen asnyc and report errors, I guess
+ if (file.exists() && !file.remove()) {
+ qWarning("Could not delete file %s: %s", qPrintable(i),
+ qPrintable(file.errorString()));
+ m_filesForDelayedDeletion << i; // try again next time
+ }
+ }
+}
+
} // namespace QInstaller