Request own aircraft info upon connecting to XSwiftBus

Summary:
Ref T83
Also removed an unused parameter of the "own aircraft changed" signal of XSwiftBus.

Reviewers: #swift_developers, rwinklmeier

Reviewed By: #swift_developers, rwinklmeier

Subscribers: jenkins

Tags: #swift_pilot_client

Maniphest Tasks: T83

Differential Revision: https://dev.swift-project.org/D63
This commit is contained in:
Mathew Sutcliffe
2017-11-23 22:15:41 +00:00
parent 3969245a55
commit c5a3db49b0
6 changed files with 64 additions and 10 deletions

View File

@@ -237,6 +237,8 @@ namespace BlackSimPlugin
if (m_service->isValid() && m_traffic->isValid() && m_weather->isValid() && m_traffic->initialize())
{
ps_emitOwnAircraftModelChanged(m_service->getAircraftModelPath(), m_service->getAircraftModelFilename(), m_service->getAircraftLivery(),
m_service->getAircraftIcaoCode(), m_service->getAircraftModelString(), m_service->getAircraftName(), m_service->getAircraftDescription());
connect(m_service, &CXSwiftBusServiceProxy::aircraftModelChanged, this, &CSimulatorXPlane::ps_emitOwnAircraftModelChanged);
connect(m_service, &CXSwiftBusServiceProxy::airportsInRangeUpdated, this, &CSimulatorXPlane::ps_setAirportsInRange);
m_service->updateAirportsInRange();
@@ -285,11 +287,9 @@ namespace BlackSimPlugin
emitSimulatorCombinedStatus();
}
void CSimulatorXPlane::ps_emitOwnAircraftModelChanged(const QString &path, const QString &filename, const QString &livery, const QString &icao,
const QString &modelString, const QString &name, const QString &distributor, const QString &description)
void CSimulatorXPlane::ps_emitOwnAircraftModelChanged(const QString &path, const QString &filename, const QString &livery,
const QString &icao, const QString &modelString, const QString &name, const QString &description)
{
Q_UNUSED(distributor);
CAircraftModel model(modelString, CAircraftModel::TypeOwnSimulatorModel, CSimulatorInfo::XPLANE, name, description, icao);
if (!livery.isEmpty()) { model.setModelString(model.getModelString() + " " + livery); }
model.setFileName(path + "/" + filename);

View File

@@ -135,7 +135,7 @@ namespace BlackSimPlugin
void ps_serviceUnregistered();
void ps_setAirportsInRange(const QStringList &icaoCodes, const QStringList &names, const BlackMisc::CSequence<double> &lats, const BlackMisc::CSequence<double> &lons, const BlackMisc::CSequence<double> &alts);
void ps_emitOwnAircraftModelChanged(const QString &path, const QString &filename, const QString &livery, const QString &icao,
const QString &modelString, const QString &name, const QString &distributor, const QString &description);
const QString &modelString, const QString &name, const QString &description);
void ps_fastTimerTimeout();
void ps_slowTimerTimeout();

View File

