diff --git a/src/blackcore/context_network.h b/src/blackcore/context_network.h index c5254856c..67e80ba3b 100644 --- a/src/blackcore/context_network.h +++ b/src/blackcore/context_network.h @@ -10,6 +10,7 @@ #include "blackcore/network_vatlib.h" #include "blackcore/coreruntime.h" #include "blackcore/context_network_interface.h" +#include "blackcore/context_settings_interface.h" #include "blackmisc/avcallsignlist.h" #include "blackmisc/statusmessagelist.h" #include "blackmisc/nwuserlist.h" @@ -34,7 +35,6 @@ namespace BlackCore public: /*! * \brief With link to server - * \param server */ CContextNetwork(CCoreRuntime *runtime); @@ -127,45 +127,37 @@ namespace BlackCore virtual BlackMisc::CStatusMessageList setOwnAircraft(const BlackMisc::Aviation::CAircraft &aircraft); /*! - * \brief Update own position - * \param position own position - * \param altitude own altitude + * \copydoc IContextNetwork::updateOwnPosition() */ virtual void updateOwnPosition(const BlackMisc::Geo::CCoordinateGeodetic &position, const BlackMisc::Aviation::CAltitude &altitude); /*! - * \brief Update own situation - * \param situation own situation + * \copydoc IContextNetwork::updateOwnSituation() */ virtual void updateOwnSituation(const BlackMisc::Aviation::CAircraftSituation &situation); /*! - * \brief Update own cockpit - * \param com1 my COM1 unit - * \param com2 my COM2 unit - * \param transponder my transponder + * \copydoc IContextNetwork::updateOwnCockpit() */ virtual void updateOwnCockpit(const BlackMisc::Aviation::CComSystem &com1, const BlackMisc::Aviation::CComSystem &com2, const BlackMisc::Aviation::CTransponder &transponder); /*! - * \brief Get own aircraft + * \copydoc IContextNetwork::getOwnAircraft() */ virtual BlackMisc::Aviation::CAircraft getOwnAircraft() const; /*! - * \brief Text messages (also private chat messages) + * \copydoc IContextNetwork::sendTextMessages() */ virtual void sendTextMessages(const BlackMisc::Network::CTextMessageList &textMessages); /*! - * \brief Request METAR - * \param airportIcaoCode e.g. EDDF, KLAX + * \copydoc IContextNetwork::getMetar() */ virtual BlackMisc::Aviation::CInformationMessage getMetar(const QString &airportIcaoCode); /*! - * \brief Selected COM1/2 frequencies as voice rooms - * \return COM1/2 voice rooms + * \copydoc IContextNetwork::getSelectedVoiceRooms() */ virtual BlackMisc::Voice::CVoiceRoomList getSelectedVoiceRooms() const; @@ -223,6 +215,16 @@ namespace BlackCore */ void initOwnAircraft(); + /*! + * \brief Get network settings + */ + BlackMisc::Settings::CSettingsNetwork getNetworkSettings() const + { + Q_ASSERT(this->getRuntime()); + Q_ASSERT(this->getRuntime()->getIContextSettings()); + return this->getRuntime()->getIContextSettings()->getNetworkSettings(); + } + private slots: /*! * \brief Connection status changed diff --git a/src/blackcore/context_network_atc.cpp b/src/blackcore/context_network_atc.cpp index 786b8ecae..1a346bd2a 100644 --- a/src/blackcore/context_network_atc.cpp +++ b/src/blackcore/context_network_atc.cpp @@ -30,7 +30,7 @@ namespace BlackCore */ void CContextNetwork::readAtcBookingsFromSource() const { - QUrl url("http://vatbook.euroutepro.com/xml2.php"); + QUrl url(this->getNetworkSettings().getBookingServiceUrl()); QNetworkRequest request(url); this->m_networkManager->get(request); } @@ -108,13 +108,16 @@ namespace BlackCore CUserList CContextNetwork::getUsers() const { CUserList users; + CUser user; foreach(CAtcStation station, this->m_atcStationsOnline) { - users.push_back(station.getController()); + user = station.getController(); + users.push_back(user); } foreach(CAircraft aircraft, this->m_aircraftsInRange) { - users.push_back(aircraft.getPilot()); + user = aircraft.getPilot(); + users.push_back(user); } return users; } @@ -126,15 +129,36 @@ namespace BlackCore { CUserList users; if (callsigns.isEmpty()) return users; + CCallsignList searchList(callsigns); + CUser user; + CCallsign callsign; foreach(CAtcStation station, this->m_atcStationsOnline) { - if (callsigns.contains(station.getCallsign())) - users.push_back(station.getController()); + callsign = station.getCallsign(); + if (callsigns.contains(callsign)) + { + user = station.getController(); + users.push_back(user); + searchList.remove(callsign); + } } foreach(CAircraft aircraft, this->m_aircraftsInRange) { - if (callsigns.contains(aircraft.getCallsign())) - users.push_back(aircraft.getPilot()); + callsign = aircraft.getCallsign(); + if (callsigns.contains(callsign)) + { + user = aircraft.getPilot(); + users.push_back(user); + searchList.remove(callsign); + } + } + + // we might have unsresolved callsigns + foreach(CCallsign unresolved, searchList) + { + user = CUser(); + user.setCallsign(unresolved); + users.push_back(user); } return users; } diff --git a/src/blackcore/context_network_interface.h b/src/blackcore/context_network_interface.h index 21a5ed14d..8138126da 100644 --- a/src/blackcore/context_network_interface.h +++ b/src/blackcore/context_network_interface.h @@ -198,7 +198,7 @@ namespace BlackCore /*! * \brief Disconnect from network - * \return messages gererated during disconnecting + * \return messages generated during disconnecting */ virtual BlackMisc::CStatusMessageList disconnectFromNetwork();