mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-31 04:25:35 +08:00
Ref T301, transponder LED UI component fixes/style, allow to set mode via setter
This commit is contained in:
@@ -35,17 +35,18 @@ namespace BlackGui
|
||||
m_ledIdent(new CLedWidget(false, CLedWidget::Yellow, CLedWidget::Black, CLedWidget::Rounded, "ident", "", LedWidth, this))
|
||||
{
|
||||
this->init(true);
|
||||
connect(sGui->getIContextOwnAircraft(), &IContextOwnAircraft::changedAircraftCockpit, this, &CCockpitTransponderModeLedsComponent::ps_onAircraftCockpitChanged);
|
||||
this->setMode(getOwnTransponder().getTransponderMode());
|
||||
|
||||
Q_ASSERT_X(sGui, Q_FUNC_INFO, "Need sGui");
|
||||
connect(sGui->getIContextOwnAircraft(), &IContextOwnAircraft::changedAircraftCockpit, this, &CCockpitTransponderModeLedsComponent::onAircraftCockpitChanged);
|
||||
}
|
||||
|
||||
void CCockpitTransponderModeLedsComponent::ps_onAircraftCockpitChanged(const CSimulatedAircraft &aircraft, const BlackMisc::CIdentifier &originator)
|
||||
void CCockpitTransponderModeLedsComponent::onAircraftCockpitChanged(const CSimulatedAircraft &aircraft, const BlackMisc::CIdentifier &originator)
|
||||
{
|
||||
if (isMyIdentifier(originator)) { return; }
|
||||
this->setMode(aircraft.getTransponderMode());
|
||||
this->setMode(aircraft.getTransponderMode(), true);
|
||||
}
|
||||
|
||||
void CCockpitTransponderModeLedsComponent::ps_onLedClicked()
|
||||
void CCockpitTransponderModeLedsComponent::onLedClicked()
|
||||
{
|
||||
QWidget *w = qobject_cast<QWidget *>(QObject::sender());
|
||||
if (!w) { return; }
|
||||
@@ -70,10 +71,14 @@ namespace BlackGui
|
||||
CSimulatedAircraft ownAircraft(this->getOwnAircraft());
|
||||
if (ownAircraft.getTransponderMode() == mode) { return; }
|
||||
|
||||
this->setMode(mode);
|
||||
this->setMode(mode, true);
|
||||
CTransponder xpdr = ownAircraft.getTransponder();
|
||||
xpdr.setTransponderMode(mode);
|
||||
sGui->getIContextOwnAircraft()->updateCockpit(ownAircraft.getCom1System(), ownAircraft.getCom2System(), xpdr, identifier());
|
||||
|
||||
if (sGui)
|
||||
{
|
||||
sGui->getIContextOwnAircraft()->updateCockpit(ownAircraft.getCom1System(), ownAircraft.getCom2System(), xpdr, identifier());
|
||||
}
|
||||
}
|
||||
|
||||
void CCockpitTransponderModeLedsComponent::init(bool horizontal)
|
||||
@@ -92,11 +97,12 @@ namespace BlackGui
|
||||
this->setLayout(ledLayout);
|
||||
|
||||
// if context is already available set mode
|
||||
if (sGui->getIContextOwnAircraft()) { this->setMode(getOwnTransponder().getTransponderMode()); }
|
||||
if (sGui && sGui->getIContextOwnAircraft()) { this->setMode(getOwnTransponder().getTransponderMode(), true); }
|
||||
}
|
||||
|
||||
void CCockpitTransponderModeLedsComponent::setMode(BlackMisc::Aviation::CTransponder::TransponderMode mode)
|
||||
void CCockpitTransponderModeLedsComponent::setMode(CTransponder::TransponderMode mode, bool force)
|
||||
{
|
||||
if (!force && m_mode == mode) { return; }
|
||||
m_ledStandby->setOn(false);
|
||||
m_ledModes->setOn(false);
|
||||
m_ledIdent->setOn(false);
|
||||
@@ -126,13 +132,14 @@ namespace BlackGui
|
||||
|
||||
CTransponder CCockpitTransponderModeLedsComponent::getOwnTransponder() const
|
||||
{
|
||||
if (!sGui || sGui->isShuttingDown() || !sGui->getIContextOwnAircraft()) { return CTransponder(); }
|
||||
return sGui->getIContextOwnAircraft()->getOwnAircraft().getTransponder();
|
||||
}
|
||||
|
||||
CSimulatedAircraft CCockpitTransponderModeLedsComponent::getOwnAircraft() const
|
||||
{
|
||||
if (!sGui || sGui->isShuttingDown() || !sGui->getIContextOwnAircraft()) { return CSimulatedAircraft(); }
|
||||
return sGui->getIContextOwnAircraft()->getOwnAircraft();
|
||||
}
|
||||
|
||||
} // namespace
|
||||
} // namespace
|
||||
|
||||
@@ -38,28 +38,28 @@ namespace BlackGui
|
||||
//! Constructor
|
||||
explicit CCockpitTransponderModeLedsComponent(QWidget *parent = nullptr);
|
||||
|
||||
private slots:
|
||||
//! \copydoc IContextOwnAircraft::changedAircraftCockpit
|
||||
void ps_onAircraftCockpitChanged(const BlackMisc::Simulation::CSimulatedAircraft &aircraft, const BlackMisc::CIdentifier &originator);
|
||||
|
||||
//! LED clicked
|
||||
void ps_onLedClicked();
|
||||
//! Set the mode
|
||||
void setMode(BlackMisc::Aviation::CTransponder::TransponderMode mode, bool force = false);
|
||||
|
||||
private:
|
||||
const int LedWidth = 14; //!< LED width
|
||||
static constexpr int LedWidth = 14; //!< LED width
|
||||
|
||||
//! \copydoc IContextOwnAircraft::changedAircraftCockpit
|
||||
void onAircraftCockpitChanged(const BlackMisc::Simulation::CSimulatedAircraft &aircraft, const BlackMisc::CIdentifier &originator);
|
||||
|
||||
//! LED clicked
|
||||
void onLedClicked();
|
||||
|
||||
//! Init either in horizontal or vertical layout
|
||||
void init(bool horizontal);
|
||||
|
||||
//! Set the mode
|
||||
void setMode(BlackMisc::Aviation::CTransponder::TransponderMode mode);
|
||||
|
||||
//! Own Transponder
|
||||
BlackMisc::Aviation::CTransponder getOwnTransponder() const;
|
||||
|
||||
//! Own Aircraft
|
||||
BlackMisc::Simulation::CSimulatedAircraft getOwnAircraft() const;
|
||||
|
||||
BlackMisc::Aviation::CTransponder::TransponderMode m_mode = BlackMisc::Aviation::CTransponder::StateStandby;
|
||||
QScopedPointer<BlackGui::CLedWidget> m_ledStandby;
|
||||
QScopedPointer<BlackGui::CLedWidget> m_ledModes;
|
||||
QScopedPointer<BlackGui::CLedWidget> m_ledIdent;
|
||||
|
||||
Reference in New Issue
Block a user