summaryrefslogtreecommitdiffstats
path: root/src/sdk/installerbasecommons.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/sdk/installerbasecommons.cpp')
-rw-r--r--src/sdk/installerbasecommons.cpp66
1 files changed, 33 insertions, 33 deletions
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("<font color=\"red\">") + tr("At least one valid and enabled "
+ "repository required for this action to succeed.") + QLatin1String("</font>"));
+ 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("<b>") + tr("No updates available.") + QLatin1String("</b>"));
- else
- setComplete(true);
- }
- } else {
- setErrorMessage(QLatin1String("<font color=\"red\">") + tr("At least one enabled and valid "
- "repository required to search for updates.") + QLatin1String("</font>"));
+ if (m_updatesFetched) {
+ if (core->updaterComponents().count() <= 0)
+ setErrorMessage(QLatin1String("<b>") + tr("No updates available.") + QLatin1String("</b>"));
+ 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)