Ref T536, overlay text messages

* signals for text message requests
* frame for overlay plus CEnableForDockWidgetInfoArea
* correctly init inner frame size
This commit is contained in:
Klaus Basan
2019-02-11 04:10:23 +01:00
committed by Mat Sutcliffe
parent f50bb23020
commit 2464271400
4 changed files with 74 additions and 7 deletions

View File

@@ -46,6 +46,7 @@ using namespace BlackCore::Context;
using namespace BlackGui::Models; using namespace BlackGui::Models;
using namespace BlackGui::Views; using namespace BlackGui::Views;
using namespace BlackGui::Settings; using namespace BlackGui::Settings;
using namespace BlackGui::Components;
namespace BlackGui namespace BlackGui
{ {
@@ -246,12 +247,20 @@ namespace BlackGui
const bool activatedText = ui->comp_OverlayTextMessage->isActivated(); const bool activatedText = ui->comp_OverlayTextMessage->isActivated();
if (activatedText) if (activatedText)
{ {
this->setModeToOverlayTextMessage(); if (textMessage.isPrivateMessage())
timeOutMs = -1; // cancel timeout {
this->showOverlayInlineTextMessage(textMessage.getSenderCallsign());
}
else
{
this->showOverlayInlineTextMessage(TextMessagesAll);
ui->comp_OverlayTextMessage->showCorrespondingTabForFrequency(textMessage.getFrequency());
}
} }
else else
{ {
// message and display // message and display
//! @deprecated KB 2019-02 normally using overlay messages is used
ui->le_TmFrom->setText(textMessage.getSenderCallsign().asString()); ui->le_TmFrom->setText(textMessage.getSenderCallsign().asString());
ui->le_TmTo->setText(textMessage.getRecipientCallsign().asString()); ui->le_TmTo->setText(textMessage.getRecipientCallsign().asString());
ui->le_TmReceived->setText(textMessage.getFormattedUtcTimestampHms()); ui->le_TmReceived->setText(textMessage.getFormattedUtcTimestampHms());
@@ -260,11 +269,11 @@ namespace BlackGui
ui->wi_TmSupervisor->setStyleSheet("background-color: red;"); ui->wi_TmSupervisor->setStyleSheet("background-color: red;");
this->setModeToTextMessage(); this->setModeToTextMessage();
}
this->display(timeOutMs); this->display(timeOutMs);
} }
}
void COverlayMessages::showOverlayInlineTextMessage(Components::TextMessageTab tab) void COverlayMessages::showOverlayInlineTextMessage(TextMessageTab tab)
{ {
ui->comp_OverlayTextMessage->setTab(tab); ui->comp_OverlayTextMessage->setTab(tab);
ui->comp_OverlayTextMessage->updateAtcStationsButtons(); ui->comp_OverlayTextMessage->updateAtcStationsButtons();
@@ -276,7 +285,7 @@ namespace BlackGui
void COverlayMessages::showOverlayInlineTextMessage(const CCallsign &callsign) void COverlayMessages::showOverlayInlineTextMessage(const CCallsign &callsign)
{ {
this->showOverlayInlineTextMessage(Components::TextMessagesUnicom); this->showOverlayInlineTextMessage(TextMessagesUnicom);
ui->comp_OverlayTextMessage->showCorrespondingTab(callsign); ui->comp_OverlayTextMessage->showCorrespondingTab(callsign);
} }
@@ -322,7 +331,7 @@ namespace BlackGui
this->display(timeOutMs); this->display(timeOutMs);
} }
void COverlayMessages::showOverlayVariant(const BlackMisc::CVariant &variant, int timeOutMs) void COverlayMessages::showOverlayVariant(const CVariant &variant, int timeOutMs)
{ {
if (variant.canConvert<CStatusMessageList>()) if (variant.canConvert<CStatusMessageList>())
{ {
@@ -475,6 +484,11 @@ namespace BlackGui
ui->comp_OverlayTextMessage->activate(activate, activate); ui->comp_OverlayTextMessage->activate(activate, activate);
} }
bool COverlayMessages::isTextMessagesActivated() const
{
return ui->comp_OverlayTextMessage->isActivated();
}
void COverlayMessages::setModeToImage() void COverlayMessages::setModeToImage()
{ {
ui->sw_StatusMessagesComponent->setCurrentWidget(ui->pg_Image); ui->sw_StatusMessagesComponent->setCurrentWidget(ui->pg_Image);

View File

@@ -75,6 +75,9 @@ namespace BlackGui
//! Active send/receive of text messages //! Active send/receive of text messages
void activateTextMessages(bool activate); void activateTextMessages(bool activate);
//! Are text messages
bool isTextMessagesActivated() const;
//! Display image //! Display image
void setModeToImage(); void setModeToImage();

View File

@@ -9,6 +9,7 @@
#include "blackgui/overlaymessagesframe.h" #include "blackgui/overlaymessagesframe.h"
#include "blackgui/overlaymessages.h" #include "blackgui/overlaymessages.h"
#include "dockwidgetinfoarea.h"
#include "blackgui/stylesheetutility.h" #include "blackgui/stylesheetutility.h"
#include "blackgui/guiutility.h" #include "blackgui/guiutility.h"
#include "blackmisc/network/textmessage.h" #include "blackmisc/network/textmessage.h"
@@ -29,6 +30,17 @@ namespace BlackGui
COverlayMessagesFrame::COverlayMessagesFrame(QWidget *parent, Qt::WindowFlags f) : COverlayMessagesBase(parent, f) COverlayMessagesFrame::COverlayMessagesFrame(QWidget *parent, Qt::WindowFlags f) : COverlayMessagesBase(parent, f)
{ } { }
COverlayMessagesFrameEnableForDockWidgetInfoArea::COverlayMessagesFrameEnableForDockWidgetInfoArea(QWidget *parent, Qt::WindowFlags f) :
COverlayMessagesFrame(parent, f)
{ }
bool COverlayMessagesFrameEnableForDockWidgetInfoArea::isForwardingOverlayMessages() const
{
if (!this->hasDockWidgetArea()) { return false; }
if (this->isParentDockWidgetFloating()) { return false; }
return true;
}
COverlayMessagesTabWidget::COverlayMessagesTabWidget(QWidget *parent) : COverlayMessagesBase(parent) COverlayMessagesTabWidget::COverlayMessagesTabWidget(QWidget *parent) : COverlayMessagesBase(parent)
{ } { }

View File

@@ -13,6 +13,7 @@
#define BLACKGUI_OVERLAYMESSAGES_FRAME_H #define BLACKGUI_OVERLAYMESSAGES_FRAME_H
#include "blackgui/components/textmessagecomponenttab.h" #include "blackgui/components/textmessagecomponenttab.h"
#include "blackgui/enablefordockwidgetinfoarea.h"
#include "blackgui/overlaymessages.h" #include "blackgui/overlaymessages.h"
#include "blackgui/guiutility.h" #include "blackgui/guiutility.h"
#include "blackgui/blackguiexport.h" #include "blackgui/blackguiexport.h"
@@ -188,8 +189,17 @@ namespace BlackGui
//! \copydoc BlackGui::COverlayMessages::showOverlayVariant //! \copydoc BlackGui::COverlayMessages::showOverlayVariant
void showOverlayVariant(const BlackMisc::CVariant &variant, int timeOutMs = -1) void showOverlayVariant(const BlackMisc::CVariant &variant, int timeOutMs = -1)
{
if (m_overlayMessages->isTextMessagesActivated() && variant.canConvert<BlackMisc::Network::CTextMessage>())
{
this->initInnerFrame(0.75, 0.75);
if (!this->hasMinimumSize(150, 150)) { return; }
}
else
{ {
this->initInnerFrame(); this->initInnerFrame();
}
m_overlayMessages->showOverlayVariant(variant, timeOutMs); m_overlayMessages->showOverlayVariant(variant, timeOutMs);
WIDGET::repaint(); WIDGET::repaint();
} }
@@ -373,6 +383,34 @@ namespace BlackGui
public: public:
//! Constructor //! Constructor
explicit COverlayMessagesFrame(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()); explicit COverlayMessagesFrame(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());
signals:
//! Request an text message entry
void requestTextMessageEntryTab(Components::TextMessageTab tab);
//! Request an text message entry
void requestTextMessageEntryCallsign(const BlackMisc::Aviation::CCallsign &callsign);
//! Request a text message widget
void requestTextMessageWidget(const BlackMisc::Aviation::CCallsign &callsign);
};
/*!
* Using this class provides a QFrame with the overlay and dock widget functionality already integrated.
*/
class BLACKGUI_EXPORT COverlayMessagesFrameEnableForDockWidgetInfoArea :
public COverlayMessagesFrame,
public CEnableForDockWidgetInfoArea
{
Q_OBJECT
public:
//! Constructor
explicit COverlayMessagesFrameEnableForDockWidgetInfoArea(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());
private:
//! Forward overlay messages
bool isForwardingOverlayMessages() const;
}; };
/*! /*!