diff --git a/src/blackcore/modeldatareader.cpp b/src/blackcore/modeldatareader.cpp index b53a1d9cc..e63fdb8ff 100644 --- a/src/blackcore/modeldatareader.cpp +++ b/src/blackcore/modeldatareader.cpp @@ -56,6 +56,13 @@ namespace BlackCore return liveries.findByCombinedCode(combinedCode); } + CLivery CModelDataReader::getStdLiveryForAirlineCode(const CAirlineIcaoCode &icao) const + { + if (!icao.hasValidDesignator()) { return CLivery(); } + CLiveryList liveries(getLiveries()); + return liveries.findStdLiveryByAirlineIcaoDesignator(icao); + } + CLivery CModelDataReader::getLiveryForDbKey(int id) const { if (id < 0) { return CLivery(); } diff --git a/src/blackcore/modeldatareader.h b/src/blackcore/modeldatareader.h index 3c314ea22..7deff4b72 100644 --- a/src/blackcore/modeldatareader.h +++ b/src/blackcore/modeldatareader.h @@ -44,6 +44,10 @@ namespace BlackCore //! \threadsafe BlackMisc::Aviation::CLivery getLiveryForCombinedCode(const QString &combinedCode) const; + //! Get aircraft livery for ICAO code + //! \threadsafe + BlackMisc::Aviation::CLivery getStdLiveryForAirlineCode(const BlackMisc::Aviation::CAirlineIcaoCode &icao) const; + //! Get aircraft livery for id //! \threadsafe BlackMisc::Aviation::CLivery getLiveryForDbKey(int id) const; diff --git a/src/blackcore/webdataservices.cpp b/src/blackcore/webdataservices.cpp index 00f5e57d9..050d8fd7f 100644 --- a/src/blackcore/webdataservices.cpp +++ b/src/blackcore/webdataservices.cpp @@ -255,6 +255,12 @@ namespace BlackCore return CLivery(); } + CLivery CWebDataServices::getStdLiveryForAirlineCode(const CAirlineIcaoCode &icao) const + { + if (m_modelDataReader) { return m_modelDataReader->getStdLiveryForAirlineCode(icao); } + return CLivery(); + } + CLivery CWebDataServices::getLiveryForDbKey(int id) const { if (m_modelDataReader) { return m_modelDataReader->getLiveryForDbKey(id); } diff --git a/src/blackcore/webdataservices.h b/src/blackcore/webdataservices.h index 13fad4653..315883ce9 100644 --- a/src/blackcore/webdataservices.h +++ b/src/blackcore/webdataservices.h @@ -119,6 +119,10 @@ namespace BlackCore //! \ingroup webdatareaderprovider virtual BlackMisc::Aviation::CLivery getLiveryForCombinedCode(const QString &combinedCode) const override; + //! \copydoc BlackMisc::Network::IWebDataServicesProvider::getStdLiveryForAirlineCode + //! \ingroup webdatareaderprovider + virtual BlackMisc::Aviation::CLivery getStdLiveryForAirlineCode(const BlackMisc::Aviation::CAirlineIcaoCode &icao) const override; + //! \copydoc BlackMisc::Network::IWebDataServicesProvider::getLiveryForDbKey //! \ingroup webdatareaderprovider virtual BlackMisc::Aviation::CLivery getLiveryForDbKey(int id) const override; diff --git a/src/blackmisc/aviation/liverylist.cpp b/src/blackmisc/aviation/liverylist.cpp index 228eb505d..f8febed8d 100644 --- a/src/blackmisc/aviation/liverylist.cpp +++ b/src/blackmisc/aviation/liverylist.cpp @@ -11,6 +11,7 @@ #include "blackmisc/predicates.h" using namespace BlackMisc::PhysicalQuantities; +using namespace BlackMisc::Aviation; namespace BlackMisc { @@ -30,7 +31,7 @@ namespace BlackMisc return this->findBy(&CLivery::getAirlineIcaoCodeDesignator, i); } - CLivery CLiveryList::findByAirlineIcaoDesignatorStdLivery(const QString &icao) const + CLivery CLiveryList::findStdLiveryByAirlineIcaoDesignator(const QString &icao) const { QString i(icao.trimmed().toUpper()); if (i.isEmpty()) { return CLivery(); } @@ -42,6 +43,11 @@ namespace BlackMisc }); } + CLivery CLiveryList::findStdLiveryByAirlineIcaoDesignator(const CAirlineIcaoCode &icao) const + { + return this->findStdLiveryByAirlineIcaoDesignator(icao.getDesignator()); + } + CLivery CLiveryList::findByCombinedCode(const QString &combinedCode) const { if (!CLivery::isValidCombinedCode(combinedCode)) { return CLivery(); } @@ -72,7 +78,7 @@ namespace BlackMisc if (liveryPattern.hasValidAirlineDesignator()) { QString icao(liveryPattern.getAirlineIcaoCodeDesignator()); - CLivery l(this->findByAirlineIcaoDesignatorStdLivery(icao)); + CLivery l(this->findStdLiveryByAirlineIcaoDesignator(icao)); if (l.hasCompleteData()) { return l; } } return CLivery(); diff --git a/src/blackmisc/aviation/liverylist.h b/src/blackmisc/aviation/liverylist.h index ef25d3c70..68b19ed60 100644 --- a/src/blackmisc/aviation/liverylist.h +++ b/src/blackmisc/aviation/liverylist.h @@ -40,7 +40,10 @@ namespace BlackMisc CLiveryList findByAirlineIcaoDesignator(const QString &icao) const; //! Find livery by airline - CLivery findByAirlineIcaoDesignatorStdLivery(const QString &icao) const; + CLivery findStdLiveryByAirlineIcaoDesignator(const QString &icao) const; + + //! Find livery by airline + CLivery findStdLiveryByAirlineIcaoDesignator(const CAirlineIcaoCode &icao) const; //! Find livery by combined code CLivery findByCombinedCode(const QString &combinedCode) const; diff --git a/src/blackmisc/network/webdataservicesprovider.cpp b/src/blackmisc/network/webdataservicesprovider.cpp index a66f9b22c..3b09d066d 100644 --- a/src/blackmisc/network/webdataservicesprovider.cpp +++ b/src/blackmisc/network/webdataservicesprovider.cpp @@ -101,6 +101,13 @@ namespace BlackMisc 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"); diff --git a/src/blackmisc/network/webdataservicesprovider.h b/src/blackmisc/network/webdataservicesprovider.h index 234d39ea2..63c71816b 100644 --- a/src/blackmisc/network/webdataservicesprovider.h +++ b/src/blackmisc/network/webdataservicesprovider.h @@ -88,10 +88,14 @@ namespace BlackMisc //! \threadsafe virtual int getLiveriesCount() const = 0; - //! Liveries + //! 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; @@ -252,6 +256,9 @@ namespace BlackMisc //! \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;