From a4b9ebec9f2d9bd76be025478ecdae51bba523d2 Mon Sep 17 00:00:00 2001 From: kh1 Date: Mon, 29 Oct 2012 15:25:53 +0100 Subject: Revert 4ad2fe4d4a4 in favour of a more generic solution. Task-number: QTIFW-156 Task-number: QTIFW-157 When we disable both package manager and updater radio button, we will never be able to add a valid repository anymore. Now use a more generic implementation and print an error message if we try to access the network without a valid repository. Change-Id: I27e4a7db96695b8ca32f391f910e455a553cc73e Reviewed-by: Tim Jenssen --- src/sdk/installerbasecommons.cpp | 66 ++++++++++++++++++++-------------------- src/sdk/installerbasecommons.h | 2 ++ 2 files changed, 35 insertions(+), 33 deletions(-) (limited to 'src/sdk') diff --git a/src/sdk/installerbasecommons.cpp b/src/sdk/installerbasecommons.cpp index 8b62c0f18..14c2c57ae 100644 --- a/src/sdk/installerbasecommons.cpp +++ b/src/sdk/installerbasecommons.cpp @@ -119,8 +119,13 @@ bool IntroductionPageImpl::validatePage() return true; setComplete(false); - gui()->setSettingsButtonEnabled(false); + if (!validRepositoriesAvailable()) { + setErrorMessage(QLatin1String("") + tr("At least one valid and enabled " + "repository required for this action to succeed.") + QLatin1String("")); + return isComplete(); + } + gui()->setSettingsButtonEnabled(false); const bool maintanence = core->isUpdater() || core->isPackageManager(); if (maintanence) { showAll(); @@ -131,31 +136,19 @@ bool IntroductionPageImpl::validatePage() // fetch updater packages if (core->isUpdater()) { - bool reposAvailable = false; - foreach (const Repository &repo, core->settings().repositories()) { - if (repo.isEnabled() && repo.isValid()) { - reposAvailable = true; - break; - } + if (!m_updatesFetched) { + m_updatesFetched = core->fetchRemotePackagesTree(); + if (!m_updatesFetched) + setErrorMessage(core->error()); } - if (reposAvailable) { - if (!m_updatesFetched) { - m_updatesFetched = core->fetchRemotePackagesTree(); - if (!m_updatesFetched) - setErrorMessage(core->error()); - } - callControlScript(QLatin1String("UpdaterSelectedCallback")); + callControlScript(QLatin1String("UpdaterSelectedCallback")); - if (m_updatesFetched) { - if (core->updaterComponents().count() <= 0) - setErrorMessage(QLatin1String("") + tr("No updates available.") + QLatin1String("")); - else - setComplete(true); - } - } else { - setErrorMessage(QLatin1String("") + tr("At least one enabled and valid " - "repository required to search for updates.") + QLatin1String("")); + if (m_updatesFetched) { + if (core->updaterComponents().count() <= 0) + setErrorMessage(QLatin1String("") + tr("No updates available.") + QLatin1String("")); + else + setComplete(true); } } @@ -224,17 +217,8 @@ void IntroductionPageImpl::showMaintenanceTools() void IntroductionPageImpl::setMaintenanceToolsEnabled(bool enable) { m_packageManager->setEnabled(enable); + m_updateComponents->setEnabled(enable); m_removeAllComponents->setEnabled(enable); - - // if there is no repo, disable the updater functionality - if (packageManagerCore()->settings().repositories().isEmpty()) { - m_updateComponents->setEnabled(false); - // while we can add a repo, check the updater and remove it again, monitor checked state too - if (m_updateComponents->isChecked()) - m_removeAllComponents->setChecked(true); - } else { - m_updateComponents->setEnabled(enable); - } } // -- public slots @@ -266,6 +250,22 @@ void IntroductionPageImpl::callControlScript(const QString &callback) gui()->callControlScriptMethod(callback); } +bool IntroductionPageImpl::validRepositoriesAvailable() const +{ + const PackageManagerCore *const core = packageManagerCore(); + bool valid = (core->isInstaller() && core->isOfflineOnly()) || core->isUninstaller(); + + if (!valid) { + foreach (const Repository &repo, core->settings().repositories()) { + if (repo.isEnabled() && repo.isValid()) { + valid = true; + break; + } + } + } + return valid; +} + // -- private slots void IntroductionPageImpl::setUpdater(bool value) diff --git a/src/sdk/installerbasecommons.h b/src/sdk/installerbasecommons.h index f0f0c3d95..086e0c323 100644 --- a/src/sdk/installerbasecommons.h +++ b/src/sdk/installerbasecommons.h @@ -80,6 +80,8 @@ private: void showWidgets(bool show); void callControlScript(const QString &callback); + bool validRepositoriesAvailable() const; + private: bool m_updatesFetched; bool m_updatesCompleted; -- cgit v1.2.3