diff --git a/src/blackcore/context_network.h b/src/blackcore/context_network.h index f46292b96..3df2a32ca 100644 --- a/src/blackcore/context_network.h +++ b/src/blackcore/context_network.h @@ -11,8 +11,9 @@ #include "blackcore/coreruntime.h" #include "blackcore/context_network_interface.h" #include "blackmisc/avallclasses.h" -#include "blackmisc/statusmessage.h" #include "blackmisc/statusmessagelist.h" +#include "blackmisc/nwuserlist.h" + #include #include @@ -174,6 +175,16 @@ namespace BlackCore */ virtual BlackMisc::Voice::CVoiceRoomList getSelectedVoiceRooms() const; + /*! + * \brief Get all users + */ + virtual BlackMisc::Network::CUserList getUsers() const; + + /*! + * \brief All users with callsign, e.g. for voice room resolution + */ + virtual BlackMisc::Network::CUserList getUsersForCallsigns(const BlackMisc::Aviation::CCallsignList &callsigns) const; + private: BlackMisc::Aviation::CAtcStationList m_atcStationsOnline; BlackMisc::Aviation::CAtcStationList m_atcStationsBooked; diff --git a/src/blackcore/context_network_atc.cpp b/src/blackcore/context_network_atc.cpp index 56509db36..786b8ecae 100644 --- a/src/blackcore/context_network_atc.cpp +++ b/src/blackcore/context_network_atc.cpp @@ -102,6 +102,43 @@ namespace BlackCore return rooms; } + /* + * All users + */ + CUserList CContextNetwork::getUsers() const + { + CUserList users; + foreach(CAtcStation station, this->m_atcStationsOnline) + { + users.push_back(station.getController()); + } + foreach(CAircraft aircraft, this->m_aircraftsInRange) + { + users.push_back(aircraft.getPilot()); + } + return users; + } + + /* + * Users with callsigns + */ + CUserList CContextNetwork::getUsersForCallsigns(const CCallsignList &callsigns) const + { + CUserList users; + if (callsigns.isEmpty()) return users; + foreach(CAtcStation station, this->m_atcStationsOnline) + { + if (callsigns.contains(station.getCallsign())) + users.push_back(station.getController()); + } + foreach(CAircraft aircraft, this->m_aircraftsInRange) + { + if (callsigns.contains(aircraft.getCallsign())) + users.push_back(aircraft.getPilot()); + } + return users; + } + /* * ATC Position update */