From 12d06aceef90fcc7db2db19e542d206dd58a270e Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Thu, 23 Jun 2016 20:05:41 +0200 Subject: [PATCH] refs #678, using QString for queried string, not full model anymore --- src/blackgui/models/clientlistmodel.cpp | 12 ++++++------ src/blackmisc/network/client.cpp | 23 ++++++++++++++--------- src/blackmisc/network/client.h | 19 +++++++++++-------- 3 files changed, 31 insertions(+), 23 deletions(-) diff --git a/src/blackgui/models/clientlistmodel.cpp b/src/blackgui/models/clientlistmodel.cpp index a5eb3390c..7b9b0e041 100644 --- a/src/blackgui/models/clientlistmodel.cpp +++ b/src/blackgui/models/clientlistmodel.cpp @@ -36,10 +36,10 @@ namespace BlackGui this->m_columns.addColumn(CColumn("client", CClient::IndexIcon)); this->m_columns.addColumn(CColumn::standardValueObject("callsign", CClient::IndexCallsign)); this->m_columns.addColumn(CColumn::standardString("realname", { CClient::IndexUser, CUser::IndexRealName })); - this->m_columns.addColumn(CColumn("vo.", "voice capabilities", CClient::IndexVoiceCapabilitiesIcon,new CPixmapFormatter())); + this->m_columns.addColumn(CColumn("vo.", "voice capabilities", CClient::IndexVoiceCapabilitiesIcon, new CPixmapFormatter())); this->m_columns.addColumn(CColumn::standardString("capabilities", CClient::IndexCapabilitiesString)); - this->m_columns.addColumn(CColumn::standardString("model", {CClient::IndexModel, CAircraftModel::IndexModelString})); - this->m_columns.addColumn(CColumn("q.?", "queried", {CClient::IndexModel, CAircraftModel::IndexHasQueriedModelString}, + this->m_columns.addColumn(CColumn::standardString("model", CClient::IndexModelString)); + this->m_columns.addColumn(CColumn("q.?", "queried", {CClient::IndexModelString, CAircraftModel::IndexHasQueriedModelString}, new CBoolIconFormatter("queried", "not queried"))); this->m_columns.addColumn(CColumn::standardString("server", CClient::IndexServer)); @@ -47,14 +47,14 @@ namespace BlackGui (void)QT_TRANSLATE_NOOP("ViewClientList", "callsign"); (void)QT_TRANSLATE_NOOP("ViewClientList", "realname"); (void)QT_TRANSLATE_NOOP("ViewClientList", "userid"); - (void)QT_TRANSLATE_NOOP("ViewClientList", "model"); + (void)QT_TRANSLATE_NOOP("ViewClientList", "modelstring"); (void)QT_TRANSLATE_NOOP("ViewClientList", "server"); } QVariant CClientListModel::data(const QModelIndex &index, int role) const { - static const CPropertyIndex ms( {CClient::IndexModel, CAircraftModel::IndexModelString}); - static const CPropertyIndex qf( {CClient::IndexModel, CAircraftModel::IndexHasQueriedModelString}); + static const CPropertyIndex ms({CClient::IndexModelString, CAircraftModel::IndexModelString}); + static const CPropertyIndex qf({CClient::IndexModelString, CAircraftModel::IndexHasQueriedModelString}); if (role != Qt::DisplayRole && role != Qt::DecorationRole) { return CListModelBase::data(index, role); } CPropertyIndex pi = modelIndexToPropertyIndex(index); if (pi == ms && role == Qt::DisplayRole) diff --git a/src/blackmisc/network/client.cpp b/src/blackmisc/network/client.cpp index df4b43857..1b97bd7b2 100644 --- a/src/blackmisc/network/client.cpp +++ b/src/blackmisc/network/client.cpp @@ -27,14 +27,19 @@ namespace BlackMisc { QString s = this->m_user.toQString(i18n); s.append(" capabilites: ").append(this->getCapabilitiesAsString()); - s.append(" model: ").append(this->m_model.toQString(i18n)); - if (!this->m_server.isEmpty()) - { - s.append(" server:").append(this->m_server); - } + s.append(" model: ").append(this->m_modelString); + if (!this->m_server.isEmpty()) { s.append(" server:").append(this->m_server); } return s; } + CClient::CClient(const Aviation::CCallsign &callsign, const QString &modelString) : + m_user(CUser(callsign)), m_modelString(modelString.trimmed()) {} + + bool CClient::isValid() const + { + return this->m_user.hasValidCallsign(); + } + void CClient::setCapability(bool hasCapability, CClient::Capabilities capability) { this->m_capabilities.addValue(static_cast(capability), hasCapability); @@ -87,8 +92,8 @@ namespace BlackMisc return this->getCallsign().propertyByIndex(index.copyFrontRemoved()); case IndexUser: return this->getUser().propertyByIndex(index.copyFrontRemoved()); - case IndexModel: - return this->m_model.propertyByIndex(index.copyFrontRemoved()); + case IndexModelString: + return CVariant(this->m_modelString); case IndexServer: return CVariant(this->m_server); case IndexVoiceCapabilities: @@ -113,8 +118,8 @@ namespace BlackMisc case IndexCapabilities: this->m_capabilities = variant.value(); break; - case IndexModel: - this->m_model.setPropertyByIndex(index.copyFrontRemoved(), variant);; + case IndexModelString: + this->m_modelString = variant.toQString(); break; case IndexServer: this->m_server = variant.toQString(); diff --git a/src/blackmisc/network/client.h b/src/blackmisc/network/client.h index dae72e45b..f6d4675bb 100644 --- a/src/blackmisc/network/client.h +++ b/src/blackmisc/network/client.h @@ -40,7 +40,7 @@ namespace BlackMisc { IndexCapabilities = BlackMisc::CPropertyIndex::GlobalIndexCClient, IndexCapabilitiesString, - IndexModel, + IndexModelString, IndexServer, IndexUser, IndexCallsign, @@ -62,8 +62,8 @@ namespace BlackMisc //! Default constructor. CClient() = default; - //! Construct by callsign - CClient(const BlackMisc::Aviation::CCallsign &callsign) : m_user(CUser(callsign)) {} + //! Construct by callsign and optional model string + CClient(const BlackMisc::Aviation::CCallsign &callsign, const QString &modelString = {}); //! Constructor. CClient(const CUser &user) : m_user(user) {} @@ -74,6 +74,9 @@ namespace BlackMisc //! ATC client bool isAtc() const { return getCallsign().isAtcAlikeCallsign(); } + //! Is valid + bool isValid() const; + //! Get capabilities CPropertyIndexVariantMap getCapabilities() const { return this->m_capabilities; } @@ -117,13 +120,13 @@ namespace BlackMisc void setServer(const QString &server) { this->m_server = server;} //! Model - const BlackMisc::Simulation::CAircraftModel &getAircraftModel() const { return this->m_model; } + const QString &getQueriedModelString() const { return this->m_modelString; } //! \copydoc Simulation::CAircraftModel::hasQueriedModelString - bool hasQueriedModelString() const { return this->m_model.hasQueriedModelString(); } + bool hasQueriedModelString() const { return !this->m_modelString.isEmpty(); } //! Set model - void setAircraftModel(const BlackMisc::Simulation::CAircraftModel &model) { this->m_model = model; } + void setQueriedModelString(const QString &modelString) { this->m_modelString = modelString.trimmed(); } //! \copydoc BlackMisc::Mixin::Icon::toIcon() CIcon toIcon() const { return this->m_user.toIcon(); } @@ -139,15 +142,15 @@ namespace BlackMisc private: BlackMisc::Network::CUser m_user; - BlackMisc::Simulation::CAircraftModel m_model; BlackMisc::CPropertyIndexVariantMap m_capabilities; + QString m_modelString; QString m_server; BlackMisc::Network::CVoiceCapabilities m_voiceCapabilities; BLACK_METACLASS( CClient, BLACK_METAMEMBER(user), - BLACK_METAMEMBER(model), + BLACK_METAMEMBER(modelString), BLACK_METAMEMBER(capabilities, 0, DisabledForComparison | DisabledForJson), BLACK_METAMEMBER(server), BLACK_METAMEMBER(voiceCapabilities)