diff --git a/src/blackgui/components/cockpitcomcomponent.cpp b/src/blackgui/components/cockpitcomcomponent.cpp index ae9b0ea55..58f6851de 100644 --- a/src/blackgui/components/cockpitcomcomponent.cpp +++ b/src/blackgui/components/cockpitcomcomponent.cpp @@ -65,6 +65,8 @@ namespace BlackGui connect(ui->editor_Com, &CCockpitComForm::testSelcal, this, &CCockpitComComponent::testSelcal); connect(ui->editor_Com, &CCockpitComForm::changedCockpitValues, this, &CCockpitComComponent::updateOwnCockpitInContext); connect(ui->editor_Com, &CCockpitComForm::changedSelcal, this, &CCockpitComComponent::updateSelcalInContext); + connect(ui->editor_Com, &CCockpitComForm::requestCom1TextMessage, this, &CCockpitComComponent::requestCom1TextMessage); + connect(ui->editor_Com, &CCockpitComForm::requestCom2TextMessage, this, &CCockpitComComponent::requestCom2TextMessage); // Relay COM form signals connect(ui->editor_Com, &CCockpitComForm::transponderModeChanged, this, &CCockpitComComponent::transponderModeChanged); diff --git a/src/blackgui/components/cockpitcomcomponent.h b/src/blackgui/components/cockpitcomcomponent.h index ee0653511..63eb42969 100644 --- a/src/blackgui/components/cockpitcomcomponent.h +++ b/src/blackgui/components/cockpitcomcomponent.h @@ -59,6 +59,11 @@ namespace BlackGui //! \copydoc BlackGui::Components::CTransponderModeSelector::transponderStateIdentEnded void transponderStateIdentEnded(); + //! Request COM text messages @{ + void requestCom1TextMessage(); + void requestCom2TextMessage(); + //! @} + protected: //! \copydoc QWidget::paintEvent virtual void paintEvent(QPaintEvent *event) override; diff --git a/src/blackgui/components/cockpitcomponent.cpp b/src/blackgui/components/cockpitcomponent.cpp index 6ae3282ef..d35e942c5 100644 --- a/src/blackgui/components/cockpitcomponent.cpp +++ b/src/blackgui/components/cockpitcomponent.cpp @@ -22,13 +22,16 @@ namespace BlackGui namespace Components { CCockpitComponent::CCockpitComponent(QWidget *parent) : - QWidget(parent), + COverlayMessagesFrame(parent), CEnableForDockWidgetInfoArea(), ui(new Ui::CCockpitComponent) { ui->setupUi(this); this->m_minHeightInfoArea = ui->comp_CockpitInfoArea->minimumHeight(); - connect(ui->wip_CockpitComPanelShowHideBar, &BlackGui::CShowHideBar::toggleShowHide, this, &CCockpitComponent::onToggleShowHideDetails); + + connect(ui->wip_CockpitComPanelShowHideBar, &CShowHideBar::toggleShowHide, this, &CCockpitComponent::onToggleShowHideDetails); + connect(ui->comp_CockpitComComponent, &CCockpitComComponent::requestCom1TextMessage, this, &CCockpitComponent::onRequestTextMessageCom1); + connect(ui->comp_CockpitComComponent, &CCockpitComComponent::requestCom2TextMessage, this, &CCockpitComponent::onRequestTextMessageCom2); } CCockpitComponent::~CCockpitComponent() @@ -116,6 +119,25 @@ namespace BlackGui } } + void CCockpitComponent::mouseDoubleClickEvent(QMouseEvent *event) + { + if (event) + { + this->showOverlayInlineTextMessage(TextMessagesAll); + } + COverlayMessagesFrame::mouseDoubleClickEvent(event); + } + + void CCockpitComponent::onRequestTextMessageCom1() + { + this->showOverlayInlineTextMessage(TextMessagesCom1); + } + + void CCockpitComponent::onRequestTextMessageCom2() + { + this->showOverlayInlineTextMessage(TextMessagesCom2); + } + void CCockpitComponent::onToggleFloating(bool floating) { ui->wip_CockpitComPanelShowHideBar->setVisible(floating); diff --git a/src/blackgui/components/cockpitcomponent.h b/src/blackgui/components/cockpitcomponent.h index 3b82b9b5f..d0646cbf1 100644 --- a/src/blackgui/components/cockpitcomponent.h +++ b/src/blackgui/components/cockpitcomponent.h @@ -12,12 +12,13 @@ #ifndef BLACKGUI_COMPONENTS_COCKPITCOMPONENT_H #define BLACKGUI_COMPONENTS_COCKPITCOMPONENT_H -#include "blackgui/blackguiexport.h" #include "blackgui/components/enablefordockwidgetinfoarea.h" +#include "blackgui/overlaymessagesframe.h" +#include "blackgui/blackguiexport.h" + #include #include #include -#include namespace Ui { class CCockpitComponent; } namespace BlackGui @@ -28,7 +29,8 @@ namespace BlackGui { //! Cockpit component: COM unit, show / hide bar, voice rooms class BLACKGUI_EXPORT CCockpitComponent : - public QWidget, + // making a widget overlay and dock widget is semi-optimal but a special case here because of text messages + public COverlayMessagesFrame, public CEnableForDockWidgetInfoArea { Q_OBJECT @@ -53,6 +55,10 @@ namespace BlackGui //! Show the audio UI void showAudio(); + protected: + //! \copydoc QWidget::mouseDoubleClickEvent + virtual void mouseDoubleClickEvent(QMouseEvent *event) override; + private: //! Show or hide cockpit details void onToggleShowHideDetails(bool show); @@ -60,9 +66,14 @@ namespace BlackGui //! Toggle floating void onToggleFloating(bool floating); - // toggle area on show/hide details + //! Toggle area on show/hide details void toggleShowHideDetails(bool show, bool considerCurrentSize); + //! Request text message COM1 @{ + void onRequestTextMessageCom1(); + void onRequestTextMessageCom2(); + //! @} + QScopedPointer ui; QSize m_sizeFloatingShown; //! size when info area is shown QSize m_sizeFloatingHidden; //! size when info area is hidden diff --git a/src/blackgui/editors/cockpitcomform.cpp b/src/blackgui/editors/cockpitcomform.cpp index c480616b7..296619f08 100644 --- a/src/blackgui/editors/cockpitcomform.cpp +++ b/src/blackgui/editors/cockpitcomform.cpp @@ -51,6 +51,8 @@ namespace BlackGui connect(ui->sbp_ComPanelTransponder, &QDoubleSpinBox::editingFinished, this, &CCockpitComForm::onGuiChangedCockpitValues); connect(ui->cbp_ComPanelTransponderMode, &CTransponderModeSelector::transponderModeChanged, this, &CCockpitComForm::onGuiChangedCockpitValues); connect(ui->frp_ComPanelSelcalSelector, &CSelcalCodeSelector::valueChanged, this, &CCockpitComForm::onGuiChangedCockpitValues); + connect(ui->tb_RequestTextMessageCom1, &QToolButton::released, this, &CCockpitComForm::requestCom1TextMessage); + connect(ui->tb_RequestTextMessageCom2, &QToolButton::released, this, &CCockpitComForm::requestCom2TextMessage); ui->led_ComPanelCom1->setShape(CLedWidget::Rounded); ui->led_ComPanelCom2->setShape(CLedWidget::Rounded); diff --git a/src/blackgui/editors/cockpitcomform.h b/src/blackgui/editors/cockpitcomform.h index a6204e8c4..832110a6f 100644 --- a/src/blackgui/editors/cockpitcomform.h +++ b/src/blackgui/editors/cockpitcomform.h @@ -86,6 +86,11 @@ namespace BlackGui //! GUI values changed void changedCockpitValues(const BlackMisc::Simulation::CSimulatedAircraft &aircraft); + //! Request COM text messages @{ + void requestCom1TextMessage(); + void requestCom2TextMessage(); + //! @} + private: //! Init LEDs void initLeds(); diff --git a/src/blackgui/editors/cockpitcomform.ui b/src/blackgui/editors/cockpitcomform.ui index e0767e37e..828386104 100644 --- a/src/blackgui/editors/cockpitcomform.ui +++ b/src/blackgui/editors/cockpitcomform.ui @@ -128,7 +128,7 @@ - + 3 @@ -147,7 +147,7 @@ - + Toggle COM 1 standby/active @@ -161,6 +161,13 @@ + + + + T + + + @@ -254,7 +261,7 @@ - + 3 @@ -273,7 +280,7 @@ - + Toggle COM 2 standby/active @@ -287,6 +294,13 @@ + + + + T + + + @@ -517,7 +531,9 @@ ds_ComPanelCom2Standby sbp_ComPanelTransponder cbp_ComPanelTransponderMode + tb_RequestTextMessageCom1 tb_ComPanelCom1Toggle + tb_RequestTextMessageCom2 tb_ComPanelCom2Toggle tb_ComPanelSelcalTest