From 1b56f498a913cb687bf212d63f6db6c7763c6ce8 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sun, 12 Mar 2017 00:18:50 +0100 Subject: [PATCH] refs #886, added skip button (custom button) in config wizard --- .../components/configurationwizard.cpp | 37 +++++++++++++++++-- src/blackgui/components/configurationwizard.h | 11 +++++- .../components/configurationwizard.ui | 3 ++ 3 files changed, 47 insertions(+), 4 deletions(-) diff --git a/src/blackgui/components/configurationwizard.cpp b/src/blackgui/components/configurationwizard.cpp index b274afe27..e3c418785 100644 --- a/src/blackgui/components/configurationwizard.cpp +++ b/src/blackgui/components/configurationwizard.cpp @@ -23,24 +23,40 @@ namespace BlackGui ui->wp_CopySettings->setConfigComponent(ui->comp_CopySettings); ui->wp_Simulator->setConfigComponent(ui->comp_Simulator); ui->wp_DataLoad->setConfigComponent(ui->comp_DataLoad); + this->setButtonText(CustomButton1, "skip"); // no other versions, skip copy pages if (!ui->comp_CopySettings->hasOtherVersionData()) { this->setStartId(ConfigSimulator); } + + const QList ids = this->pageIds(); + auto mm = std::minmax_element(ids.begin(), ids.end()); + m_maxId = *mm.second; + m_minId = *mm.first; + connect(this, &QWizard::currentIdChanged, this, &CConfigurationWizard::wizardCurrentIdChanged); + connect(this, &QWizard::customButtonClicked, this, &CConfigurationWizard::clickedCustomButton); } CConfigurationWizard::~CConfigurationWizard() { } + bool CConfigurationWizard::lastStepSkipped() const + { + return m_skipped; + } + void CConfigurationWizard::wizardCurrentIdChanged(int id) { - const int lastId = m_lastId; - m_lastId = id; // update - const bool backward = id < lastId; + const int previousId = m_previousId; + const bool backward = id < previousId; + const bool skipped = m_skipped; + m_previousId = id; // update + m_skipped = false; // reset Q_UNUSED(backward); + Q_UNUSED(skipped); const QWizardPage *page = this->currentPage(); if (page == ui->wp_CopyCaches) @@ -53,6 +69,21 @@ namespace BlackGui ui->comp_CopySettings->setSettingsMode(); ui->comp_CopySettings->initCurrentDirectories(true); } + + this->setOption(HaveCustomButton1, id != m_maxId); + } + + void CConfigurationWizard::clickedCustomButton(int which) + { + if (which == static_cast(CustomButton1)) + { + this->m_skipped = true; + this->next(); + } + else + { + this->m_skipped = false; + } } } // ns } // ns diff --git a/src/blackgui/components/configurationwizard.h b/src/blackgui/components/configurationwizard.h index e190f0374..09f4abe20 100644 --- a/src/blackgui/components/configurationwizard.h +++ b/src/blackgui/components/configurationwizard.h @@ -43,12 +43,21 @@ namespace BlackGui //! Destructor virtual ~CConfigurationWizard(); + //! Was the last step skipped? + bool lastStepSkipped() const; + private: //! The current page has changed void wizardCurrentIdChanged(int id); + //! Custom button was clicked + void clickedCustomButton(int which); + QScopedPointer ui; - int m_lastId = -1; + int m_previousId = -1; + int m_minId = -1; + int m_maxId = -1; + bool m_skipped = false; }; } // ns } // ns diff --git a/src/blackgui/components/configurationwizard.ui b/src/blackgui/components/configurationwizard.ui index 655777821..6bc8446e6 100644 --- a/src/blackgui/components/configurationwizard.ui +++ b/src/blackgui/components/configurationwizard.ui @@ -25,6 +25,9 @@ QWizard::ClassicStyle + + QWizard::HaveCustomButton1 + Copy configuration from another installation