summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--installerbuilder/installerbase/tabcontroller.cpp10
-rw-r--r--installerbuilder/libinstaller/packagemanagercore.cpp28
-rw-r--r--installerbuilder/libinstaller/packagemanagercore.h1
-rw-r--r--installerbuilder/libinstaller/packagemanagercore_p.cpp8
4 files changed, 34 insertions, 13 deletions
diff --git a/installerbuilder/installerbase/tabcontroller.cpp b/installerbuilder/installerbase/tabcontroller.cpp
index 0e09adbed..10c6bd516 100644
--- a/installerbuilder/installerbase/tabcontroller.cpp
+++ b/installerbuilder/installerbase/tabcontroller.cpp
@@ -190,10 +190,7 @@ int TabController::initUpdater()
else
introPage->setComplete(true);
}
-
- if (d->m_core->status() == PackageManagerCore::Canceled)
- return PackageManagerCore::Canceled;
- return PackageManagerCore::Success;
+ return d->m_core->status();
}
int TabController::initUninstaller()
@@ -264,10 +261,7 @@ int TabController::initPackageManager()
if (d->m_allPackagesFetched | localPackagesTreeFetched)
introPage->setComplete(true);
-
- if (d->m_core->status() == PackageManagerCore::Canceled)
- return PackageManagerCore::Canceled;
- return PackageManagerCore::Success;
+ return d->m_core->status();
}
// -- private slots
diff --git a/installerbuilder/libinstaller/packagemanagercore.cpp b/installerbuilder/libinstaller/packagemanagercore.cpp
index ce22de0ca..d6079898a 100644
--- a/installerbuilder/libinstaller/packagemanagercore.cpp
+++ b/installerbuilder/libinstaller/packagemanagercore.cpp
@@ -663,7 +663,7 @@ bool PackageManagerCore::fetchRemotePackagesTree()
success = fetchUpdaterPackages(packages, installedPackages);
}
- if (success)
+ if (success && !d->statusCanceledOrFailed())
d->setStatus(Success);
return success;
}
@@ -1533,8 +1533,10 @@ bool PackageManagerCore::fetchAllPackages(const PackagesList &remotes, const Loc
data.installedPackages = &locals;
foreach (Package *const package, remotes) {
- QScopedPointer<QInstaller::Component> component(new QInstaller::Component(this));
+ if (d->statusCanceledOrFailed())
+ return false;
+ QScopedPointer<QInstaller::Component> component(new QInstaller::Component(this));
data.package = package;
component->loadDataFromPackage(*package);
if (updateComponentData(data, component.data())) {
@@ -1549,6 +1551,9 @@ bool PackageManagerCore::fetchAllPackages(const PackagesList &remotes, const Loc
try {
// append all components to their respective parents
for (QHash<QString, Component*>::const_iterator it = components.begin(); it != components.end(); ++it) {
+ if (d->statusCanceledOrFailed())
+ return false;
+
QString id = it.key();
QInstaller::Component *component = it.value();
while (!id.isEmpty() && component->parentComponent() == 0) {
@@ -1560,12 +1565,18 @@ bool PackageManagerCore::fetchAllPackages(const PackagesList &remotes, const Loc
// append all components w/o parent to the direct list
foreach (QInstaller::Component *component, components) {
+ if (d->statusCanceledOrFailed())
+ return false;
+
if (component->parentComponent() == 0)
appendRootComponent(component);
}
// after everything is set up, load the scripts
foreach (QInstaller::Component *component, components) {
+ if (d->statusCanceledOrFailed())
+ return false;
+
component->loadComponentScript();
// set the checked state for all components without child (means without tristate)
@@ -1602,8 +1613,10 @@ bool PackageManagerCore::fetchUpdaterPackages(const PackagesList &remotes, const
bool foundImportantUpdate = false;
foreach (Package *const update, remotes) {
- QScopedPointer<QInstaller::Component> component(new QInstaller::Component(this));
+ if (d->statusCanceledOrFailed())
+ return false;
+ QScopedPointer<QInstaller::Component> component(new QInstaller::Component(this));
data.package = update;
component->loadDataFromPackage(*update);
if (updateComponentData(data, component.data())) {
@@ -1657,6 +1670,9 @@ bool PackageManagerCore::fetchUpdaterPackages(const PackagesList &remotes, const
// remove all unimportant updates
const QStringList &keys = components.keys();
foreach (const QString &key, keys) {
+ if (d->statusCanceledOrFailed())
+ return false;
+
if (components.value(key)->value(scImportant, scFalse).toLower() == scFalse)
delete components.take(key);
}
@@ -1665,6 +1681,9 @@ bool PackageManagerCore::fetchUpdaterPackages(const PackagesList &remotes, const
if (!components.isEmpty()) {
// load the scripts and append all components w/o parent to the direct list
foreach (QInstaller::Component *component, components) {
+ if (d->statusCanceledOrFailed())
+ return false;
+
component->loadComponentScript();
component->setCheckState(Qt::Checked);
appendUpdaterComponent(component);
@@ -1672,6 +1691,9 @@ bool PackageManagerCore::fetchUpdaterPackages(const PackagesList &remotes, const
// after everything is set up, check installed components
foreach (QInstaller::Component *component, d->m_updaterComponentsDeps) {
+ if (d->statusCanceledOrFailed())
+ return false;
+
if (component->isInstalled()) {
// since we do not put them into the model, which would force a update of e.g. tri state
// components, we have to check all installed components ourself
diff --git a/installerbuilder/libinstaller/packagemanagercore.h b/installerbuilder/libinstaller/packagemanagercore.h
index 09261845f..0995cac79 100644
--- a/installerbuilder/libinstaller/packagemanagercore.h
+++ b/installerbuilder/libinstaller/packagemanagercore.h
@@ -215,7 +215,6 @@ public Q_SLOTS:
void cancelMetaInfoJob();
void componentsToInstallNeedsRecalculation();
-
Q_SIGNALS:
void componentAdded(QInstaller::Component *comp);
void rootComponentsAdded(QList<QInstaller::Component*> components);
diff --git a/installerbuilder/libinstaller/packagemanagercore_p.cpp b/installerbuilder/libinstaller/packagemanagercore_p.cpp
index 21f434f83..ef855409d 100644
--- a/installerbuilder/libinstaller/packagemanagercore_p.cpp
+++ b/installerbuilder/libinstaller/packagemanagercore_p.cpp
@@ -1754,8 +1754,11 @@ LocalPackagesHash PackageManagerCorePrivate::localInstalledPackages()
if (packagesInfo.error() != KDUpdater::PackagesInfo::NoError)
setStatus(PackageManagerCore::Failure, tr("Failure to read packages from: %1.").arg(componentsXmlPath()));
- foreach (const LocalPackage &package, packagesInfo.packageInfos())
+ foreach (const LocalPackage &package, packagesInfo.packageInfos()) {
+ if (statusCanceledOrFailed())
+ break;
installedPackages.insert(package.name, package);
+ }
}
return installedPackages;
@@ -1806,6 +1809,9 @@ bool PackageManagerCorePrivate::addUpdateResourcesFromRepositories(bool parseChe
const QString &appName = m_settings.applicationName();
const QStringList tempDirs = m_repoMetaInfoJob->temporaryDirectories();
foreach (const QString &tmpDir, tempDirs) {
+ if (statusCanceledOrFailed())
+ return false;
+
if (tmpDir.isEmpty())
continue;