From 4aef58564eb4770649856080a32ac5f57d0b04d1 Mon Sep 17 00:00:00 2001 From: Mathew Sutcliffe Date: Tue, 19 Aug 2014 18:36:57 +0100 Subject: [PATCH] refs #283 Added ISimulator::getInstalledModels method, with stub implementations --- src/blackcore/simulator.h | 7 ++- src/blackmisc/nwaircraftmodellist.cpp | 50 +++++++++++++++++++ src/blackmisc/nwaircraftmodellist.h | 49 ++++++++++++++++++ src/plugins/simulator/fs9/simulator_fs9.h | 4 ++ src/plugins/simulator/fsx/simulator_fsx.h | 4 ++ .../simulator/xplane/simulator_xplane.cpp | 6 +++ .../simulator/xplane/simulator_xplane.h | 3 ++ 7 files changed, 121 insertions(+), 2 deletions(-) create mode 100644 src/blackmisc/nwaircraftmodellist.cpp create mode 100644 src/blackmisc/nwaircraftmodellist.h diff --git a/src/blackcore/simulator.h b/src/blackcore/simulator.h index 18ad920a7..9049714ba 100644 --- a/src/blackcore/simulator.h +++ b/src/blackcore/simulator.h @@ -10,7 +10,7 @@ #include "blackmisc/statusmessagelist.h" #include "blackmisc/avaircraft.h" #include "blackmisc/avairportlist.h" -#include "blackmisc/nwaircraftmodel.h" +#include "blackmisc/nwaircraftmodellist.h" #include "blackmisc/nwtextmessage.h" #include @@ -82,9 +82,12 @@ namespace BlackCore //! Display a text message virtual void displayTextMessage(const BlackMisc::Network::CTextMessage &message) const = 0; - //! Aircraft Model + //! Own aircraft Model virtual BlackMisc::Network::CAircraftModel getAircraftModel() const = 0; + //! Aircraft models for available remote aircraft + virtual BlackMisc::Network::CAircraftModelList getInstalledModels() const = 0; + //! Airports in range virtual BlackMisc::Aviation::CAirportList getAirportsInRange() const = 0; diff --git a/src/blackmisc/nwaircraftmodellist.cpp b/src/blackmisc/nwaircraftmodellist.cpp new file mode 100644 index 000000000..2aed1f268 --- /dev/null +++ b/src/blackmisc/nwaircraftmodellist.cpp @@ -0,0 +1,50 @@ +/* Copyright (C) 2013 VATSIM Community / authors + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "nwaircraftmodellist.h" +#include "predicates.h" + +using namespace BlackMisc::Network; +using namespace BlackMisc::Aviation; + +namespace BlackMisc +{ + namespace Network + { + /* + * Empty constructor + */ + CAircraftModelList::CAircraftModelList() { } + + /* + * Construct from base class object + */ + CAircraftModelList::CAircraftModelList(const CSequence &other) : + CSequence(other) + { } + + CAircraftModelList CAircraftModelList::findByModelString(const QString modelString, Qt::CaseSensitivity sensitivity) const + { + return this->findBy([ = ](const CAircraftModel &model) + { + return model.matchesModelString(modelString, sensitivity); + }); + } + + /* + * Register metadata + */ + void CAircraftModelList::registerMetadata() + { + qRegisterMetaType>(); + qDBusRegisterMetaType>(); + qRegisterMetaType>(); + qDBusRegisterMetaType>(); + qRegisterMetaType(); + qDBusRegisterMetaType(); + } + + } // namespace +} // namespace diff --git a/src/blackmisc/nwaircraftmodellist.h b/src/blackmisc/nwaircraftmodellist.h new file mode 100644 index 000000000..0a16a4602 --- /dev/null +++ b/src/blackmisc/nwaircraftmodellist.h @@ -0,0 +1,49 @@ +/* Copyright (C) 2014 VATSIM Community / authors + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +//! \file + +#ifndef BLACKMISC_AIRCRAFTMODELLIST_H +#define BLACKMISC_AIRCRAFTMODELLIST_H + +#include "nwaircraftmodel.h" +#include "collection.h" +#include "sequence.h" + +namespace BlackMisc +{ + namespace Network + { + /*! + * Value object encapsulating a list of aircraft models + */ + class CAircraftModelList : public CSequence + { + public: + //! Empty constructor. + CAircraftModelList(); + + //! Construct from a base class object. + CAircraftModelList(const CSequence &other); + + //! QVariant, required for DBus QVariant lists + virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); } + + //! Find by model string + CAircraftModelList findByModelString(const QString modelString, Qt::CaseSensitivity sensitivity) const; + + //! Register metadata + static void registerMetadata(); + + }; + + } //namespace +} // namespace + +Q_DECLARE_METATYPE(BlackMisc::Network::CAircraftModelList) +Q_DECLARE_METATYPE(BlackMisc::CCollection) +Q_DECLARE_METATYPE(BlackMisc::CSequence) + +#endif //guard diff --git a/src/plugins/simulator/fs9/simulator_fs9.h b/src/plugins/simulator/fs9/simulator_fs9.h index 96345c2e9..c08c15207 100644 --- a/src/plugins/simulator/fs9/simulator_fs9.h +++ b/src/plugins/simulator/fs9/simulator_fs9.h @@ -99,6 +99,10 @@ namespace BlackSimPlugin //! \copydoc ISimulator::getAircraftModel() virtual BlackMisc::Network::CAircraftModel getAircraftModel() const override { return m_aircraftModel; } + //! \copydoc BlackCore::ISimulator::getInstalledModels + //! \todo + virtual BlackMisc::Network::CAircraftModelList getInstalledModels() const override { return {}; } + //! Airports in range virtual BlackMisc::Aviation::CAirportList getAirportsInRange() const override; diff --git a/src/plugins/simulator/fsx/simulator_fsx.h b/src/plugins/simulator/fsx/simulator_fsx.h index 20f568ce0..38b36e08f 100644 --- a/src/plugins/simulator/fsx/simulator_fsx.h +++ b/src/plugins/simulator/fsx/simulator_fsx.h @@ -133,6 +133,10 @@ namespace BlackSimPlugin //! \copydoc ISimulator::getAircraftModel() virtual BlackMisc::Network::CAircraftModel getAircraftModel() const override { return m_aircraftModel; } + //! \copydoc BlackCore::ISimulator::getInstalledModels + //! \todo + virtual BlackMisc::Network::CAircraftModelList getInstalledModels() const override { return {}; } + //! \copydoc ISimulator::getAirportsInRange virtual BlackMisc::Aviation::CAirportList getAirportsInRange() const override; diff --git a/src/plugins/simulator/xplane/simulator_xplane.cpp b/src/plugins/simulator/xplane/simulator_xplane.cpp index e7dd2b3fb..392ce1eca 100644 --- a/src/plugins/simulator/xplane/simulator_xplane.cpp +++ b/src/plugins/simulator/xplane/simulator_xplane.cpp @@ -217,6 +217,12 @@ namespace BlackSimPlugin return { m_xplaneData.aircraftModelPath, true }; } + BlackMisc::Network::CAircraftModelList CSimulatorXPlane::getInstalledModels() const + { + // TODO + return {}; + } + void CSimulatorXPlane::ps_setAirportsInRange(const QStringList &icaos, const QStringList &names, const BlackMisc::CSequence &lats, const BlackMisc::CSequence &lons, const BlackMisc::CSequence &alts) { qDebug() << alts; diff --git a/src/plugins/simulator/xplane/simulator_xplane.h b/src/plugins/simulator/xplane/simulator_xplane.h index 69773cf8a..0db4a8727 100644 --- a/src/plugins/simulator/xplane/simulator_xplane.h +++ b/src/plugins/simulator/xplane/simulator_xplane.h @@ -77,6 +77,9 @@ namespace BlackSimPlugin //! \copydoc BlackCore::ISimulator::getAircraftModel virtual BlackMisc::Network::CAircraftModel getAircraftModel() const override; + //! \copydoc BlackCore::ISimulator::getInstalledModels + virtual BlackMisc::Network::CAircraftModelList getInstalledModels() const override; + //! Airports in range virtual BlackMisc::Aviation::CAirportList getAirportsInRange() const override;