summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArttu Tarkiainen <arttu.tarkiainen@qt.io>2022-01-11 16:30:07 +0200
committerArttu Tarkiainen <arttu.tarkiainen@qt.io>2022-01-18 13:36:37 +0000
commitda7d37000dc885d4f7c2d135d6ea1a080d4548f8 (patch)
tree70cd863b95eee5734425d3a2e3be135cf1acbe95
parent8ce334693d9de3a763fb6ce5004b31bb4e476b1f (diff)
MT: Disable package manager when forced updates are found
Task-number: QTIFW-2437 Change-Id: I3c0293550456f36e37e98e97042bf6bfae6ce96d Reviewed-by: Katja Marttila <katja.marttila@qt.io>
-rw-r--r--src/libs/installer/packagemanagergui.cpp16
-rw-r--r--src/libs/installer/packagemanagergui.h1
2 files changed, 17 insertions, 0 deletions
diff --git a/src/libs/installer/packagemanagergui.cpp b/src/libs/installer/packagemanagergui.cpp
index f27933dcb..29c1ae7e3 100644
--- a/src/libs/installer/packagemanagergui.cpp
+++ b/src/libs/installer/packagemanagergui.cpp
@@ -1463,6 +1463,7 @@ IntroductionPage::IntroductionPage(PackageManagerCore *core)
: PackageManagerPage(core)
, m_updatesFetched(false)
, m_allPackagesFetched(false)
+ , m_forceUpdate(false)
, m_label(nullptr)
, m_msgLabel(nullptr)
, m_errorLabel(nullptr)
@@ -1570,6 +1571,8 @@ bool IntroductionPage::validatePage()
return true;
setComplete(false);
+ setErrorMessage(QString());
+
bool isOfflineOnlyInstaller = core->isInstaller() && core->isOfflineOnly();
// If not offline only installer, at least one valid repository needs to be available
if (!isOfflineOnlyInstaller && !validRepositoriesAvailable()) {
@@ -1635,6 +1638,15 @@ bool IntroductionPage::validatePage()
// replaces the error string from packagemanagercore
error = tr("There is an important update available. Please select '%1' first")
.arg(m_updateComponents->text().remove(QLatin1Char('&')));
+
+ m_forceUpdate = true;
+ // Don't call these directly. Need to finish the current validation first,
+ // because changing the selection updates the binary marker and resets the
+ // complete -state of the page.
+ QMetaObject::invokeMethod(m_updateComponents, "setChecked",
+ Qt::QueuedConnection, Q_ARG(bool, true));
+ QMetaObject::invokeMethod(this, "setErrorMessage",
+ Qt::QueuedConnection, Q_ARG(QString, error));
}
setErrorMessage(error);
}
@@ -1843,6 +1855,7 @@ void IntroductionPage::onCoreNetworkSettingsChanged()
{
m_updatesFetched = false;
m_allPackagesFetched = false;
+ m_forceUpdate = false;
}
// -- private
@@ -1865,6 +1878,9 @@ void IntroductionPage::entering()
showMaintenanceTools();
setMaintenanceToolsEnabled(true);
}
+ if (m_forceUpdate)
+ m_packageManager->setEnabled(false);
+
setSettingsButtonRequested((!core->isOfflineOnly()) && (!core->isUninstaller()));
}
diff --git a/src/libs/installer/packagemanagergui.h b/src/libs/installer/packagemanagergui.h
index 5612eed19..c841192cf 100644
--- a/src/libs/installer/packagemanagergui.h
+++ b/src/libs/installer/packagemanagergui.h
@@ -262,6 +262,7 @@ private:
private:
bool m_updatesFetched;
bool m_allPackagesFetched;
+ bool m_forceUpdate;
QLabel *m_label;
QLabel *m_msgLabel;