mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-21 04:45:31 +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))
|
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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user