refs #471, overlay widget for text messages and variant

This commit is contained in:
Klaus Basan
2015-10-21 18:48:23 +02:00
committed by Mathew Sutcliffe
parent 134a725002
commit 4804d81857
3 changed files with 115 additions and 1 deletions

View File

@@ -12,6 +12,8 @@
#include "ui_overlaymessages.h"
#include <QKeyEvent>
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<CStatusMessageList>())
{
showMessages(variant.value<CStatusMessageList>(), timeOutMs);
}
else if (variant.canConvert<CStatusMessage>())
{
showMessage(variant.value<CStatusMessage>(), timeOutMs);
}
else if (variant.canConvert<CTextMessage>())
{
showTextMessage(variant.value<CTextMessage>(), 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)

View File

@@ -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 <QFrame>
#include <QScopedPointer>
#include <QTimer>
@@ -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::COverlayMessages> ui;
QString m_header;
QTimer m_autoCloseTimer { this };
QTimer m_autoCloseTimer { this };
//! Init widget
void init(int w, int h);

View File

@@ -174,6 +174,70 @@
</item>
</layout>
</widget>
<widget class="QWidget" name="pg_TextMessage">
<layout class="QVBoxLayout" name="vl_TextMessage">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<layout class="QGridLayout" name="gl_TextMessage">
<item row="0" column="2">
<widget class="QLabel" name="lbl_TmTo">
<property name="text">
<string>To</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="lbl_Receiver">
<property name="text">
<string>Received</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="le_TmReceived"/>
</item>
<item row="0" column="0">
<widget class="QLabel" name="lbl_TmFrom">
<property name="text">
<string>From</string>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QLineEdit" name="le_TmTo">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="le_TmFrom">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="1" colspan="3">
<widget class="QTextEdit" name="te_TmText"/>
</item>
</layout>
</item>
</layout>
</widget>
</widget>
</item>
</layout>