From 4ceaa5ffe7eee417b075216e7a08c91422dfa244 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 21 Apr 2019 17:14:11 +0200 Subject: [PATCH 1/4] Settings: rename so it looks like a group of related settings --- settings.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/settings.conf b/settings.conf index bd0d307bd..884c44544 100644 --- a/settings.conf +++ b/settings.conf @@ -154,7 +154,7 @@ dont-chroot: false # Calamares will complain if this is not explicitly set. # oem-setup: true -# If this is set to true, the "Cancel" button will be disabled. +# If this is set to true, the "Cancel" button will be disabled entirely. # This can be useful if when e.g. Calamares is used as a post-install # configuration tool and you require the user to go through all the # configuration steps. @@ -167,4 +167,4 @@ disable-cancel: false # If this is set to true, the "Cancel" button will be disabled once # you start the 'Installation', meaning there won't be a way to cancel # the Installation until it has finished or installation has failed. -dont-cancel: false +disable-cancel-during-exec: false From d506296aa75c9b11e3176aa8f307a0e2cccdf5cb Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 21 Apr 2019 17:15:53 +0200 Subject: [PATCH 2/4] [libcalamares] Adjust code to changed name - renamed setting in the configuration file, but not in the code - add documentation to getters --- src/libcalamares/Settings.cpp | 2 +- src/libcalamares/Settings.h | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/libcalamares/Settings.cpp b/src/libcalamares/Settings.cpp index 4b33fa2e7..74b99c417 100644 --- a/src/libcalamares/Settings.cpp +++ b/src/libcalamares/Settings.cpp @@ -207,7 +207,7 @@ Settings::Settings( const QString& settingsFilePath, m_doChroot = !requireBool( config, "dont-chroot", false ); m_isSetupMode = requireBool( config, "oem-setup", !m_doChroot ); m_disableCancel = requireBool( config, "disable-cancel", false ); - m_dontCancel = requireBool( config, "dont-cancel", false ); + m_dontCancel = requireBool( config, "disable-cancel-during-exec", false ); } catch ( YAML::Exception& e ) { diff --git a/src/libcalamares/Settings.h b/src/libcalamares/Settings.h index 75c7886c9..da3f46921 100644 --- a/src/libcalamares/Settings.h +++ b/src/libcalamares/Settings.h @@ -69,8 +69,9 @@ public: */ bool isSetupMode() const { return m_isSetupMode; } + /** @brief Global setting of disable-cancel: can't cancel ever. */ bool disableCancel() const; - + /** @brief Temporary setting of disable-cancel: can't cancel during exec. */ bool dontCancel() const; private: From b7ddb39105947dbb98f57c75b10ff0e006ad60ff Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 21 Apr 2019 17:32:05 +0200 Subject: [PATCH 3/4] [libcalamaresui] Massage disable-cancel code - Even when Cancel is hidden, also disable it (prevents DBUS triggers, for instance), - Re-enable it when exec is over, if it's disabled then. - simplify code a little. --- src/libcalamaresui/ViewManager.cpp | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/libcalamaresui/ViewManager.cpp b/src/libcalamaresui/ViewManager.cpp index 655e581ea..b8116746d 100644 --- a/src/libcalamaresui/ViewManager.cpp +++ b/src/libcalamaresui/ViewManager.cpp @@ -103,7 +103,6 @@ ViewManager::ViewManager( QObject* parent ) if (Calamares::Settings::instance()->disableCancel()) m_quit->setVisible( false ); - } @@ -241,22 +240,24 @@ ViewManager::next() bool executing = false; if ( step->isAtEnd() ) { + const auto const* settings = Calamares::Settings::instance(); + // Special case when the user clicks next on the very last page in a view phase // and right before switching to an execution phase. // Depending on Calamares::Settings, we show an "are you sure" prompt or not. - if ( Calamares::Settings::instance()->showPromptBeforeExecution() && stepNextWillExecute( m_steps, m_currentStep ) ) + if ( settings->showPromptBeforeExecution() && stepNextWillExecute( m_steps, m_currentStep ) ) { - QString title = Calamares::Settings::instance()->isSetupMode() + QString title = settings->isSetupMode() ? tr( "Continue with setup?" ) : tr( "Continue with installation?" ); - QString question = Calamares::Settings::instance()->isSetupMode() + QString question = settings->isSetupMode() ? tr( "The %1 setup program is about to make changes to your " "disk in order to set up %2.
You will not be able " "to undo these changes." ) : tr( "The %1 installer is about to make changes to your " "disk in order to install %2.
You will not be able " "to undo these changes." ); - QString confirm = Calamares::Settings::instance()->isSetupMode() + QString confirm = settings->isSetupMode() ? tr( "&Set up now" ) : tr( "&Install now" ); @@ -283,9 +284,12 @@ ViewManager::next() { m_back->setEnabled( false ); m_next->setEnabled( false ); - if (Calamares::Settings::instance()->dontCancel()) - m_quit->setEnabled( false ); + // Enabled if there's nothing blocking it during exec + m_quit->setEnabled( !( settings->dontCancel() || settings->disableCancel() ) ); } + else + // Enabled unless it's also hidden + m_quit->setEnabled( !settings->disableCancel() ); } else step->next(); @@ -318,13 +322,16 @@ ViewManager::updateButtonLabels() { m_quit->setText( tr( "&Done" ) ); m_quit->setToolTip( complete ); - if (Calamares::Settings::instance()->disableCancel()) - m_quit->setVisible( true ); + m_quit->setVisible( true ); // At end, always visible and enabled. + m_quit->setEnabled( true ); } else { - if (Calamares::Settings::instance()->disableCancel()) + if ( Calamares::Settings::instance()->disableCancel() ) + { m_quit->setVisible( false ); + m_quit->setEnabled( false ); // Can't be triggered through DBUS + } m_quit->setText( tr( "&Cancel" ) ); m_quit->setToolTip( quit ); } From 64985997d0a1225b2777f937062749d5ca384419 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 21 Apr 2019 17:34:42 +0200 Subject: [PATCH 4/4] Settings: document new disable-cancel-during-exec --- CHANGES | 4 +++- settings.conf | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 2ac33261c..e396247d0 100644 --- a/CHANGES +++ b/CHANGES @@ -22,7 +22,9 @@ This release contains contributions from (alphabetically by first name): * Under-the-hood code cleanups in lots of parts of the core. Calamares now builds without warnings when Clang 8 is used. - + * A new *disable-cancel-during-exec* setting provides more fine-grained + control than *disable-cancel* (which hides the button entirely). + ## Modules ## * All of the Python-based modules now have translations enabled. diff --git a/settings.conf b/settings.conf index 884c44544..938817ef1 100644 --- a/settings.conf +++ b/settings.conf @@ -155,6 +155,8 @@ dont-chroot: false # oem-setup: true # If this is set to true, the "Cancel" button will be disabled entirely. +# The button is also hidden from view. +# # This can be useful if when e.g. Calamares is used as a post-install # configuration tool and you require the user to go through all the # configuration steps. @@ -167,4 +169,8 @@ disable-cancel: false # If this is set to true, the "Cancel" button will be disabled once # you start the 'Installation', meaning there won't be a way to cancel # the Installation until it has finished or installation has failed. +# +# Default is false, but Calamares will complain if this is not explicitly set. +# +# YAML: boolean. disable-cancel-during-exec: false