feat: Allow to tune STBY frequency from context menu

Fixes #274
This commit is contained in:
Lars Toenning
2025-11-16 23:39:49 +01:00
parent 27a5b3aae8
commit c830b862be
12 changed files with 91 additions and 23 deletions

View File

@@ -135,11 +135,16 @@ namespace swift::core::context
//! Set XPDR mode
virtual bool setTransponderMode(swift::misc::aviation::CTransponder::TransponderMode mode) = 0;
//! Tune in a COM frequency
//! Tune in a COM frequency (active)
virtual bool updateActiveComFrequency(const swift::misc::physical_quantities::CFrequency &frequency,
swift::misc::aviation::CComSystem::ComUnit comUnit,
const swift::misc::CIdentifier &originator) = 0;
//! Tune in a COM frequency (standby)
virtual bool updateStandbyComFrequency(const swift::misc::physical_quantities::CFrequency &frequency,
swift::misc::aviation::CComSystem::ComUnit comUnit,
const swift::misc::CIdentifier &originator) = 0;
//! Set current pilot
virtual bool updateOwnAircraftPilot(const swift::misc::network::CUser &pilot) = 0;

View File

@@ -100,6 +100,18 @@ namespace swift::core::context
return false;
}
//! \copydoc IContextOwnAircraft::updateStandbyComFrequency
bool updateStandbyComFrequency(const swift::misc::physical_quantities::CFrequency &frequency,
swift::misc::aviation::CComSystem::ComUnit comUnit,
const swift::misc::CIdentifier &originator) override
{
Q_UNUSED(frequency);
Q_UNUSED(comUnit);
Q_UNUSED(originator);
logEmptyContextWarning(Q_FUNC_INFO);
return false;
}
//! \copydoc IContextOwnAircraft::updateOwnAircraftPilot
bool updateOwnAircraftPilot(const swift::misc::network::CUser &pilot) override
{

View File

@@ -330,6 +330,26 @@ namespace swift::core::context
return changed;
}
bool CContextOwnAircraft::updateStandbyComFrequency(const CFrequency &frequency, CComSystem::ComUnit unit,
const CIdentifier &originator)
{
if (unit != CComSystem::Com1 && unit != CComSystem::Com2) { return false; }
if (!CComSystem::isValidComFrequency(frequency)) { return false; }
CComSystem com1, com2;
CTransponder xpdr;
{
QReadLocker l(&m_lockAircraft);
com1 = m_ownAircraft.getCom1System();
com2 = m_ownAircraft.getCom2System();
xpdr = m_ownAircraft.getTransponder();
}
if (unit == CComSystem::Com1) { com1.setFrequencyStandby(frequency); }
else { com2.setFrequencyStandby(frequency); }
const bool changed = this->updateCockpit(com1, com2, xpdr, originator);
return changed;
}
bool CContextOwnAircraft::updateOwnAircraftPilot(const CUser &pilot)
{
{

View File

@@ -175,6 +175,11 @@ namespace swift::core
swift::misc::aviation::CComSystem::ComUnit comUnit,
const swift::misc::CIdentifier &originator) override;
//! \copydoc IContextOwnAircraft::updateStandbyComFrequency
bool updateStandbyComFrequency(const swift::misc::physical_quantities::CFrequency &frequency,
swift::misc::aviation::CComSystem::ComUnit comUnit,
const swift::misc::CIdentifier &originator) override;
//! \copydoc IContextOwnAircraft::updateOwnAircraftPilot
bool updateOwnAircraftPilot(const swift::misc::network::CUser &pilot) override;

View File

@@ -111,6 +111,14 @@ namespace swift::core::context
originator);
}
bool CContextOwnAircraftProxy::updateStandbyComFrequency(const physical_quantities::CFrequency &frequency,
swift::misc::aviation::CComSystem::ComUnit comUnit,
const CIdentifier &originator)
{
return m_dBusInterface->callDBusRet<bool>(QLatin1String("updateStandbyComFrequency"), frequency, comUnit,
originator);
}
bool CContextOwnAircraftProxy::updateOwnAircraftPilot(const swift::misc::network::CUser &pilot)
{
return m_dBusInterface->callDBusRet<bool>(QLatin1String("updateOwnAircraftPilot"), pilot);

View File

@@ -89,6 +89,11 @@ namespace swift::core
swift::misc::aviation::CComSystem::ComUnit comUnit,
const swift::misc::CIdentifier &originator) override;
//! \copydoc swift::core::context::IContextOwnAircraft::updateStandbyComFrequency
bool updateStandbyComFrequency(const swift::misc::physical_quantities::CFrequency &frequency,
swift::misc::aviation::CComSystem::ComUnit comUnit,
const swift::misc::CIdentifier &originator) override;
//! \copydoc swift::core::context::IContextOwnAircraft::updateOwnAircraftPilot
bool updateOwnAircraftPilot(const swift::misc::network::CUser &pilot) override;