From 740cb5a5365ee291d2f5115511a5f57a065c8244 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Thu, 1 Aug 2019 21:25:08 +0200 Subject: [PATCH] Feature request based on new VATSIM code of conduct, allow empty homebase --- src/blackgui/components/airportsmallcompleter.cpp | 14 ++++++++++++++ src/blackgui/components/airportsmallcompleter.h | 6 ++++++ src/blackgui/editors/pilotform.cpp | 4 +++- src/blackmisc/aviation/airporticaocode.cpp | 1 - src/blackmisc/network/user.cpp | 5 +++++ src/blackmisc/network/user.h | 3 +++ 6 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/blackgui/components/airportsmallcompleter.cpp b/src/blackgui/components/airportsmallcompleter.cpp index bcd3d27de..41d9f18dc 100644 --- a/src/blackgui/components/airportsmallcompleter.cpp +++ b/src/blackgui/components/airportsmallcompleter.cpp @@ -76,6 +76,11 @@ namespace BlackGui return ui->le_Icao->text().trimmed().toUpper(); } + bool CAirportSmallCompleter::isEmpty() const + { + return ui->le_Icao->text().isEmpty(); + } + void CAirportSmallCompleter::setReadOnly(bool readOnly) { ui->le_Icao->setReadOnly(readOnly); @@ -88,6 +93,15 @@ namespace BlackGui m_current = CAirport(); } + void CAirportSmallCompleter::clearIfInvalidCode(bool strictValidation) + { + const CAirportIcaoCode icao = this->getAirportIcaoCode(); + if (!icao.hasValidIcaoCode(strictValidation)) + { + this->clear(); + } + } + void CAirportSmallCompleter::onIcaoChanged() { if (!sGui && !sGui->hasWebDataServices()) { return; } diff --git a/src/blackgui/components/airportsmallcompleter.h b/src/blackgui/components/airportsmallcompleter.h index 763dad3d7..f0da18b60 100644 --- a/src/blackgui/components/airportsmallcompleter.h +++ b/src/blackgui/components/airportsmallcompleter.h @@ -49,12 +49,18 @@ namespace BlackGui //! The raw ICAO code text QString getIcaoText() const; + //! Empty field + bool isEmpty() const; + //! Read only void setReadOnly(bool readOnly); //! Clear void clear(); + //! Clear if code not valid + void clearIfInvalidCode(bool strictValidation); + signals: //! Airport has been changed void changedAirport(const BlackMisc::Aviation::CAirport &airport); diff --git a/src/blackgui/editors/pilotform.cpp b/src/blackgui/editors/pilotform.cpp index 46ba3f317..92f746879 100644 --- a/src/blackgui/editors/pilotform.cpp +++ b/src/blackgui/editors/pilotform.cpp @@ -122,7 +122,8 @@ namespace BlackGui ui->lblp_Id->setTicked(validId); if (!validId) { msgs.push_back(CStatusMessage(this).validationError(u"Invalid id")); } - const bool validHomeAirport = user.hasValidHomeBase(); + // check against user and if the data entry contains a valid code (or is empty) + const bool validHomeAirport = user.hasValidOrEmptyHomeBase() && (ui->comp_HomeAirport->isEmpty() || ui->comp_HomeAirport->getAirportIcaoCode().hasValidIcaoCode(false)); ui->lblp_HomeAirport->setTicked(validHomeAirport); if (!validHomeAirport) { msgs.push_back(CStatusMessage(this).validationError(u"Wromg home airport")); } @@ -144,6 +145,7 @@ namespace BlackGui void CPilotForm::doValidation() { + // ui->comp_HomeAirport->clearIfInvalidCode(false); this->validate(); } } // ns diff --git a/src/blackmisc/aviation/airporticaocode.cpp b/src/blackmisc/aviation/airporticaocode.cpp index 5f024aeb0..c1ca3de6f 100644 --- a/src/blackmisc/aviation/airporticaocode.cpp +++ b/src/blackmisc/aviation/airporticaocode.cpp @@ -9,7 +9,6 @@ namespace BlackMisc { namespace Aviation { - QString CAirportIcaoCode::convertToQString(bool /** i18n **/) const { return m_icaoCode; diff --git a/src/blackmisc/network/user.cpp b/src/blackmisc/network/user.cpp index 20fc430b6..991a0230a 100644 --- a/src/blackmisc/network/user.cpp +++ b/src/blackmisc/network/user.cpp @@ -141,6 +141,11 @@ namespace BlackMisc return m_homebase.hasValidIcaoCode(false); } + bool CUser::hasValidOrEmptyHomeBase() const + { + return m_homebase.isEmpty() || this->hasValidHomeBase(); + } + CStatusMessageList CUser::validate() const { CStatusMessageList msgs; diff --git a/src/blackmisc/network/user.h b/src/blackmisc/network/user.h index 46bbf7423..730a426e4 100644 --- a/src/blackmisc/network/user.h +++ b/src/blackmisc/network/user.h @@ -103,6 +103,9 @@ namespace BlackMisc //! Has valid home base? bool hasValidHomeBase() const; + //! Has valid or empty home base? + bool hasValidOrEmptyHomeBase() const; + //! Real name + homebase QString getRealNameAndHomeBase(const QString &separator = QString(" ")) const;