mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-28 11:45:40 +08:00
Ref T342, distance of airport can be recalculated
This commit is contained in:
@@ -155,7 +155,7 @@ namespace BlackCore
|
|||||||
virtual BlackMisc::Simulation::CSimulatorInternals getSimulatorInternals() const = 0;
|
virtual BlackMisc::Simulation::CSimulatorInternals getSimulatorInternals() const = 0;
|
||||||
|
|
||||||
//! Airports in range
|
//! Airports in range
|
||||||
virtual BlackMisc::Aviation::CAirportList getAirportsInRange() const = 0;
|
virtual BlackMisc::Aviation::CAirportList getAirportsInRange(bool recalculateDistance) const = 0;
|
||||||
|
|
||||||
//! Installed models in simulator eco system
|
//! Installed models in simulator eco system
|
||||||
//! \note might be slow since list can be big
|
//! \note might be slow since list can be big
|
||||||
|
|||||||
@@ -73,8 +73,9 @@ namespace BlackCore
|
|||||||
}
|
}
|
||||||
|
|
||||||
//! \copydoc IContextSimulator::getAirportsInRange
|
//! \copydoc IContextSimulator::getAirportsInRange
|
||||||
virtual BlackMisc::Aviation::CAirportList getAirportsInRange() const override
|
virtual BlackMisc::Aviation::CAirportList getAirportsInRange(bool recalculatePosition) const override
|
||||||
{
|
{
|
||||||
|
Q_UNUSED(recalculatePosition);
|
||||||
logEmptyContextWarning(Q_FUNC_INFO);
|
logEmptyContextWarning(Q_FUNC_INFO);
|
||||||
return BlackMisc::Aviation::CAirportList();
|
return BlackMisc::Aviation::CAirportList();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -166,7 +166,7 @@ namespace BlackCore
|
|||||||
return m_simulatorPlugin.second->getSimulatorInternals();
|
return m_simulatorPlugin.second->getSimulatorInternals();
|
||||||
}
|
}
|
||||||
|
|
||||||
CAirportList CContextSimulator::getAirportsInRange() const
|
CAirportList CContextSimulator::getAirportsInRange(bool recalculateDistance) const
|
||||||
{
|
{
|
||||||
if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; }
|
if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; }
|
||||||
// If no ISimulator object is available, return a dummy.
|
// If no ISimulator object is available, return a dummy.
|
||||||
@@ -176,7 +176,7 @@ namespace BlackCore
|
|||||||
}
|
}
|
||||||
|
|
||||||
Q_ASSERT(m_simulatorPlugin.second);
|
Q_ASSERT(m_simulatorPlugin.second);
|
||||||
return m_simulatorPlugin.second->getAirportsInRange();
|
return m_simulatorPlugin.second->getAirportsInRange(recalculateDistance);
|
||||||
}
|
}
|
||||||
|
|
||||||
CAircraftModelList CContextSimulator::getModelSet() const
|
CAircraftModelList CContextSimulator::getModelSet() const
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ namespace BlackCore
|
|||||||
virtual int checkListeners() override;
|
virtual int checkListeners() override;
|
||||||
virtual int getSimulatorStatus() const override;
|
virtual int getSimulatorStatus() const override;
|
||||||
virtual BlackMisc::Simulation::CSimulatorInternals getSimulatorInternals() const override;
|
virtual BlackMisc::Simulation::CSimulatorInternals getSimulatorInternals() const override;
|
||||||
virtual BlackMisc::Aviation::CAirportList getAirportsInRange() const override;
|
virtual BlackMisc::Aviation::CAirportList getAirportsInRange(bool recalculateDistance) const override;
|
||||||
virtual BlackMisc::Simulation::CAircraftModelList getModelSet() const override;
|
virtual BlackMisc::Simulation::CAircraftModelList getModelSet() const override;
|
||||||
virtual BlackMisc::Simulation::CSimulatorInfo getModelSetLoaderSimulator() const override;
|
virtual BlackMisc::Simulation::CSimulatorInfo getModelSetLoaderSimulator() const override;
|
||||||
virtual void setModelSetLoaderSimulator(const BlackMisc::Simulation::CSimulatorInfo &simulator) override;
|
virtual void setModelSetLoaderSimulator(const BlackMisc::Simulation::CSimulatorInfo &simulator) override;
|
||||||
|
|||||||
@@ -101,9 +101,9 @@ namespace BlackCore
|
|||||||
return m_dBusInterface->callDBusRet<int>(QLatin1String("getSimulatorStatus"));
|
return m_dBusInterface->callDBusRet<int>(QLatin1String("getSimulatorStatus"));
|
||||||
}
|
}
|
||||||
|
|
||||||
CAirportList CContextSimulatorProxy::getAirportsInRange() const
|
CAirportList CContextSimulatorProxy::getAirportsInRange(bool recalculatePosition) const
|
||||||
{
|
{
|
||||||
return m_dBusInterface->callDBusRet<BlackMisc::Aviation::CAirportList>(QLatin1String("getAirportsInRange"));
|
return m_dBusInterface->callDBusRet<BlackMisc::Aviation::CAirportList>(QLatin1String("getAirportsInRange"), recalculatePosition);
|
||||||
}
|
}
|
||||||
|
|
||||||
CAircraftModelList CContextSimulatorProxy::getModelSet() const
|
CAircraftModelList CContextSimulatorProxy::getModelSet() const
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ namespace BlackCore
|
|||||||
virtual void stopSimulatorPlugin(const BlackMisc::Simulation::CSimulatorPluginInfo &simulatorInfo) override;
|
virtual void stopSimulatorPlugin(const BlackMisc::Simulation::CSimulatorPluginInfo &simulatorInfo) override;
|
||||||
virtual int checkListeners() override;
|
virtual int checkListeners() override;
|
||||||
virtual int getSimulatorStatus() const override;
|
virtual int getSimulatorStatus() const override;
|
||||||
virtual BlackMisc::Aviation::CAirportList getAirportsInRange() const override;
|
virtual BlackMisc::Aviation::CAirportList getAirportsInRange(bool recalculatePosition) const override;
|
||||||
virtual BlackMisc::Simulation::CAircraftModelList getModelSet() const override;
|
virtual BlackMisc::Simulation::CAircraftModelList getModelSet() const override;
|
||||||
virtual BlackMisc::Simulation::CSimulatorInfo simulatorsWithInitializedModelSet() const override;
|
virtual BlackMisc::Simulation::CSimulatorInfo simulatorsWithInitializedModelSet() const override;
|
||||||
virtual BlackMisc::CStatusMessageList verifyPrerequisites() const override;
|
virtual BlackMisc::CStatusMessageList verifyPrerequisites() const override;
|
||||||
|
|||||||
@@ -796,7 +796,7 @@ namespace BlackCore
|
|||||||
return m_loopbackSituations.value(callsign);
|
return m_loopbackSituations.value(callsign);
|
||||||
}
|
}
|
||||||
|
|
||||||
CAirportList ISimulator::getAirportsInRange() const
|
CAirportList ISimulator::getAirportsInRange(bool recalculateDistance) const
|
||||||
{
|
{
|
||||||
// default implementation
|
// default implementation
|
||||||
if (this->isShuttingDown()) { return CAirportList(); }
|
if (this->isShuttingDown()) { return CAirportList(); }
|
||||||
@@ -805,9 +805,9 @@ namespace BlackCore
|
|||||||
const CAirportList airports = sApp->getWebDataServices()->getAirports();
|
const CAirportList airports = sApp->getWebDataServices()->getAirports();
|
||||||
if (airports.isEmpty()) { return airports; }
|
if (airports.isEmpty()) { return airports; }
|
||||||
const CCoordinateGeodetic ownPosition = this->getOwnAircraftPosition();
|
const CCoordinateGeodetic ownPosition = this->getOwnAircraftPosition();
|
||||||
CAirportList airportInRange = airports.findClosest(maxAirportsInRange(), ownPosition);
|
CAirportList airportsInRange = airports.findClosest(maxAirportsInRange(), ownPosition);
|
||||||
if (m_autoCalcAirportDistance) { airportInRange.calculcateAndUpdateRelativeDistanceAndBearing(ownPosition); }
|
if (recalculateDistance) { airportsInRange.calculcateAndUpdateRelativeDistanceAndBearing(this->getOwnAircraftPosition()); }
|
||||||
return airportInRange;
|
return airportsInRange;
|
||||||
}
|
}
|
||||||
|
|
||||||
CAircraftModel ISimulator::reverseLookupModel(const CAircraftModel &model)
|
CAircraftModel ISimulator::reverseLookupModel(const CAircraftModel &model)
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ namespace BlackCore
|
|||||||
virtual void displayTextMessage(const BlackMisc::Network::CTextMessage &message) const = 0;
|
virtual void displayTextMessage(const BlackMisc::Network::CTextMessage &message) const = 0;
|
||||||
|
|
||||||
//! Airports in range from simulator, or if not available from web service
|
//! Airports in range from simulator, or if not available from web service
|
||||||
virtual BlackMisc::Aviation::CAirportList getAirportsInRange() const;
|
virtual BlackMisc::Aviation::CAirportList getAirportsInRange(bool recalculateDistance) const;
|
||||||
|
|
||||||
//! Set time synchronization between simulator and user's computer time
|
//! Set time synchronization between simulator and user's computer time
|
||||||
//! \remarks not all drivers implement this, e.g. if it is an intrinsic simulator feature
|
//! \remarks not all drivers implement this, e.g. if it is an intrinsic simulator feature
|
||||||
@@ -499,7 +499,6 @@ namespace BlackCore
|
|||||||
static BlackMisc::Simulation::CAircraftModel reverseLookupModel(const BlackMisc::Simulation::CAircraftModel &model);
|
static BlackMisc::Simulation::CAircraftModel reverseLookupModel(const BlackMisc::Simulation::CAircraftModel &model);
|
||||||
|
|
||||||
bool m_pausedSimFreezesInterpolation = false; //!< paused simulator will also pause interpolation (so AI aircraft will hold)
|
bool m_pausedSimFreezesInterpolation = false; //!< paused simulator will also pause interpolation (so AI aircraft will hold)
|
||||||
bool m_autoCalcAirportDistance = true; //!< automatically calculate airport distance and bearing
|
|
||||||
bool m_updateRemoteAircraftInProgress = false; //!< currently updating remote aircraft
|
bool m_updateRemoteAircraftInProgress = false; //!< currently updating remote aircraft
|
||||||
int m_timerId = -1; //!< dispatch timer id
|
int m_timerId = -1; //!< dispatch timer id
|
||||||
int m_statsUpdateAircraftRuns = 0; //!< statistics update count
|
int m_statsUpdateAircraftRuns = 0; //!< statistics update count
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ namespace BlackGui
|
|||||||
const bool counter = ((m_updateCounter % 5) == 0); // less frequent than aircraft
|
const bool counter = ((m_updateCounter % 5) == 0); // less frequent than aircraft
|
||||||
if (this->countAirportsInRangeInView() < 1 || (visible && counter))
|
if (this->countAirportsInRangeInView() < 1 || (visible && counter))
|
||||||
{
|
{
|
||||||
ui->tvp_AirportsInRange->updateContainerMaybeAsync(sGui->getIContextSimulator()->getAirportsInRange());
|
ui->tvp_AirportsInRange->updateContainerMaybeAsync(sGui->getIContextSimulator()->getAirportsInRange(true));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -142,8 +142,8 @@ namespace BlackGui
|
|||||||
{
|
{
|
||||||
Q_UNUSED(count);
|
Q_UNUSED(count);
|
||||||
Q_UNUSED(withFilter);
|
Q_UNUSED(withFilter);
|
||||||
int ac = this->indexOf(ui->tb_AircraftInRange);
|
const int ac = this->indexOf(ui->tb_AircraftInRange);
|
||||||
int ap = this->indexOf(ui->tb_AirportsInRange);
|
const int ap = this->indexOf(ui->tb_AirportsInRange);
|
||||||
QString acs = this->tabBar()->tabText(ac);
|
QString acs = this->tabBar()->tabText(ac);
|
||||||
QString aps = this->tabBar()->tabText(ap);
|
QString aps = this->tabBar()->tabText(ap);
|
||||||
acs = CGuiUtility::replaceTabCountValue(acs, this->countAircraftInView());
|
acs = CGuiUtility::replaceTabCountValue(acs, this->countAircraftInView());
|
||||||
|
|||||||
@@ -118,10 +118,15 @@ namespace BlackSimPlugin
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
CAirportList CSimulatorFsCommon::getAirportsInRange() const
|
CAirportList CSimulatorFsCommon::getAirportsInRange(bool recalculateDistance) const
|
||||||
{
|
{
|
||||||
if (!m_airportsInRangeFromSimulator.isEmpty()) { return m_airportsInRangeFromSimulator; }
|
if (!m_airportsInRangeFromSimulator.isEmpty())
|
||||||
return ISimulator::getAirportsInRange();
|
{
|
||||||
|
CAirportList airports = m_airportsInRangeFromSimulator;
|
||||||
|
if (recalculateDistance) { airports.calculcateAndUpdateRelativeDistanceAndBearing(this->getOwnAircraftPosition()); }
|
||||||
|
return airports;
|
||||||
|
}
|
||||||
|
return ISimulator::getAirportsInRange(recalculateDistance);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSimulatorFsCommon::onSwiftDbAirportsRead()
|
void CSimulatorFsCommon::onSwiftDbAirportsRead()
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ namespace BlackSimPlugin
|
|||||||
virtual bool isTimeSynchronized() const override { return m_simTimeSynced; }
|
virtual bool isTimeSynchronized() const override { return m_simTimeSynced; }
|
||||||
virtual BlackMisc::PhysicalQuantities::CTime getTimeSynchronizationOffset() const override;
|
virtual BlackMisc::PhysicalQuantities::CTime getTimeSynchronizationOffset() const override;
|
||||||
virtual bool setTimeSynchronization(bool enable, const BlackMisc::PhysicalQuantities::CTime &offset) override;
|
virtual bool setTimeSynchronization(bool enable, const BlackMisc::PhysicalQuantities::CTime &offset) override;
|
||||||
virtual BlackMisc::Aviation::CAirportList getAirportsInRange() const override;
|
virtual BlackMisc::Aviation::CAirportList getAirportsInRange(bool recalculateDistance) const override;
|
||||||
// ---------------------- ISimulator ------------------
|
// ---------------------- ISimulator ------------------
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|||||||
@@ -432,9 +432,12 @@ namespace BlackSimPlugin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CAirportList CSimulatorXPlane::getAirportsInRange() const
|
CAirportList CSimulatorXPlane::getAirportsInRange(bool recalculateDistance) const
|
||||||
{
|
{
|
||||||
return m_airportsInRange;
|
if (!recalculateDistance) { return m_airportsInRange; }
|
||||||
|
CAirportList airports(m_airportsInRange);
|
||||||
|
airports.calculcateAndUpdateRelativeDistanceAndBearing(this->getOwnAircraftPosition());
|
||||||
|
return airports;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CSimulatorXPlane::setTimeSynchronization(bool enable, const PhysicalQuantities::CTime &offset)
|
bool CSimulatorXPlane::setTimeSynchronization(bool enable, const PhysicalQuantities::CTime &offset)
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ namespace BlackSimPlugin
|
|||||||
virtual bool updateOwnSimulatorSelcal(const BlackMisc::Aviation::CSelcal &selcal, const BlackMisc::CIdentifier &originator) override;
|
virtual bool updateOwnSimulatorSelcal(const BlackMisc::Aviation::CSelcal &selcal, const BlackMisc::CIdentifier &originator) override;
|
||||||
virtual void displayStatusMessage(const BlackMisc::CStatusMessage &message) const override;
|
virtual void displayStatusMessage(const BlackMisc::CStatusMessage &message) const override;
|
||||||
virtual void displayTextMessage(const BlackMisc::Network::CTextMessage &message) const override;
|
virtual void displayTextMessage(const BlackMisc::Network::CTextMessage &message) const override;
|
||||||
virtual BlackMisc::Aviation::CAirportList getAirportsInRange() const override;
|
virtual BlackMisc::Aviation::CAirportList getAirportsInRange(bool recalculateDistance) const override;
|
||||||
virtual bool setTimeSynchronization(bool enable, const BlackMisc::PhysicalQuantities::CTime &offset) override;
|
virtual bool setTimeSynchronization(bool enable, const BlackMisc::PhysicalQuantities::CTime &offset) override;
|
||||||
virtual BlackMisc::PhysicalQuantities::CTime getTimeSynchronizationOffset() const override { return BlackMisc::PhysicalQuantities::CTime(0, BlackMisc::PhysicalQuantities::CTimeUnit::hrmin()); }
|
virtual BlackMisc::PhysicalQuantities::CTime getTimeSynchronizationOffset() const override { return BlackMisc::PhysicalQuantities::CTime(0, BlackMisc::PhysicalQuantities::CTimeUnit::hrmin()); }
|
||||||
virtual bool isPhysicallyRenderedAircraft(const BlackMisc::Aviation::CCallsign &callsign) const override;
|
virtual bool isPhysicallyRenderedAircraft(const BlackMisc::Aviation::CCallsign &callsign) const override;
|
||||||
|
|||||||
Reference in New Issue
Block a user