diff --git a/src/blackgui/components/infobarstatuscomponent.cpp b/src/blackgui/components/infobarstatuscomponent.cpp index f1c8090d8..dd04c1742 100644 --- a/src/blackgui/components/infobarstatuscomponent.cpp +++ b/src/blackgui/components/infobarstatuscomponent.cpp @@ -7,6 +7,7 @@ */ #include "blackgui/components/infobarstatuscomponent.h" +#include "blackgui/components/transpondermodecomponent.h" #include "blackgui/guiapplication.h" #include "blackgui/led.h" #include "blackgui/guiutility.h" @@ -49,7 +50,8 @@ namespace BlackGui this->adjustTextSize(); ui->lbl_Audio->setContextMenuPolicy(Qt::CustomContextMenu); - connect(ui->lbl_Audio, &QLabel::customContextMenuRequested, this, &CInfoBarStatusComponent::onCustomAudioContextMenuRequested); + connect(ui->lbl_Audio, &QLabel::customContextMenuRequested, this, &CInfoBarStatusComponent::onCustomAudioContextMenuRequested); + connect(ui->comp_XpdrMode, &CTransponderModeComponent::changed, this, &CInfoBarStatusComponent::transponderModeChanged); Q_ASSERT_X(sGui, Q_FUNC_INFO, "Need sGui"); if (sGui->getIContextSimulator()) diff --git a/src/blackgui/components/infobarstatuscomponent.h b/src/blackgui/components/infobarstatuscomponent.h index d3a28e98d..909d651d6 100644 --- a/src/blackgui/components/infobarstatuscomponent.h +++ b/src/blackgui/components/infobarstatuscomponent.h @@ -48,14 +48,18 @@ namespace BlackGui //! Set the spacing void setSpacing(int spacing); + signals: + //! Mode changed + void transponderModeChanged(); + protected: //! \copydoc QWidget::resizeEvent virtual void resizeEvent(QResizeEvent *event) override; private: QScopedPointer ui; - BlackCore::CActionBind m_actionPtt { "/Voice/Activate push-to-talk", BlackMisc::CIcons::radio16(), this, &CInfoBarStatusComponent::onPttChanged }; - BlackMisc::CDigestSignal m_dsResize { this, &CInfoBarStatusComponent::adjustTextSize, 1000, 25 }; + BlackCore::CActionBind m_actionPtt { "/Voice/Activate push-to-talk", BlackMisc::CIcons::radio16(), this, &CInfoBarStatusComponent::onPttChanged }; + BlackMisc::CDigestSignal m_dsResize { this, &CInfoBarStatusComponent::adjustTextSize, 1000, 50 }; //! Init the LEDs void initLeds(); diff --git a/src/blackgui/components/infobarstatuscomponent.ui b/src/blackgui/components/infobarstatuscomponent.ui index 8584cef1a..f7df09f5a 100644 --- a/src/blackgui/components/infobarstatuscomponent.ui +++ b/src/blackgui/components/infobarstatuscomponent.ui @@ -2,6 +2,14 @@ CInfoBarStatusComponent + + + 0 + 0 + 201 + 20 + + 0 @@ -153,19 +161,6 @@ - - - - Qt::Horizontal - - - - 40 - 20 - - - - diff --git a/src/blackgui/components/transpondermodecomponent.cpp b/src/blackgui/components/transpondermodecomponent.cpp index c22fd75a7..2e441ec0a 100644 --- a/src/blackgui/components/transpondermodecomponent.cpp +++ b/src/blackgui/components/transpondermodecomponent.cpp @@ -57,6 +57,8 @@ namespace BlackGui this->setProperty("xpdrmode", m_transponder.getTransponderMode()); this->setProperty("xpdrmodeshort", m_transponder.getModeAsShortString()); + ui->tb_TransponderMode->setProperty("xpdrmode", m_transponder.getTransponderMode()); + ui->tb_TransponderMode->setProperty("xpdrmodeshort", m_transponder.getModeAsShortString()); this->setToolTip(m_transponder.toQString()); } @@ -75,6 +77,7 @@ namespace BlackGui if (m_transponder == aircraft.getTransponder()) { return; } m_transponder = aircraft.getTransponder(); this->init(); + emit this->changed(); } } // ns } // ns diff --git a/src/blackgui/components/transpondermodecomponent.h b/src/blackgui/components/transpondermodecomponent.h index 60281f216..d1ce30189 100644 --- a/src/blackgui/components/transpondermodecomponent.h +++ b/src/blackgui/components/transpondermodecomponent.h @@ -36,6 +36,10 @@ namespace BlackGui //! Dtor virtual ~CTransponderModeComponent() override; + signals: + //! value has been changed + void changed(); + private: QScopedPointer ui; BlackMisc::Aviation::CTransponder m_transponder; diff --git a/src/blackgui/dockwidgetinfobar.h b/src/blackgui/dockwidgetinfobar.h index 248223a19..369442e22 100644 --- a/src/blackgui/dockwidgetinfobar.h +++ b/src/blackgui/dockwidgetinfobar.h @@ -31,6 +31,9 @@ namespace BlackGui //! Constructor explicit CDockWidgetInfoBar(QWidget *parent = nullptr); + //! Force an reload + void reloadStyleSheet() { this->onStyleSheetsChanged(); } + protected: //! Contribute to menu virtual void addToContextMenu(QMenu *contextMenu) const override; diff --git a/src/blackgui/share/qss/infobar.qss b/src/blackgui/share/qss/infobar.qss index 4bc868738..8d5abcebb 100644 --- a/src/blackgui/share/qss/infobar.qss +++ b/src/blackgui/share/qss/infobar.qss @@ -18,6 +18,21 @@ BlackGui--Components--CTransponderModeComponent { min-height: 2em; } +QToolButton[xpdrmodeshort="I"] { + background-color: yellow; + color: black; +} + +QToolButton[xpdrmodeshort="C"] { + background-color: green; + color: white; +} + +QToolButton[xpdrmodeshort="S"] { + background-color: blue; + color: yellow; +} + BlackGui--Components--CInfoBarStatusComponent { padding-left: 1.0em; padding-right: 1.0em; diff --git a/src/swiftguistandard/swiftguistd.ui b/src/swiftguistandard/swiftguistd.ui index 5d701399c..d89bdab37 100644 --- a/src/swiftguistandard/swiftguistd.ui +++ b/src/swiftguistandard/swiftguistd.ui @@ -328,7 +328,7 @@ 0 - + diff --git a/src/swiftguistandard/swiftguistdinit.cpp b/src/swiftguistandard/swiftguistdinit.cpp index b7ba98893..899506300 100644 --- a/src/swiftguistandard/swiftguistdinit.cpp +++ b/src/swiftguistandard/swiftguistdinit.cpp @@ -156,6 +156,7 @@ void SwiftGuiStd::init() // info ui->comp_MainInfoArea->getLogComponent()->appendPlainTextToConsole(sGui->swiftVersionString()); ui->comp_MainInfoArea->getLogComponent()->appendPlainTextToConsole(CBuildConfig::compiledWithInfo()); + connect(ui->comp_InfoBarStatus, &CInfoBarStatusComponent::transponderModeChanged, ui->dw_InfoBarStatus, &CDockWidgetInfoBar::reloadStyleSheet, Qt::QueuedConnection); // Show kill button ui->fr_CentralFrameInside->showKillButton(true);