diff --git a/src/blackcore/airspacemonitor.cpp b/src/blackcore/airspacemonitor.cpp index dacc1899e..186cb986d 100644 --- a/src/blackcore/airspacemonitor.cpp +++ b/src/blackcore/airspacemonitor.cpp @@ -13,6 +13,7 @@ #include "blackcore/webdataservices.h" #include "blackcore/vatsimbookingreader.h" #include "blackcore/vatsimdatafilereader.h" +#include "blackmisc/simulation/aircraftmodellist.h" #include "blackmisc/project.h" #include "blackmisc/testing.h" #include "blackmisc/logmessage.h" @@ -23,11 +24,11 @@ using namespace BlackMisc; using namespace BlackMisc::Audio; using namespace BlackMisc::Aviation; +using namespace BlackMisc::Simulation; using namespace BlackMisc::Geo; using namespace BlackMisc::Json; using namespace BlackMisc::Network; using namespace BlackMisc::PhysicalQuantities; -using namespace BlackMisc::Simulation; using namespace BlackMisc::Weather; namespace BlackCore diff --git a/src/blackcore/airspacemonitor.h b/src/blackcore/airspacemonitor.h index 8ca8c0cc9..d03dfe56d 100644 --- a/src/blackcore/airspacemonitor.h +++ b/src/blackcore/airspacemonitor.h @@ -22,7 +22,6 @@ #include "blackmisc/aviation/atcstationlist.h" #include "blackmisc/aviation/aircraftsituationlist.h" #include "blackmisc/weather/metarset.h" -#include "blackmisc/network/webdataservicesprovider.h" #include "blackmisc/network/clientlist.h" #include "blackmisc/network/userlist.h" #include "blackmisc/aviation/flightplan.h" diff --git a/src/blackcore/application.cpp b/src/blackcore/application.cpp index 46090181c..f3938c5c9 100644 --- a/src/blackcore/application.cpp +++ b/src/blackcore/application.cpp @@ -19,6 +19,7 @@ #include "blackmisc/dbusserver.h" #include "blackmisc/registermetadata.h" #include "blackmisc/network/networkutils.h" +#include "blackmisc/simulation/aircraftmodellist.h" #include "blackmisc/verify.h" #include #include diff --git a/src/blackcore/application.h b/src/blackcore/application.h index acb2acba8..16421f253 100644 --- a/src/blackcore/application.h +++ b/src/blackcore/application.h @@ -16,6 +16,7 @@ #include "cookiemanager.h" #include "webdataservices.h" #include "blackmisc/network/url.h" +#include "blackmisc/network/entityflags.h" #include "blackmisc/logcategorylist.h" #include "blackmisc/filelogger.h" #include "blackmisc/slot.h" @@ -266,7 +267,7 @@ namespace BlackCore QNetworkAccessManager m_accessManager { this }; //!< single network access manager CCookieManager m_cookieManager; //!< single cookie manager for our access manager QString m_applicationName; //!< application name - QReadWriteLock m_accessManagerLock; //!< lock to make accessmanager access threadsafe + QReadWriteLock m_accessManagerLock; //!< lock to make access manager access threadsafe CCoreFacadeConfig m_coreFacadeConfig; //!< Core facade config if any CWebReaderFlags::WebReader m_webReader; //!< Readers used CWebReaderFlags::DbReaderHint m_dbReaderHint; //!< Load or used caching? diff --git a/src/blackcore/contextnetworkimpl.cpp b/src/blackcore/contextnetworkimpl.cpp index 8dd00561b..2597d2777 100644 --- a/src/blackcore/contextnetworkimpl.cpp +++ b/src/blackcore/contextnetworkimpl.cpp @@ -58,12 +58,7 @@ namespace BlackCore // 3. data reader, start reading when setup is synced with xx delay Q_ASSERT_X(sApp->getWebDataServices(), Q_FUNC_INFO, "Missing web data services"); - this->m_webReaderSignalConnections.append( - sApp->getWebDataServices()->connectDataReadSignal( - this, // the object here must be the same as in the bind - std::bind(&CContextNetwork::webServiceDataRead, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3) - ) - ); + connect(sApp->getWebDataServices(), &CWebDataServices::dataRead, this, &CContextNetwork::webServiceDataRead); // 4. Airspace contents Q_ASSERT_X(this->getRuntime()->getCContextOwnAircraft(), Q_FUNC_INFO, "this and own aircraft context must be local"); @@ -133,8 +128,6 @@ namespace BlackCore void CContextNetwork::gracefulShutdown() { this->disconnect(); // all signals - this->disconnectReaderSignals(); // disconnect - if (this->isConnected()) { this->disconnectFromNetwork(); } if (this->m_airspace) { this->m_airspace->gracefulShutdown(); } } @@ -457,15 +450,6 @@ namespace BlackCore return this->getRuntime()->getCContextOwnAircraft()->getOwnAircraft(); } - void CContextNetwork::disconnectReaderSignals() - { - for (QMetaObject::Connection c : m_webReaderSignalConnections) - { - QObject::disconnect(c); - } - m_webReaderSignalConnections.clear(); - } - CAtcStationList CContextNetwork::getAtcStationsOnline() const { if (this->isDebugEnabled()) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; } diff --git a/src/blackcore/contextnetworkimpl.h b/src/blackcore/contextnetworkimpl.h index 5defc9e2d..dbce9baa9 100644 --- a/src/blackcore/contextnetworkimpl.h +++ b/src/blackcore/contextnetworkimpl.h @@ -238,7 +238,6 @@ namespace BlackCore private: CAirspaceMonitor *m_airspace = nullptr; INetwork *m_network = nullptr; - QList m_webReaderSignalConnections; INetwork::ConnectionStatus m_currentStatus = INetwork::Disconnected; //!< used to detect pending connections QTimer *m_networkDataUpdateTimer = nullptr; //!< general updates such as ATIS, frequencies, see requestDataUpdates() @@ -250,9 +249,6 @@ namespace BlackCore //! Own aircraft from \sa CContextOwnAircraft const BlackMisc::Simulation::CSimulatedAircraft ownAircraft() const; - //! Disconnect all signals from swift DB readers - void disconnectReaderSignals(); - private slots: //! Update METAR collection void ps_updateMetars(const BlackMisc::Weather::CMetarSet &metars); diff --git a/src/blackcore/modeldatareader.h b/src/blackcore/modeldatareader.h index 7c6300432..8b5e0a70a 100644 --- a/src/blackcore/modeldatareader.h +++ b/src/blackcore/modeldatareader.h @@ -15,7 +15,6 @@ #include "blackcore/blackcoreexport.h" #include "blackcore/databasereader.h" #include "blackcore/data/globalsetup.h" -#include "blackmisc/network/webdataservicesprovider.h" #include "blackmisc/aviation/liverylist.h" #include "blackmisc/simulation/distributorlist.h" #include "blackmisc/simulation/aircraftmodellist.h" diff --git a/src/blackcore/webdataservices.cpp b/src/blackcore/webdataservices.cpp index bf1e9f07f..e0149c544 100644 --- a/src/blackcore/webdataservices.cpp +++ b/src/blackcore/webdataservices.cpp @@ -16,7 +16,7 @@ #include "blackcore/vatsimbookingreader.h" #include "blackcore/vatsimdatafilereader.h" #include "blackcore/vatsimmetarreader.h" -#include "data/globalsetup.h" +#include "blackcore/data/globalsetup.h" #include "blackmisc/network/networkutils.h" #include "blackmisc/logmessage.h" #include "blackmisc/fileutils.h" @@ -46,68 +46,45 @@ namespace BlackCore this->setObjectName("CWebDataReader"); this->initReaders(readerFlags); this->initWriters(); - this->readInBackground(CEntityFlags::AllEntities, 500); - } - - QList CWebDataServices::connectDataReadSignal(QObject *receiver, std::function dataRead) - { - Q_ASSERT_X(receiver, Q_FUNC_INFO, "Missing receiver"); - - // bind does not allow to define connection type - // so anything in its own thread will be sent with this thread affinity - QList cl; + bool c = false; + Q_UNUSED(c); if (m_readerFlags.testFlag(CWebReaderFlags::WebReaderFlag::IcaoDataReader)) { Q_ASSERT_X(this->m_icaoDataReader, Q_FUNC_INFO, "Missing reader ICAO"); - QMetaObject::Connection con = connect(this->m_icaoDataReader, &CIcaoDataReader::dataRead, receiver, dataRead); - Q_ASSERT_X(con, Q_FUNC_INFO, "connect failed ICAO"); - cl.append(con); + c = connect(this->m_icaoDataReader, &CIcaoDataReader::dataRead, this, &CWebDataServices::dataRead); + Q_ASSERT_X(c, Q_FUNC_INFO, "connect failed ICAO"); } if (m_readerFlags.testFlag(CWebReaderFlags::WebReaderFlag::ModelReader)) { Q_ASSERT_X(this->m_modelDataReader, Q_FUNC_INFO, "Missing reader models"); - QMetaObject::Connection con = connect(this->m_modelDataReader, &CModelDataReader::dataRead, receiver, dataRead); - Q_ASSERT_X(con, Q_FUNC_INFO, "connect failed models"); - cl.append(con); + c = connect(this->m_modelDataReader, &CModelDataReader::dataRead, this, &CWebDataServices::dataRead); + Q_ASSERT_X(c, Q_FUNC_INFO, "connect failed models"); } if (m_readerFlags.testFlag(CWebReaderFlags::WebReaderFlag::VatsimBookingReader)) { Q_ASSERT_X(this->m_vatsimBookingReader, Q_FUNC_INFO, "Missing reader bookings"); - QMetaObject::Connection con = connect(this->m_vatsimBookingReader, &CVatsimBookingReader::dataRead, receiver, dataRead); - Q_ASSERT_X(con, Q_FUNC_INFO, "connect failed bookings"); - cl.append(con); + c = connect(this->m_vatsimBookingReader, &CVatsimBookingReader::dataRead, this, &CWebDataServices::dataRead); + Q_ASSERT_X(c, Q_FUNC_INFO, "connect failed bookings"); } if (m_readerFlags.testFlag(CWebReaderFlags::WebReaderFlag::VatsimDataReader)) { Q_ASSERT_X(this->m_vatsimDataFileReader, Q_FUNC_INFO, "Missing reader data file"); - QMetaObject::Connection con = connect(this->m_vatsimDataFileReader, &CVatsimDataFileReader::dataRead, receiver, dataRead); - Q_ASSERT_X(con, Q_FUNC_INFO, "connect failed VATSIM data file"); - cl.append(con); + c = connect(this->m_vatsimDataFileReader, &CVatsimDataFileReader::dataRead, this, &CWebDataServices::dataRead); + Q_ASSERT_X(c, Q_FUNC_INFO, "connect failed VATSIM data file"); } if (m_readerFlags.testFlag(CWebReaderFlags::WebReaderFlag::VatsimMetarReader)) { Q_ASSERT_X(this->m_vatsimMetarReader, Q_FUNC_INFO, "Missing reader metars"); - QMetaObject::Connection con = connect(this->m_vatsimMetarReader, &CVatsimMetarReader::dataRead, receiver, dataRead); - Q_ASSERT_X(con, Q_FUNC_INFO, "connect failed VATSIM METAR"); - cl.append(con); + c = connect(this->m_vatsimMetarReader, &CVatsimMetarReader::dataRead, this, &CWebDataServices::dataRead); + Q_ASSERT_X(c, Q_FUNC_INFO, "connect failed VATSIM METAR"); } - return cl; - } - QList CWebDataServices::connectDataPublishSignal(QObject *receiver, std::function dataPublished) - { - Q_ASSERT_X(receiver, Q_FUNC_INFO, "Missing receiver"); - QList cl; - if (!m_databaseWriter) { return cl; } - QMetaObject::Connection con = connect(this->m_databaseWriter, &CDatabaseWriter::published, receiver, dataPublished); - Q_ASSERT_X(con, Q_FUNC_INFO, "connect failed publishing signal"); - cl.push_back(con); - return cl; + this->readInBackground(CEntityFlags::AllEntities, 500); } CServerList CWebDataServices::getVatsimFsdServers() const diff --git a/src/blackcore/webdataservices.h b/src/blackcore/webdataservices.h index b7e854e8d..47cedf53a 100644 --- a/src/blackcore/webdataservices.h +++ b/src/blackcore/webdataservices.h @@ -21,7 +21,6 @@ #include "blackmisc/aviation/aircrafticaocodelist.h" #include "blackmisc/network/serverlist.h" #include "blackmisc/network/voicecapabilities.h" -#include "blackmisc/network/webdataservicesprovider.h" #include "blackmisc/network/entityflags.h" #include "blackmisc/simulation/distributorlist.h" #include "blackmisc/weather/metarset.h" @@ -44,15 +43,15 @@ namespace BlackCore * Encapsulates reading data from web sources */ class BLACKCORE_EXPORT CWebDataServices : - public QObject, - public BlackMisc::Network::IWebDataServicesProvider + public QObject { Q_OBJECT - Q_INTERFACES(BlackMisc::Network::IWebDataServicesProvider) - friend class CApplication; public: + //! Log categories + static const BlackMisc::CLogCategoryList &getLogCategories(); + //! Shutdown void gracefulShutdown(); @@ -68,85 +67,194 @@ namespace BlackCore //! Metar reader CVatsimMetarReader *getMetarReader() const { return m_vatsimMetarReader; } + //! DB writer class + CDatabaseWriter *getDatabaseWriter() const { return m_databaseWriter; } + //! Reader flags CWebReaderFlags::WebReader getReaderFlags() const { return m_readerFlags; } //! Reader flags CWebReaderFlags::DbReaderHint getDbHint() const { return m_dbHint; } - //! Log categories - static const BlackMisc::CLogCategoryList &getLogCategories(); + //! FSD servers + //! \threadsafe + BlackMisc::Network::CServerList getVatsimFsdServers() const; - // ------------------------ provider functionality start ------------------------------ + //! Voice servers + //! \threadsafe + BlackMisc::Network::CServerList getVatsimVoiceServers() const; - //! \name Provider interface functions - //! @{ - virtual QList connectDataReadSignal( - QObject *receiver, - std::function dataRead) override; + //! Users by callsign + //! \threadsafe + BlackMisc::Network::CUserList getUsersForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const; - virtual QList connectDataPublishSignal( - QObject *receiver, - std::function dataPublished) override; + //! ATC stations by callsign + //! \threadsafe + BlackMisc::Aviation::CAtcStationList getAtcStationsForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const; - virtual BlackMisc::Network::CEntityFlags::Entity triggerRead(BlackMisc::Network::CEntityFlags::Entity whatToRead, const QDateTime &newerThan = QDateTime()) override; - virtual BlackMisc::Network::CServerList getVatsimFsdServers() const override; - virtual BlackMisc::Network::CServerList getVatsimVoiceServers() const override; - virtual BlackMisc::Simulation::CDistributorList getDistributors() const override; - virtual int getDistributorsCount() const override; - virtual BlackMisc::Simulation::CDistributor smartDistributorSelector(const BlackMisc::Simulation::CDistributor &distributor) const override; - virtual BlackMisc::Aviation::CLiveryList getLiveries() const override; - virtual int getLiveriesCount() const override; - virtual BlackMisc::Aviation::CLivery getLiveryForCombinedCode(const QString &combinedCode) const override; - virtual BlackMisc::Aviation::CLivery getStdLiveryForAirlineCode(const BlackMisc::Aviation::CAirlineIcaoCode &icao) const override; - virtual BlackMisc::Aviation::CLivery getLiveryForDbKey(int id) const override; - virtual BlackMisc::Aviation::CLivery smartLiverySelector(const BlackMisc::Aviation::CLivery &livery) const override; - virtual BlackMisc::Simulation::CAircraftModelList getModels() const override; - virtual int getModelsCount() const override; - virtual QList getModelDbKeys() const override; - virtual QStringList getModelStrings() const override; - virtual BlackMisc::Simulation::CAircraftModelList getModelsForAircraftDesignatorAndLiveryCombinedCode(const QString &aircraftDesignator, const QString &combinedCode) const override; - virtual BlackMisc::Simulation::CAircraftModel getModelForModelString(const QString &modelString) const override; - virtual BlackMisc::Aviation::CAircraftIcaoCodeList getAircraftIcaoCodes() const override; - virtual int getAircraftIcaoCodesCount() const override; - virtual BlackMisc::Aviation::CAircraftIcaoCode getAircraftIcaoCodeForDesignator(const QString &designator) const override; - virtual BlackMisc::Aviation::CAircraftIcaoCode getAircraftIcaoCodeForDbKey(int key) const override; - virtual BlackMisc::Aviation::CAircraftIcaoCode smartAircraftIcaoSelector(const BlackMisc::Aviation::CAircraftIcaoCode &icao) const override; - virtual BlackMisc::Aviation::CAirlineIcaoCodeList getAirlineIcaoCodes() const override; - virtual int getAirlineIcaoCodesCount() const override; - virtual BlackMisc::Aviation::CAirlineIcaoCode smartAirlineIcaoSelector(const BlackMisc::Aviation::CAirlineIcaoCode &icaoPattern) const override; - virtual BlackMisc::Aviation::CAirlineIcaoCode getAirlineIcaoCodeForDbKey(int key) const override; - virtual BlackMisc::Aviation::CAirlineIcaoCodeList getAirlineIcaoCodeForDesignator(const QString &designator) const override; - virtual BlackMisc::CCountryList getCountries() const override; - virtual int getCountriesCount() const override; - virtual BlackMisc::CCountry getCountryForName(const QString &name) const override; - virtual BlackMisc::CCountry getCountryForIsoCode(const QString &iso) const override; - virtual BlackMisc::Weather::CMetarSet getMetars() const override; - virtual BlackMisc::Weather::CMetar getMetarForAirport(const BlackMisc::Aviation::CAirportIcaoCode &icao) const override; - virtual int getMetarsCount() const override; - virtual BlackMisc::Network::CUserList getUsersForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override; - virtual BlackMisc::Aviation::CAtcStationList getAtcStationsForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override; - virtual BlackMisc::Network::CVoiceCapabilities getVoiceCapabilityForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override; - virtual void updateWithVatsimDataFileData(BlackMisc::Simulation::CSimulatedAircraft &aircraftToBeUdpated) const override; - virtual BlackMisc::CStatusMessageList asyncPublishModels(const BlackMisc::Simulation::CAircraftModelList &models) const override; - virtual bool canConnectSwiftDb() const override; - virtual bool writeDbDataToDisk(const QString &dir) const override; - virtual bool readDbDataFromDisk(const QString &dir, bool inBackground) override; - //! }@ + //! Voice capabilities for given callsign + //! \threadsafe + BlackMisc::Network::CVoiceCapabilities getVoiceCapabilityForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const; - // ------------------------ provider functionality end ---------------------------- + //! Update with web data + //! \threadsafe + void updateWithVatsimDataFileData(BlackMisc::Simulation::CSimulatedAircraft &aircraftToBeUdpated) const; + + //! Distributors + //! \threadsafe + BlackMisc::Simulation::CDistributorList getDistributors() const; + + //! Distributors count + //! \threadsafe + int getDistributorsCount() const; + + //! Use distributor object to select the best complete distributor from DB + //! \threadsafe + BlackMisc::Simulation::CDistributor smartDistributorSelector(const BlackMisc::Simulation::CDistributor &distributor) const; + + //! Liveries + //! \threadsafe + BlackMisc::Aviation::CLiveryList getLiveries() const; + + //! Liveries count + //! \threadsafe + int getLiveriesCount() const; + + //! Livery for its combined code + //! \threadsafe + BlackMisc::Aviation::CLivery getLiveryForCombinedCode(const QString &combinedCode) const; + + //! Standard livery for airline code + //! \threadsafe + BlackMisc::Aviation::CLivery getStdLiveryForAirlineCode(const BlackMisc::Aviation::CAirlineIcaoCode &icao) const; + + //! Livery for id + //! \threadsafe + BlackMisc::Aviation::CLivery getLiveryForDbKey(int id) const; + + //! Use a livery as template and select the best complete livery from DB for it + //! \threadsafe + BlackMisc::Aviation::CLivery smartLiverySelector(const BlackMisc::Aviation::CLivery &livery) const; + + //! Models + //! \threadsafe + BlackMisc::Simulation::CAircraftModelList getModels() const; + + //! Models count + //! \threadsafe + int getModelsCount() const; + + //! Model keys + //! \threadsafe + QList getModelDbKeys() const; + + //! Model strings + //! \threadsafe + QStringList getModelStrings() const; + + //! Models for combined code and aircraft designator + //! \threadsafe + BlackMisc::Simulation::CAircraftModelList getModelsForAircraftDesignatorAndLiveryCombinedCode(const QString &aircraftDesignator, const QString &combinedCode) const; + + //! Model for key if any + //! \threadsafe + BlackMisc::Simulation::CAircraftModel getModelForModelString(const QString &modelKey) const; + + //! Aircraft ICAO codes + //! \threadsafe + BlackMisc::Aviation::CAircraftIcaoCodeList getAircraftIcaoCodes() const; + + //! Aircraft ICAO codes count + //! \threadsafe + int getAircraftIcaoCodesCount() const; + + //! ICAO code for designator + //! \threadsafe + BlackMisc::Aviation::CAircraftIcaoCode getAircraftIcaoCodeForDesignator(const QString &designator) const; + + //! ICAO code for id + //! \threadsafe + BlackMisc::Aviation::CAircraftIcaoCode getAircraftIcaoCodeForDbKey(int id) const; + + //! Use an ICAO object to select the best complete ICAO object from DB for it + //! \threadsafe + BlackMisc::Aviation::CAircraftIcaoCode smartAircraftIcaoSelector(const BlackMisc::Aviation::CAircraftIcaoCode &icao) const; + + //! Airline ICAO codes + //! \threadsafe + BlackMisc::Aviation::CAirlineIcaoCodeList getAirlineIcaoCodes() const; + + //! Airline ICAO codes count + //! \threadsafe + int getAirlineIcaoCodesCount() const; + + //! ICAO code for designator + //! \threadsafe + BlackMisc::Aviation::CAirlineIcaoCodeList getAirlineIcaoCodeForDesignator(const QString &designator) const; + + //! ICAO code for id + //! \threadsafe + BlackMisc::Aviation::CAirlineIcaoCode getAirlineIcaoCodeForDbKey(int id) const; + + //! Smart airline selector + //! \threadsafe + BlackMisc::Aviation::CAirlineIcaoCode smartAirlineIcaoSelector(const BlackMisc::Aviation::CAirlineIcaoCode &code) const; + + //! Countries + //! \threadsafe + BlackMisc::CCountryList getCountries() const; + + //! Country count + //! \threadsafe + int getCountriesCount() const; + + //! Country by ISO code (GB, US...) + //! \threadsafe + BlackMisc::CCountry getCountryForIsoCode(const QString &iso) const; + + //! Country by name (France, China ..) + //! \threadsafe + BlackMisc::CCountry getCountryForName(const QString &name) const; + + //! Get METARs + //! \threadsafe + BlackMisc::Weather::CMetarSet getMetars() const; + + //! Get METAR for airport + //! \threadsafe + BlackMisc::Weather::CMetar getMetarForAirport(const BlackMisc::Aviation::CAirportIcaoCode &icao) const; + + //! Get METARs count + //! \threadsafe + int getMetarsCount() const; + + //! Publish models to database + BlackMisc::CStatusMessageList asyncPublishModels(const BlackMisc::Simulation::CAircraftModelList &models) const; + + //! Trigger read of new data + BlackMisc::Network::CEntityFlags::Entity triggerRead(BlackMisc::Network::CEntityFlags::Entity whatToRead, const QDateTime &dateTime = QDateTime()); + + //! Can connect to swift DB? + bool canConnectSwiftDb() const; + + //! Write data to disk (mainly for testing scenarios) + bool writeDbDataToDisk(const QString &dir) const; + + //! Load DB data from disk (mainly for testing scenarios) + bool readDbDataFromDisk(const QString &dir, bool inBackground); + + signals: + //! Combined read signal + void dataRead(BlackMisc::Network::CEntityFlags::Entity entity, BlackMisc::Network::CEntityFlags::ReadState state, int number); + + public slots: + //! First read (allows to immediately read in background) + void readInBackground(BlackMisc::Network::CEntityFlags::Entity entities = BlackMisc::Network::CEntityFlags::AllEntities, int delayMs = 0); protected: //! Constructor CWebDataServices(CWebReaderFlags::WebReader readerFlags, CWebReaderFlags:: DbReaderHint hint, QObject *parent = nullptr); - // --------------------------------------------- - // Consider to use the connect method of the provider to connect by entity - // --------------------------------------------- - public slots: - //! First read (allows to immediately read in background) - void readInBackground(BlackMisc::Network::CEntityFlags::Entity entities = BlackMisc::Network::CEntityFlags::AllEntities, int delayMs = 0); - private slots: //! ATC bookings received void ps_receivedBookings(const BlackMisc::Aviation::CAtcStationList &bookedStations); diff --git a/src/blackgui/components/datainfoareacomponent.cpp b/src/blackgui/components/datainfoareacomponent.cpp index e52096093..f453c29e5 100644 --- a/src/blackgui/components/datainfoareacomponent.cpp +++ b/src/blackgui/components/datainfoareacomponent.cpp @@ -8,6 +8,7 @@ */ #include "ui_datainfoareacomponent.h" +#include "blackgui/guiapplication.h" #include "blackgui/components/logcomponent.h" #include "blackgui/components/datainfoareacomponent.h" #include "blackmisc/network/entityflags.h" @@ -68,28 +69,16 @@ namespace BlackGui return this->ui->comp_DbCountries; } - void CDataInfoAreaComponent::setProvider(BlackMisc::Network::IWebDataServicesProvider *provider) - { - Q_ASSERT_X(provider, Q_FUNC_INFO, "Missing provider"); - this->ui->comp_DbAircraftIcao->setProvider(provider); - this->ui->comp_DbAirlineIcao->setProvider(provider); - this->ui->comp_DbDistributors->setProvider(provider); - this->ui->comp_DbLiveries->setProvider(provider); - this->ui->comp_DbModels->setProvider(provider); - this->ui->comp_DbCountries->setProvider(provider); - CWebDataServicesAware::setProvider(provider); - } - bool CDataInfoAreaComponent::writeDbDataToResourceDir() const { - if (!this->hasProvider() || !this->canConnectSwiftDb()) + if (!sGui || !sGui->getWebDataServices()->canConnectSwiftDb()) { CLogMessage(this).warning("No connection to DB yet, no new data loaded which can be written"); return false; } // write to disk - bool s = this->writeDbDataToDisk(CProject::getSwiftStaticDbFilesDir()); + bool s = sGui->getWebDataServices()->writeDbDataToDisk(CProject::getSwiftStaticDbFilesDir()); if (s) { CLogMessage(this).info("Written DB data"); @@ -103,8 +92,8 @@ namespace BlackGui bool CDataInfoAreaComponent::readDbDataFromResourceDir() { - bool s = hasProvider() && - this->readDbDataFromDisk(CProject::getSwiftStaticDbFilesDir(), true); + bool s = sGui && + sGui->getWebDataServices()->readDbDataFromDisk(CProject::getSwiftStaticDbFilesDir(), true); // info if (s) @@ -163,7 +152,7 @@ namespace BlackGui void CDataInfoAreaComponent::requestUpdateOfAllDbData() { - this->triggerRead(CEntityFlags::AllDbEntities, QDateTime()); + sGui->getWebDataServices()->triggerRead(CEntityFlags::AllDbEntities, QDateTime()); } void CDataInfoAreaComponent::requestUpdatedData(CEntityFlags::Entity entity) diff --git a/src/blackgui/components/datainfoareacomponent.h b/src/blackgui/components/datainfoareacomponent.h index ef2b7b56a..3fc195c97 100644 --- a/src/blackgui/components/datainfoareacomponent.h +++ b/src/blackgui/components/datainfoareacomponent.h @@ -14,7 +14,7 @@ #include "blackgui/blackguiexport.h" #include "blackgui/infoarea.h" -#include "blackmisc/network/webdataservicesprovider.h" +#include "blackmisc/network/entityflags.h" #include #include @@ -36,8 +36,7 @@ namespace BlackGui * Info area containing the DB data (models, liveries ...) */ class BLACKGUI_EXPORT CDataInfoAreaComponent : - public BlackGui::CInfoArea, - public BlackMisc::Network::CWebDataServicesAware + public BlackGui::CInfoArea { Q_OBJECT @@ -79,9 +78,6 @@ namespace BlackGui //! DB country component CDbCountryComponent *getCountryComponent() const; - //! Set data reader - virtual void setProvider(BlackMisc::Network::IWebDataServicesProvider *webDataReader) override; - public slots: //! Write to resource dir bool writeDbDataToResourceDir() const; diff --git a/src/blackgui/components/datamaininfoareacomponent.cpp b/src/blackgui/components/datamaininfoareacomponent.cpp index db32b23a7..640f89440 100644 --- a/src/blackgui/components/datamaininfoareacomponent.cpp +++ b/src/blackgui/components/datamaininfoareacomponent.cpp @@ -57,13 +57,6 @@ namespace BlackGui return this->ui->comp_DataInfoArea; } - void CDataMainInfoAreaComponent::setProvider(BlackMisc::Network::IWebDataServicesProvider *provider) - { - Q_ASSERT_X(provider, Q_FUNC_INFO, "Missing provider"); - this->ui->comp_DataInfoArea->setProvider(provider); - this->ui->comp_Mapping->setProvider(provider); - } - void CDataMainInfoAreaComponent::displayLog() { this->selectArea(InfoAreaLog); diff --git a/src/blackgui/components/datamaininfoareacomponent.h b/src/blackgui/components/datamaininfoareacomponent.h index bd7a8badb..cc15b9ed4 100644 --- a/src/blackgui/components/datamaininfoareacomponent.h +++ b/src/blackgui/components/datamaininfoareacomponent.h @@ -14,7 +14,6 @@ #include "blackgui/blackguiexport.h" #include "blackgui/infoarea.h" -#include "blackmisc/network/webdataservicesprovider.h" #include #include @@ -32,9 +31,8 @@ namespace BlackGui * Main info area for data entry tool */ class BLACKGUI_EXPORT CDataMainInfoAreaComponent : - public BlackGui::CInfoArea, - public BlackMisc::Network::CWebDataServicesAware - { + public BlackGui::CInfoArea + { Q_OBJECT public: @@ -64,9 +62,6 @@ namespace BlackGui //! Mapping component CDataInfoAreaComponent *getDataInfoAreaComponent() const; - //! Set data reader - virtual void setProvider(BlackMisc::Network::IWebDataServicesProvider *provider) override; - //! Display the log void displayLog(); diff --git a/src/blackgui/components/dbaircrafticaocomponent.cpp b/src/blackgui/components/dbaircrafticaocomponent.cpp index e837c2231..76e03cfed 100644 --- a/src/blackgui/components/dbaircrafticaocomponent.cpp +++ b/src/blackgui/components/dbaircrafticaocomponent.cpp @@ -9,17 +9,19 @@ #include "ui_dbaircrafticaocomponent.h" #include "dbaircrafticaocomponent.h" +#include "blackgui/guiapplication.h" #include +using namespace BlackCore; using namespace BlackMisc::Network; using namespace BlackMisc::Aviation; +using namespace BlackGui; using namespace BlackGui::Views; namespace BlackGui { namespace Components { - CDbAircraftIcaoComponent::CDbAircraftIcaoComponent(QWidget *parent) : QFrame(parent), ui(new Ui::CDbAircraftIcaoComponent) @@ -31,26 +33,14 @@ namespace BlackGui this->ui->tvp_AircraftIcao->allowDragDropValueObjects(true, false); this->ui->tvp_AircraftIcao->setFilterWidget(this->ui->filter_AircraftIcao); + + connect(sGui->getWebDataServices(), &CWebDataServices::dataRead, this, &CDbAircraftIcaoComponent::ps_icaoRead); + this->ps_icaoRead(CEntityFlags::AircraftIcaoEntity, CEntityFlags::ReadFinished, sGui->getWebDataServices()->getAircraftIcaoCodesCount()); } CDbAircraftIcaoComponent::~CDbAircraftIcaoComponent() { } - void CDbAircraftIcaoComponent::setProvider(IWebDataServicesProvider *webDataReaderProvider) - { - CWebDataServicesAware::setProvider(webDataReaderProvider); - this->ui->filter_AircraftIcao->setProvider(webDataReaderProvider); - connectDataReadSignal( - this, - std::bind(&CDbAircraftIcaoComponent::ps_icaoRead, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3) - ); - int c = getAircraftIcaoCodesCount(); - if (c > 0) - { - ps_icaoRead(CEntityFlags::AircraftIcaoEntity, CEntityFlags::ReadFinished, c); - } - } - void CDbAircraftIcaoComponent::filter(const CAircraftIcaoCode &icao) { this->ui->filter_AircraftIcao->filter(icao); @@ -61,14 +51,14 @@ namespace BlackGui Q_UNUSED(count); if (entity.testFlag(CEntityFlags::AircraftIcaoEntity) && readState == CEntityFlags::ReadFinished) { - this->ui->tvp_AircraftIcao->updateContainerMaybeAsync(this->getAircraftIcaoCodes()); + this->ui->tvp_AircraftIcao->updateContainerMaybeAsync(sGui->getWebDataServices()->getAircraftIcaoCodes()); } } void CDbAircraftIcaoComponent::ps_reload() { - if (!hasProvider()) { return; } - triggerRead(CEntityFlags::AircraftIcaoEntity, QDateTime()); + if (!sGui) { return; } + sGui->getWebDataServices()->triggerRead(CEntityFlags::AircraftIcaoEntity, QDateTime()); } } // ns diff --git a/src/blackgui/components/dbaircrafticaocomponent.h b/src/blackgui/components/dbaircrafticaocomponent.h index b847a2d77..1da84283e 100644 --- a/src/blackgui/components/dbaircrafticaocomponent.h +++ b/src/blackgui/components/dbaircrafticaocomponent.h @@ -15,7 +15,7 @@ #include "blackgui/blackguiexport.h" #include "blackgui/enableforviewbasedindicator.h" #include "blackgui/components/enablefordockwidgetinfoarea.h" -#include "blackmisc/network/webdataservicesprovider.h" +#include "blackmisc/network/entityflags.h" #include #include @@ -31,8 +31,7 @@ namespace BlackGui class BLACKGUI_EXPORT CDbAircraftIcaoComponent : public QFrame, public CEnableForDockWidgetInfoArea, - public CEnableForViewBasedIndicator, - public BlackMisc::Network::CWebDataServicesAware + public CEnableForViewBasedIndicator { Q_OBJECT @@ -43,9 +42,6 @@ namespace BlackGui //! Destructor ~CDbAircraftIcaoComponent(); - //! Set the provider - virtual void setProvider(BlackMisc::Network::IWebDataServicesProvider *webDataReaderProvider) override; - public slots: //! Filter by ICAO as default void filter(const BlackMisc::Aviation::CAircraftIcaoCode &icao); diff --git a/src/blackgui/components/dbaircrafticaoselectorcomponent.cpp b/src/blackgui/components/dbaircrafticaoselectorcomponent.cpp index 2a8a4e925..55a495f90 100644 --- a/src/blackgui/components/dbaircrafticaoselectorcomponent.cpp +++ b/src/blackgui/components/dbaircrafticaoselectorcomponent.cpp @@ -9,12 +9,13 @@ #include "dbaircrafticaoselectorcomponent.h" #include "ui_dbaircrafticaoselectorcomponent.h" -#include "blackgui/guiutility.h" +#include "blackgui/guiapplication.h" #include "blackgui/uppercasevalidator.h" #include "blackmisc/datastoreutility.h" #include using namespace BlackGui; +using namespace BlackCore; using namespace BlackMisc; using namespace BlackMisc::Aviation; using namespace BlackMisc::Network; @@ -31,28 +32,14 @@ namespace BlackGui this->setAcceptDrops(true); this->setAcceptedMetaTypeIds({qMetaTypeId(), qMetaTypeId()}); this->ui->le_Aircraft->setValidator(new CUpperCaseValidator(this)); - connect(ui->le_Aircraft, &QLineEdit::returnPressed, this, &CDbAircraftIcaoSelectorComponent::ps_dataChanged); + connect(sApp->getWebDataServices(), &CWebDataServices::dataRead, this, &CDbAircraftIcaoSelectorComponent::ps_codesRead); + this->ps_codesRead(CEntityFlags::AircraftIcaoEntity, CEntityFlags::ReadFinished, sApp->getWebDataServices()->getAircraftIcaoCodesCount()); } CDbAircraftIcaoSelectorComponent::~CDbAircraftIcaoSelectorComponent() { } - void CDbAircraftIcaoSelectorComponent::setProvider(Network::IWebDataServicesProvider *webDataReaderProvider) - { - if (!webDataReaderProvider) { return; } - CWebDataServicesAware::setProvider(webDataReaderProvider); - connectDataReadSignal( - this, - std::bind(&CDbAircraftIcaoSelectorComponent::ps_codesRead, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3) - ); - int c = this->getAircraftIcaoCodesCount(); - if (c > 0) - { - this->ps_codesRead(CEntityFlags::AircraftIcaoEntity, CEntityFlags::ReadFinished, c); - } - } - void CDbAircraftIcaoSelectorComponent::setAircraftIcao(const CAircraftIcaoCode &icao) { QString icaoStr(icao.getDesignator()); @@ -67,7 +54,7 @@ namespace BlackGui void CDbAircraftIcaoSelectorComponent::setAircraftIcao(int key) { - CAircraftIcaoCode icao(getAircraftIcaoCodeForDbKey(key)); + CAircraftIcaoCode icao(sGui->getWebDataServices()->getAircraftIcaoCodeForDbKey(key)); ui->lbl_Description->setText(""); if (icao.hasCompleteData()) { @@ -83,7 +70,7 @@ namespace BlackGui { return CAircraftIcaoCode(text); } - CAircraftIcaoCode icao(getAircraftIcaoCodeForDbKey(key)); + CAircraftIcaoCode icao(sGui->getWebDataServices()->getAircraftIcaoCodeForDbKey(key)); return icao; } @@ -149,12 +136,12 @@ namespace BlackGui void CDbAircraftIcaoSelectorComponent::ps_codesRead(CEntityFlags::Entity entity, CEntityFlags::ReadState readState, int count) { - if (!hasProvider()) { return; } + if (!sGui) { return; } if (entity.testFlag(CEntityFlags::AircraftIcaoEntity) && readState == CEntityFlags::ReadFinished) { if (count > 0) { - QCompleter *c = new QCompleter(this->getAircraftIcaoCodes().toCompleterStrings(true, true), this); + QCompleter *c = new QCompleter(sGui->getWebDataServices()->getAircraftIcaoCodes().toCompleterStrings(true, true), this); c->setCaseSensitivity(Qt::CaseInsensitive); c->setCompletionMode(QCompleter::PopupCompletion); c->setMaxVisibleItems(10); @@ -174,9 +161,9 @@ namespace BlackGui void CDbAircraftIcaoSelectorComponent::ps_dataChanged() { - if (!hasProvider()) { return; } + if (!sGui) { return; } int key = CDatastoreUtility::extractIntegerKey(this->ui->le_Aircraft->text()); - CAircraftIcaoCode icao(getAircraftIcaoCodeForDbKey(key)); + CAircraftIcaoCode icao(sGui->getWebDataServices()->getAircraftIcaoCodeForDbKey(key)); this->setAircraftIcao(icao); } diff --git a/src/blackgui/components/dbaircrafticaoselectorcomponent.h b/src/blackgui/components/dbaircrafticaoselectorcomponent.h index 87b165d28..c3b9e975d 100644 --- a/src/blackgui/components/dbaircrafticaoselectorcomponent.h +++ b/src/blackgui/components/dbaircrafticaoselectorcomponent.h @@ -31,7 +31,6 @@ namespace BlackGui */ class BLACKGUI_EXPORT CDbAircraftIcaoSelectorComponent : public QFrame, - public BlackMisc::Network::CWebDataServicesAware, public BlackGui::CDropBase { Q_OBJECT @@ -43,9 +42,6 @@ namespace BlackGui //! Destructor ~CDbAircraftIcaoSelectorComponent(); - //! \copydoc BlackMisc::Network::CWebDataServicesAware::setProvider - virtual void setProvider(BlackMisc::Network::IWebDataServicesProvider *webDataReaderProvider) override; - //! Current aircraft ICAO void setAircraftIcao(const BlackMisc::Aviation::CAircraftIcaoCode &icao); diff --git a/src/blackgui/components/dbairlineicaocomponent.cpp b/src/blackgui/components/dbairlineicaocomponent.cpp index 1b5756195..751c19830 100644 --- a/src/blackgui/components/dbairlineicaocomponent.cpp +++ b/src/blackgui/components/dbairlineicaocomponent.cpp @@ -9,11 +9,13 @@ #include "dbairlineicaocomponent.h" #include "ui_dbairlineicaocomponent.h" +#include "blackgui/guiapplication.h" #include "blackcore/webdataservices.h" #include using namespace BlackCore; using namespace BlackMisc::Network; +using namespace BlackGui; using namespace BlackGui::Views; namespace BlackGui @@ -31,39 +33,27 @@ namespace BlackGui this->ui->tvp_AirlineIcao->allowDragDropValueObjects(true, false); this->ui->tvp_AirlineIcao->setFilterWidget(this->ui->filter_AirlineIcao); connect(this->ui->tvp_AirlineIcao, &CAirlineIcaoCodeView::requestNewBackendData, this, &CDbAirlineIcaoComponent::ps_reload); + + connect(sGui->getWebDataServices(), &CWebDataServices::dataRead, this, &CDbAirlineIcaoComponent::ps_icaoRead); + this->ps_icaoRead(CEntityFlags::AirlineIcaoEntity, CEntityFlags::ReadFinished, sGui->getWebDataServices()->getAirlineIcaoCodesCount()); } CDbAirlineIcaoComponent::~CDbAirlineIcaoComponent() { } - void CDbAirlineIcaoComponent::setProvider(IWebDataServicesProvider *webDataReaderProvider) - { - CWebDataServicesAware::setProvider(webDataReaderProvider); - this->ui->filter_AirlineIcao->setProvider(webDataReaderProvider); - webDataReaderProvider->connectDataReadSignal( - this, - std::bind(&CDbAirlineIcaoComponent::ps_icaoRead, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3) - ); - int c = this->getAirlineIcaoCodesCount(); - if (c > 0) - { - this->ps_icaoRead(CEntityFlags::AirlineIcaoEntity, CEntityFlags::ReadFinished, c); - } - } - void CDbAirlineIcaoComponent::ps_icaoRead(CEntityFlags::Entity entity, CEntityFlags::ReadState readState, int count) { Q_UNUSED(count); if (entity.testFlag(CEntityFlags::AirlineIcaoEntity) && readState == CEntityFlags::ReadFinished) { - this->ui->tvp_AirlineIcao->updateContainerMaybeAsync(this->getAirlineIcaoCodes()); + this->ui->tvp_AirlineIcao->updateContainerMaybeAsync(sGui->getWebDataServices()->getAirlineIcaoCodes()); } } void CDbAirlineIcaoComponent::ps_reload() { - if (!hasProvider()) { return; } - triggerRead(CEntityFlags::AirlineIcaoEntity, QDateTime()); + if (!sGui) { return; } + sGui->getWebDataServices()->triggerRead(CEntityFlags::AirlineIcaoEntity, QDateTime()); } } // ns diff --git a/src/blackgui/components/dbairlineicaocomponent.h b/src/blackgui/components/dbairlineicaocomponent.h index 971343f25..be5ba2c6b 100644 --- a/src/blackgui/components/dbairlineicaocomponent.h +++ b/src/blackgui/components/dbairlineicaocomponent.h @@ -15,7 +15,7 @@ #include "blackgui/blackguiexport.h" #include "blackgui/enableforviewbasedindicator.h" #include "blackgui/components/enablefordockwidgetinfoarea.h" -#include "blackmisc/network/webdataservicesprovider.h" +#include "blackmisc/network/entityflags.h" #include #include @@ -31,8 +31,7 @@ namespace BlackGui class BLACKGUI_EXPORT CDbAirlineIcaoComponent : public QFrame, public CEnableForDockWidgetInfoArea, - public BlackGui::CEnableForViewBasedIndicator, - public BlackMisc::Network::CWebDataServicesAware + public BlackGui::CEnableForViewBasedIndicator { Q_OBJECT @@ -43,9 +42,6 @@ namespace BlackGui //! Destructor ~CDbAirlineIcaoComponent(); - //! Set the provider - virtual void setProvider(BlackMisc::Network::IWebDataServicesProvider *webDataReaderProvider) override; - private slots: //! ICAO codes have been read void ps_icaoRead(BlackMisc::Network::CEntityFlags::Entity entity, BlackMisc::Network::CEntityFlags::ReadState readState, int count); diff --git a/src/blackgui/components/dbairlineicaoselectorbase.cpp b/src/blackgui/components/dbairlineicaoselectorbase.cpp index 974760577..c2d2e57e3 100644 --- a/src/blackgui/components/dbairlineicaoselectorbase.cpp +++ b/src/blackgui/components/dbairlineicaoselectorbase.cpp @@ -8,13 +8,15 @@ */ #include "dbairlineicaoselectorbase.h" -#include "blackgui/guiutility.h" +#include "blackgui/guiapplication.h" #include "blackmisc/datastoreutility.h" #include #include using namespace BlackGui; +using namespace BlackCore; using namespace BlackMisc; +using namespace BlackMisc::Network; using namespace BlackMisc::Aviation; using namespace BlackMisc::Network; @@ -27,28 +29,14 @@ namespace BlackGui { this->setAcceptDrops(true); this->setAcceptedMetaTypeIds({qMetaTypeId(), qMetaTypeId()}); + + connect(sGui->getWebDataServices(), &CWebDataServices::dataRead, this, &CDbAirlineIcaoSelectorBase::ps_codesRead); + this->ps_codesRead(CEntityFlags::AirlineIcaoEntity, CEntityFlags::ReadFinished, sGui->getWebDataServices()->getAirlineIcaoCodesCount()); } CDbAirlineIcaoSelectorBase::~CDbAirlineIcaoSelectorBase() { - gracefulShutdown(); - } - - void CDbAirlineIcaoSelectorBase::setProvider(Network::IWebDataServicesProvider *webDataReaderProvider) - { - if (!webDataReaderProvider) { return; } - CWebDataServicesAware::setProvider(webDataReaderProvider); - connectDataReadSignal( - this, - std::bind(&CDbAirlineIcaoSelectorBase::ps_codesRead, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3) - ); - - // already read a this time - int c = this->getAirlineIcaoCodesCount(); - if (c > 0) - { - this->ps_codesRead(CEntityFlags::AirlineIcaoEntity, CEntityFlags::ReadFinished, c); - } + // } void CDbAirlineIcaoSelectorBase::setAirlineIcao(const CAirlineIcaoCode &icao) @@ -62,7 +50,7 @@ namespace BlackGui bool CDbAirlineIcaoSelectorBase::setAirlineIcao(int key) { - CAirlineIcaoCode icao(getAirlineIcaoCodeForDbKey(key)); + CAirlineIcaoCode icao(sGui->getWebDataServices()->getAirlineIcaoCodeForDbKey(key)); if (icao.hasCompleteData()) { this->setAirlineIcao(icao); @@ -116,7 +104,7 @@ namespace BlackGui void CDbAirlineIcaoSelectorBase::ps_codesRead(CEntityFlags::Entity entity, CEntityFlags::ReadState readState, int count) { - if (!hasProvider()) { return; } + if (!sGui) { return; } if (entity.testFlag(CEntityFlags::AirlineIcaoEntity) && readState == CEntityFlags::ReadFinished) { if (count > 0) diff --git a/src/blackgui/components/dbairlineicaoselectorbase.h b/src/blackgui/components/dbairlineicaoselectorbase.h index 4cced3e5d..5f0f40976 100644 --- a/src/blackgui/components/dbairlineicaoselectorbase.h +++ b/src/blackgui/components/dbairlineicaoselectorbase.h @@ -29,7 +29,6 @@ namespace BlackGui */ class BLACKGUI_EXPORT CDbAirlineIcaoSelectorBase : public QFrame, - public BlackMisc::Network::CWebDataServicesAware, public BlackGui::CDropBase { Q_OBJECT @@ -38,9 +37,6 @@ namespace BlackGui //! Destructor virtual ~CDbAirlineIcaoSelectorBase(); - //! \copydoc BlackMisc::Network::CWebDataServicesAware::setProvider - virtual void setProvider(BlackMisc::Network::IWebDataServicesProvider *webDataReaderProvider) override; - //! Current airline ICAO virtual void setAirlineIcao(const BlackMisc::Aviation::CAirlineIcaoCode &icao); diff --git a/src/blackgui/components/dbairlineicaoselectorcomponent.cpp b/src/blackgui/components/dbairlineicaoselectorcomponent.cpp index 4a63f8e30..86ba46a78 100644 --- a/src/blackgui/components/dbairlineicaoselectorcomponent.cpp +++ b/src/blackgui/components/dbairlineicaoselectorcomponent.cpp @@ -9,13 +9,15 @@ #include "dbairlineicaoselectorcomponent.h" #include "ui_dbairlineicaoselectorcomponent.h" -#include "blackgui/guiutility.h" +#include "blackgui/guiapplication.h" #include "blackgui/uppercasevalidator.h" #include "blackmisc/datastoreutility.h" #include +using namespace BlackCore; using namespace BlackGui; using namespace BlackMisc; +using namespace BlackMisc::Network; using namespace BlackMisc::Aviation; namespace BlackGui @@ -62,7 +64,7 @@ namespace BlackGui QCompleter *CDbAirlineIcaoSelectorComponent::createCompleter() { - QCompleter *c = new QCompleter(this->getAirlineIcaoCodes().toIcaoDesignatorCompleterStrings(), this); + QCompleter *c = new QCompleter(sGui->getWebDataServices()->getAirlineIcaoCodes().toIcaoDesignatorCompleterStrings(), this); c->setCaseSensitivity(Qt::CaseInsensitive); c->setCompletionMode(QCompleter::PopupCompletion); c->setMaxVisibleItems(10); @@ -72,21 +74,15 @@ namespace BlackGui void CDbAirlineIcaoSelectorComponent::ps_dataChanged() { - if (!hasProvider()) { return; } + if (!sGui) { return; } QString s(this->ui->le_Airline->text()); if (s.isEmpty()) { return; } int dbKey = CDatastoreUtility::extractIntegerKey(s); if (dbKey >= 0) { - CAirlineIcaoCode icao(getAirlineIcaoCodeForDbKey(dbKey)); + CAirlineIcaoCode icao(sGui->getWebDataServices()->getAirlineIcaoCodeForDbKey(dbKey)); this->setAirlineIcao(icao); } - else - { - // second choice, first object by name - // CAirlineIcaoCode icao(getAirlineDesignatorWithName(s, starting with)); - // this->setAirlineIcao(icao); - } } }// class } // ns diff --git a/src/blackgui/components/dbairlinenameselectorcomponent.cpp b/src/blackgui/components/dbairlinenameselectorcomponent.cpp index bd5825c9f..b4cca55a9 100644 --- a/src/blackgui/components/dbairlinenameselectorcomponent.cpp +++ b/src/blackgui/components/dbairlinenameselectorcomponent.cpp @@ -9,9 +9,11 @@ #include "dbairlinenameselectorcomponent.h" #include "ui_dbairlinenameselectorcomponent.h" +#include "blackgui/guiapplication.h" #include "blackmisc/aviation/aircrafticaocodelist.h" #include "blackmisc/datastoreutility.h" +using namespace BlackCore; using namespace BlackGui; using namespace BlackMisc; using namespace BlackMisc::Aviation; @@ -52,7 +54,7 @@ namespace BlackGui QCompleter *CDbAirlineNameSelectorComponent::createCompleter() { - QCompleter *c = new QCompleter(this->getAirlineIcaoCodes().toNameCompleterStrings(), this); + QCompleter *c = new QCompleter(sGui->getWebDataServices()->getAirlineIcaoCodes().toNameCompleterStrings(), this); c->setCaseSensitivity(Qt::CaseInsensitive); c->setCompletionMode(QCompleter::PopupCompletion); c->setMaxVisibleItems(10); @@ -62,13 +64,13 @@ namespace BlackGui void CDbAirlineNameSelectorComponent::ps_dataChanged() { - if (!hasProvider()) { return; } + if (!sGui) { return; } QString s(this->ui->le_AirlineName->text()); if (s.isEmpty()) { return; } int dbKey = CDatastoreUtility::extractIntegerKey(s); if (dbKey >= 0) { - CAirlineIcaoCode icao(getAirlineIcaoCodeForDbKey(dbKey)); + CAirlineIcaoCode icao(sGui->getWebDataServices()->getAirlineIcaoCodeForDbKey(dbKey)); this->setAirlineIcao(icao); } else diff --git a/src/blackgui/components/dbautostashingcomponent.cpp b/src/blackgui/components/dbautostashingcomponent.cpp index 5ebc0ce18..efc2673f1 100644 --- a/src/blackgui/components/dbautostashingcomponent.cpp +++ b/src/blackgui/components/dbautostashingcomponent.cpp @@ -11,9 +11,11 @@ #include "dbautostashingcomponent.h" #include "dbmappingcomponent.h" #include "dbstashcomponent.h" +#include "blackgui/guiapplication.h" #include "blackmisc/simulation/aircraftmodellist.h" #include +using namespace BlackCore; using namespace BlackMisc; using namespace BlackMisc::Network; using namespace BlackMisc::Simulation; @@ -33,20 +35,13 @@ namespace BlackGui this->ui->tvp_StatusMessages->menuAddItems(CAircraftModelView::MenuSave); this->ui->le_MaxModelsStashed->setValidator(new QIntValidator(10, CDbStashComponent::MaxModelPublished, this)); Q_ASSERT_X(this->getMappingComponent(), Q_FUNC_INFO, "Expect mapping componet"); + + connect(sGui->getWebDataServices(), &CWebDataServices::dataRead, this, &CDbAutoStashingComponent::ps_entitiesRead); } CDbAutoStashingComponent::~CDbAutoStashingComponent() { } - void CDbAutoStashingComponent::setProvider(IWebDataServicesProvider *webDataReaderProvider) - { - CWebDataServicesAware::setProvider(webDataReaderProvider); - connectDataReadSignal( - this, - std::bind(&CDbAutoStashingComponent::ps_entitiesRead, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3) - ); - } - void CDbAutoStashingComponent::accept() { if (m_state == Running) { return; } diff --git a/src/blackgui/components/dbautostashingcomponent.h b/src/blackgui/components/dbautostashingcomponent.h index 9b0793376..2cdee5956 100644 --- a/src/blackgui/components/dbautostashingcomponent.h +++ b/src/blackgui/components/dbautostashingcomponent.h @@ -30,7 +30,6 @@ namespace BlackGui */ class BLACKGUI_EXPORT CDbAutoStashingComponent : public QDialog, - public BlackMisc::Network::CWebDataServicesAware, public BlackGui::Components::CDbMappingComponentAware { Q_OBJECT @@ -50,9 +49,6 @@ namespace BlackGui //! Destructor ~CDbAutoStashingComponent(); - //! \copydoc BlackMisc::Network::CWebDataServicesAware::setProvider - virtual void setProvider(BlackMisc::Network::IWebDataServicesProvider *webDataReaderProvider) override; - //! At least run once and completed bool isCompleted() const { return m_state == Completed; } diff --git a/src/blackgui/components/dbcountrycomponent.cpp b/src/blackgui/components/dbcountrycomponent.cpp index d012cc25f..2e49210b5 100644 --- a/src/blackgui/components/dbcountrycomponent.cpp +++ b/src/blackgui/components/dbcountrycomponent.cpp @@ -9,6 +9,7 @@ #include "dbcountrycomponent.h" #include "ui_dbcountrycomponent.h" +#include "blackgui/guiapplication.h" #include "blackcore/webdataservices.h" #include @@ -32,38 +33,27 @@ namespace BlackGui // filter and drag and drop this->ui->tvp_Countries->setFilterWidget(this->ui->filter_CountryComponent); this->ui->tvp_Countries->allowDragDropValueObjects(true, false); + + connect(sApp->getWebDataServices(), &CWebDataServices::dataRead, this, &CDbCountryComponent::ps_countriesRead); + this->ps_countriesRead(CEntityFlags::CountryEntity, CEntityFlags::ReadFinished, sGui->getWebDataServices()->getCountriesCount()); } CDbCountryComponent::~CDbCountryComponent() { } - void CDbCountryComponent::setProvider(IWebDataServicesProvider *webDataReaderProvider) - { - CWebDataServicesAware::setProvider(webDataReaderProvider); - connectDataReadSignal( - this, - std::bind(&CDbCountryComponent::ps_countriesRead, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3) - ); - int c = getCountriesCount(); - if (c > 0) - { - ps_countriesRead(CEntityFlags::CountryEntity, CEntityFlags::ReadFinished, c); - } - } - void CDbCountryComponent::ps_countriesRead(CEntityFlags::Entity entity, CEntityFlags::ReadState readState, int count) { Q_UNUSED(count); if (entity.testFlag(CEntityFlags::CountryEntity) && readState == CEntityFlags::ReadFinished) { - this->ui->tvp_Countries->updateContainerMaybeAsync(this->getCountries()); + this->ui->tvp_Countries->updateContainerMaybeAsync(sApp->getWebDataServices()->getCountries()); } } void CDbCountryComponent::ps_reload() { - if (!hasProvider()) { return; } - triggerRead(CEntityFlags::CountryEntity, QDateTime()); + if (!sGui) { return; } + sApp->getWebDataServices()->triggerRead(CEntityFlags::CountryEntity); } } // ns } // ns diff --git a/src/blackgui/components/dbcountrycomponent.h b/src/blackgui/components/dbcountrycomponent.h index aa8d45c33..9b114d30f 100644 --- a/src/blackgui/components/dbcountrycomponent.h +++ b/src/blackgui/components/dbcountrycomponent.h @@ -15,7 +15,7 @@ #include "blackgui/blackguiexport.h" #include "blackgui/enableforviewbasedindicator.h" #include "blackgui/components/enablefordockwidgetinfoarea.h" -#include "blackmisc/network/webdataservicesprovider.h" +#include "blackmisc/network/entityflags.h" #include #include @@ -31,8 +31,7 @@ namespace BlackGui class BLACKGUI_EXPORT CDbCountryComponent : public QFrame, public CEnableForDockWidgetInfoArea, - public BlackGui::CEnableForViewBasedIndicator, - public BlackMisc::Network::CWebDataServicesAware + public BlackGui::CEnableForViewBasedIndicator { Q_OBJECT @@ -43,9 +42,6 @@ namespace BlackGui //! Destructor ~CDbCountryComponent(); - //! Set the provider - virtual void setProvider(BlackMisc::Network::IWebDataServicesProvider *webDataReaderProvider) override; - private slots: //! Countries have been read void ps_countriesRead(BlackMisc::Network::CEntityFlags::Entity entity, BlackMisc::Network::CEntityFlags::ReadState readState, int count); diff --git a/src/blackgui/components/dbcountryselectorcomponent.cpp b/src/blackgui/components/dbcountryselectorcomponent.cpp index c7c5671db..723a56732 100644 --- a/src/blackgui/components/dbcountryselectorcomponent.cpp +++ b/src/blackgui/components/dbcountryselectorcomponent.cpp @@ -9,11 +9,13 @@ #include "dbcountryselectorcomponent.h" #include "ui_dbcountryselectorcomponent.h" +#include "blackgui/guiapplication.h" #include "blackgui/guiutility.h" #include "blackgui/uppercasevalidator.h" #include using namespace BlackGui; +using namespace BlackCore; using namespace BlackMisc; using namespace BlackMisc::Network; @@ -35,26 +37,13 @@ namespace BlackGui connect(ui->le_CountryName, &QLineEdit::returnPressed, this, &CDbCountrySelectorComponent::ps_dataChanged); this->ui->le_CountryIso->setValidator(new CUpperCaseValidator(this)); + connect(sGui->getWebDataServices(), &CWebDataServices::dataRead, this, &CDbCountrySelectorComponent::ps_CountriesRead); + this->ps_CountriesRead(CEntityFlags::DistributorEntity, CEntityFlags::ReadFinished, sGui->getWebDataServices()->getCountriesCount()); } CDbCountrySelectorComponent::~CDbCountrySelectorComponent() { - gracefulShutdown(); - } - - void CDbCountrySelectorComponent::setProvider(Network::IWebDataServicesProvider *webDataReaderProvider) - { - if (!webDataReaderProvider) { return; } - CWebDataServicesAware::setProvider(webDataReaderProvider); - webDataReaderProvider->connectDataReadSignal( - this, - std::bind(&CDbCountrySelectorComponent::ps_CountriesRead, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3) - ); - int c = this->getCountriesCount(); - if (c > 0) - { - this->ps_CountriesRead(CEntityFlags::CountryEntity, CEntityFlags::ReadFinished, c); - } + // } void CDbCountrySelectorComponent::setCountry(const BlackMisc::CCountry &country) @@ -71,23 +60,23 @@ namespace BlackGui void CDbCountrySelectorComponent::setCountry(const QString &isoCode) { - CCountry c(this->getCountryForIsoCode(isoCode)); + CCountry c(sGui->getWebDataServices()->getCountryForIsoCode(isoCode)); this->setCountry(c); } BlackMisc::CCountry CDbCountrySelectorComponent::getCountry() const { - if (!hasProvider()) { return CCountry(); } + if (!sGui) { return CCountry(); } QString iso(this->ui->le_CountryIso->text().trimmed().toUpper()); QString name(this->ui->le_CountryName->text().trimmed()); if (CCountry::isValidIsoCode(iso)) { - return this->getCountryForIsoCode(iso); + return sGui->getWebDataServices()->getCountryForIsoCode(iso); } else { if (name.isEmpty()) { return CCountry(); } - return this->getCountryForName(name); + return sGui->getWebDataServices()->getCountryForName(name); } } @@ -154,19 +143,19 @@ namespace BlackGui void CDbCountrySelectorComponent::ps_CountriesRead(CEntityFlags::Entity entity, CEntityFlags::ReadState readState, int count) { - if (!hasProvider()) { return; } + if (!sGui) { return; } if (entity.testFlag(CEntityFlags::DistributorEntity) && readState == CEntityFlags::ReadFinished) { if (count > 0) { - QCompleter *c = new QCompleter(this->getCountries().toNameList(), this); + QCompleter *c = new QCompleter(sGui->getWebDataServices()->getCountries().toNameList(), this); c->setCaseSensitivity(Qt::CaseInsensitive); c->setCompletionMode(QCompleter::PopupCompletion); c->setMaxVisibleItems(10); this->connect(c, static_cast(&QCompleter::activated), this, &CDbCountrySelectorComponent::ps_completerActivated); this->ui->le_CountryName->setCompleter(c); - m_completerCountryNames.reset(c); // deletes any old completer + this->m_completerCountryNames.reset(c); // deletes any old completer } else { @@ -177,14 +166,14 @@ namespace BlackGui void CDbCountrySelectorComponent::ps_dataChanged() { - if (!hasProvider()) { return; } + if (!sGui) { return; } QObject *sender = this->sender(); if (sender == this->ui->le_CountryIso) { QString iso(this->ui->le_CountryIso->text().trimmed().toUpper()); if (CCountry::isValidIsoCode(iso)) { - this->setCountry(getCountryForIsoCode(iso)); + this->setCountry(sGui->getWebDataServices()->getCountryForIsoCode(iso)); } } else if (sender == this->ui->le_CountryName) @@ -192,7 +181,7 @@ namespace BlackGui QString name(this->ui->le_CountryName->text().trimmed()); if (!name.isEmpty()) { - this->setCountry(getCountryForName(name)); + this->setCountry(sGui->getWebDataServices()->getCountryForName(name)); } } } @@ -200,7 +189,7 @@ namespace BlackGui void CDbCountrySelectorComponent::ps_completerActivated(const QString &countryName) { this->ui->le_CountryName->setText(countryName); - this->setCountry(getCountryForName(countryName)); + this->setCountry(sGui->getWebDataServices()->getCountryForName(countryName)); } }// class diff --git a/src/blackgui/components/dbcountryselectorcomponent.h b/src/blackgui/components/dbcountryselectorcomponent.h index 8c66f595c..0ed49f588 100644 --- a/src/blackgui/components/dbcountryselectorcomponent.h +++ b/src/blackgui/components/dbcountryselectorcomponent.h @@ -31,7 +31,6 @@ namespace BlackGui */ class BLACKGUI_EXPORT CDbCountrySelectorComponent : public QFrame, - public BlackMisc::Network::CWebDataServicesAware, public BlackGui::CDropBase { Q_OBJECT @@ -43,9 +42,6 @@ namespace BlackGui //! Destructor ~CDbCountrySelectorComponent(); - //! \copydoc BlackMisc::Network::CWebDataServicesAware::setProvider - virtual void setProvider(BlackMisc::Network::IWebDataServicesProvider *webDataReaderProvider) override; - //! Current country void setCountry(const BlackMisc::CCountry &country); diff --git a/src/blackgui/components/dbdistributorcomponent.cpp b/src/blackgui/components/dbdistributorcomponent.cpp index 2dc6f3390..dd142e9ed 100644 --- a/src/blackgui/components/dbdistributorcomponent.cpp +++ b/src/blackgui/components/dbdistributorcomponent.cpp @@ -8,10 +8,12 @@ */ #include "ui_dbdistributorcomponent.h" +#include "blackgui/guiapplication.h" #include "dbdistributorcomponent.h" #include #include +using namespace BlackCore; using namespace BlackMisc::Network; using namespace BlackGui::Views; @@ -28,38 +30,26 @@ namespace BlackGui this->ui->tvp_Distributors->setResizeMode(CViewBaseNonTemplate::ResizingAuto); this->ui->tvp_Distributors->allowDragDropValueObjects(true, false); connect(this->ui->tvp_Distributors, &CDistributorView::requestNewBackendData, this, &CDbDistributorComponent::ps_reload); + connect(sGui->getWebDataServices(), &CWebDataServices::dataRead, this, &CDbDistributorComponent::ps_distributorsRead); + this->ps_distributorsRead(CEntityFlags::DistributorEntity, CEntityFlags::ReadFinished, sGui->getWebDataServices()->getDistributorsCount()); } CDbDistributorComponent::~CDbDistributorComponent() { } - void CDbDistributorComponent::setProvider(IWebDataServicesProvider *webDataReaderProvider) - { - CWebDataServicesAware::setProvider(webDataReaderProvider); - connectDataReadSignal( - this, - std::bind(&CDbDistributorComponent::ps_distributorsRead, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3) - ); - int c = getDistributorsCount(); - if (c > 0) - { - ps_distributorsRead(CEntityFlags::DistributorEntity, CEntityFlags::ReadFinished, c); - } - } - void CDbDistributorComponent::ps_distributorsRead(CEntityFlags::Entity entity, CEntityFlags::ReadState readState, int count) { Q_UNUSED(count); if (entity.testFlag(CEntityFlags::DistributorEntity) && readState == CEntityFlags::ReadFinished) { - this->ui->tvp_Distributors->updateContainer(this->getDistributors()); + this->ui->tvp_Distributors->updateContainer(sGui->getWebDataServices()->getDistributors()); } } void CDbDistributorComponent::ps_reload() { - if (!hasProvider()) { return; } - triggerRead(CEntityFlags::DistributorEntity, QDateTime()); + if (!sGui) { return; } + sGui->getWebDataServices()->triggerRead(CEntityFlags::DistributorEntity); } } // ns } // ns diff --git a/src/blackgui/components/dbdistributorcomponent.h b/src/blackgui/components/dbdistributorcomponent.h index 6e960c115..8a64126d9 100644 --- a/src/blackgui/components/dbdistributorcomponent.h +++ b/src/blackgui/components/dbdistributorcomponent.h @@ -15,7 +15,7 @@ #include "blackgui/blackguiexport.h" #include "blackgui/enableforviewbasedindicator.h" #include "blackgui/components/enablefordockwidgetinfoarea.h" -#include "blackmisc/network/webdataservicesprovider.h" +#include "blackmisc/network/entityflags.h" #include #include @@ -31,8 +31,7 @@ namespace BlackGui class BLACKGUI_EXPORT CDbDistributorComponent : public QFrame, public CEnableForDockWidgetInfoArea, - public BlackGui::CEnableForViewBasedIndicator, - public BlackMisc::Network::CWebDataServicesAware + public BlackGui::CEnableForViewBasedIndicator { Q_OBJECT @@ -43,9 +42,6 @@ namespace BlackGui //! Destructor ~CDbDistributorComponent(); - //! Set the provider - virtual void setProvider(BlackMisc::Network::IWebDataServicesProvider *webDataReaderProvider) override; - private slots: //! Distributors have been read void ps_distributorsRead(BlackMisc::Network::CEntityFlags::Entity entity, BlackMisc::Network::CEntityFlags::ReadState readState, int count); diff --git a/src/blackgui/components/dbdistributorselectorcomponent.cpp b/src/blackgui/components/dbdistributorselectorcomponent.cpp index ba2b6959a..20f398e9c 100644 --- a/src/blackgui/components/dbdistributorselectorcomponent.cpp +++ b/src/blackgui/components/dbdistributorselectorcomponent.cpp @@ -9,11 +9,12 @@ #include "dbdistributorselectorcomponent.h" #include "ui_dbdistributorselectorcomponent.h" -#include "blackgui/guiutility.h" +#include "blackgui/guiapplication.h" #include "blackgui/uppercasevalidator.h" #include using namespace BlackGui; +using namespace BlackCore; using namespace BlackMisc; using namespace BlackMisc::Simulation; using namespace BlackMisc::Network; @@ -32,25 +33,13 @@ namespace BlackGui this->ui->le_Distributor->setValidator(new CUpperCaseValidator(this)); connect(ui->le_Distributor, &QLineEdit::returnPressed, this, &CDbDistributorSelectorComponent::ps_dataChanged); + connect(sApp->getWebDataServices(), &CWebDataServices::dataRead, this, &CDbDistributorSelectorComponent::ps_distributorsRead); + this->ps_distributorsRead(CEntityFlags::DistributorEntity, CEntityFlags::ReadFinished, sApp->getWebDataServices()->getDistributorsCount()); } CDbDistributorSelectorComponent::~CDbDistributorSelectorComponent() { - gracefulShutdown(); - } - - void CDbDistributorSelectorComponent::setProvider(Network::IWebDataServicesProvider *webDataReaderProvider) - { - CWebDataServicesAware::setProvider(webDataReaderProvider); - connectDataReadSignal( - this, - std::bind(&CDbDistributorSelectorComponent::ps_distributorsRead, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3) - ); - int c = getDistributorsCount(); - if (c > 0) - { - ps_distributorsRead(CEntityFlags::DistributorEntity, CEntityFlags::ReadFinished, c); - } + // } void CDbDistributorSelectorComponent::setDistributor(const CDistributor &distributor) @@ -69,7 +58,7 @@ namespace BlackGui { QString keyOrAlias(distributorKeyOrAlias.toUpper().trimmed()); if (this->m_currentDistributor.matchesKeyOrAlias(keyOrAlias)) { return; } - CDistributor d(getDistributors().findByKeyOrAlias(keyOrAlias)); + CDistributor d(sGui->getWebDataServices()->getDistributors().findByKeyOrAlias(keyOrAlias)); if (d.hasCompleteData()) { this->setDistributor(d); @@ -83,12 +72,12 @@ namespace BlackGui CDistributor CDbDistributorSelectorComponent::getDistributor() const { - if (!hasProvider()) { return CDistributor(); } + if (!sGui) { return CDistributor(); } QString distributorKeyOrAlias(this->ui->le_Distributor->text().trimmed().toUpper()); if (distributorKeyOrAlias.isEmpty()) { return CDistributor(); } if (this->m_currentDistributor.matchesKeyOrAlias(distributorKeyOrAlias)) { return this->m_currentDistributor; } - CDistributor d(getDistributors().findByKey(distributorKeyOrAlias)); + CDistributor d(sGui->getWebDataServices()->getDistributors().findByKey(distributorKeyOrAlias)); if (d.hasValidDbKey()) { // for some reason we have a new distributor here @@ -159,12 +148,12 @@ namespace BlackGui void CDbDistributorSelectorComponent::ps_distributorsRead(CEntityFlags::Entity entity, CEntityFlags::ReadState readState, int count) { - if (!hasProvider()) { return; } + if (!sGui) { return; } if (entity.testFlag(CEntityFlags::DistributorEntity) && readState == CEntityFlags::ReadFinished) { if (count > 0) { - QStringList keysAndAliases(this->getDistributors().getDbKeysAndAliases()); + QStringList keysAndAliases(sGui->getWebDataServices()->getDistributors().getDbKeysAndAliases()); keysAndAliases.sort(Qt::CaseInsensitive); QCompleter *c = new QCompleter(keysAndAliases, this); c->setCaseSensitivity(Qt::CaseInsensitive); @@ -186,10 +175,10 @@ namespace BlackGui void CDbDistributorSelectorComponent::ps_dataChanged() { - if (!hasProvider()) { return; } + if (!sGui) { return; } QString keyOrAlias(this->ui->le_Distributor->text().trimmed().toUpper()); if (keyOrAlias.isEmpty()) { return; } - CDistributor d(this->getDistributors().findByKeyOrAlias(keyOrAlias)); + CDistributor d(sGui->getWebDataServices()->getDistributors().findByKeyOrAlias(keyOrAlias)); this->setDistributor(d); } diff --git a/src/blackgui/components/dbdistributorselectorcomponent.h b/src/blackgui/components/dbdistributorselectorcomponent.h index 63ca90977..f190438e0 100644 --- a/src/blackgui/components/dbdistributorselectorcomponent.h +++ b/src/blackgui/components/dbdistributorselectorcomponent.h @@ -13,8 +13,8 @@ #define BLACKGUI_DBDISTRIBUTORSELECTORCOMPONENT_H #include "blackgui/blackguiexport.h" -#include "blackcore/webdataservices.h" #include "blackgui/dropbase.h" +#include "blackmisc/network/entityflags.h" #include "blackmisc/simulation/distributor.h" #include #include @@ -31,7 +31,6 @@ namespace BlackGui */ class BLACKGUI_EXPORT CDbDistributorSelectorComponent : public QFrame, - public BlackMisc::Network::CWebDataServicesAware, public BlackGui::CDropBase { Q_OBJECT @@ -43,9 +42,6 @@ namespace BlackGui //! Destructor ~CDbDistributorSelectorComponent(); - //! \copydoc BlackMisc::Network::CWebDataServicesAware::setProvider - virtual void setProvider(BlackMisc::Network::IWebDataServicesProvider *webDataReaderProvider) override; - //! Current distributor void setDistributor(const BlackMisc::Simulation::CDistributor &distributor); diff --git a/src/blackgui/components/dbliverycomponent.cpp b/src/blackgui/components/dbliverycomponent.cpp index a18bb8073..892fe05a4 100644 --- a/src/blackgui/components/dbliverycomponent.cpp +++ b/src/blackgui/components/dbliverycomponent.cpp @@ -9,6 +9,7 @@ #include "ui_dbliverycomponent.h" #include "dbliverycomponent.h" +#include "blackgui/guiapplication.h" #include "blackcore/webdataservices.h" #include @@ -31,25 +32,14 @@ namespace BlackGui // filter and drag and drop this->ui->tvp_Liveries->setFilterWidget(this->ui->filter_Livery); this->ui->tvp_Liveries->allowDragDropValueObjects(true, false); + + connect(sGui->getWebDataServices(), &CWebDataServices::dataRead, this, &CDbLiveryComponent::ps_liveriesRead); + this->ps_liveriesRead(CEntityFlags::LiveryEntity, CEntityFlags::ReadFinished, sGui->getWebDataServices()->getLiveriesCount()); } CDbLiveryComponent::~CDbLiveryComponent() { } - void CDbLiveryComponent::setProvider(IWebDataServicesProvider *webDataReaderProvider) - { - CWebDataServicesAware::setProvider(webDataReaderProvider); - connectDataReadSignal( - this, - std::bind(&CDbLiveryComponent::ps_liveriesRead, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3) - ); - int c = getLiveriesCount(); - if (c > 0) - { - ps_liveriesRead(CEntityFlags::LiveryEntity, CEntityFlags::ReadFinished, c); - } - } - void CDbLiveryComponent::filter(const BlackMisc::Aviation::CLivery &livery) { this->ui->filter_Livery->filter(livery); @@ -60,14 +50,14 @@ namespace BlackGui Q_UNUSED(count); if (entity.testFlag(CEntityFlags::LiveryEntity) && readState == CEntityFlags::ReadFinished) { - this->ui->tvp_Liveries->updateContainerMaybeAsync(this->getLiveries()); + this->ui->tvp_Liveries->updateContainerMaybeAsync(sGui->getWebDataServices()->getLiveries()); } } void CDbLiveryComponent::ps_reload() { - if (!hasProvider()) { return; } - triggerRead(CEntityFlags::LiveryEntity, QDateTime()); + if (!sGui) { return; } + sGui->getWebDataServices()->triggerRead(CEntityFlags::LiveryEntity); } } // ns diff --git a/src/blackgui/components/dbliverycomponent.h b/src/blackgui/components/dbliverycomponent.h index be104790b..11550cd0e 100644 --- a/src/blackgui/components/dbliverycomponent.h +++ b/src/blackgui/components/dbliverycomponent.h @@ -15,7 +15,7 @@ #include "blackgui/blackguiexport.h" #include "blackgui/enableforviewbasedindicator.h" #include "blackgui/components/enablefordockwidgetinfoarea.h" -#include "blackmisc/network/webdataservicesprovider.h" +#include "blackmisc/network/entityflags.h" #include #include @@ -31,8 +31,7 @@ namespace BlackGui class BLACKGUI_EXPORT CDbLiveryComponent : public QFrame, public CEnableForDockWidgetInfoArea, - public BlackGui::CEnableForViewBasedIndicator, - public BlackMisc::Network::CWebDataServicesAware + public BlackGui::CEnableForViewBasedIndicator { Q_OBJECT @@ -43,9 +42,6 @@ namespace BlackGui //! Destructor virtual ~CDbLiveryComponent(); - //! Set the provider - virtual void setProvider(BlackMisc::Network::IWebDataServicesProvider *webDataReaderProvider) override; - public slots: //! Filter by livery as default void filter(const BlackMisc::Aviation::CLivery &livery); diff --git a/src/blackgui/components/dbliveryselectorcomponent.cpp b/src/blackgui/components/dbliveryselectorcomponent.cpp index de067a171..779aadef7 100644 --- a/src/blackgui/components/dbliveryselectorcomponent.cpp +++ b/src/blackgui/components/dbliveryselectorcomponent.cpp @@ -10,10 +10,12 @@ #include "dbliveryselectorcomponent.h" #include "ui_dbliveryselectorcomponent.h" #include "blackgui/uppercasevalidator.h" -#include "blackmisc/variant.h" +#include "blackgui/guiapplication.h" #include "blackmisc/aviation/liverylist.h" #include +using namespace BlackGui; +using namespace BlackCore; using namespace BlackMisc; using namespace BlackMisc::Aviation; using namespace BlackMisc::Network; @@ -34,25 +36,14 @@ namespace BlackGui connect(ui->le_Livery, &QLineEdit::returnPressed, this, &CDbLiverySelectorComponent::ps_dataChanged); connect(ui->le_Livery, &QLineEdit::returnPressed, this, &CDbLiverySelectorComponent::ps_dataChanged); + + connect(sGui->getWebDataServices(), &CWebDataServices::dataRead, this, &CDbLiverySelectorComponent::ps_liveriesRead); + this->ps_liveriesRead(CEntityFlags::LiveryEntity, CEntityFlags::ReadFinished, sGui->getWebDataServices()->getLiveriesCount()); } CDbLiverySelectorComponent::~CDbLiverySelectorComponent() { - gracefulShutdown(); - } - - void CDbLiverySelectorComponent::setProvider(IWebDataServicesProvider *webDataReaderProvider) - { - CWebDataServicesAware::setProvider(webDataReaderProvider); - connectDataReadSignal( - this, - std::bind(&CDbLiverySelectorComponent::ps_liveriesRead, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3) - ); - int c = getLiveriesCount(); - if (c > 0) - { - this->ps_liveriesRead(CEntityFlags::LiveryEntity, CEntityFlags::ReadFinished, c); - } + // void } void CDbLiverySelectorComponent::setLivery(const CLivery &livery) @@ -80,7 +71,7 @@ namespace BlackGui if (s >= 1) { liveryCode = liveryCode.left(s).trimmed(); } if (this->m_currentLivery.matchesCombinedCode(liveryCode)) { return; } - CLivery d(getLiveries().findByCombinedCode(liveryCode)); + CLivery d(sApp->getWebDataServices()->getLiveries().findByCombinedCode(liveryCode)); if (d.hasCompleteData()) { this->setLivery(d); @@ -94,11 +85,11 @@ namespace BlackGui CLivery CDbLiverySelectorComponent::getLivery() const { - if (!hasProvider()) { return CLivery(); } + if (!sApp) { return CLivery(); } const QString liveryCode( this->stripExtraInfo(this->ui->le_Livery->text()) ); - const CLivery liv(getLiveries().findByCombinedCode(liveryCode)); + const CLivery liv(sApp->getWebDataServices()->getLiveries().findByCombinedCode(liveryCode)); if (liv.hasCompleteData() && liv.hasValidDbKey()) { // full data fetched @@ -172,12 +163,12 @@ namespace BlackGui void CDbLiverySelectorComponent::ps_liveriesRead(CEntityFlags::Entity entity, CEntityFlags::ReadState readState, int count) { - if (!hasProvider()) { return; } + if (!sApp) { return; } if (entity.testFlag(CEntityFlags::LiveryEntity) && readState == CEntityFlags::ReadFinished) { if (count > 0) { - QStringList codes(this->getLiveries().getCombinedCodesPlusInfo(true)); + QStringList codes(sApp->getWebDataServices()->getLiveries().getCombinedCodesPlusInfo(true)); QCompleter *c = new QCompleter(codes, this); c->setCaseSensitivity(Qt::CaseInsensitive); c->setCompletionMode(QCompleter::PopupCompletion); @@ -196,12 +187,12 @@ namespace BlackGui void CDbLiverySelectorComponent::ps_dataChanged() { - if (!hasProvider()) { return; } + if (!sApp) { return; } const QString code( this->stripExtraInfo(this->ui->le_Livery->text()) ); if (code.isEmpty()) { return; } - const CLivery livery(this->getLiveries().findByCombinedCode(code)); + const CLivery livery(sApp->getWebDataServices()->getLiveries().findByCombinedCode(code)); this->setLivery(livery); } diff --git a/src/blackgui/components/dbliveryselectorcomponent.h b/src/blackgui/components/dbliveryselectorcomponent.h index b002748a7..58ed68791 100644 --- a/src/blackgui/components/dbliveryselectorcomponent.h +++ b/src/blackgui/components/dbliveryselectorcomponent.h @@ -14,7 +14,7 @@ #include "blackgui/blackguiexport.h" #include "blackmisc/aviation/livery.h" -#include "blackcore/webdataservices.h" +#include "blackmisc/network/entityflags.h" #include "blackgui/dropbase.h" #include #include @@ -32,7 +32,6 @@ namespace BlackGui */ class BLACKGUI_EXPORT CDbLiverySelectorComponent : public QFrame, - public BlackMisc::Network::CWebDataServicesAware, public BlackGui::CDropBase { Q_OBJECT @@ -44,9 +43,6 @@ namespace BlackGui //! Destructor ~CDbLiverySelectorComponent(); - //! \copydoc BlackMisc::Network::CWebDataServicesAware::setProvider - virtual void setProvider(BlackMisc::Network::IWebDataServicesProvider *webDataReaderProvider) override; - //! Current livery void setLivery(const BlackMisc::Aviation::CLivery &livery); @@ -68,9 +64,6 @@ namespace BlackGui //! Clear selection void clear(); - public slots: - //! Distributors have been read - void ps_liveriesRead(BlackMisc::Network::CEntityFlags::Entity entity, BlackMisc::Network::CEntityFlags::ReadState readState, int count); signals: //! Distributor was changed @@ -96,6 +89,9 @@ namespace BlackGui //! Completer activated void ps_completerActivated(const QString &liveryCode); + //! Distributors have been read + void ps_liveriesRead(BlackMisc::Network::CEntityFlags::Entity entity, BlackMisc::Network::CEntityFlags::ReadState readState, int count); + private: //! Strip extra info from livery code QString stripExtraInfo(const QString &liveryCode) const; diff --git a/src/blackgui/components/dbmappingcomponent.cpp b/src/blackgui/components/dbmappingcomponent.cpp index fbe8657c4..0edb3a2de 100644 --- a/src/blackgui/components/dbmappingcomponent.cpp +++ b/src/blackgui/components/dbmappingcomponent.cpp @@ -11,6 +11,7 @@ #include "ui_dbmappingcomponent.h" #include "blackgui/components/dbautostashingcomponent.h" #include "blackgui/components/dbmodelmappingmodifycomponent.h" +#include "blackgui/guiapplication.h" #include "blackgui/guiutility.h" #include "blackgui/shortcut.h" #include "blackmisc/simulation/fscommon/aircraftcfgparser.h" @@ -175,30 +176,9 @@ namespace BlackGui return v->at(index); } - void CDbMappingComponent::setProvider(BlackMisc::Network::IWebDataServicesProvider *provider) - { - CWebDataServicesAware::setProvider(provider); - this->m_autoStashDialog->setProvider(provider); - this->ui->editor_Livery->setProvider(provider); - this->ui->editor_Distributor->setProvider(provider); - this->ui->editor_AircraftIcao->setProvider(provider); - this->ui->comp_StashAircraft->setProvider(provider); - - if (this->ui->tvp_AircraftModelsForVPilot->getFilterDialog()) - { - this->ui->tvp_AircraftModelsForVPilot->getFilterDialog()->setProvider(provider); - } - - if (this->ui->tvp_OwnAircraftModels->getFilterDialog()) - { - this->ui->tvp_OwnAircraftModels->getFilterDialog()->setProvider(provider); - } - } - void CDbMappingComponent::gracefulShutdown() { this->disconnect(); - CWebDataServicesAware::gracefulShutdown(); this->m_vPilotReader.gracefulShutdown(); if (this->m_modelLoader) { this->m_modelLoader->gracefulShutdown(); } } @@ -313,7 +293,7 @@ namespace BlackGui void CDbMappingComponent::ps_handleStashDropRequest(const CAirlineIcaoCode &code) const { - CLivery stdLivery(this->getStdLiveryForAirlineCode(code)); + CLivery stdLivery(sGui->getWebDataServices()->getStdLiveryForAirlineCode(code)); if (!stdLivery.hasValidDbKey()) { return; } this->ui->comp_StashAircraft->applyToSelected(stdLivery); } @@ -341,7 +321,7 @@ namespace BlackGui void CDbMappingComponent::ps_removeDbModelsFromView() { - QStringList modelStrings(this->getModelStrings()); + QStringList modelStrings(sGui->getWebDataServices()->getModelStrings()); if (modelStrings.isEmpty()) { return; } if (currentTabIndex() == TabVPilot || currentTabIndex() == TabOwnModels) { @@ -625,9 +605,9 @@ namespace BlackGui // we either use the model, or try to resolve the data to DB data bool dbModel = model.hasValidDbKey(); - const CLivery livery(dbModel ? model.getLivery() : this->smartLiverySelector(model.getLivery())); - const CAircraftIcaoCode aircraftIcao(dbModel ? model.getAircraftIcaoCode() : this->smartAircraftIcaoSelector(model.getAircraftIcaoCode())); - const CDistributor distributor(dbModel ? model.getDistributor() : this->smartDistributorSelector(model.getDistributor())); + const CLivery livery(dbModel ? model.getLivery() : sGui->getWebDataServices()->smartLiverySelector(model.getLivery())); + const CAircraftIcaoCode aircraftIcao(dbModel ? model.getAircraftIcaoCode() : sGui->getWebDataServices()->smartAircraftIcaoSelector(model.getAircraftIcaoCode())); + const CDistributor distributor(dbModel ? model.getDistributor() : sGui->getWebDataServices()->smartDistributorSelector(model.getDistributor())); // set model part this->ui->editor_Model->setValue(model); @@ -803,14 +783,13 @@ namespace BlackGui { CDbMappingComponent *mapComp = mappingComponent(); Q_ASSERT_X(mapComp, Q_FUNC_INFO, "no mapping component"); - bool canConnectDb = mapComp->canConnectSwiftDb(); - + bool canConnectDb = sGui->getWebDataServices()->canConnectSwiftDb(); if (canConnectDb) { if (!mapComp->currentModelView()->isEmpty() && mapComp->currentModelView()->getMenu().testFlag(CViewBaseNonTemplate::MenuCanStashModels)) { this->addSeparator(menu); - int dbModels = mapComp->getModelsCount(); + int dbModels = sGui->getWebDataServices()->getModelsCount(); if (dbModels > 0) { // we have keys and data where we could delete them from diff --git a/src/blackgui/components/dbmappingcomponent.h b/src/blackgui/components/dbmappingcomponent.h index d917e1d7e..a2ef69279 100644 --- a/src/blackgui/components/dbmappingcomponent.h +++ b/src/blackgui/components/dbmappingcomponent.h @@ -22,7 +22,6 @@ #include "blackgui/views/aircraftmodelview.h" #include "blackmisc/simulation/aircraftmodelloader.h" #include "blackmisc/simulation/fscommon/vpilotrulesreader.h" -#include "blackmisc/network/webdataservicesprovider.h" #include "blackmisc/network/entityflags.h" #include "blackmisc/statusmessagelist.h" #include @@ -43,8 +42,7 @@ namespace BlackGui class BLACKGUI_EXPORT CDbMappingComponent : public BlackGui::COverlayMessagesFrame, public CEnableForDockWidgetInfoArea, - public BlackGui::CEnableForViewBasedIndicator, - public BlackMisc::Network::CWebDataServicesAware + public BlackGui::CEnableForViewBasedIndicator { Q_OBJECT @@ -65,9 +63,6 @@ namespace BlackGui //! Destructor ~CDbMappingComponent(); - //! \copydoc BlackMisc::Network::CWebDataServicesAware::setProvider - virtual void setProvider(BlackMisc::Network::IWebDataServicesProvider *provider) override; - //! Graceful shutdown void gracefulShutdown(); diff --git a/src/blackgui/components/dbmodelcomponent.cpp b/src/blackgui/components/dbmodelcomponent.cpp index f5654ed07..5c921be35 100644 --- a/src/blackgui/components/dbmodelcomponent.cpp +++ b/src/blackgui/components/dbmodelcomponent.cpp @@ -9,8 +9,10 @@ #include "dbmodelcomponent.h" #include "dbmappingcomponent.h" +#include "blackgui/guiapplication.h" #include "blackgui/stylesheetutility.h" #include "blackgui/shortcut.h" +#include "blackcore/webdataservices.h" #include "blackmisc/simulation/aircraftmodel.h" #include "ui_dbmodelcomponent.h" #include @@ -18,6 +20,7 @@ using namespace BlackMisc; using namespace BlackMisc::Network; using namespace BlackMisc::Simulation; +using namespace BlackCore; using namespace BlackGui::Views; using namespace BlackGui::Models; @@ -40,30 +43,14 @@ namespace BlackGui // configure view this->ui->tvp_AircraftModel->setFilterWidget(this->ui->filter_AircraftModelFilter); this->ui->tvp_AircraftModel->allowDragDropValueObjects(true, false); + + connect(sApp->getWebDataServices(), &CWebDataServices::dataRead, this, &CDbModelComponent::ps_modelsRead); + this->ps_modelsRead(CEntityFlags::ModelEntity, CEntityFlags::ReadFinished, sApp->getWebDataServices()->getModelsCount()); } CDbModelComponent::~CDbModelComponent() { - gracefulShutdown(); - } - - void CDbModelComponent::setProvider(IWebDataServicesProvider *webDataReaderProvider) - { - CWebDataServicesAware::setProvider(webDataReaderProvider); - webDataReaderProvider->connectDataReadSignal( - this, - std::bind(&CDbModelComponent::ps_modelsRead, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3) - ); - int c = getModelsCount(); - if (c > 0) - { - ps_modelsRead(CEntityFlags::ModelEntity, CEntityFlags::ReadFinished, c); - } - - if (this->ui->filter_AircraftModelFilter) - { - this->ui->filter_AircraftModelFilter->setProvider(webDataReaderProvider); - } + // void } bool CDbModelComponent::hasModels() const @@ -79,7 +66,7 @@ namespace BlackGui CAircraftModel model(this->ui->tvp_AircraftModel->container().latestObject()); ts = model.getUtcTimestamp(); } - this->triggerRead(CEntityFlags::ModelEntity, ts); + sGui->getWebDataServices()->triggerRead(CEntityFlags::ModelEntity, ts); } void CDbModelComponent::ps_modelsRead(CEntityFlags::Entity entity, CEntityFlags::ReadState readState, int count) @@ -89,15 +76,15 @@ namespace BlackGui { if (readState == CEntityFlags::ReadFinished || readState == CEntityFlags::ReadFinishedRestricted) { - this->ui->tvp_AircraftModel->updateContainerMaybeAsync(this->getModels()); + this->ui->tvp_AircraftModel->updateContainerMaybeAsync(sGui->getWebDataServices()->getModels()); } } } void CDbModelComponent::ps_reload() { - if (!this->hasProvider()) { return; } - this->triggerRead(CEntityFlags::ModelEntity, QDateTime()); + if (!sGui) { return; } + sGui->getWebDataServices()->triggerRead(CEntityFlags::ModelEntity); } void CDbModelComponent::ps_onStyleSheetChanged() diff --git a/src/blackgui/components/dbmodelcomponent.h b/src/blackgui/components/dbmodelcomponent.h index 228634e3f..9258394a9 100644 --- a/src/blackgui/components/dbmodelcomponent.h +++ b/src/blackgui/components/dbmodelcomponent.h @@ -17,7 +17,7 @@ #include "blackgui/components/enablefordockwidgetinfoarea.h" #include "blackgui/components/dbmappingcomponentaware.h" #include "blackgui/menudelegate.h" -#include "blackmisc/network/webdataservicesprovider.h" +#include "blackmisc/network/entityflags.h" #include #include @@ -34,8 +34,7 @@ namespace BlackGui public QFrame, public CDbMappingComponentAware, public CEnableForDockWidgetInfoArea, - public BlackGui::CEnableForViewBasedIndicator, - public BlackMisc::Network::CWebDataServicesAware + public BlackGui::CEnableForViewBasedIndicator { Q_OBJECT @@ -46,9 +45,6 @@ namespace BlackGui //! Destructor virtual ~CDbModelComponent(); - //! Set the provider - virtual void setProvider(BlackMisc::Network::IWebDataServicesProvider *webDataReaderProvider) override; - //! Get latest model if any BlackMisc::Simulation::CAircraftModel getLatestModel() const; diff --git a/src/blackgui/components/dbstashcomponent.cpp b/src/blackgui/components/dbstashcomponent.cpp index 148496121..1c7262433 100644 --- a/src/blackgui/components/dbstashcomponent.cpp +++ b/src/blackgui/components/dbstashcomponent.cpp @@ -10,14 +10,18 @@ #include "dbstashcomponent.h" #include "dbmappingcomponent.h" #include "ui_dbstashcomponent.h" +#include "blackgui/guiapplication.h" #include "blackgui/views/aircraftmodelview.h" +#include "blackcore/databasewriter.h" #include "blackmisc/icons.h" #include "blackmisc/simulation/aircraftmodel.h" +using namespace BlackCore; using namespace BlackMisc; using namespace BlackMisc::Simulation; using namespace BlackMisc::Aviation; using namespace BlackMisc::Network; +using namespace BlackGui; using namespace BlackGui::Models; using namespace BlackGui::Views; @@ -52,20 +56,13 @@ namespace BlackGui ui->tvp_StashAircraftModels->setHighlightModelStrings(true); ui->tvp_StashAircraftModels->setHighlightModelStringsColor(Qt::red); this->enableButtonRow(); + + connect(sApp->getWebDataServices()->getDatabaseWriter(), &CDatabaseWriter::published, this, &CDbStashComponent::ps_publishResponse); } CDbStashComponent::~CDbStashComponent() { } - void CDbStashComponent::setProvider(IWebDataServicesProvider *provider) - { - CWebDataServicesAware::setProvider(provider); - provider->connectDataPublishSignal( - this, - std::bind(&CDbStashComponent::ps_publishResponse, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3) - ); - } - void CDbStashComponent::gracefulShutdown() { // shutdown @@ -185,7 +182,7 @@ namespace BlackGui } // retrieve the std livery - const CLivery stdLivery(this->getStdLiveryForAirlineCode(icao)); + const CLivery stdLivery(sApp->getWebDataServices()->getStdLiveryForAirlineCode(icao)); if (!stdLivery.hasValidDbKey()) { static const CStatusMessage msg(CStatusMessage::SeverityError, "No valid standard livery for " + icao.getDesignator()); @@ -241,7 +238,7 @@ namespace BlackGui msgs.push_back(CStatusMessage(validationCategories(), CStatusMessage::SeverityWarning, QString("More than %1 values, values skipped").arg(MaxModelPublished))); } - msgs.push_back(this->asyncPublishModels(models)); + msgs.push_back(sApp->getWebDataServices()->asyncPublishModels(models)); if (msgs.hasWarningOrErrorMessages()) { this->showMessages(msgs); @@ -354,7 +351,7 @@ namespace BlackGui CAircraftModel CDbStashComponent::consolidateWithDbData(const CAircraftModel &model) const { if (!model.hasModelString()) { return model; } - CAircraftModel dbModel(this->getModelForModelString(model.getModelString())); + CAircraftModel dbModel(sApp->getWebDataServices()->getModelForModelString(model.getModelString())); // we try to best update by DB data here if (!dbModel.hasValidDbKey()) @@ -363,7 +360,7 @@ namespace BlackGui CAircraftModel consolidatedModel(model); // copy over if (!consolidatedModel.getLivery().hasValidDbKey()) { - const CLivery dbLivery(this->smartLiverySelector(consolidatedModel.getLivery())); + const CLivery dbLivery(sApp->getWebDataServices()->smartLiverySelector(consolidatedModel.getLivery())); if (dbLivery.hasValidDbKey()) { consolidatedModel.setLivery(dbLivery); @@ -372,7 +369,7 @@ namespace BlackGui if (!consolidatedModel.getAircraftIcaoCode().hasValidDbKey() && consolidatedModel.hasAircraftDesignator()) { // try to find DB aircraft ICAO here - const CAircraftIcaoCode dbIcao(this->smartAircraftIcaoSelector(consolidatedModel.getAircraftIcaoCode())); + const CAircraftIcaoCode dbIcao(sGui->getWebDataServices()->smartAircraftIcaoSelector(consolidatedModel.getAircraftIcaoCode())); if (dbIcao.hasValidDbKey()) { consolidatedModel.setAircraftIcaoCode(dbIcao); @@ -382,7 +379,7 @@ namespace BlackGui // key alone here can be misleading, as the key can be valid but no DB key // mostly happens when key is an alias QString keyOrAlias(consolidatedModel.getDistributor().getDbKey()); - CDistributor dbDistributor(this->getDistributors().findByKeyOrAlias(keyOrAlias)); + CDistributor dbDistributor(sGui->getWebDataServices()->getDistributors().findByKeyOrAlias(keyOrAlias)); // if no distributor is found, it is now empty because it was invalid // otherwise replaced with the current DB data diff --git a/src/blackgui/components/dbstashcomponent.h b/src/blackgui/components/dbstashcomponent.h index a95526c78..dcf962a1f 100644 --- a/src/blackgui/components/dbstashcomponent.h +++ b/src/blackgui/components/dbstashcomponent.h @@ -17,7 +17,6 @@ #include "blackgui/menudelegate.h" #include "blackgui/views/aircraftmodelview.h" #include "blackmisc/verify.h" -#include "blackmisc/network/webdataservicesprovider.h" #include #include #include @@ -34,8 +33,7 @@ namespace BlackGui class BLACKGUI_EXPORT CDbStashComponent : public QFrame, public CDbMappingComponentAware, - public CEnableForDockWidgetInfoArea, - public BlackMisc::Network::CWebDataServicesAware + public CEnableForDockWidgetInfoArea { Q_OBJECT @@ -49,9 +47,6 @@ namespace BlackGui //! Destructor ~CDbStashComponent(); - //! \copydoc BlackMisc::Network::CWebDataServicesAware::setProvider - virtual void setProvider(BlackMisc::Network::IWebDataServicesProvider *provider) override; - //! Graceful shutdown void gracefulShutdown(); diff --git a/src/blackgui/components/infobarwebreadersstatuscomponent.cpp b/src/blackgui/components/infobarwebreadersstatuscomponent.cpp index 8ff77b69d..8c15d761c 100644 --- a/src/blackgui/components/infobarwebreadersstatuscomponent.cpp +++ b/src/blackgui/components/infobarwebreadersstatuscomponent.cpp @@ -9,6 +9,7 @@ #include "infobarwebreadersstatuscomponent.h" #include "ui_infobarwebreadersstatuscomponent.h" +#include "blackgui/guiapplication.h" #include "blackcore/webreaderflags.h" #include "blackmisc/icons.h" #include "blackmisc/verify.h" @@ -31,6 +32,7 @@ namespace BlackGui m_timer.setInterval(30 * 1000); m_timer.start(); m_timer.setObjectName("CInfoBarWebReadersStatusComponent::CheckSwiftDbTimer"); + connect(sGui->getWebDataServices(), &CWebDataServices::dataRead, this, &CInfoBarWebReadersStatusComponent::ps_dataRead); } CInfoBarWebReadersStatusComponent::~CInfoBarWebReadersStatusComponent() @@ -52,15 +54,6 @@ namespace BlackGui this->ui->led_Distributors->setValues(CLedWidget::Yellow, CLedWidget::Black, CLedWidget::Red, shape, "reading", "idle", "failed", 14); } - void CInfoBarWebReadersStatusComponent::setProvider(IWebDataServicesProvider *webDataReaderProvider) - { - CWebDataServicesAware::setProvider(webDataReaderProvider); - connectDataReadSignal( - this, - std::bind(&CInfoBarWebReadersStatusComponent::ps_dataRead, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3) - ); - } - void CInfoBarWebReadersStatusComponent::ps_dataRead(CEntityFlags::Entity entity, CEntityFlags::ReadState readState, int count) { Q_UNUSED(count); @@ -71,8 +64,8 @@ namespace BlackGui void CInfoBarWebReadersStatusComponent::ps_checkServerAndData() { bool swift = - this->hasProvider() && - this->canConnectSwiftDb(); + sGui && + sGui->getWebDataServices()->canConnectSwiftDb(); this->ui->led_SwiftDb->setOn(swift); bool allData = hasAllData(); @@ -123,12 +116,12 @@ namespace BlackGui bool CInfoBarWebReadersStatusComponent::hasAllData() const { - if (!hasProvider()) { return false; } - return getAirlineIcaoCodesCount() > 0 && - getAircraftIcaoCodesCount() > 0 && - getDistributorsCount() > 0 && - getModelsCount() > 0 && - getLiveriesCount() > 0; + if (!sGui) { return false; } + return sGui->getWebDataServices()->getAirlineIcaoCodesCount() > 0 && + sGui->getWebDataServices()->getAircraftIcaoCodesCount() > 0 && + sGui->getWebDataServices()->getDistributorsCount() > 0 && + sGui->getWebDataServices()->getModelsCount() > 0 && + sGui->getWebDataServices()->getLiveriesCount() > 0; } } // namespace diff --git a/src/blackgui/components/infobarwebreadersstatuscomponent.h b/src/blackgui/components/infobarwebreadersstatuscomponent.h index a5f956776..62efeb250 100644 --- a/src/blackgui/components/infobarwebreadersstatuscomponent.h +++ b/src/blackgui/components/infobarwebreadersstatuscomponent.h @@ -14,7 +14,7 @@ #include "blackgui/blackguiexport.h" #include "blackgui/led.h" -#include "blackmisc/network/webdataservicesprovider.h" +#include "blackmisc/network/entityflags.h" #include #include #include @@ -26,8 +26,7 @@ namespace BlackGui { //! Info bar displaying status of web readers(swift DB, ...) class BLACKGUI_EXPORT CInfoBarWebReadersStatusComponent : - public QFrame, - public BlackMisc::Network::CWebDataServicesAware + public QFrame { Q_OBJECT @@ -41,9 +40,6 @@ namespace BlackGui //! Init the LEDs void initLeds(); - //! Set the provider - virtual void setProvider(BlackMisc::Network::IWebDataServicesProvider *webDataReaderProvider) override; - private slots: //! Data have been read void ps_dataRead(BlackMisc::Network::CEntityFlags::Entity entity, BlackMisc::Network::CEntityFlags::ReadState readState, int count); diff --git a/src/blackgui/editors/aircrafticaoform.cpp b/src/blackgui/editors/aircrafticaoform.cpp index bfd4d5529..7b812929a 100644 --- a/src/blackgui/editors/aircrafticaoform.cpp +++ b/src/blackgui/editors/aircrafticaoform.cpp @@ -7,6 +7,7 @@ * contained in the LICENSE file. */ +#include "blackgui/guiapplication.h" #include "blackgui/guiutility.h" #include "blackmisc/aviation/aircrafticaocodelist.h" #include "aircrafticaoform.h" @@ -73,7 +74,7 @@ namespace BlackGui if (k >= 0) { // we got an id, we get the DB object for it - CAircraftIcaoCode fromDb(this->getAircraftIcaoCodeForDbKey(k)); + CAircraftIcaoCode fromDb(sGui->getWebDataServices()->getAircraftIcaoCodeForDbKey(k)); if (fromDb.getDesignator() == icao.getDesignator()) { // we replace by DB object @@ -152,12 +153,6 @@ namespace BlackGui setValue(CAircraftIcaoCode()); } - void CAircraftIcaoForm::setProvider(Network::IWebDataServicesProvider *webDataReaderProvider) - { - CWebDataServicesAware::setProvider(webDataReaderProvider); - this->ui->aircraft_Selector->setProvider(webDataReaderProvider); - } - void CAircraftIcaoForm::ps_droppedCode(const BlackMisc::CVariant &variantDropped) { CAircraftIcaoCode icao; diff --git a/src/blackgui/editors/aircrafticaoform.h b/src/blackgui/editors/aircrafticaoform.h index 43c026d40..7a3d28b53 100644 --- a/src/blackgui/editors/aircrafticaoform.h +++ b/src/blackgui/editors/aircrafticaoform.h @@ -15,7 +15,6 @@ #include "blackgui/blackguiexport.h" #include "blackgui/editors/form.h" #include "blackmisc/aviation/aircrafticaocode.h" -#include "blackmisc/network/webdataservicesprovider.h" #include "blackmisc/statusmessagelist.h" #include @@ -29,8 +28,7 @@ namespace BlackGui * Aircraft ICAO form */ class BLACKGUI_EXPORT CAircraftIcaoForm : - public CForm, - public BlackMisc::Network::CWebDataServicesAware + public CForm { Q_OBJECT @@ -62,9 +60,6 @@ namespace BlackGui //! Clear void clear(); - //! \copydoc BlackMisc::Network::CWebDataServicesAware::setProvider - virtual void setProvider(BlackMisc::Network::IWebDataServicesProvider *webDataReaderProvider) override; - public slots: //! Set value void setValue(const BlackMisc::Aviation::CAircraftIcaoCode &icao); diff --git a/src/blackgui/editors/airlineicaoform.cpp b/src/blackgui/editors/airlineicaoform.cpp index 8de06da34..04adb5338 100644 --- a/src/blackgui/editors/airlineicaoform.cpp +++ b/src/blackgui/editors/airlineicaoform.cpp @@ -22,7 +22,6 @@ namespace BlackGui { CAirlineIcaoForm::CAirlineIcaoForm(QWidget *parent) : CForm(parent), - BlackMisc::Network::CWebDataServicesAware(nullptr), ui(new Ui::CAirlineIcaoForm) { ui->setupUi(this); @@ -119,14 +118,6 @@ namespace BlackGui setValue(CAirlineIcaoCode()); } - void CAirlineIcaoForm::setProvider(Network::IWebDataServicesProvider *webDataReaderProvider) - { - CWebDataServicesAware::setProvider(webDataReaderProvider); - this->ui->country_Selector->setProvider(webDataReaderProvider); - this->ui->selector_AirlineDesignator->setProvider(webDataReaderProvider); - this->ui->selector_AirlineName->setProvider(webDataReaderProvider); - } - void CAirlineIcaoForm::ps_droppedCode(const BlackMisc::CVariant &variantDropped) { CAirlineIcaoCode icao; diff --git a/src/blackgui/editors/airlineicaoform.h b/src/blackgui/editors/airlineicaoform.h index 02fd42ab3..6472d4b5e 100644 --- a/src/blackgui/editors/airlineicaoform.h +++ b/src/blackgui/editors/airlineicaoform.h @@ -14,7 +14,6 @@ #include "blackgui/blackguiexport.h" #include "blackmisc/aviation/airlineicaocode.h" -#include "blackmisc/network/webdataservicesprovider.h" #include "blackmisc/statusmessagelist.h" #include "blackgui/editors/form.h" #include @@ -29,8 +28,7 @@ namespace BlackGui * Airline ICAO code form */ class BLACKGUI_EXPORT CAirlineIcaoForm : - public CForm, - public BlackMisc::Network::CWebDataServicesAware + public CForm { Q_OBJECT @@ -65,9 +63,6 @@ namespace BlackGui //! Clear void clear(); - //! \copydoc BlackMisc::Network::CWebDataServicesAware::setProvider - virtual void setProvider(BlackMisc::Network::IWebDataServicesProvider *webDataReaderProvider) override; - signals: //! Airline has been changed void airlineChanged(const BlackMisc::Aviation::CAirlineIcaoCode &airlineIcao); diff --git a/src/blackgui/editors/distributorform.cpp b/src/blackgui/editors/distributorform.cpp index 1f329dd5c..a68edc8dd 100644 --- a/src/blackgui/editors/distributorform.cpp +++ b/src/blackgui/editors/distributorform.cpp @@ -22,7 +22,6 @@ namespace BlackGui { CDistributorForm::CDistributorForm(QWidget *parent) : CForm(parent), - BlackMisc::Network::CWebDataServicesAware(nullptr), ui(new Ui::CDistributorForm) { ui->setupUi(this); @@ -101,12 +100,6 @@ namespace BlackGui this->ui->distributor_Selector->setReadOnly(false); } - void CDistributorForm::setProvider(Network::IWebDataServicesProvider *webDataReaderProvider) - { - CWebDataServicesAware::setProvider(webDataReaderProvider); - this->ui->distributor_Selector->setProvider(webDataReaderProvider); - } - void CDistributorForm::ps_droppedCode(const BlackMisc::CVariant &variantDropped) { CDistributor distributor; diff --git a/src/blackgui/editors/distributorform.h b/src/blackgui/editors/distributorform.h index 8f6fe250e..526b780bc 100644 --- a/src/blackgui/editors/distributorform.h +++ b/src/blackgui/editors/distributorform.h @@ -15,7 +15,6 @@ #include "blackgui/blackguiexport.h" #include "blackgui/editors/form.h" #include "blackmisc/simulation/distributor.h" -#include "blackmisc/network/webdataservicesprovider.h" #include "blackmisc/statusmessagelist.h" #include @@ -29,8 +28,7 @@ namespace BlackGui * Distributor form */ class BLACKGUI_EXPORT CDistributorForm : - public CForm, - public BlackMisc::Network::CWebDataServicesAware + public CForm { Q_OBJECT @@ -62,9 +60,6 @@ namespace BlackGui //! Clear void clear(); - //! \copydoc BlackMisc::Network::CWebDataServicesAware::setProvider - virtual void setProvider(BlackMisc::Network::IWebDataServicesProvider *webDataReaderProvider) override; - public slots: //! Set value void setValue(const BlackMisc::Simulation::CDistributor &distributor = BlackMisc::Simulation::CDistributor()); diff --git a/src/blackgui/editors/liveryform.cpp b/src/blackgui/editors/liveryform.cpp index 39510625b..423db3e3d 100644 --- a/src/blackgui/editors/liveryform.cpp +++ b/src/blackgui/editors/liveryform.cpp @@ -7,12 +7,14 @@ * contained in the LICENSE file. */ +#include "blackgui/guiapplication.h" #include "blackmisc/aviation/liverylist.h" #include "liveryform.h" #include "ui_liveryform.h" using namespace BlackMisc; using namespace BlackMisc::Aviation; +using namespace BlackGui; using namespace BlackGui::Components; namespace BlackGui @@ -43,13 +45,6 @@ namespace BlackGui CLiveryForm::~CLiveryForm() { } - void CLiveryForm::setProvider(BlackMisc::Network::IWebDataServicesProvider *provider) - { - CWebDataServicesAware::setProvider(provider); - this->ui->editor_AirlineIcao->setProvider(provider); - this->ui->livery_Selector->setProvider(provider); - } - CLivery CLiveryForm::getValue() const { CLivery livery(this->ui->livery_Selector->getLivery()); @@ -168,7 +163,7 @@ namespace BlackGui if (!code.hasCompleteData()) { return; } if (!code.hasValidDbKey()) { return; } - CLivery stdLivery(this->getLiveries().findStdLiveryByAirlineIcaoDesignator(code)); + CLivery stdLivery(sGui->getWebDataServices()->getLiveries().findStdLiveryByAirlineIcaoDesignator(code)); if (stdLivery.hasValidDbKey()) { this->setValue(stdLivery); diff --git a/src/blackgui/editors/liveryform.h b/src/blackgui/editors/liveryform.h index 4816f7c52..b7c290da7 100644 --- a/src/blackgui/editors/liveryform.h +++ b/src/blackgui/editors/liveryform.h @@ -15,7 +15,6 @@ #include "blackgui/editors/form.h" #include "blackgui/blackguiexport.h" #include "blackmisc/aviation/livery.h" -#include "blackmisc/network/webdataservicesprovider.h" #include "blackmisc/statusmessagelist.h" namespace Ui { class CLiveryForm; } @@ -28,8 +27,7 @@ namespace BlackGui * Livery form class */ class BLACKGUI_EXPORT CLiveryForm : - public CForm, - public BlackMisc::Network::CWebDataServicesAware + public CForm { Q_OBJECT @@ -40,9 +38,6 @@ namespace BlackGui //! Destructor ~CLiveryForm(); - //! \copydoc BlackMisc::Network::CWebDataServicesAware::setProvider - virtual void setProvider(BlackMisc::Network::IWebDataServicesProvider *provider) override; - //! Value BlackMisc::Aviation::CLivery getValue() const; diff --git a/src/blackgui/filters/aircrafticaofilterbar.cpp b/src/blackgui/filters/aircrafticaofilterbar.cpp index f13c71547..7bc048dab 100644 --- a/src/blackgui/filters/aircrafticaofilterbar.cpp +++ b/src/blackgui/filters/aircrafticaofilterbar.cpp @@ -87,11 +87,5 @@ namespace BlackGui ui->le_Description->clear(); ui->combinedType_Selector->clear(); } - - void CAircraftIcaoFilterBar::setProvider(BlackMisc::Network::IWebDataServicesProvider *webDataReaderProvider) - { - Q_UNUSED(webDataReaderProvider); - } - } // ns } // nss diff --git a/src/blackgui/filters/aircrafticaofilterbar.h b/src/blackgui/filters/aircrafticaofilterbar.h index e94ba92b4..77a8966d2 100644 --- a/src/blackgui/filters/aircrafticaofilterbar.h +++ b/src/blackgui/filters/aircrafticaofilterbar.h @@ -15,7 +15,6 @@ #include "blackguiexport.h" #include "blackgui/filters/filterwidget.h" #include "blackgui/models/aircrafticaofilter.h" -#include "blackmisc/network/webdataservicesprovider.h" #include namespace Ui { class CAircraftIcaoFilterBar; } @@ -29,8 +28,7 @@ namespace BlackGui */ class BLACKGUI_EXPORT CAircraftIcaoFilterBar : public CFilterWidget, - public BlackGui::Models::IModelFilterProvider, - public BlackMisc::Network::CWebDataServicesAware + public BlackGui::Models::IModelFilterProvider { Q_OBJECT @@ -41,9 +39,6 @@ namespace BlackGui //! Destructor ~CAircraftIcaoFilterBar(); - //! \copydoc BlackMisc::Network::CWebDataServicesAware::setProvider - virtual void setProvider(BlackMisc::Network::IWebDataServicesProvider *webDataReaderProvider) override; - //! \copydoc Models::IModelFilterProvider::createModelFilter std::unique_ptr > createModelFilter() const override; diff --git a/src/blackgui/filters/aircraftmodelfilterbar.cpp b/src/blackgui/filters/aircraftmodelfilterbar.cpp index 0b498e955..a7d6f8b72 100644 --- a/src/blackgui/filters/aircraftmodelfilterbar.cpp +++ b/src/blackgui/filters/aircraftmodelfilterbar.cpp @@ -66,12 +66,6 @@ namespace BlackGui )); } - void CAircraftModelFilterBar::setProvider(BlackMisc::Network::IWebDataServicesProvider *webDataReaderProvider) - { - CWebDataServicesAware::setProvider(webDataReaderProvider); - this->ui->comp_DistributorSelector->setProvider(webDataReaderProvider); - } - void CAircraftModelFilterBar::onRowCountChanged(int count, bool withFilter) { this->ui->filter_Buttons->onRowCountChanged(count, withFilter); diff --git a/src/blackgui/filters/aircraftmodelfilterbar.h b/src/blackgui/filters/aircraftmodelfilterbar.h index b9e91636a..99702c9bc 100644 --- a/src/blackgui/filters/aircraftmodelfilterbar.h +++ b/src/blackgui/filters/aircraftmodelfilterbar.h @@ -15,7 +15,6 @@ #include "blackguiexport.h" #include "blackgui/models/aircraftmodelfilter.h" #include "blackgui/filters/filterwidget.h" -#include "blackmisc/network/webdataservicesprovider.h" #include namespace Ui { class CAircraftModelFilterBar; } @@ -29,8 +28,7 @@ namespace BlackGui */ class BLACKGUI_EXPORT CAircraftModelFilterBar : public CFilterWidget, - public BlackGui::Models::IModelFilterProvider, - public BlackMisc::Network::CWebDataServicesAware + public BlackGui::Models::IModelFilterProvider { Q_OBJECT @@ -44,9 +42,6 @@ namespace BlackGui //! \copydoc Models::IModelFilterProvider::createModelFilter virtual std::unique_ptr> createModelFilter() const override; - //! Set the provider - virtual void setProvider(BlackMisc::Network::IWebDataServicesProvider *webDataReaderProvider) override; - public slots: //! \copydoc CFilterWidget::onRowCountChanged virtual void onRowCountChanged(int count, bool withFilter) override; diff --git a/src/blackgui/filters/aircraftmodelfilterdialog.cpp b/src/blackgui/filters/aircraftmodelfilterdialog.cpp index 56e800f60..b64500ffc 100644 --- a/src/blackgui/filters/aircraftmodelfilterdialog.cpp +++ b/src/blackgui/filters/aircraftmodelfilterdialog.cpp @@ -34,10 +34,5 @@ namespace BlackGui { return ui->filter_Models->createModelFilter(); } - - void CAircraftModelFilterDialog::setProvider(IWebDataServicesProvider *webDataReaderProvider) - { - this->ui->filter_Models->setProvider(webDataReaderProvider); - } } // namespace } // namespace diff --git a/src/blackgui/filters/aircraftmodelfilterdialog.h b/src/blackgui/filters/aircraftmodelfilterdialog.h index 1f4de9e87..2f4e0b800 100644 --- a/src/blackgui/filters/aircraftmodelfilterdialog.h +++ b/src/blackgui/filters/aircraftmodelfilterdialog.h @@ -15,7 +15,6 @@ #include "blackgui/blackguiexport.h" #include "filterdialog.h" #include "blackgui/models/aircraftmodelfilter.h" -#include "blackmisc/network/webdataservicesprovider.h" #include #include @@ -42,9 +41,6 @@ namespace BlackGui //! \copydoc Models::IModelFilterProvider::createModelFilter virtual std::unique_ptr> createModelFilter() const override; - //! Set the provider - void setProvider(BlackMisc::Network::IWebDataServicesProvider *webDataReaderProvider); - private: QScopedPointer ui; }; diff --git a/src/blackgui/filters/airlineicaofilterbar.cpp b/src/blackgui/filters/airlineicaofilterbar.cpp index d37975d3b..2b44ef520 100644 --- a/src/blackgui/filters/airlineicaofilterbar.cpp +++ b/src/blackgui/filters/airlineicaofilterbar.cpp @@ -51,11 +51,6 @@ namespace BlackGui )); } - void CAirlineIcaoFilterBar::setProvider(Network::IWebDataServicesProvider *webDataReaderProvider) - { - this->ui->country_Selector->setProvider(webDataReaderProvider); - } - void CAirlineIcaoFilterBar::filter(const CAirlineIcaoCode &icao) { bool filter = false; diff --git a/src/blackgui/filters/airlineicaofilterbar.h b/src/blackgui/filters/airlineicaofilterbar.h index 1ad49ae9b..e74517aa8 100644 --- a/src/blackgui/filters/airlineicaofilterbar.h +++ b/src/blackgui/filters/airlineicaofilterbar.h @@ -15,7 +15,6 @@ #include "blackguiexport.h" #include "blackgui/filters/filterwidget.h" #include "blackgui/models/airlineicaofilter.h" -#include "blackmisc/network/webdataservicesprovider.h" #include #include @@ -30,8 +29,7 @@ namespace BlackGui */ class BLACKGUI_EXPORT CAirlineIcaoFilterBar : public CFilterWidget, - public BlackGui::Models::IModelFilterProvider, - public BlackMisc::Network::CWebDataServicesAware + public BlackGui::Models::IModelFilterProvider { Q_OBJECT @@ -45,9 +43,6 @@ namespace BlackGui //! \copydoc Models::IModelFilterProvider::createModelFilter virtual std::unique_ptr> createModelFilter() const override; - //! \copydoc BlackMisc::Network::CWebDataServicesAware::setProvider - virtual void setProvider(BlackMisc::Network::IWebDataServicesProvider *webDataReaderProvider) override; - //! Filter default values by ICAO code void filter(const BlackMisc::Aviation::CAirlineIcaoCode &icao); diff --git a/src/blackgui/filters/countryfilterbar.cpp b/src/blackgui/filters/countryfilterbar.cpp index f6b07e327..4ad57c006 100644 --- a/src/blackgui/filters/countryfilterbar.cpp +++ b/src/blackgui/filters/countryfilterbar.cpp @@ -48,11 +48,6 @@ namespace BlackGui )); } - void CCountryFilterBar::setProvider(IWebDataServicesProvider *webDataReaderProvider) - { - Q_UNUSED(webDataReaderProvider); - } - void CCountryFilterBar::onRowCountChanged(int count, bool withFilter) { this->ui->filter_Buttons->onRowCountChanged(count, withFilter); diff --git a/src/blackgui/filters/countryfilterbar.h b/src/blackgui/filters/countryfilterbar.h index dcec23180..354dbf288 100644 --- a/src/blackgui/filters/countryfilterbar.h +++ b/src/blackgui/filters/countryfilterbar.h @@ -15,7 +15,6 @@ #include "blackguiexport.h" #include "blackgui/filters/filterwidget.h" #include "blackgui/models/countryfilter.h" -#include "blackmisc/network/webdataservicesprovider.h" #include namespace Ui { class CCountryFilterBar; } @@ -29,8 +28,7 @@ namespace BlackGui */ class BLACKGUI_EXPORT CCountryFilterBar : public CFilterWidget, - public BlackGui::Models::IModelFilterProvider, - public BlackMisc::Network::CWebDataServicesAware + public BlackGui::Models::IModelFilterProvider { public: //! Constructor @@ -42,9 +40,6 @@ namespace BlackGui //! \copydoc Models::IModelFilterProvider::createModelFilter virtual std::unique_ptr> createModelFilter() const override; - //! \copydoc BlackMisc::Network::CWebDataServicesAware::setProvider - virtual void setProvider(BlackMisc::Network::IWebDataServicesProvider *webDataReaderProvider) override; - public slots: //! \copydoc CFilterWidget::onRowCountChanged virtual void onRowCountChanged(int count, bool withFilter) override; diff --git a/src/blackgui/filters/liveryfilterbar.cpp b/src/blackgui/filters/liveryfilterbar.cpp index 12fa7092c..f39ea9aa4 100644 --- a/src/blackgui/filters/liveryfilterbar.cpp +++ b/src/blackgui/filters/liveryfilterbar.cpp @@ -62,11 +62,6 @@ namespace BlackGui )); } - void CLiveryFilterBar::setProvider(BlackMisc::Network::IWebDataServicesProvider *webDataReaderProvider) - { - Q_UNUSED(webDataReaderProvider); - } - void CLiveryFilterBar::filter(const CLivery &livery) { if (livery.hasCombinedCode()) diff --git a/src/blackgui/filters/liveryfilterbar.h b/src/blackgui/filters/liveryfilterbar.h index cc8975825..f50a4b0bb 100644 --- a/src/blackgui/filters/liveryfilterbar.h +++ b/src/blackgui/filters/liveryfilterbar.h @@ -15,7 +15,6 @@ #include "blackguiexport.h" #include "blackgui/filters/filterwidget.h" #include "blackgui/models/liveryfilter.h" -#include "blackmisc/network/webdataservicesprovider.h" #include namespace Ui { class CLiveryFilterBar; } @@ -29,8 +28,7 @@ namespace BlackGui */ class BLACKGUI_EXPORT CLiveryFilterBar : public CFilterWidget, - public BlackGui::Models::IModelFilterProvider, - public BlackMisc::Network::CWebDataServicesAware + public BlackGui::Models::IModelFilterProvider { Q_OBJECT @@ -44,9 +42,6 @@ namespace BlackGui //! \copydoc Models::IModelFilterProvider::createModelFilter virtual std::unique_ptr> createModelFilter() const override; - //! \copydoc BlackMisc::Network::CWebDataServicesAware::setProvider - virtual void setProvider(BlackMisc::Network::IWebDataServicesProvider *webDataReaderProvider) override; - //! Filter by livery as default values void filter(const BlackMisc::Aviation::CLivery &livery); diff --git a/src/blackmisc/network/webdataservicesprovider.cpp b/src/blackmisc/network/webdataservicesprovider.cpp deleted file mode 100644 index 727ab82b6..000000000 --- a/src/blackmisc/network/webdataservicesprovider.cpp +++ /dev/null @@ -1,359 +0,0 @@ -/* Copyright (C) 2015 - * swift project Community / Contributors - * - * This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level - * directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project, - * including this file, may be copied, modified, propagated, or distributed except according to the terms - * contained in the LICENSE file. - */ - -#include "webdataservicesprovider.h" - -using namespace BlackMisc; -using namespace BlackMisc::Network; -using namespace BlackMisc::Simulation; -using namespace BlackMisc::Aviation; -using namespace BlackMisc::Weather; - -namespace BlackMisc -{ - namespace Network - { - CWebDataServicesAware::~CWebDataServicesAware() - { - this->m_swiftConnections.disconnectAll(); - } - - CServerList CWebDataServicesAware::getVatsimFsdServers() const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return CServerList(); } - return this->m_webDataReaderProvider->getVatsimFsdServers(); - } - - CServerList CWebDataServicesAware::getVatsimVoiceServers() const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return CServerList(); } - return this->m_webDataReaderProvider->getVatsimFsdServers(); - } - - CUserList CWebDataServicesAware::getUsersForCallsign(const CCallsign &callsign) const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return CUserList(); } - return this->m_webDataReaderProvider->getUsersForCallsign(callsign); - } - - CAtcStationList CWebDataServicesAware::getAtcStationsForCallsign(const CCallsign &callsign) const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return CAtcStationList(); } - return this->m_webDataReaderProvider->getAtcStationsForCallsign(callsign); - } - - CVoiceCapabilities CWebDataServicesAware::getVoiceCapabilityForCallsign(const CCallsign &callsign) const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return CVoiceCapabilities(); } - return this->m_webDataReaderProvider->getVoiceCapabilityForCallsign(callsign); - } - - CDistributorList CWebDataServicesAware::getDistributors() const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return CDistributorList(); } - return this->m_webDataReaderProvider->getDistributors(); - } - - CDistributor CWebDataServicesAware::smartDistributorSelector(const CDistributor &distributor) const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return CDistributor(); } - return this->m_webDataReaderProvider->smartDistributorSelector(distributor); - } - - int CWebDataServicesAware::getDistributorsCount() const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return 0; } - return this->m_webDataReaderProvider->getDistributorsCount(); - } - - CLiveryList CWebDataServicesAware::getLiveries() const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return CLiveryList(); } - return this->m_webDataReaderProvider->getLiveries(); - } - - int CWebDataServicesAware::getLiveriesCount() const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return 0; } - return this->m_webDataReaderProvider->getLiveriesCount(); - } - - CLivery CWebDataServicesAware::getLiveryForCombinedCode(const QString &combinedCode) const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return CLivery(); } - return this->m_webDataReaderProvider->getLiveryForCombinedCode(combinedCode); - } - - CLivery CWebDataServicesAware::getStdLiveryForAirlineCode(const CAirlineIcaoCode &icao) const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return CLivery(); } - return this->m_webDataReaderProvider->getStdLiveryForAirlineCode(icao); - } - - CLivery CWebDataServicesAware::smartLiverySelector(const CLivery &livery) const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return CLivery(); } - return this->m_webDataReaderProvider->smartLiverySelector(livery); - } - - CAircraftModelList CWebDataServicesAware::getModels() const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return CAircraftModelList(); } - return this->m_webDataReaderProvider->getModels(); - } - - int CWebDataServicesAware::getModelsCount() const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return 0; } - return this->m_webDataReaderProvider->getModelsCount(); - } - - QList CWebDataServicesAware::getModelDbKeys() const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return QList(); } - return this->m_webDataReaderProvider->getModelDbKeys(); - } - - QStringList CWebDataServicesAware::getModelStrings() const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return QStringList(); } - return this->m_webDataReaderProvider->getModelStrings(); - } - - CAircraftModel CWebDataServicesAware::getModelForModelString(const QString &modelString) const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return CAircraftModel(); } - return this->m_webDataReaderProvider->getModelForModelString(modelString); - } - - CAircraftModelList CWebDataServicesAware::getModelsForAircraftDesignatorAndLiveryCombinedCode(const QString &aircraftDesignator, const QString &combinedCode) const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return CAircraftModelList(); } - return this->m_webDataReaderProvider->getModelsForAircraftDesignatorAndLiveryCombinedCode(aircraftDesignator, combinedCode); - } - - CAircraftIcaoCodeList CWebDataServicesAware::getAircraftIcaoCodes() const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return CAircraftIcaoCodeList(); } - return this->m_webDataReaderProvider->getAircraftIcaoCodes(); - } - - int CWebDataServicesAware::getAircraftIcaoCodesCount() const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return 0; } - return this->m_webDataReaderProvider->getAircraftIcaoCodesCount(); - } - - CAircraftIcaoCode CWebDataServicesAware::getAircraftIcaoCodeForDesignator(const QString &designator) const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return CAircraftIcaoCode(); } - return this->m_webDataReaderProvider->getAircraftIcaoCodeForDesignator(designator); - } - - CAircraftIcaoCode CWebDataServicesAware::getAircraftIcaoCodeForDbKey(int id) const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "missing provider"); - if (!hasProvider()) { return CAircraftIcaoCode(); } - return this->m_webDataReaderProvider->getAircraftIcaoCodeForDbKey(id); - } - - CAircraftIcaoCode CWebDataServicesAware::smartAircraftIcaoSelector(const CAircraftIcaoCode &icao) const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return CAircraftIcaoCode(); } - return this->m_webDataReaderProvider->smartAircraftIcaoSelector(icao); - } - - CAirlineIcaoCodeList CWebDataServicesAware::getAirlineIcaoCodes() const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - return this->m_webDataReaderProvider->getAirlineIcaoCodes(); - } - - int CWebDataServicesAware::getAirlineIcaoCodesCount() const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return 0; } - return this->m_webDataReaderProvider->getAirlineIcaoCodesCount(); - } - - CAirlineIcaoCodeList CWebDataServicesAware::getAirlineIcaoCodesForDesignator(const QString &designator) const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return CAirlineIcaoCodeList(); } - return this->m_webDataReaderProvider->getAirlineIcaoCodeForDesignator(designator); - } - - CAirlineIcaoCode CWebDataServicesAware::smartAirlineIcaoSelector(const CAirlineIcaoCode &code) const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return CAirlineIcaoCode(); } - return this->m_webDataReaderProvider->smartAirlineIcaoSelector(code); - } - - CAirlineIcaoCode CWebDataServicesAware::getAirlineIcaoCodeForDbKey(int id) const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return CAirlineIcaoCode(); } - return this->m_webDataReaderProvider->getAirlineIcaoCodeForDbKey(id); - } - - CCountryList CWebDataServicesAware::getCountries() const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return CCountryList(); } - return this->m_webDataReaderProvider->getCountries(); - } - - int CWebDataServicesAware::getCountriesCount() const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return 0; } - return this->m_webDataReaderProvider->getCountriesCount(); - } - - CCountry CWebDataServicesAware::getCountryForName(const QString &name) const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return CCountry(); } - return this->m_webDataReaderProvider->getCountryForName(name); - } - - CMetarSet CWebDataServicesAware::getMetars() const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return CMetarSet(); } - return this->m_webDataReaderProvider->getMetars(); - } - - Weather::CMetar CWebDataServicesAware::getMetarForAirport(const CAirportIcaoCode &icao) const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return CMetar(); } - return this->m_webDataReaderProvider->getMetarForAirport(icao); - } - - int CWebDataServicesAware::getMetarsCount() const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return 0; } - return this->m_webDataReaderProvider->getMetarsCount(); - } - - CCountry CWebDataServicesAware::getCountryForIsoCode(const QString &iso) const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return CCountry(); } - return this->m_webDataReaderProvider->getCountryForIsoCode(iso); - } - - void CWebDataServicesAware::updateWithVatsimDataFileData(CSimulatedAircraft &aircraftToBeUdpated) const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return; } - return this->m_webDataReaderProvider->updateWithVatsimDataFileData(aircraftToBeUdpated); - } - - CStatusMessageList CWebDataServicesAware::asyncPublishModels(const CAircraftModelList &models) const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return CStatusMessageList(); } - return this->m_webDataReaderProvider->asyncPublishModels(models); - } - - void CWebDataServicesAware::setProvider(IWebDataServicesProvider *webDataReaderProvider) - { - Q_ASSERT_X(webDataReaderProvider, Q_FUNC_INFO, "missing provider"); - this->m_swiftConnections.disconnectAll(); - m_webDataReaderProvider = webDataReaderProvider; - } - - bool CWebDataServicesAware::hasProvider() const - { - return m_webDataReaderProvider ? true : false; - } - - void CWebDataServicesAware::gracefulShutdown() - { - this->m_swiftConnections.disconnectAll(); - this->m_webDataReaderProvider = nullptr; - } - - void CWebDataServicesAware::connectDataReadSignal(QObject *receiver, std::function dataRead) - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return; } - if (receiver) - { - this->m_swiftConnections.append(this->m_webDataReaderProvider->connectDataReadSignal(receiver, dataRead)); - } - } - - void CWebDataServicesAware::connectDataPublishSignal(QObject *receiver, std::function dataPublished) - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return; } - if (receiver) - { - this->m_swiftConnections.append(this->m_webDataReaderProvider->connectDataPublishSignal(receiver, dataPublished)); - } - } - - CEntityFlags::Entity CWebDataServicesAware::triggerRead(CEntityFlags::Entity whatToRead, const QDateTime &newerThan) - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return CEntityFlags::NoEntity; } - return this->m_webDataReaderProvider->triggerRead(whatToRead, newerThan); - } - - bool CWebDataServicesAware::canConnectSwiftDb() const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return false; } - return this->m_webDataReaderProvider->canConnectSwiftDb(); - } - - bool CWebDataServicesAware::writeDbDataToDisk(const QString &dir) const - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return false; } - return this->m_webDataReaderProvider->writeDbDataToDisk(dir); - } - - bool CWebDataServicesAware::readDbDataFromDisk(const QString &dir, bool inBackround) - { - Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider"); - if (!hasProvider()) { return false; } - return this->m_webDataReaderProvider->readDbDataFromDisk(dir, inBackround); - } - - } // namespace -} // namespace diff --git a/src/blackmisc/network/webdataservicesprovider.h b/src/blackmisc/network/webdataservicesprovider.h deleted file mode 100644 index fcd868b4b..000000000 --- a/src/blackmisc/network/webdataservicesprovider.h +++ /dev/null @@ -1,401 +0,0 @@ -/* Copyright (C) 2015 - * swift project Community / Contributors - * - * This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level - * directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project, - * including this file, may be copied, modified, propagated, or distributed except according to the terms - * contained in the LICENSE file. - */ - -//! \file - -#ifndef BLACKMISC_NETWORK_WEBDATASERVICESPROVIDER_H -#define BLACKMISC_NETWORK_WEBDATASERVICESPROVIDER_H - -#include "blackmisc/blackmiscexport.h" -#include "blackmisc/aviation/aircrafticaocodelist.h" -#include "blackmisc/aviation/airlineicaocodelist.h" -#include "blackmisc/aviation/liverylist.h" -#include "blackmisc/aviation/atcstationlist.h" -#include "blackmisc/network/entityflags.h" -#include "blackmisc/network/serverlist.h" -#include "blackmisc/network/userlist.h" -#include "blackmisc/network/voicecapabilities.h" -#include "blackmisc/simulation/aircraftmodellist.h" -#include "blackmisc/simulation/distributorlist.h" -#include "blackmisc/simulation/simulatedaircraft.h" -#include "blackmisc/weather/metarset.h" -#include "blackmisc/countrylist.h" -#include "blackmisc/connectionguard.h" - -#include - -namespace BlackMisc -{ - namespace Network - { - //! Direct thread safe in memory access to objects read via web services - //! \note Can not be derived from QObject (as for the signals), as this would create multiple - //! inheritance. Hence Q_DECLARE_INTERFACE is used. - //! \ingroup webdatareaderprovider - class BLACKMISC_EXPORT IWebDataServicesProvider - { - public: - //! Destructor - virtual ~IWebDataServicesProvider() {} - - //! FSD servers - //! \threadsafe - virtual BlackMisc::Network::CServerList getVatsimFsdServers() const = 0; - - //! Voice servers - //! \threadsafe - virtual BlackMisc::Network::CServerList getVatsimVoiceServers() const = 0; - - //! Users by callsign - //! \threadsafe - virtual BlackMisc::Network::CUserList getUsersForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const = 0; - - //! ATC stations by callsign - //! \threadsafe - virtual BlackMisc::Aviation::CAtcStationList getAtcStationsForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const = 0; - - //! Voice capabilities for given callsign - //! \threadsafe - virtual BlackMisc::Network::CVoiceCapabilities getVoiceCapabilityForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const = 0; - - //! Update with web data - //! \threadsafe - virtual void updateWithVatsimDataFileData(BlackMisc::Simulation::CSimulatedAircraft &aircraftToBeUdpated) const = 0; - - //! Distributors - //! \threadsafe - virtual BlackMisc::Simulation::CDistributorList getDistributors() const = 0; - - //! Distributors count - //! \threadsafe - virtual int getDistributorsCount() const = 0; - - //! Use distributor object to select the best complete distributor from DB - //! \threadsafe - virtual BlackMisc::Simulation::CDistributor smartDistributorSelector(const BlackMisc::Simulation::CDistributor &distributor) const = 0; - - //! Liveries - //! \threadsafe - virtual BlackMisc::Aviation::CLiveryList getLiveries() const = 0; - - //! Liveries count - //! \threadsafe - virtual int getLiveriesCount() const = 0; - - //! Livery for its combined code - //! \threadsafe - virtual BlackMisc::Aviation::CLivery getLiveryForCombinedCode(const QString &combinedCode) const = 0; - - //! Standard livery for airline code - //! \threadsafe - virtual BlackMisc::Aviation::CLivery getStdLiveryForAirlineCode(const BlackMisc::Aviation::CAirlineIcaoCode &icao) const = 0; - - //! Livery for id - //! \threadsafe - virtual BlackMisc::Aviation::CLivery getLiveryForDbKey(int id) const = 0; - - //! Use a livery as template and select the best complete livery from DB for it - //! \threadsafe - virtual BlackMisc::Aviation::CLivery smartLiverySelector(const BlackMisc::Aviation::CLivery &livery) const = 0; - - //! Models - //! \threadsafe - virtual BlackMisc::Simulation::CAircraftModelList getModels() const = 0; - - //! Models count - //! \threadsafe - virtual int getModelsCount() const = 0; - - //! Model keys - //! \threadsafe - virtual QList getModelDbKeys() const = 0; - - //! Model strings - //! \threadsafe - virtual QStringList getModelStrings() const = 0; - - //! Models for combined code and aircraft designator - //! \threadsafe - virtual BlackMisc::Simulation::CAircraftModelList getModelsForAircraftDesignatorAndLiveryCombinedCode(const QString &aircraftDesignator, const QString &combinedCode) const = 0; - - //! Model for key if any - //! \threadsafe - virtual BlackMisc::Simulation::CAircraftModel getModelForModelString(const QString &modelKey) const = 0; - - //! Aircraft ICAO codes - //! \threadsafe - virtual BlackMisc::Aviation::CAircraftIcaoCodeList getAircraftIcaoCodes() const = 0; - - //! Aircraft ICAO codes count - //! \threadsafe - virtual int getAircraftIcaoCodesCount() const = 0; - - //! ICAO code for designator - //! \threadsafe - virtual BlackMisc::Aviation::CAircraftIcaoCode getAircraftIcaoCodeForDesignator(const QString &designator) const = 0; - - //! ICAO code for id - //! \threadsafe - virtual BlackMisc::Aviation::CAircraftIcaoCode getAircraftIcaoCodeForDbKey(int id) const = 0; - - //! Use an ICAO object to select the best complete ICAO object from DB for it - //! \threadsafe - virtual BlackMisc::Aviation::CAircraftIcaoCode smartAircraftIcaoSelector(const BlackMisc::Aviation::CAircraftIcaoCode &icao) const = 0; - - //! Airline ICAO codes - //! \threadsafe - virtual BlackMisc::Aviation::CAirlineIcaoCodeList getAirlineIcaoCodes() const = 0; - - //! Airline ICAO codes count - //! \threadsafe - virtual int getAirlineIcaoCodesCount() const = 0; - - //! ICAO code for designator - //! \threadsafe - virtual BlackMisc::Aviation::CAirlineIcaoCodeList getAirlineIcaoCodeForDesignator(const QString &designator) const = 0; - - //! ICAO code for id - //! \threadsafe - virtual BlackMisc::Aviation::CAirlineIcaoCode getAirlineIcaoCodeForDbKey(int id) const = 0; - - //! Smart airline selector - //! \threadsafe - virtual Aviation::CAirlineIcaoCode smartAirlineIcaoSelector(const BlackMisc::Aviation::CAirlineIcaoCode &code) const = 0; - - //! Countries - //! \threadsafe - virtual BlackMisc::CCountryList getCountries() const = 0; - - //! Country count - //! \threadsafe - virtual int getCountriesCount() const = 0; - - //! Country by ISO code (GB, US...) - //! \threadsafe - virtual BlackMisc::CCountry getCountryForIsoCode(const QString &iso) const = 0; - - //! Country by name (France, China ..) - //! \threadsafe - virtual BlackMisc::CCountry getCountryForName(const QString &name) const = 0; - - //! Get METARs - //! \threadsafe - virtual BlackMisc::Weather::CMetarSet getMetars() const = 0; - - //! Get METAR for airport - //! \threadsafe - virtual BlackMisc::Weather::CMetar getMetarForAirport(const BlackMisc::Aviation::CAirportIcaoCode &icao) const = 0; - - //! Get METARs count - //! \threadsafe - virtual int getMetarsCount() const = 0; - - //! Publish models to database - virtual BlackMisc::CStatusMessageList asyncPublishModels(const BlackMisc::Simulation::CAircraftModelList &models) const = 0; - - //! Relay signals for read swift data - //! Connect signals to slot receiver. As the interface is no QObject, slots can not be connected directly. - //! In order to disconnect a list of connections is provided, which have to be disconnected manually. - //! \note receiver is required for connection type - virtual QList connectDataReadSignal( - QObject *receiver, - std::function dataRead) = 0; - - //! Relay signals for published swift data - //! Connect signals to slot receiver. As the interface is no QObject, slots can not be connected directly. - //! In order to disconnect a list of connections is provided, which have to be disconnected manually. - //! \note receiver is required for connection type - virtual QList connectDataPublishSignal( - QObject *receiver, - std::function dataPublished) = 0; - - //! Trigger read of new data - virtual BlackMisc::Network::CEntityFlags::Entity triggerRead(BlackMisc::Network::CEntityFlags::Entity whatToRead, const QDateTime &dateTime = QDateTime()) = 0; - - //! Can connect to swift DB? - virtual bool canConnectSwiftDb() const = 0; - - //! Write data to disk (mainly for testing scenarios) - virtual bool writeDbDataToDisk(const QString &dir) const = 0; - - //! Load DB data from disk (mainly for testing scenarios) - virtual bool readDbDataFromDisk(const QString &dir, bool inBackground) = 0; - }; - - //! Class which can be directly used to access an \sa IWebDataReaderProvider object - class BLACKMISC_EXPORT CWebDataServicesAware - { - public: - //! Destructor - ~CWebDataServicesAware(); - - public: - //! \copydoc IWebDataServicesProvider::getMetarForAirport - BlackMisc::Weather::CMetar getMetarForAirport(const BlackMisc::Aviation::CAirportIcaoCode &icao) const; - - protected: - //! Constructor - CWebDataServicesAware(IWebDataServicesProvider *webDataReaderProvider = nullptr) : m_webDataReaderProvider(webDataReaderProvider) { } - - //! \copydoc IWebDataServicesProvider::getVatsimFsdServers - BlackMisc::Network::CServerList getVatsimFsdServers() const; - - //! \copydoc IWebDataServicesProvider::getVatsimVoiceServers - BlackMisc::Network::CServerList getVatsimVoiceServers() const; - - //! \copydoc IWebDataServicesProvider::getUsersForCallsign - BlackMisc::Network::CUserList getUsersForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const; - - //! \copydoc IWebDataServicesProvider::getAtcStationsForCallsign - BlackMisc::Aviation::CAtcStationList getAtcStationsForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const; - - //! \copydoc IWebDataServicesProvider::getVoiceCapabilityForCallsign - BlackMisc::Network::CVoiceCapabilities getVoiceCapabilityForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const; - - //! \copydoc IWebDataServicesProvider::getDistributors - BlackMisc::Simulation::CDistributorList getDistributors() const; - - //! \copydoc IWebDataServicesProvider::smartDistributorSelector - BlackMisc::Simulation::CDistributor smartDistributorSelector(const BlackMisc::Simulation::CDistributor &distributor) const; - - //! \copydoc IWebDataServicesProvider::getDistributorsCount - int getDistributorsCount() const; - - //! \copydoc IWebDataServicesProvider::getLiveries - BlackMisc::Aviation::CLiveryList getLiveries() const; - - //! \copydoc IWebDataServicesProvider::getLiveries - int getLiveriesCount() const; - - //! \copydoc IWebDataServicesProvider::getLiveryForCombinedCode - BlackMisc::Aviation::CLivery getLiveryForCombinedCode(const QString &combinedCode) const; - - //! \copydoc IWebDataServicesProvider::getStdLiveryForAirlineCode - BlackMisc::Aviation::CLivery getStdLiveryForAirlineCode(const BlackMisc::Aviation::CAirlineIcaoCode &icao) const; - - //! \copydoc IWebDataServicesProvider::smartLiverySelector - BlackMisc::Aviation::CLivery smartLiverySelector(const Aviation::CLivery &livery) const; - - //! \copydoc IWebDataServicesProvider::getModels - BlackMisc::Simulation::CAircraftModelList getModels() const; - - //! \copydoc IWebDataServicesProvider::getModelsCount - int getModelsCount() const; - - //! \copydoc IWebDataServicesProvider::getModelDbKeys - QList getModelDbKeys() const; - - //! \copydoc IWebDataServicesProvider::getModelStrings - QStringList getModelStrings() const; - - //! \copydoc IWebDataServicesProvider::getModelsForAircraftDesignatorAndLiveryCombinedCode - BlackMisc::Simulation::CAircraftModelList getModelsForAircraftDesignatorAndLiveryCombinedCode(const QString &aircraftDesignator, const QString &combinedCode) const; - - //! \copydoc IWebDataServicesProvider::getModelForModelString - BlackMisc::Simulation::CAircraftModel getModelForModelString(const QString &modelString) const; - - //! \copydoc IWebDataServicesProvider::getAircraftIcaoCodes - BlackMisc::Aviation::CAircraftIcaoCodeList getAircraftIcaoCodes() const; - - //! \copydoc IWebDataServicesProvider::getAircraftIcaoCodesCount - int getAircraftIcaoCodesCount() const; - - //! \copydoc IWebDataServicesProvider::getAircraftIcaoCodeForDesignator - BlackMisc::Aviation::CAircraftIcaoCode getAircraftIcaoCodeForDesignator(const QString &designator) const; - - //! \copydoc IWebDataServicesProvider::getAircraftIcaoCodeForDbKey - BlackMisc::Aviation::CAircraftIcaoCode getAircraftIcaoCodeForDbKey(int id) const; - - //! \copydoc IWebDataServicesProvider::getAirlineIcaoCodes - BlackMisc::Aviation::CAirlineIcaoCodeList getAirlineIcaoCodes() const; - - //! \copydoc IWebDataServicesProvider::getAirlineIcaoCodesCount - int getAirlineIcaoCodesCount() const; - - //! \copydoc IWebDataServicesProvider::getAirlineIcaoCodeForDesignator - Aviation::CAirlineIcaoCodeList getAirlineIcaoCodesForDesignator(const QString &designator) const; - - //! \copydoc IWebDataServicesProvider::smartAirlineIcaoSelector - Aviation::CAirlineIcaoCode smartAirlineIcaoSelector(const BlackMisc::Aviation::CAirlineIcaoCode &code) const; - - //! \copydoc IWebDataServicesProvider::getAirlineIcaoCodeForDbKey - BlackMisc::Aviation::CAirlineIcaoCode getAirlineIcaoCodeForDbKey(int id) const; - - //! \copydoc IWebDataServicesProvider::smartAircraftIcaoSelector - BlackMisc::Aviation::CAircraftIcaoCode smartAircraftIcaoSelector(const BlackMisc::Aviation::CAircraftIcaoCode &icao) const; - - //! \copydoc IWebDataServicesProvider::getCountries - BlackMisc::CCountryList getCountries() const; - - //! \copydoc IWebDataServicesProvider::getCountriesCount - int getCountriesCount() const; - - //! \copydoc IWebDataServicesProvider::getCountryForIsoCode - BlackMisc::CCountry getCountryForIsoCode(const QString &iso) const; - - //! \copydoc IWebDataServicesProvider::getCountryForName - BlackMisc::CCountry getCountryForName(const QString &name) const; - - //! \copydoc IWebDataServicesProvider::getMetars - BlackMisc::Weather::CMetarSet getMetars() const; - - //! \copydoc IWebDataServicesProvider::getMetarsCount - int getMetarsCount() const; - - //! \copydoc IWebDataServicesProvider::updateWithVatsimDataFileData - void updateWithVatsimDataFileData(BlackMisc::Simulation::CSimulatedAircraft &aircraftToBeUdpated) const; - - //! \copydoc IWebDataServicesProvider::asyncPublishModels - BlackMisc::CStatusMessageList asyncPublishModels(const BlackMisc::Simulation::CAircraftModelList &models) const; - - //! Set the provider - virtual void setProvider(IWebDataServicesProvider *webDataReaderProvider); - - //! Is provider avialable? - bool hasProvider() const; - - //! Called when provider should no longer be used - void gracefulShutdown(); - - //! \copydoc IWebDataServicesProvider::connectDataReadSignal - void connectDataReadSignal( - QObject *receiver, - std::function dataRead); - - //! \copydoc IWebDataServicesProvider::connectDataPublishSignal - virtual void connectDataPublishSignal( - QObject *receiver, - std::function dataPublished); - - //! \copydoc IWebDataServicesProvider::triggerRead - BlackMisc::Network::CEntityFlags::Entity triggerRead(BlackMisc::Network::CEntityFlags::Entity whatToRead, const QDateTime &newerThan); - - //! \copydoc IWebDataServicesProvider::canConnectSwiftDb - bool canConnectSwiftDb() const; - - //! \copydoc IWebDataServicesProvider::writeDbDataToDisk - bool writeDbDataToDisk(const QString &dir) const; - - //! \copydoc IWebDataServicesProvider::readDbDataFromDisk - bool readDbDataFromDisk(const QString &dir, bool inBackround); - - private: - IWebDataServicesProvider *m_webDataReaderProvider = nullptr; //!< access to object - BlackMisc::CConnectionGuard m_swiftConnections; //!< signal connection with swift - - //! Disconnect all signals - void disconnectSignals(); - }; - - } // namespace -} // namespace - -Q_DECLARE_INTERFACE(BlackMisc::Network::IWebDataServicesProvider, "BlackMisc::Network::IWebDataServicesProvider") - -#endif // guard diff --git a/src/swiftdata/swiftdata.cpp b/src/swiftdata/swiftdata.cpp index 751304f1f..88170e891 100644 --- a/src/swiftdata/swiftdata.cpp +++ b/src/swiftdata/swiftdata.cpp @@ -81,7 +81,6 @@ void CSwiftData::init() this->initStyleSheet(); this->initLogDisplay(); connect(&CStyleSheetUtility::instance(), &CStyleSheetUtility::styleSheetsChanged, this, &CSwiftData::ps_onStyleSheetsChanged); - this->initReaders(); this->initMenu(); } @@ -97,14 +96,6 @@ void CSwiftData::initLogDisplay() logHandler->subscribe(this, &CSwiftData::ps_appendLogMessage); } -void CSwiftData::initReaders() -{ - Q_ASSERT_X(sApp->getWebDataServices(), Q_FUNC_INFO, "Missing reader"); - this->ui->comp_MainInfoArea->setProvider(sApp->getWebDataServices()); - this->ui->comp_InfoBar->setProvider(sApp->getWebDataServices()); - // web data will be read automatically when setup is syncronized -} - void CSwiftData::initMenu() { // menu diff --git a/src/swiftdata/swiftdata.h b/src/swiftdata/swiftdata.h index b6fd8fd7a..50cbbedc3 100644 --- a/src/swiftdata/swiftdata.h +++ b/src/swiftdata/swiftdata.h @@ -62,7 +62,6 @@ private: void init(); void initLogDisplay(); void initStyleSheet(); - void initReaders(); void initMenu(); void initDynamicMenus(); void performGracefulShutdown();