From eb89273104e8937f46fa3ccb683d5c77d5c8ede3 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Wed, 24 Apr 2019 13:34:41 +0200 Subject: [PATCH] Ref T632, utility functions in client/client list --- src/blackmisc/network/client.cpp | 4 ++-- src/blackmisc/network/client.h | 2 +- src/blackmisc/network/clientlist.cpp | 13 +++++++++++++ src/blackmisc/network/clientlist.h | 3 +++ 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/blackmisc/network/client.cpp b/src/blackmisc/network/client.cpp index 4a1f85bbd..33a88072a 100644 --- a/src/blackmisc/network/client.cpp +++ b/src/blackmisc/network/client.cpp @@ -85,9 +85,9 @@ namespace BlackMisc return this->hasCapability(FsdWithGroundFlag); } - void CClient::setUserCallsign(const Aviation::CCallsign &callsign) + bool CClient::setUserCallsign(const Aviation::CCallsign &callsign) { - m_user.setCallsign(callsign); + return m_user.setCallsign(callsign); } void CClient::setQueriedModelString(const QString &modelString) diff --git a/src/blackmisc/network/client.h b/src/blackmisc/network/client.h index 00170d80f..b43de9302 100644 --- a/src/blackmisc/network/client.h +++ b/src/blackmisc/network/client.h @@ -121,7 +121,7 @@ namespace BlackMisc void setUser(const CUser &user) { m_user = user;} //! User's callsign - void setUserCallsign(const BlackMisc::Aviation::CCallsign &callsign); + bool setUserCallsign(const BlackMisc::Aviation::CCallsign &callsign); //! Server const QString &getServer() const { return m_server; } diff --git a/src/blackmisc/network/clientlist.cpp b/src/blackmisc/network/clientlist.cpp index bb7c8babc..a661058f0 100644 --- a/src/blackmisc/network/clientlist.cpp +++ b/src/blackmisc/network/clientlist.cpp @@ -29,5 +29,18 @@ namespace BlackMisc if (this->isEmpty()) { return static_cast(CClient::None); } return this->findFirstByCallsign(callsign).getCapabilities(); } + + CClientList CClientList::filterPilotsByCallsign(const CCallsignSet &callsigns) const + { + CClientList filtered; + for (const CClient &client : *this) + { + if (client.isAtc() || callsigns.contains(client.getCallsign())) + { + filtered.push_back(client); + } + } + return filtered; + } } // namespace } // namespace diff --git a/src/blackmisc/network/clientlist.h b/src/blackmisc/network/clientlist.h index 95581f5b1..938f95578 100644 --- a/src/blackmisc/network/clientlist.h +++ b/src/blackmisc/network/clientlist.h @@ -45,6 +45,9 @@ namespace BlackMisc //! Capabilities of client for callsign CClient::Capabilities getCapabilities(const Aviation::CCallsign &callsign) const; + + //! Filter pilots by callsign in set + CClientList filterPilotsByCallsign(const Aviation::CCallsignSet &callsigns) const; }; //! Client per callsign