refs #435 Read installed models from X-Plane via xbus

This commit is contained in:
Roland Winklmeier
2015-06-15 21:24:47 +02:00
committed by Mathew Sutcliffe
parent d24488d38f
commit 25cdff54f3
6 changed files with 70 additions and 4 deletions

View File

@@ -151,6 +151,23 @@ namespace BlackSimPlugin
}
}
void CSimulatorXPlane::ps_installedModelsUpdated(const QStringList &modelStrings, const QStringList &icaos, const QStringList &airlines, const QStringList &liveries)
{
m_installedModels.clear();
auto modelStringsIt = modelStrings.begin();
auto icaosIt = icaos.begin();
auto airlinesIt = airlines.begin();
auto liveriesIt = liveries.begin();
for (; modelStringsIt != modelStrings.end() && icaosIt != icaos.end() && airlinesIt != airlines.end() && liveriesIt != liveries.end(); ++modelStringsIt, ++icaosIt, ++airlinesIt, ++liveriesIt)
{
using namespace BlackMisc::Simulation;
CAircraftIcaoData icaoData {*icaosIt, *airlinesIt};
icaoData.setLivery(*liveriesIt);
CAircraftModel aircraftModel { *modelStringsIt, CAircraftModel::TypeModelMapping, QString(), icaoData };
m_installedModels.push_back(aircraftModel);
}
}
bool CSimulatorXPlane::isConnected() const
{
return m_service && m_traffic;
@@ -168,7 +185,9 @@ namespace BlackSimPlugin
// FIXME duplication
connect(m_service, &CXBusServiceProxy::aircraftModelChanged, this, &CSimulatorXPlane::ps_emitOwnAircraftModelChanged);
connect(m_service, &CXBusServiceProxy::airportsInRangeUpdated, this, &CSimulatorXPlane::ps_setAirportsInRange);
connect(m_traffic, &CXBusTrafficProxy::installedModelsUpdated, this, &CSimulatorXPlane::ps_installedModelsUpdated);
m_service->updateAirportsInRange();
m_traffic->updateInstalledModels();
m_watcher->setConnection(m_conn);
emitSimulatorCombinedStatus();
return true;
@@ -243,12 +262,10 @@ namespace BlackSimPlugin
Q_UNUSED(message);
}
BlackMisc::Simulation::CAircraftModelList CSimulatorXPlane::getInstalledModels() const
CAircraftModelList CSimulatorXPlane::getInstalledModels() const
{
Q_ASSERT(isConnected());
//! \todo XP driver, function not available
CLogMessage(this).error("Function not avialable");
return {};
return m_installedModels;
}
void CSimulatorXPlane::reloadInstalledModels()

View File

@@ -14,6 +14,7 @@
#include "blackcore/simulator_common.h"
#include "blackmisc/simulation/ownaircraftprovider.h"
#include "blackmisc/simulation/aircraftmodellist.h"
#include "blackmisc/pixmap.h"
#include <QDBusConnection>
@@ -129,6 +130,7 @@ namespace BlackSimPlugin
void ps_emitOwnAircraftModelChanged(const QString &path, const QString &filename, const QString &livery, const QString &icao);
void ps_fastTimerTimeout();
void ps_slowTimerTimeout();
void ps_installedModelsUpdated(const QStringList &modelStrings, const QStringList &icaos, const QStringList &airlines, const QStringList &liveries);
private:
QDBusConnection m_conn { "default" };
@@ -138,6 +140,7 @@ namespace BlackSimPlugin
QTimer *m_fastTimer { nullptr };
QTimer *m_slowTimer { nullptr };
BlackMisc::Aviation::CAirportList m_airportsInRange; //!< aiports in range of own aircraft
BlackMisc::Simulation::CAircraftModelList m_installedModels;
//! \todo Add units to members? pitchDeg?, altitudeFt?
struct // data is written by DBus async method callbacks

View File

@@ -64,6 +64,11 @@ namespace BlackSimPlugin
return m_dbusInterface->callDBusRet<bool>(QLatin1String("isDrawingLabels"));
}
void CXBusTrafficProxy::updateInstalledModels() const
{
m_dbusInterface->callDBus(QLatin1String("updateInstalledModels"));
}
void CXBusTrafficProxy::addPlane(const QString &callsign, const QString &aircraftIcao, const QString &airlineIcao, const QString &livery)
{
m_dbusInterface->callDBus(QLatin1String("addPlane"), callsign, aircraftIcao, airlineIcao, livery);

View File

@@ -53,6 +53,10 @@ namespace BlackSimPlugin
void relaySignals();
signals:
//! \copydoc XBus::CTraffic::installedModelsUpdated
void installedModelsUpdated(const QStringList &modelStrings, const QStringList &icaos, const QStringList &airlines, const QStringList &liveries);
public slots:
//! \copydoc XBus::CTraffic::initialize
bool initialize();
@@ -72,6 +76,9 @@ namespace BlackSimPlugin
//! \copydoc XBus::CTraffic::isDrawingLabels
bool isDrawingLabels() const;
//! \copydoc XBus::CTraffic::updateInstalledModels
void updateInstalledModels() const;
//! \copydoc XBus::CTraffic::addPlane
void addPlane(const QString &callsign, const QString &aircraftIcao, const QString &airlineIcao, const QString &livery);