From 93d1dcfc1de37eb90198774d402e14bc7c65dc57 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sun, 7 Jan 2018 03:09:54 +0100 Subject: [PATCH] Ref T219, added some utility functions in value classes --- src/blackmisc/aviation/airporticaocode.cpp | 5 +++++ src/blackmisc/aviation/airporticaocode.h | 3 +++ src/blackmisc/aviation/atcstation.cpp | 2 +- src/blackmisc/network/server.cpp | 2 +- src/blackmisc/network/user.cpp | 7 ++++++- src/blackmisc/network/user.h | 13 +++++++++++-- src/blackmisc/simulation/simulatedaircraft.cpp | 4 ++-- 7 files changed, 29 insertions(+), 7 deletions(-) diff --git a/src/blackmisc/aviation/airporticaocode.cpp b/src/blackmisc/aviation/airporticaocode.cpp index 556b3a19f..96b58c488 100644 --- a/src/blackmisc/aviation/airporticaocode.cpp +++ b/src/blackmisc/aviation/airporticaocode.cpp @@ -21,6 +21,11 @@ namespace BlackMisc return this->m_icaoCode.compare(compareValue.getIcaoCode(), Qt::CaseInsensitive); } + bool CAirportIcaoCode::hasValidIcaoCode() const + { + return CAirportIcaoCode::isValidIcaoDesignator(this->getIcaoCode()); + } + bool CAirportIcaoCode::equalsString(const QString &icaoCode) const { CAirportIcaoCode other(icaoCode); diff --git a/src/blackmisc/aviation/airporticaocode.h b/src/blackmisc/aviation/airporticaocode.h index e6121ae08..50951c086 100644 --- a/src/blackmisc/aviation/airporticaocode.h +++ b/src/blackmisc/aviation/airporticaocode.h @@ -41,6 +41,9 @@ namespace BlackMisc //! Is empty? bool isEmpty() const { return this->m_icaoCode.isEmpty(); } + //! Has valid code? + bool hasValidIcaoCode() const; + //! Get code. const QString &asString() const { return this->m_icaoCode; } diff --git a/src/blackmisc/aviation/atcstation.cpp b/src/blackmisc/aviation/atcstation.cpp index 1e31c3e7e..d08e671bf 100644 --- a/src/blackmisc/aviation/atcstation.cpp +++ b/src/blackmisc/aviation/atcstation.cpp @@ -95,7 +95,7 @@ namespace BlackMisc QLatin1String(" online: ") % boolToYesNo(m_isOnline) % // controller - (!m_controller.isValid() ? QStringLiteral("") : + (m_controller.isNull() ? QStringLiteral("") : QStringLiteral(" ") % m_controller.toQString(i18n)) % // frequency diff --git a/src/blackmisc/network/server.cpp b/src/blackmisc/network/server.cpp index ffce66e71..30e1e674e 100644 --- a/src/blackmisc/network/server.cpp +++ b/src/blackmisc/network/server.cpp @@ -106,7 +106,7 @@ namespace BlackMisc bool CServer::isValidForLogin() const { - return m_user.hasValidCredentials() && this->hasAddressAndPort() && this->isAcceptingConnections(); + return m_user.hasCredentials() && this->hasAddressAndPort() && this->isAcceptingConnections(); } bool CServer::hasAddressAndPort() const diff --git a/src/blackmisc/network/user.cpp b/src/blackmisc/network/user.cpp index 1d1cd7d22..af531b9f2 100644 --- a/src/blackmisc/network/user.cpp +++ b/src/blackmisc/network/user.cpp @@ -119,13 +119,18 @@ namespace BlackMisc m_realname = beautifyRealName(rn); } + bool CUser::hasValidHomeBase() const + { + return m_homebase.hasValidIcaoCode(); + } + CStatusMessageList CUser::validate() const { CStatusMessageList msgs; // callsign optional if (!this->hasId()) { msgs.push_back(CStatusMessage(CStatusMessage::SeverityWarning, "Invalid id"));} if (!this->hasRealName()) { msgs.push_back(CStatusMessage(CStatusMessage::SeverityWarning, "Invalid real name"));} - if (!this->hasValidCredentials()) { msgs.push_back(CStatusMessage(CStatusMessage::SeverityWarning, "Invalid credentials"));} + if (!this->hasCredentials()) { msgs.push_back(CStatusMessage(CStatusMessage::SeverityWarning, "Invalid credentials"));} return msgs; } diff --git a/src/blackmisc/network/user.h b/src/blackmisc/network/user.h index dbe7ddb94..13044f191 100644 --- a/src/blackmisc/network/user.h +++ b/src/blackmisc/network/user.h @@ -73,10 +73,13 @@ namespace BlackMisc void setPassword(const QString &pw) { m_password = pw.trimmed(); } //! Valid user object? - bool isValid() const { return !m_realname.isEmpty() && !m_id.isEmpty(); } + bool isValid() const { return !isNull(); } + + //! Null? + bool isNull() const { return m_realname.isEmpty() && m_id.isEmpty(); } //! Valid credentials? - bool hasValidCredentials() const { return this->isValid() && !m_password.isEmpty(); } + bool hasCredentials() const { return this->isValid() && !m_password.isEmpty(); } //! Valid real name? bool hasRealName() const { return !m_realname.isEmpty(); } @@ -84,12 +87,18 @@ namespace BlackMisc //! Valid id? bool hasId() const { return !m_id.isEmpty(); } + //! Has a valid VATSIM id? + bool hasValidVatsimId() const { return CUser::isValidVatsimId(this->getId()); } + //! Has associated callsign? bool hasCallsign() const { return !m_callsign.isEmpty(); } //! Has home base? bool hasHomeBase() const { return !m_homebase.isEmpty(); } + //! Has valid home base? + bool hasValidHomeBase() const; + //! Real name + homebase QString getRealNameAndHomeBase(const QString &separator = QString(" ")) const; diff --git a/src/blackmisc/simulation/simulatedaircraft.cpp b/src/blackmisc/simulation/simulatedaircraft.cpp index ef424aa76..cd4930a80 100644 --- a/src/blackmisc/simulation/simulatedaircraft.cpp +++ b/src/blackmisc/simulation/simulatedaircraft.cpp @@ -88,8 +88,8 @@ namespace BlackMisc bool CSimulatedAircraft::isValidForLogin() const { - if (m_callsign.asString().isEmpty()) { return false; } - if (!m_pilot.isValid()) { return false; } + if (m_callsign.isEmpty()) { return false; } + if (m_pilot.isNull()) { return false; } return true; }