diff options
author | Katja Marttila <katja.marttila@qt.io> | 2016-04-08 10:44:48 +0300 |
---|---|---|
committer | Katja Marttila <katja.marttila@qt.io> | 2023-03-23 16:43:27 +0200 |
commit | f25efeed5aeadbe2f477a4330d29da52617db083 (patch) | |
tree | 4a6b02df02f5557b8795342291b86068afc566d5 | |
parent | e07cbae2cc1ae113fea71d0e6da6bcee148a0055 (diff) |
Fix showSettingsButton functionality4.5
showSettingsButton() called from control script had no effect.
Fixed it so that if showSettingsButton will overwrite the IFW
decision to show the settings button.
Change-Id: Ia08c03cc13db58168fd371f230517bcc83ee0e12
Task-number: QTIFW-810
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
-rw-r--r-- | doc/scripting-api/gui.qdoc | 6 | ||||
-rw-r--r-- | src/libs/installer/packagemanagergui.cpp | 47 | ||||
-rw-r--r-- | src/libs/installer/packagemanagergui.h | 1 | ||||
-rw-r--r-- | src/sdk/tabcontroller.cpp | 2 |
4 files changed, 39 insertions, 17 deletions
diff --git a/doc/scripting-api/gui.qdoc b/doc/scripting-api/gui.qdoc index 7047cfe0e..7b9e22328 100644 --- a/doc/scripting-api/gui.qdoc +++ b/doc/scripting-api/gui.qdoc @@ -121,7 +121,11 @@ /*! \qmlmethod void gui::showSettingsButton(boolean show) - Shows the \uicontrol Settings button if \a show is \c true. + Shows the \uicontrol Settings button if \a show is \c true. This function + overrides the visibility of the \uicontrol Settings button in all pages. Be + careful when showing the settings button so that users cannot change network + settings while downloading data in the background. Changing the + settings will restart the wizard and switch back to the introduction page. */ /*! diff --git a/src/libs/installer/packagemanagergui.cpp b/src/libs/installer/packagemanagergui.cpp index 9cdea0356..a83c3a094 100644 --- a/src/libs/installer/packagemanagergui.cpp +++ b/src/libs/installer/packagemanagergui.cpp @@ -210,8 +210,9 @@ Q_DECLARE_METATYPE(DynamicInstallerPage*) class PackageManagerGui::Private { public: - Private() - : m_currentId(-1) + Private(PackageManagerGui *qq) + : q(qq) + , m_currentId(-1) , m_modified(false) , m_autoSwitchPage(true) , m_showSettingsButton(false) @@ -235,6 +236,20 @@ public: QLatin1String("unknown button")); } + void showSettingsButton(bool show) + { + if (m_showSettingsButton == show) + return; + q->setOption(QWizard::HaveCustomButton1, show); + q->setButtonText(QWizard::CustomButton1, tr("&Settings")); + q->button(QWizard::CustomButton1)->setToolTip( + PackageManagerGui::tr("Specify proxy settings and configure repositories for add-on components.")); + + q->updateButtonLayout(); + m_showSettingsButton = show; + } + + PackageManagerGui *q; int m_currentId; bool m_modified; bool m_autoSwitchPage; @@ -294,7 +309,7 @@ public: */ PackageManagerGui::PackageManagerGui(PackageManagerCore *core, QWidget *parent) : QWizard(parent) - , d(new Private) + , d(new Private(this)) , m_core(core) { if (m_core->isInstaller()) @@ -1029,16 +1044,18 @@ void PackageManagerGui::showFinishedPage() */ void PackageManagerGui::showSettingsButton(bool show) { - if (d->m_showSettingsButton == show) - return; - - d->m_showSettingsButton = show; - setOption(QWizard::HaveCustomButton1, show); - setButtonText(QWizard::CustomButton1, tr("&Settings")); - button(QWizard::CustomButton1)->setToolTip( - PackageManagerGui::tr("Specify proxy settings and configure repositories for add-on components.")); + m_core->setValue(QLatin1String("ShowSettingsButton"), QString::number(show)); + d->showSettingsButton(show); +} - updateButtonLayout(); +/*! + Shows the \uicontrol Settings button if \a request is \c true. If script has + set the settings button visibility, this function has no effect. +*/ +void PackageManagerGui::requestSettingsButtonByInstaller(bool request) +{ + if (m_core->value(QLatin1String("ShowSettingsButton")).isEmpty()) + d->showSettingsButton(request); } /*! @@ -1824,7 +1841,7 @@ void IntroductionPage::setUpdater(bool value) { if (value) { entering(); - gui()->showSettingsButton(true); + gui()->requestSettingsButtonByInstaller(true); packageManagerCore()->setUpdater(); emit packageManagerCoreTypeChanged(); @@ -1836,7 +1853,7 @@ void IntroductionPage::setUninstaller(bool value) { if (value) { entering(); - gui()->showSettingsButton(true); + gui()->requestSettingsButtonByInstaller(true); packageManagerCore()->setUninstaller(); emit packageManagerCoreTypeChanged(); @@ -1848,7 +1865,7 @@ void IntroductionPage::setPackageManager(bool value) { if (value) { entering(); - gui()->showSettingsButton(true); + gui()->requestSettingsButtonByInstaller(true); packageManagerCore()->setPackageManager(); emit packageManagerCoreTypeChanged(); diff --git a/src/libs/installer/packagemanagergui.h b/src/libs/installer/packagemanagergui.h index 0b804e934..764c31375 100644 --- a/src/libs/installer/packagemanagergui.h +++ b/src/libs/installer/packagemanagergui.h @@ -84,6 +84,7 @@ public: bool isButtonEnabled(int wizardButton); void showSettingsButton(bool show); + void requestSettingsButtonByInstaller(bool request); void setSettingsButtonEnabled(bool enable); void updateButtonLayout(); diff --git a/src/sdk/tabcontroller.cpp b/src/sdk/tabcontroller.cpp index cb3242841..6edc758a5 100644 --- a/src/sdk/tabcontroller.cpp +++ b/src/sdk/tabcontroller.cpp @@ -222,7 +222,7 @@ void TabController::onCurrentIdChanged(int newId) { if (d->m_gui) { if (PackageManagerPage *page = qobject_cast<PackageManagerPage *>(d->m_gui->page(newId))) - d->m_gui->showSettingsButton(page->settingsButtonRequested()); + d->m_gui->requestSettingsButtonByInstaller(page->settingsButtonRequested()); } } |