From d546ebdcba789e8d23a2856f57308b8bec40fd27 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Tue, 6 Aug 2019 20:09:00 +0200 Subject: [PATCH] Ref T659, improved handling of override checkbox in FSD details/voice * the checkbox can be always enabled * or disabled in read only mode --- src/blackgui/components/logincomponent.cpp | 2 ++ src/blackgui/editors/fsdsetupform.cpp | 20 +++++++++++++++++++- src/blackgui/editors/fsdsetupform.h | 6 +++++- src/blackgui/editors/serverform.cpp | 5 +++++ src/blackgui/editors/serverform.h | 3 +++ src/blackgui/editors/voicesetupform.cpp | 21 +++++++++++++++++++++ src/blackgui/editors/voicesetupform.h | 6 +++++- 7 files changed, 60 insertions(+), 3 deletions(-) diff --git a/src/blackgui/components/logincomponent.cpp b/src/blackgui/components/logincomponent.cpp index f2dd31df9..483c3cf97 100644 --- a/src/blackgui/components/logincomponent.cpp +++ b/src/blackgui/components/logincomponent.cpp @@ -101,9 +101,11 @@ namespace BlackGui ui->form_FsdDetails->showEnableInfo(true); ui->form_FsdDetails->setFsdSetupEnabled(false); + ui->form_FsdDetails->setAlwaysAllowOverride(true); ui->form_Voice->showEnableInfo(true); ui->form_Voice->setVoiceSetupEnabled(false); + ui->form_Voice->setAlwaysAllowOverride(true); ui->lblp_AircraftCombinedType->setToolTips("ok", "wrong"); ui->lblp_AirlineIcao->setToolTips("ok", "wrong"); diff --git a/src/blackgui/editors/fsdsetupform.cpp b/src/blackgui/editors/fsdsetupform.cpp index cc88ee925..e6ef3e656 100644 --- a/src/blackgui/editors/fsdsetupform.cpp +++ b/src/blackgui/editors/fsdsetupform.cpp @@ -65,6 +65,16 @@ namespace BlackGui ui->cb_3LetterAirlineICAO->setChecked(setup.force3LetterAirlineCodes()); } + void CFsdSetupForm::setAlwaysAllowOverride(bool allow) + { + m_alwaysAllowOverride = allow; + if (allow) + { + ui->cb_Override->setEnabled(true); + CGuiUtility::checkBoxReadOnly(ui->cb_Override, false); + } + } + bool CFsdSetupForm::isFsdSetupEnabled() const { return ui->cb_Override->isChecked(); @@ -86,12 +96,20 @@ namespace BlackGui ui->le_TextCodec->setReadOnly(readonly); ui->pb_SetDefaults->setEnabled(!readonly); CGuiUtility::checkBoxesReadOnly(this, readonly); - CGuiUtility::checkBoxReadOnly(ui->cb_Override, false); // always editable + if (m_alwaysAllowOverride) + { + ui->cb_Override->setEnabled(true); + CGuiUtility::checkBoxReadOnly(ui->cb_Override, false); + } + /** if (readonly && ui->cb_Override->isChecked()) { + // this is no value which will be stored ui->cb_Override->setChecked(false); } + **/ + this->forceStyleSheetUpdate(); } diff --git a/src/blackgui/editors/fsdsetupform.h b/src/blackgui/editors/fsdsetupform.h index 4fc75db9a..23df9a4f7 100644 --- a/src/blackgui/editors/fsdsetupform.h +++ b/src/blackgui/editors/fsdsetupform.h @@ -44,6 +44,9 @@ namespace BlackGui //! Set to GUI void setValue(const BlackMisc::Network::CFsdSetup &setup); + //! Allow override even in read only mode + void setAlwaysAllowOverride(bool allow); + //! Enabled? bool isFsdSetupEnabled() const; @@ -70,7 +73,8 @@ namespace BlackGui void visibleEnableInfo(bool visible); QScopedPointer ui; - bool m_visibleEnableInfo = true; + bool m_visibleEnableInfo = true; + bool m_alwaysAllowOverride = false; }; } // ns } // ns diff --git a/src/blackgui/editors/serverform.cpp b/src/blackgui/editors/serverform.cpp index e036ce611..fe17402ce 100644 --- a/src/blackgui/editors/serverform.cpp +++ b/src/blackgui/editors/serverform.cpp @@ -84,6 +84,11 @@ namespace BlackGui return ui->cb_ServerType->currentData().value(); } + void CServerForm::resetToFirstTab() + { + ui->tw_ServerForm->setCurrentIndex(0); + } + void CServerForm::setReadOnly(bool readOnly) { ui->form_ServerFsd->setReadOnly(readOnly); diff --git a/src/blackgui/editors/serverform.h b/src/blackgui/editors/serverform.h index ea37e0830..41bc7d80b 100644 --- a/src/blackgui/editors/serverform.h +++ b/src/blackgui/editors/serverform.h @@ -47,6 +47,9 @@ namespace BlackGui //! Get currently selected server type BlackMisc::Network::CServer::ServerType getServerType() const; + //! Reset to 1st tab + void resetToFirstTab(); + //! \name Form class implementations //! @{ virtual void setReadOnly(bool readonly) override; diff --git a/src/blackgui/editors/voicesetupform.cpp b/src/blackgui/editors/voicesetupform.cpp index ba3991afc..ebf683c96 100644 --- a/src/blackgui/editors/voicesetupform.cpp +++ b/src/blackgui/editors/voicesetupform.cpp @@ -61,6 +61,16 @@ namespace BlackGui ui->cb_Override->setChecked(enabled); } + void CVoiceSetupForm::setAlwaysAllowOverride(bool allow) + { + m_alwaysAllowOverride = allow; + if (allow) + { + ui->cb_Override->setEnabled(true); + CGuiUtility::checkBoxReadOnly(ui->cb_Override, false); + } + } + void CVoiceSetupForm::showEnableInfo(bool visible) { m_visibleEnableInfo = visible; @@ -71,10 +81,21 @@ namespace BlackGui { ui->pb_SetDefaults->setEnabled(!readonly); ui->le_VatsimUdpPort->setReadOnly(readonly); + CGuiUtility::checkBoxesReadOnly(this, readonly); + if (m_alwaysAllowOverride) + { + ui->cb_Override->setEnabled(true); + CGuiUtility::checkBoxReadOnly(ui->cb_Override, false); + } + + /** if (readonly && ui->cb_Override->isChecked()) { + // this is no value which will be stored ui->cb_Override->setChecked(false); } + **/ + this->forceStyleSheetUpdate(); } diff --git a/src/blackgui/editors/voicesetupform.h b/src/blackgui/editors/voicesetupform.h index df0c397e4..a7b82bdfb 100644 --- a/src/blackgui/editors/voicesetupform.h +++ b/src/blackgui/editors/voicesetupform.h @@ -49,6 +49,9 @@ namespace BlackGui //! Set enabled / disabled void setVoiceSetupEnabled(bool enabled); + //! Allow override even in read only mode + void setAlwaysAllowOverride(bool allow); + //! Show the enable info void showEnableInfo(bool visible); @@ -69,7 +72,8 @@ namespace BlackGui void visibleEnableInfo(bool visible); QScopedPointer ui; - bool m_visibleEnableInfo = true; + bool m_alwaysAllowOverride = false; + bool m_visibleEnableInfo = true; }; } // ns } // ns