Ref T301, transponder LED UI component fixes/style, allow to set mode via setter

This commit is contained in:
Klaus Basan
2018-08-12 03:16:21 +02:00
parent 64dc16168c
commit d209164474
2 changed files with 27 additions and 20 deletions

View File

@@ -35,17 +35,18 @@ namespace BlackGui
m_ledIdent(new CLedWidget(false, CLedWidget::Yellow, CLedWidget::Black, CLedWidget::Rounded, "ident", "", LedWidth, this)) m_ledIdent(new CLedWidget(false, CLedWidget::Yellow, CLedWidget::Black, CLedWidget::Rounded, "ident", "", LedWidth, this))
{ {
this->init(true); 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; } 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()); QWidget *w = qobject_cast<QWidget *>(QObject::sender());
if (!w) { return; } if (!w) { return; }
@@ -70,10 +71,14 @@ namespace BlackGui
CSimulatedAircraft ownAircraft(this->getOwnAircraft()); CSimulatedAircraft ownAircraft(this->getOwnAircraft());
if (ownAircraft.getTransponderMode() == mode) { return; } if (ownAircraft.getTransponderMode() == mode) { return; }
this->setMode(mode); this->setMode(mode, true);
CTransponder xpdr = ownAircraft.getTransponder(); CTransponder xpdr = ownAircraft.getTransponder();
xpdr.setTransponderMode(mode); 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) void CCockpitTransponderModeLedsComponent::init(bool horizontal)
@@ -92,11 +97,12 @@ namespace BlackGui
this->setLayout(ledLayout); this->setLayout(ledLayout);
// if context is already available set mode // 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_ledStandby->setOn(false);
m_ledModes->setOn(false); m_ledModes->setOn(false);
m_ledIdent->setOn(false); m_ledIdent->setOn(false);
@@ -126,13 +132,14 @@ namespace BlackGui
CTransponder CCockpitTransponderModeLedsComponent::getOwnTransponder() const CTransponder CCockpitTransponderModeLedsComponent::getOwnTransponder() const
{ {
if (!sGui || sGui->isShuttingDown() || !sGui->getIContextOwnAircraft()) { return CTransponder(); }
return sGui->getIContextOwnAircraft()->getOwnAircraft().getTransponder(); return sGui->getIContextOwnAircraft()->getOwnAircraft().getTransponder();
} }
CSimulatedAircraft CCockpitTransponderModeLedsComponent::getOwnAircraft() const CSimulatedAircraft CCockpitTransponderModeLedsComponent::getOwnAircraft() const
{ {
if (!sGui || sGui->isShuttingDown() || !sGui->getIContextOwnAircraft()) { return CSimulatedAircraft(); }
return sGui->getIContextOwnAircraft()->getOwnAircraft(); return sGui->getIContextOwnAircraft()->getOwnAircraft();
} }
} // namespace } // namespace
} // namespace } // namespace

View File

@@ -38,28 +38,28 @@ namespace BlackGui
//! Constructor //! Constructor
explicit CCockpitTransponderModeLedsComponent(QWidget *parent = nullptr); explicit CCockpitTransponderModeLedsComponent(QWidget *parent = nullptr);
private slots: //! Set the mode
//! \copydoc IContextOwnAircraft::changedAircraftCockpit void setMode(BlackMisc::Aviation::CTransponder::TransponderMode mode, bool force = false);
void ps_onAircraftCockpitChanged(const BlackMisc::Simulation::CSimulatedAircraft &aircraft, const BlackMisc::CIdentifier &originator);
//! LED clicked
void ps_onLedClicked();
private: 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 //! Init either in horizontal or vertical layout
void init(bool horizontal); void init(bool horizontal);
//! Set the mode
void setMode(BlackMisc::Aviation::CTransponder::TransponderMode mode);
//! Own Transponder //! Own Transponder
BlackMisc::Aviation::CTransponder getOwnTransponder() const; BlackMisc::Aviation::CTransponder getOwnTransponder() const;
//! Own Aircraft //! Own Aircraft
BlackMisc::Simulation::CSimulatedAircraft getOwnAircraft() const; BlackMisc::Simulation::CSimulatedAircraft getOwnAircraft() const;
BlackMisc::Aviation::CTransponder::TransponderMode m_mode = BlackMisc::Aviation::CTransponder::StateStandby;
QScopedPointer<BlackGui::CLedWidget> m_ledStandby; QScopedPointer<BlackGui::CLedWidget> m_ledStandby;
QScopedPointer<BlackGui::CLedWidget> m_ledModes; QScopedPointer<BlackGui::CLedWidget> m_ledModes;
QScopedPointer<BlackGui::CLedWidget> m_ledIdent; QScopedPointer<BlackGui::CLedWidget> m_ledIdent;