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))
{
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

View File

@@ -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;