From 1deeaf39e8435dd16952d0e129b00950462da283 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sat, 30 Nov 2019 00:59:58 +0100 Subject: [PATCH] [UI] Focus in text message entry field if a text message tab is requested * requested by AF * added signals/slots * foucs functions --- .../components/mainkeypadareacomponent.cpp | 11 +++++++--- .../components/mainkeypadareacomponent.h | 3 +++ .../components/textmessagecomponent.cpp | 6 +++++- .../components/textmessagecomponent.h | 3 +++ src/swiftguistandard/swiftguistd.cpp | 20 +++++++++++++++++++ src/swiftguistandard/swiftguistd.h | 6 ++++++ src/swiftguistandard/swiftguistdinit.cpp | 5 ++++- 7 files changed, 49 insertions(+), 5 deletions(-) diff --git a/src/blackgui/components/mainkeypadareacomponent.cpp b/src/blackgui/components/mainkeypadareacomponent.cpp index bc269c256..1031f1af0 100644 --- a/src/blackgui/components/mainkeypadareacomponent.cpp +++ b/src/blackgui/components/mainkeypadareacomponent.cpp @@ -107,14 +107,19 @@ namespace BlackGui if (pb) { pb->setChecked(true); } } - Q_UNUSED(dockedIndexes); + Q_UNUSED(dockedIndexes) + } + + void CMainKeypadAreaComponent::focusInEntryField() + { + ui->lep_CommandLineInput->setFocus(); } void CMainKeypadAreaComponent::buttonSelected() { + if (!sGui || sGui->isShuttingDown()) { return; } QPushButton *senderButton = static_cast(QObject::sender()); Q_ASSERT_X(senderButton, Q_FUNC_INFO, "No sender button"); - if (!sGui || sGui->isShuttingDown()) { return; } if (!senderButton) { return; } const CMainInfoAreaComponent::InfoArea infoArea = buttonToMainInfoArea(senderButton); if (infoArea != CMainInfoAreaComponent::InfoAreaNone) @@ -157,7 +162,7 @@ namespace BlackGui void CMainKeypadAreaComponent::connectionStatusChanged(const CConnectionStatus &from, const CConnectionStatus &to) { - Q_UNUSED(from); + Q_UNUSED(from) // Connected button if (to.isConnected()) diff --git a/src/blackgui/components/mainkeypadareacomponent.h b/src/blackgui/components/mainkeypadareacomponent.h index 6b41f53b7..0156dcd46 100644 --- a/src/blackgui/components/mainkeypadareacomponent.h +++ b/src/blackgui/components/mainkeypadareacomponent.h @@ -46,6 +46,9 @@ namespace BlackGui //! Main info area changed void onMainInfoAreaChanged(int currentTabIndex, QList dockedIndexes, QList floatingIndexes); + //! Focus in entry fields + void focusInEntryField(); + signals: //! Button to select main info area has been pressed //! \sa CMainInfoAreaComponent diff --git a/src/blackgui/components/textmessagecomponent.cpp b/src/blackgui/components/textmessagecomponent.cpp index 7b3c8f981..bfab201be 100644 --- a/src/blackgui/components/textmessagecomponent.cpp +++ b/src/blackgui/components/textmessagecomponent.cpp @@ -795,6 +795,8 @@ namespace BlackGui // force display if (!m_usedAsOverlayWidget) { this->displayMyself(); } + + emit this->textMessageTabSelected(); } void CTextMessageComponent::showCorrespondingTabForFrequency(const CFrequency &frequency) @@ -822,12 +824,14 @@ namespace BlackGui // set via widget, as ALL can be removed switch (tab) { - case TextMessagesAll : ui->tw_TextMessages->setCurrentWidget(ui->tb_TextMessagesAll); break; + case TextMessagesAll : ui->tw_TextMessages->setCurrentWidget(ui->tb_TextMessagesAll); break; case TextMessagesCom1: ui->tw_TextMessages->setCurrentWidget(ui->tb_TextMessagesCOM1); break; case TextMessagesCom2: ui->tw_TextMessages->setCurrentWidget(ui->tb_TextMessagesCOM2); break; case TextMessagesUnicom: ui->tw_TextMessages->setCurrentWidget(ui->tb_TextMessagesUnicom); break; default: break; } + + emit this->textMessageTabSelected(); } void CTextMessageComponent::setAtcButtonsRowsColumns(int rows, int cols, bool setMaxElements) diff --git a/src/blackgui/components/textmessagecomponent.h b/src/blackgui/components/textmessagecomponent.h index 5f85f65c9..bc881d1c5 100644 --- a/src/blackgui/components/textmessagecomponent.h +++ b/src/blackgui/components/textmessagecomponent.h @@ -118,6 +118,9 @@ namespace BlackGui //! Command line was entered void commandEntered(const QString &commandLine, const BlackMisc::CIdentifier &originator); + //! Text message tab selected + void textMessageTabSelected(); + private: QScopedPointer ui; BlackMisc::CIdentifier m_identifier { "TextMessageComponent", this }; diff --git a/src/swiftguistandard/swiftguistd.cpp b/src/swiftguistandard/swiftguistd.cpp index 0fe5c0f6b..48352bd4f 100644 --- a/src/swiftguistandard/swiftguistd.cpp +++ b/src/swiftguistandard/swiftguistd.cpp @@ -16,6 +16,7 @@ #include "blackgui/components/logindialog.h" #include "blackgui/components/modelbrowserdialog.h" #include "blackgui/components/settingscomponent.h" +#include "blackgui/components/textmessagecomponent.h" #include "blackgui/guiapplication.h" #include "blackgui/guiutility.h" #include "blackgui/overlaymessagesframe.h" @@ -442,6 +443,25 @@ void SwiftGuiStd::onRequestedConsoleMessage(const QString &logMsg, bool clear) log->appendPlainTextToConsole(logMsg); } +void SwiftGuiStd::focusInMainEntryField() +{ + ui->comp_MainKeypadArea->focusInEntryField(); +} + +void SwiftGuiStd::focusInTextMessageEntryField() +{ + if (!ui->comp_MainInfoArea->getTextMessageComponent()) { return; } + if (ui->comp_MainInfoArea->getTextMessageComponent()->isParentDockWidgetFloating()) + { + ui->comp_MainInfoArea->getTextMessageComponent()->activateWindow(); + ui->comp_MainInfoArea->getTextMessageComponent()->focusTextEntry(); + } + else + { + this->focusInMainEntryField(); + } +} + void SwiftGuiStd::showMinimized() { this->showMinimizedModeChecked(); diff --git a/src/swiftguistandard/swiftguistd.h b/src/swiftguistandard/swiftguistd.h index 6831b069f..d413ec031 100644 --- a/src/swiftguistandard/swiftguistd.h +++ b/src/swiftguistandard/swiftguistd.h @@ -281,6 +281,12 @@ private: //! UI Console message has been recevied void onRequestedConsoleMessage(const QString &logMsg, bool clear); + //! Focus in main entry window + void focusInMainEntryField(); + + //! Focus in the text message entry field + void focusInTextMessageEntryField(); + //! Show window minimized void showMinimized(); diff --git a/src/swiftguistandard/swiftguistdinit.cpp b/src/swiftguistandard/swiftguistdinit.cpp index 13fd3dcdd..c38890988 100644 --- a/src/swiftguistandard/swiftguistdinit.cpp +++ b/src/swiftguistandard/swiftguistdinit.cpp @@ -208,10 +208,13 @@ void SwiftGuiStd::initGuiSignals() connect(ui->comp_MainKeypadArea, &CMainKeypadAreaComponent::connectPressed, this, &SwiftGuiStd::loginRequested); connect(ui->comp_MainKeypadArea, &CMainKeypadAreaComponent::changedOpacity, this, &SwiftGuiStd::onChangedWindowOpacity); connect(ui->comp_MainKeypadArea, &CMainKeypadAreaComponent::identPressed, ui->comp_MainInfoArea->getCockpitComponent(), &CCockpitComponent::setSelectedTransponderModeStateIdent); - connect(ui->comp_MainKeypadArea, &CMainKeypadAreaComponent::textEntered, ui->comp_MainInfoArea->getTextMessageComponent(), &CTextMessageComponent::handleGlobalCommandLineText); + connect(ui->comp_MainKeypadArea, &CMainKeypadAreaComponent::textEntered, ui->comp_MainInfoArea->getTextMessageComponent(), &CTextMessageComponent::handleGlobalCommandLineText); connect(ui->comp_MainKeypadArea, &CMainKeypadAreaComponent::audioPressed, ui->comp_MainInfoArea, &CMainInfoAreaComponent::selectAudioTab); connect(ui->comp_MainInfoArea, &CMainInfoAreaComponent::changedInfoAreaStatus, ui->comp_MainKeypadArea, &CMainKeypadAreaComponent::onMainInfoAreaChanged); + // text component + connect(ui->comp_MainInfoArea->getTextMessageComponent(), &CTextMessageComponent::textMessageTabSelected, this, &SwiftGuiStd::focusInTextMessageEntryField, Qt::QueuedConnection); + // audio connect(ui->comp_MainInfoArea->getAtcStationComponent(), &CAtcStationComponent::requestAudioWidget, ui->comp_MainInfoArea, &CMainInfoAreaComponent::selectAudioTab);