From 4ad2fe4d4a4f77a6ffc2b36acd5c4c84a8c5a201 Mon Sep 17 00:00:00 2001 From: kh1 Date: Wed, 17 Oct 2012 17:03:35 +0200 Subject: "Update components" does not work (if no remote is defined) Task-number: QTIFW-156 Disable the radio button in case there's no remote set. Notify the user about invalid/ disabled repos in case there are some.. Change-Id: I2a8ba9f3e40455ed0cb8e3d23744d7a3f0f6dd4f Reviewed-by: Niels Weber Reviewed-by: Tim Jenssen --- src/sdk/installerbasecommons.cpp | 43 ++++++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 11 deletions(-) (limited to 'src/sdk') diff --git a/src/sdk/installerbasecommons.cpp b/src/sdk/installerbasecommons.cpp index 2f6e04a30..8b62c0f18 100644 --- a/src/sdk/installerbasecommons.cpp +++ b/src/sdk/installerbasecommons.cpp @@ -131,19 +131,31 @@ bool IntroductionPageImpl::validatePage() // fetch updater packages if (core->isUpdater()) { - if (!m_updatesFetched) { - m_updatesFetched = core->fetchRemotePackagesTree(); - if (!m_updatesFetched) - setErrorMessage(core->error()); + bool reposAvailable = false; + foreach (const Repository &repo, core->settings().repositories()) { + if (repo.isEnabled() && repo.isValid()) { + reposAvailable = true; + break; + } } + 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); + 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("")); } } @@ -212,8 +224,17 @@ 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 -- cgit v1.2.3