From 4804d818576c9640dd2002b510aa8caed5d469f9 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Wed, 21 Oct 2015 18:48:23 +0200 Subject: [PATCH] refs #471, overlay widget for text messages and variant --- src/blackgui/overlaymessages.cpp | 39 +++++++++++++++++++ src/blackgui/overlaymessages.h | 13 ++++++- src/blackgui/overlaymessages.ui | 64 ++++++++++++++++++++++++++++++++ 3 files changed, 115 insertions(+), 1 deletion(-) diff --git a/src/blackgui/overlaymessages.cpp b/src/blackgui/overlaymessages.cpp index e29ab19a5..e20970ccf 100644 --- a/src/blackgui/overlaymessages.cpp +++ b/src/blackgui/overlaymessages.cpp @@ -12,6 +12,8 @@ #include "ui_overlaymessages.h" #include +using namespace BlackMisc; +using namespace BlackMisc::Network; using namespace BlackGui::Models; namespace BlackGui @@ -73,6 +75,37 @@ namespace BlackGui this->display(timeOutMs); } + void COverlayMessages::showTextMessage(const CTextMessage &textMessage, int timeOutMs) + { + if (textMessage.isEmpty()) { return; } + this->setModeToTextMessage(); + + // message and display + this->ui->le_TmFrom->setText(textMessage.getSenderCallsign().asString()); + this->ui->le_TmTo->setText(textMessage.getRecipientCallsign().asString()); + this->ui->le_TmReceived->setText(textMessage.getFormattedUtcTimestampHms()); + this->ui->te_TmText->setText(textMessage.getMessage()); + + this->display(timeOutMs); + } + + void COverlayMessages::showVariant(const BlackMisc::CVariant &variant, int timeOutMs) + { + if (variant.canConvert()) + { + showMessages(variant.value(), timeOutMs); + } + else if (variant.canConvert()) + { + showMessage(variant.value(), timeOutMs); + } + else if (variant.canConvert()) + { + showTextMessage(variant.value(), timeOutMs); + } + Q_ASSERT_X(false, Q_FUNC_INFO, "Unsupported type"); + } + void COverlayMessages::setModeToMessages() { this->ui->sw_StatusMessagesComponent->setCurrentWidget(this->ui->pg_StatusMessages); @@ -85,6 +118,12 @@ namespace BlackGui this->setHeader("Message"); } + void COverlayMessages::setModeToTextMessage() + { + this->ui->sw_StatusMessagesComponent->setCurrentWidget(this->ui->pg_TextMessage); + this->setHeader("Text message"); + } + void COverlayMessages::keyPressEvent(QKeyEvent *event) { if (event->key() == Qt::Key_Escape) diff --git a/src/blackgui/overlaymessages.h b/src/blackgui/overlaymessages.h index ec57577e1..b8d65fef6 100644 --- a/src/blackgui/overlaymessages.h +++ b/src/blackgui/overlaymessages.h @@ -12,7 +12,9 @@ #ifndef BLACKGUI_OVERLAYMESSAGES_H #define BLACKGUI_OVERLAYMESSAGES_H +#include "blackmisc/network/textmessage.h" #include "blackmisc/statusmessagelist.h" +#include "blackmisc/variant.h" #include #include #include @@ -44,12 +46,21 @@ namespace BlackGui //! Show single message void showMessage(const BlackMisc::CStatusMessage &message, int timeOutMs = -1); + //! Info message, based on text message + void showTextMessage(const BlackMisc::Network::CTextMessage &textMessage, int timeOutMs = -1); + + //! Display one of the supported types + void showVariant(const BlackMisc::CVariant &variant, int timeOutMs = -1); + //! Messages mode void setModeToMessages(); //! Single Message mode void setModeToMessage(); + //! Single Text message mode + void setModeToTextMessage(); + //! Set header text void setHeaderText(const QString &header); @@ -70,7 +81,7 @@ namespace BlackGui private: QScopedPointer ui; QString m_header; - QTimer m_autoCloseTimer { this }; + QTimer m_autoCloseTimer { this }; //! Init widget void init(int w, int h); diff --git a/src/blackgui/overlaymessages.ui b/src/blackgui/overlaymessages.ui index eda830373..eb910e342 100644 --- a/src/blackgui/overlaymessages.ui +++ b/src/blackgui/overlaymessages.ui @@ -174,6 +174,70 @@ + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + To + + + + + + + Received + + + + + + + + + + From + + + + + + + true + + + + + + + true + + + + + + + + + +