Improved handling in CContextNetwork::getUsersForCallsigns

CContextNetwork::readAtcBookingsFromSource(), URL from settings
Helper method: BlackMisc::Settings::CSettingsNetwork getNetworkSettings()
This commit is contained in:
Klaus Basan
2014-01-25 01:58:55 +01:00
parent ee5336e308
commit 6d5ad3ca75
3 changed files with 50 additions and 24 deletions

View File

@@ -10,6 +10,7 @@
#include "blackcore/network_vatlib.h" #include "blackcore/network_vatlib.h"
#include "blackcore/coreruntime.h" #include "blackcore/coreruntime.h"
#include "blackcore/context_network_interface.h" #include "blackcore/context_network_interface.h"
#include "blackcore/context_settings_interface.h"
#include "blackmisc/avcallsignlist.h" #include "blackmisc/avcallsignlist.h"
#include "blackmisc/statusmessagelist.h" #include "blackmisc/statusmessagelist.h"
#include "blackmisc/nwuserlist.h" #include "blackmisc/nwuserlist.h"
@@ -34,7 +35,6 @@ namespace BlackCore
public: public:
/*! /*!
* \brief With link to server * \brief With link to server
* \param server
*/ */
CContextNetwork(CCoreRuntime *runtime); CContextNetwork(CCoreRuntime *runtime);
@@ -127,45 +127,37 @@ namespace BlackCore
virtual BlackMisc::CStatusMessageList setOwnAircraft(const BlackMisc::Aviation::CAircraft &aircraft); virtual BlackMisc::CStatusMessageList setOwnAircraft(const BlackMisc::Aviation::CAircraft &aircraft);
/*! /*!
* \brief Update own position * \copydoc IContextNetwork::updateOwnPosition()
* \param position own position
* \param altitude own altitude
*/ */
virtual void updateOwnPosition(const BlackMisc::Geo::CCoordinateGeodetic &position, const BlackMisc::Aviation::CAltitude &altitude); virtual void updateOwnPosition(const BlackMisc::Geo::CCoordinateGeodetic &position, const BlackMisc::Aviation::CAltitude &altitude);
/*! /*!
* \brief Update own situation * \copydoc IContextNetwork::updateOwnSituation()
* \param situation own situation
*/ */
virtual void updateOwnSituation(const BlackMisc::Aviation::CAircraftSituation &situation); virtual void updateOwnSituation(const BlackMisc::Aviation::CAircraftSituation &situation);
/*! /*!
* \brief Update own cockpit * \copydoc IContextNetwork::updateOwnCockpit()
* \param com1 my COM1 unit
* \param com2 my COM2 unit
* \param transponder my transponder
*/ */
virtual void updateOwnCockpit(const BlackMisc::Aviation::CComSystem &com1, const BlackMisc::Aviation::CComSystem &com2, const BlackMisc::Aviation::CTransponder &transponder); 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; virtual BlackMisc::Aviation::CAircraft getOwnAircraft() const;
/*! /*!
* \brief Text messages (also private chat messages) * \copydoc IContextNetwork::sendTextMessages()
*/ */
virtual void sendTextMessages(const BlackMisc::Network::CTextMessageList &textMessages); virtual void sendTextMessages(const BlackMisc::Network::CTextMessageList &textMessages);
/*! /*!
* \brief Request METAR * \copydoc IContextNetwork::getMetar()
* \param airportIcaoCode e.g. EDDF, KLAX
*/ */
virtual BlackMisc::Aviation::CInformationMessage getMetar(const QString &airportIcaoCode); virtual BlackMisc::Aviation::CInformationMessage getMetar(const QString &airportIcaoCode);
/*! /*!
* \brief Selected COM1/2 frequencies as voice rooms * \copydoc IContextNetwork::getSelectedVoiceRooms()
* \return COM1/2 voice rooms
*/ */
virtual BlackMisc::Voice::CVoiceRoomList getSelectedVoiceRooms() const; virtual BlackMisc::Voice::CVoiceRoomList getSelectedVoiceRooms() const;
@@ -223,6 +215,16 @@ namespace BlackCore
*/ */
void initOwnAircraft(); 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: private slots:
/*! /*!
* \brief Connection status changed * \brief Connection status changed

View File

@@ -30,7 +30,7 @@ namespace BlackCore
*/ */
void CContextNetwork::readAtcBookingsFromSource() const void CContextNetwork::readAtcBookingsFromSource() const
{ {
QUrl url("http://vatbook.euroutepro.com/xml2.php"); QUrl url(this->getNetworkSettings().getBookingServiceUrl());
QNetworkRequest request(url); QNetworkRequest request(url);
this->m_networkManager->get(request); this->m_networkManager->get(request);
} }
@@ -108,13 +108,16 @@ namespace BlackCore
CUserList CContextNetwork::getUsers() const CUserList CContextNetwork::getUsers() const
{ {
CUserList users; CUserList users;
CUser user;
foreach(CAtcStation station, this->m_atcStationsOnline) foreach(CAtcStation station, this->m_atcStationsOnline)
{ {
users.push_back(station.getController()); user = station.getController();
users.push_back(user);
} }
foreach(CAircraft aircraft, this->m_aircraftsInRange) foreach(CAircraft aircraft, this->m_aircraftsInRange)
{ {
users.push_back(aircraft.getPilot()); user = aircraft.getPilot();
users.push_back(user);
} }
return users; return users;
} }
@@ -126,15 +129,36 @@ namespace BlackCore
{ {
CUserList users; CUserList users;
if (callsigns.isEmpty()) return users; if (callsigns.isEmpty()) return users;
CCallsignList searchList(callsigns);
CUser user;
CCallsign callsign;
foreach(CAtcStation station, this->m_atcStationsOnline) foreach(CAtcStation station, this->m_atcStationsOnline)
{ {
if (callsigns.contains(station.getCallsign())) callsign = station.getCallsign();
users.push_back(station.getController()); if (callsigns.contains(callsign))
{
user = station.getController();
users.push_back(user);
searchList.remove(callsign);
}
} }
foreach(CAircraft aircraft, this->m_aircraftsInRange) foreach(CAircraft aircraft, this->m_aircraftsInRange)
{ {
if (callsigns.contains(aircraft.getCallsign())) callsign = aircraft.getCallsign();
users.push_back(aircraft.getPilot()); 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; return users;
} }

View File

@@ -198,7 +198,7 @@ namespace BlackCore
/*! /*!
* \brief Disconnect from network * \brief Disconnect from network
* \return messages gererated during disconnecting * \return messages generated during disconnecting
*/ */
virtual BlackMisc::CStatusMessageList disconnectFromNetwork(); virtual BlackMisc::CStatusMessageList disconnectFromNetwork();