@@ -81,6 +81,24 @@ namespace BlackSimPlugin
m_dbusInterface->callDBusAsync(QLatin1String("getAircraftDescription"), setterCallback(o_description));
}
QString CXSwiftBusServiceProxy::getAircraftModelString() const
{
return m_dbusInterface->callDBusRet<QString>(QLatin1String("getAircraftModelString"));
}
void CXSwiftBusServiceProxy::getAircraftModelStringAsync(QString *o_modelString)
{
m_dbusInterface->callDBusAsync(QLatin1String("getAircraftModelString"), setterCallback(o_modelString));
}
QString CXSwiftBusServiceProxy::getAircraftName() const
{
return m_dbusInterface->callDBusRet<QString>(QLatin1String("getAircraftName"));
}
void CXSwiftBusServiceProxy::getAircraftNameAsync(QString *o_name)
{
m_dbusInterface->callDBusAsync(QLatin1String("getAircraftName"), setterCallback(o_name));
}
int CXSwiftBusServiceProxy::getXPlaneVersionMajor() const
{
return m_dbusInterface->callDBusRet<int>(QLatin1String("getXPlaneVersionMajor"));

View File

@@ -89,8 +89,8 @@ namespace BlackSimPlugin
void asyncMethodError(QDBusError error);
//! \copydoc XSwiftBus::CService::aircraftModelChanged
void aircraftModelChanged(const QString &path, const QString &filename, const QString &livery, const QString &icao,
const QString &modelString, const QString &name, const QString &distributor, const QString &description);
void aircraftModelChanged(const QString &path, const QString &filename, const QString &livery,
const QString &icao, const QString &modelString, const QString &name, const QString &description);
//! \copydoc XSwiftBus::CService::airportsInRangeUpdated
void airportsInRangeUpdated(const QStringList &icaoCodes, const QStringList &names, const QList<double> &lats, const QList<double> &lons, const QList<double> &alts);
@@ -132,6 +132,18 @@ namespace BlackSimPlugin
void getAircraftDescriptionAsync(QString *o_description);
//! @}
//! \copydoc XSwiftBus::CService::getAircraftModelString
//! @{
QString getAircraftModelString() const;
void getAircraftModelStringAsync(QString *o_modelString);
//! @}
//! \copydoc XSwiftBus::CService::getAircraftName
//! @{
QString getAircraftName() const;
void getAircraftNameAsync(QString *o_name);
//! @}
//! \copydoc XSwiftBus::CService::getXPlaneVersionMajor
//! @{
int getXPlaneVersionMajor() const;

View File

@@ -34,7 +34,7 @@ namespace XSwiftBus
XPLMGetNthAircraftModel(XPLM_USER_AIRCRAFT, filename, path);
const auto model = BlackMisc::Simulation::XPlane::CAircraftModelLoaderXPlane::extractAcfProperties(path, QFileInfo(path));
emit aircraftModelChanged(path, filename, getAircraftLivery(), getAircraftIcaoCode(),
model.getModelString(), model.getName(), model.getDistributor().getDescription(), getAircraftDescription());
model.getModelString(), model.getName(), getAircraftDescription());
}
void CService::addTextMessage(const QString &text, double red, double green, double blue)
@@ -77,6 +77,24 @@ namespace XSwiftBus
return filename;
}
QString CService::getAircraftModelString() const
{
char filename[256];
char path[512];
XPLMGetNthAircraftModel(XPLM_USER_AIRCRAFT, filename, path);
const auto model = BlackMisc::Simulation::XPlane::CAircraftModelLoaderXPlane::extractAcfProperties(path, QFileInfo(path));
return model.getModelString();
}
QString CService::getAircraftName() const
{
char filename[256];
char path[512];
XPLMGetNthAircraftModel(XPLM_USER_AIRCRAFT, filename, path);
const auto model = BlackMisc::Simulation::XPlane::CAircraftModelLoaderXPlane::extractAcfProperties(path, QFileInfo(path));
return model.getName();
}
int CService::getXPlaneVersionMajor() const
{
int version;

View File

@@ -70,8 +70,8 @@ namespace XSwiftBus
signals:
//! Emitted when the model or livery changes.
void aircraftModelChanged(const QString &path, const QString &filename, const QString &livery, const QString &icao,
const QString &modelString, const QString &name, const QString &distributor, const QString &description);
void aircraftModelChanged(const QString &path, const QString &filename, const QString &livery,
const QString &icao, const QString &modelString, const QString &name, const QString &description);
//! Airports in range updated.
void airportsInRangeUpdated(const QStringList &icaoCodes, const QStringList &names, const QDoubleList &lats, const QDoubleList &lons, const QDoubleList &alts);
@@ -89,6 +89,12 @@ namespace XSwiftBus
//! Get base filename of current aircraft model
QString getAircraftModelFilename() const;
//! Get canonical swift model string of current aircraft model
QString getAircraftModelString() const;
//! Get name of current aircraft model
QString getAircraftName() const;
//! Get path to current aircraft livery
QString getAircraftLivery() const { return m_liveryPath.get().c_str(); }