summaryrefslogtreecommitdiffstats
path: root/installerbuilder/installerbase/tabcontroller.cpp
diff options
context:
space:
mode:
authorkh1 <qt-info@nokia.com>2011-06-30 14:03:22 +0200
committerkh1 <qt-info@nokia.com>2011-06-30 14:03:22 +0200
commit304d54ea1931b2c958769fb699d9f8dc2e1a7bc9 (patch)
tree966dd7db581500b971007b12aaa19536e8210026 /installerbuilder/installerbase/tabcontroller.cpp
parentaea42ec8625e9e785d5b4048023144ed876ce6bf (diff)
Implement package management even if we can't reach the repo.
If we can't reach the given repo or if no repo is set, we still need to support package managment to be able to uninstall components found on the hard disk drive.
Diffstat (limited to 'installerbuilder/installerbase/tabcontroller.cpp')
-rw-r--r--installerbuilder/installerbase/tabcontroller.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/installerbuilder/installerbase/tabcontroller.cpp b/installerbuilder/installerbase/tabcontroller.cpp
index 6071d2a72..67c4a8d51 100644
--- a/installerbuilder/installerbase/tabcontroller.cpp
+++ b/installerbuilder/installerbase/tabcontroller.cpp
@@ -232,10 +232,19 @@ int TabController::initPackageManager()
d->m_gui->setWindowModality(Qt::WindowModal);
d->m_gui->show();
+ bool localPackagesTreeFetched = false;
if (!d->m_allPackagesFetched) {
+ // first try to fetch the server side packages tree
d->m_allPackagesFetched = d->m_core->fetchAllPackages();
- if (!d->m_allPackagesFetched)
- introPage->setErrorMessage(d->m_core->error());
+ if (!d->m_allPackagesFetched) {
+ const QString error = d->m_core->error();
+ // if that fails, try to fetch local installed tree
+ localPackagesTreeFetched = d->m_core->fetchLocalPackagesTree();
+ if (!localPackagesTreeFetched) {
+ // if that still failed, show error message
+ introPage->setErrorMessage(error);
+ }
+ }
}
// Initialize the gui. Needs to be done after check repositories as only then the ui can handle
@@ -250,7 +259,8 @@ int TabController::initPackageManager()
} else {
introPage->hideAll();
}
- if (d->m_allPackagesFetched)
+
+ if (d->m_allPackagesFetched | localPackagesTreeFetched)
introPage->setComplete(true);
if (d->m_core->status() == PackageManagerCore::Canceled)