From da7d37000dc885d4f7c2d135d6ea1a080d4548f8 Mon Sep 17 00:00:00 2001 From: Arttu Tarkiainen Date: Tue, 11 Jan 2022 16:30:07 +0200 Subject: MT: Disable package manager when forced updates are found Task-number: QTIFW-2437 Change-Id: I3c0293550456f36e37e98e97042bf6bfae6ce96d Reviewed-by: Katja Marttila --- src/libs/installer/packagemanagergui.cpp | 16 ++++++++++++++++ src/libs/installer/packagemanagergui.h | 1 + 2 files changed, 17 insertions(+) (limited to 'src/libs') 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; -- cgit v1.2.3