diff --git a/src/plugins/simulator/xplane/simulatorxplane.cpp b/src/plugins/simulator/xplane/simulatorxplane.cpp index a16a608cb..10f3868e5 100644 --- a/src/plugins/simulator/xplane/simulatorxplane.cpp +++ b/src/plugins/simulator/xplane/simulatorxplane.cpp @@ -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); diff --git a/src/plugins/simulator/xplane/simulatorxplane.h b/src/plugins/simulator/xplane/simulatorxplane.h index c2cf130c6..5597500b6 100644 --- a/src/plugins/simulator/xplane/simulatorxplane.h +++ b/src/plugins/simulator/xplane/simulatorxplane.h @@ -135,7 +135,7 @@ namespace BlackSimPlugin void ps_serviceUnregistered(); void ps_setAirportsInRange(const QStringList &icaoCodes, const QStringList &names, const BlackMisc::CSequence &lats, const BlackMisc::CSequence &lons, const BlackMisc::CSequence &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(); diff --git a/src/plugins/simulator/xplane/xswiftbusserviceproxy.cpp b/src/plugins/simulator/xplane/xswiftbusserviceproxy.cpp index 052b8ad4d..5c635d600 100644 --- a/src/plugins/simulator/xplane/xswiftbusserviceproxy.cpp +++ b/src/plugins/simulator/xplane/xswiftbusserviceproxy.cpp @@ -81,6 +81,24 @@ namespace BlackSimPlugin m_dbusInterface->callDBusAsync(QLatin1String("getAircraftDescription"), setterCallback(o_description)); } + QString CXSwiftBusServiceProxy::getAircraftModelString() const + { + return m_dbusInterface->callDBusRet(QLatin1String("getAircraftModelString")); + } + void CXSwiftBusServiceProxy::getAircraftModelStringAsync(QString *o_modelString) + { + m_dbusInterface->callDBusAsync(QLatin1String("getAircraftModelString"), setterCallback(o_modelString)); + } + + QString CXSwiftBusServiceProxy::getAircraftName() const + { + return m_dbusInterface->callDBusRet(QLatin1String("getAircraftName")); + } + void CXSwiftBusServiceProxy::getAircraftNameAsync(QString *o_name) + { + m_dbusInterface->callDBusAsync(QLatin1String("getAircraftName"), setterCallback(o_name)); + } + int CXSwiftBusServiceProxy::getXPlaneVersionMajor() const { return m_dbusInterface->callDBusRet(QLatin1String("getXPlaneVersionMajor")); diff --git a/src/plugins/simulator/xplane/xswiftbusserviceproxy.h b/src/plugins/simulator/xplane/xswiftbusserviceproxy.h index 20c59be8f..6b78d72d5 100644 --- a/src/plugins/simulator/xplane/xswiftbusserviceproxy.h +++ b/src/plugins/simulator/xplane/xswiftbusserviceproxy.h @@ -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 &lats, const QList &lons, const QList &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; diff --git a/src/xswiftbus/service.cpp b/src/xswiftbus/service.cpp index e374701a2..b89079ba6 100644 --- a/src/xswiftbus/service.cpp +++ b/src/xswiftbus/service.cpp @@ -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; diff --git a/src/xswiftbus/service.h b/src/xswiftbus/service.h index 51698b8eb..8482ea984 100644 --- a/src/xswiftbus/service.h +++ b/src/xswiftbus/service.h @@ -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(); }