From 8e57914e679345fb7a1fd62c47c57ee7b7878175 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Mon, 2 Nov 2015 19:31:32 +0100 Subject: [PATCH] refs #471, removed old info window and migrated to overlay widget * added small message display (more suitable for swift GUI) * fixed nullptr bug with ESC key * adjusted swift GUI --- .../components/infowindowcomponent.cpp | 143 ------------ src/blackgui/components/infowindowcomponent.h | 77 ------ .../components/infowindowcomponent.ui | 220 ------------------ src/blackgui/overlaymessages.cpp | 35 ++- src/blackgui/overlaymessages.h | 39 ++-- src/blackgui/overlaymessages.ui | 38 +++ src/blackgui/overlaymessagesframe.cpp | 48 ++-- src/blackgui/overlaymessagesframe.h | 21 +- src/blackgui/statusmessageformsmall.cpp | 48 ++++ src/blackgui/statusmessageformsmall.h | 52 +++++ src/blackgui/statusmessageformsmall.ui | 115 +++++++++ src/swiftgui_standard/swiftguistd.cpp | 10 +- src/swiftgui_standard/swiftguistd.h | 3 +- src/swiftgui_standard/swiftguistd.ui | 8 +- src/swiftgui_standard/swiftguistd_init.cpp | 2 +- 15 files changed, 365 insertions(+), 494 deletions(-) delete mode 100644 src/blackgui/components/infowindowcomponent.cpp delete mode 100644 src/blackgui/components/infowindowcomponent.h delete mode 100644 src/blackgui/components/infowindowcomponent.ui create mode 100644 src/blackgui/statusmessageformsmall.cpp create mode 100644 src/blackgui/statusmessageformsmall.h create mode 100644 src/blackgui/statusmessageformsmall.ui diff --git a/src/blackgui/components/infowindowcomponent.cpp b/src/blackgui/components/infowindowcomponent.cpp deleted file mode 100644 index 380dfa643..000000000 --- a/src/blackgui/components/infowindowcomponent.cpp +++ /dev/null @@ -1,143 +0,0 @@ -/* Copyright (C) 2013 - * swift project Community / Contributors - * - * This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level - * directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project, - * including this file, may be copied, modified, propagated, or distributed except according to the terms - * contained in the LICENSE file. - */ - -#include "infowindowcomponent.h" -#include "ui_infowindowcomponent.h" -#include "../stylesheetutility.h" -#include "blackmisc/icon.h" -#include -#include - -using namespace BlackMisc; -using namespace BlackMisc::Network; - - -namespace BlackGui -{ - namespace Components - { - CInfoWindowComponent::CInfoWindowComponent(QWidget *parent) : - QWizardPage(parent), - ui(new Ui::InfoWindow) - { - ui->setupUi(this); - this->hide(); - this->m_hideTimer = new QTimer(this); - this->m_hideTimer->setSingleShot(true); - this->ps_onStyleSheetsChanged(); - - connect(this->m_hideTimer, &QTimer::timeout, this, &CInfoWindowComponent::hide); - connect(this->ui->pb_Close, &QPushButton::pressed, this, &CInfoWindowComponent::hide); - connect(&CStyleSheetUtility::instance(), &CStyleSheetUtility::styleSheetsChanged, this, &CInfoWindowComponent::ps_onStyleSheetsChanged); - } - - CInfoWindowComponent::~CInfoWindowComponent() { } - - void CInfoWindowComponent::displayStringMessage(const QString &message, int displayTimeMs) - { - if (message.isEmpty()) - { - this->hide(); - return; - } - - // message and display - this->ui->te_StringMessage->setText(message); - this->setCurrentPage(this->ui->pg_StringMessage); - this->showWindow(displayTimeMs); - } - - void CInfoWindowComponent::displayTextMessage(const CTextMessage &textMessage, int displayTimeMs) - { - if (textMessage.isEmpty()) - { - this->hide(); - return; - } - - // 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->setCurrentPage(this->ui->pg_TextMessage); - this->showWindow(displayTimeMs); - } - - void CInfoWindowComponent::displayStatusMessage(const CStatusMessage &statusMessage, int displayTimeMs) - { - if (statusMessage.isEmpty()) - { - this->hide(); - return; - } - - this->ui->le_SmSeverity->setText(statusMessage.getSeverityAsString()); - this->ui->le_SmCategories->setText(statusMessage.getCategories().toQString()); - this->ui->te_SmStatusMessage->setText(statusMessage.getMessage()); - this->ui->lbl_SmSeverityIcon->setPixmap(statusMessage.toPixmap()); - - this->setCurrentPage(this->ui->pg_StatusMessage); - this->showWindow(displayTimeMs); - } - - void CInfoWindowComponent::display(const BlackMisc::CVariant &variant, int displayTimeMs) - { - if (variant.isNull()) - { - this->hide(); - return; - } - if (variant.canConvert()) - { - this->displayTextMessage(variant.value(), displayTimeMs); - } - else if (variant.canConvert()) - { - this->displayStatusMessage(variant.value(), displayTimeMs); - } - else - { - this->displayStringMessage(variant.toQString(), displayTimeMs); - } - } - - void CInfoWindowComponent::initWindow() - { - // center - const QRect parent = this->parentWidget()->geometry(); - const QRect myself = this->rect(); - int dx = (parent.width() - myself.width()) / 2; - int dy = (parent.height() - myself.height()) / 2; - dy -= 80; // some offset, in order to display further on top - this->move(dx, dy); - this->show(); - } - - void CInfoWindowComponent::showWindow(int displayTimeMs) - { - this->initWindow(); - - // hide after some time - this->m_hideTimer->start(displayTimeMs); - } - - void CInfoWindowComponent::setCurrentPage(QWidget *widget) - { - this->ui->sw_DifferentModes->setCurrentWidget(widget); - } - - void CInfoWindowComponent::ps_onStyleSheetsChanged() - { - QString st = CStyleSheetUtility::instance().style(CStyleSheetUtility::fileNameInfoWindow()); - this->setStyleSheet(st); - } - } -} // namespace diff --git a/src/blackgui/components/infowindowcomponent.h b/src/blackgui/components/infowindowcomponent.h deleted file mode 100644 index 53b52709b..000000000 --- a/src/blackgui/components/infowindowcomponent.h +++ /dev/null @@ -1,77 +0,0 @@ -/* Copyright (C) 2013 - * swift project Community / Contributors - * - * This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level - * directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project, - * including this file, may be copied, modified, propagated, or distributed except according to the terms - * contained in the LICENSE file. - */ - -//! \file - -#ifndef BLACKGUI_INFOWINDOW_H -#define BLACKGUI_INFOWINDOW_H - -#include "blackgui/blackguiexport.h" -#include "blackmisc/network/textmessage.h" -#include "blackmisc/statusmessage.h" -#include "blackmisc/variant.h" - -#include -#include - -namespace Ui { class InfoWindow; } - -namespace BlackGui -{ - namespace Components - { - /*! - * Multi purpose info window (like pop up window) - */ - class BLACKGUI_EXPORT CInfoWindowComponent : public QWizardPage - { - Q_OBJECT - - public: - const static int DefaultDisplayTimeMs = 4000; //!< Display n milliseconds - - //! Constructor - explicit CInfoWindowComponent(QWidget *parent = nullptr); - - //! Destructor - ~CInfoWindowComponent(); - - public slots: - //! Info message, pure string - void displayStringMessage(const QString &message, int displayTimeMs = DefaultDisplayTimeMs); - - //! Info message, based on text message - void displayTextMessage(const BlackMisc::Network::CTextMessage &textMessage, int displayTimeMs = DefaultDisplayTimeMs); - - //! Info message, based on status message - void displayStatusMessage(const BlackMisc::CStatusMessage &statusMessage, int displayTimeMs = DefaultDisplayTimeMs); - - //! Display any of the specialized types - void display(const BlackMisc::CVariant &variant, int displayTimeMs = DefaultDisplayTimeMs); - - private: - QScopedPointer ui; //!< user interface - QTimer *m_hideTimer = nullptr; - - //! Init the window - void initWindow(); - - //! Show window, hide after some time - void showWindow(int displayTimeMs); - - //! Current page - void setCurrentPage(QWidget *widget); - - private slots: - //! Style sheet changed - void ps_onStyleSheetsChanged(); - }; - } // namespace -} // namespace -#endif // guard diff --git a/src/blackgui/components/infowindowcomponent.ui b/src/blackgui/components/infowindowcomponent.ui deleted file mode 100644 index b56c516a7..000000000 --- a/src/blackgui/components/infowindowcomponent.ui +++ /dev/null @@ -1,220 +0,0 @@ - - - InfoWindow - - - - 0 - 0 - 300 - 185 - - - - WizardPage - - - - - - Information - - - - 2 - - - 2 - - - 2 - - - 2 - - - 2 - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - - 20 - 20 - - - - - - - - :/diagona/icons/diagona/icons/cross-button.png:/diagona/icons/diagona/icons/cross-button.png - - - - - - - 2 - - - - - - - true - - - - - - - - - - - - - To - - - - - - - Received - - - - - - - - - - From - - - - - - - true - - - - - - - true - - - - - - - - - - - - - - - - - - Categories - - - Cat. - - - - - - - severity - - - true - - - - - - - type - - - true - - - - - - - true - - - - - - - Severity - - - - - - - icon - - - - - - - - - - - - - - - - - - - diff --git a/src/blackgui/overlaymessages.cpp b/src/blackgui/overlaymessages.cpp index e20970ccf..b740a6f3f 100644 --- a/src/blackgui/overlaymessages.cpp +++ b/src/blackgui/overlaymessages.cpp @@ -23,6 +23,7 @@ namespace BlackGui ui(new Ui::COverlayMessages) { this->init(w, h); + connect(&CStyleSheetUtility::instance(), &CStyleSheetUtility::styleSheetsChanged, this, &COverlayMessages::ps_onStyleSheetsChanged); } COverlayMessages::COverlayMessages(const QString &headerText, int w, int h, QWidget *parent) : @@ -56,6 +57,16 @@ namespace BlackGui } } + void COverlayMessages::ps_onStyleSheetsChanged() + { + // stlye sheet + } + + bool COverlayMessages::useSmall() const + { + return (this->width() < 400); + } + COverlayMessages::~COverlayMessages() {} @@ -70,8 +81,16 @@ namespace BlackGui void COverlayMessages::showMessage(const BlackMisc::CStatusMessage &message, int timeOutMs) { if (message.isEmpty()) { return; } - this->setModeToMessage(); - this->ui->form_StatusMessage->setValue(message); + if (this->useSmall()) + { + this->setModeToMessageSmall(); + this->ui->form_StatusMessageSmall->setValue(message); + } + else + { + this->setModeToMessage(); + this->ui->form_StatusMessage->setValue(message); + } this->display(timeOutMs); } @@ -118,6 +137,12 @@ namespace BlackGui this->setHeader("Message"); } + void COverlayMessages::setModeToMessageSmall() + { + this->ui->sw_StatusMessagesComponent->setCurrentWidget(this->ui->pg_StatusMessageSmall); + this->setHeader("Message"); + } + void COverlayMessages::setModeToTextMessage() { this->ui->sw_StatusMessagesComponent->setCurrentWidget(this->ui->pg_TextMessage); @@ -126,11 +151,15 @@ namespace BlackGui void COverlayMessages::keyPressEvent(QKeyEvent *event) { - if (event->key() == Qt::Key_Escape) + if (this->isVisible() && event->key() == Qt::Key_Escape) { this->close(); event->setAccepted(true); } + else + { + QFrame::keyPressEvent(event); + } } void COverlayMessages::close() diff --git a/src/blackgui/overlaymessages.h b/src/blackgui/overlaymessages.h index b8d65fef6..8829100db 100644 --- a/src/blackgui/overlaymessages.h +++ b/src/blackgui/overlaymessages.h @@ -12,6 +12,7 @@ #ifndef BLACKGUI_OVERLAYMESSAGES_H #define BLACKGUI_OVERLAYMESSAGES_H +#include "blackgui/blackguiexport.h" #include "blackmisc/network/textmessage.h" #include "blackmisc/statusmessagelist.h" #include "blackmisc/variant.h" @@ -26,7 +27,7 @@ namespace BlackGui /*! * Display status messages (nested in another widget) */ - class COverlayMessages : public QFrame + class BLACKGUI_EXPORT COverlayMessages : public QFrame { Q_OBJECT @@ -40,6 +41,22 @@ namespace BlackGui //! Destructor ~COverlayMessages(); + //! Messages mode + void setModeToMessages(); + + //! Single Message mode + void setModeToMessage(); + + //! Single Message mode + void setModeToMessageSmall(); + + //! Single Text message mode + void setModeToTextMessage(); + + //! Set header text + void setHeaderText(const QString &header); + + public slots: //! Show multiple messages void showMessages(const BlackMisc::CStatusMessageList &messages, int timeOutMs = -1); @@ -52,19 +69,6 @@ namespace BlackGui //! 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); - - public slots: //! Close button clicked void close(); @@ -78,6 +82,13 @@ namespace BlackGui //! \copydoc QFrame::paintEvent virtual void paintEvent(QPaintEvent *event) override; + private slots: + //! Stylesheet changed + void ps_onStyleSheetsChanged(); + + //! Small + bool useSmall() const; + private: QScopedPointer ui; QString m_header; diff --git a/src/blackgui/overlaymessages.ui b/src/blackgui/overlaymessages.ui index eb910e342..aee4262ee 100644 --- a/src/blackgui/overlaymessages.ui +++ b/src/blackgui/overlaymessages.ui @@ -113,6 +113,9 @@ + + 2 + @@ -174,6 +177,35 @@ + + + + 4 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + @@ -257,6 +289,12 @@
blackgui/statusmessageform.h
1 + + BlackGui::CStatusMessageFormSmall + QFrame +
blackgui/statusmessageformsmall.h
+ 1 +
diff --git a/src/blackgui/overlaymessagesframe.cpp b/src/blackgui/overlaymessagesframe.cpp index 67896ca63..f1086ce3d 100644 --- a/src/blackgui/overlaymessagesframe.cpp +++ b/src/blackgui/overlaymessagesframe.cpp @@ -28,22 +28,37 @@ namespace BlackGui void COverlayMessagesFrame::hideStatusMessagesFrame() { - if (!m_statusMessages) { return; } + if (!m_overlayMessages) { return; } } - void COverlayMessagesFrame::showMessages(const BlackMisc::CStatusMessageList &messages) - { - if (messages.isEmpty()) { return; } - this->initInnerFrame(); - this->m_statusMessages->showMessages(messages); - this->repaint(); - } - - void COverlayMessagesFrame::showMessage(const BlackMisc::CStatusMessage &message) + void COverlayMessagesFrame::showMessage(const BlackMisc::CStatusMessage &message, int timeOutMs) { if (message.isEmpty()) { return; } this->initInnerFrame(); - this->m_statusMessages->showMessage(message); + this->m_overlayMessages->showMessage(message, timeOutMs); + this->repaint(); + } + + void COverlayMessagesFrame::showMessages(const BlackMisc::CStatusMessageList &messages, int timeOutMs) + { + if (messages.isEmpty()) { return; } + this->initInnerFrame(); + this->m_overlayMessages->showMessages(messages, timeOutMs); + this->repaint(); + } + + void COverlayMessagesFrame::showTextMessage(const BlackMisc::Network::CTextMessage &textMessage, int timeOutMs) + { + if (textMessage.isEmpty()) { return; } + this->initInnerFrame(); + this->m_overlayMessages->showTextMessage(textMessage, timeOutMs); + this->repaint(); + } + + void COverlayMessagesFrame::showVariant(const BlackMisc::CVariant &variant, int timeOutMs) + { + this->initInnerFrame(); + this->m_overlayMessages->showVariant(variant, timeOutMs); this->repaint(); } @@ -56,10 +71,9 @@ namespace BlackGui void COverlayMessagesFrame::keyPressEvent(QKeyEvent *event) { - if (!m_statusMessages) { QFrame::keyPressEvent(event); } - if (event->key() == Qt::Key_Escape) + if (m_overlayMessages && event->key() == Qt::Key_Escape) { - m_statusMessages->close(); + m_overlayMessages->close(); event->setAccepted(true); } else @@ -80,9 +94,9 @@ namespace BlackGui void COverlayMessagesFrame::initInnerFrame() { QSize inner(innerFrameSize()); - if (!this->m_statusMessages) + if (!this->m_overlayMessages) { - this->m_statusMessages = new COverlayMessages(inner.width(), inner.height(), this); + this->m_overlayMessages = new COverlayMessages(inner.width(), inner.height(), this); } QPoint middle = this->geometry().center(); @@ -90,6 +104,6 @@ namespace BlackGui int h = inner.height(); int x = middle.x() - w / 2; int y = middle.y() - h / 2; - this->m_statusMessages->setGeometry(x, y, w, h); + this->m_overlayMessages->setGeometry(x, y, w, h); } } // ns diff --git a/src/blackgui/overlaymessagesframe.h b/src/blackgui/overlaymessagesframe.h index f9c765c68..2513e9076 100644 --- a/src/blackgui/overlaymessagesframe.h +++ b/src/blackgui/overlaymessagesframe.h @@ -12,6 +12,7 @@ #ifndef BLACKGUI_OVERLAYMESSAGES_FRAME_H #define BLACKGUI_OVERLAYMESSAGES_FRAME_H +#include "blackgui/blackguiexport.h" #include "blackgui/overlaymessages.h" #include @@ -20,7 +21,7 @@ namespace BlackGui /*! * Display status messages (nested in another widget) */ - class COverlayMessagesFrame : public QFrame + class BLACKGUI_EXPORT COverlayMessagesFrame : public QFrame { Q_OBJECT @@ -37,11 +38,18 @@ namespace BlackGui //! Hide the inner frame void hideStatusMessagesFrame(); - //! Show multiple messages - void showMessages(const BlackMisc::CStatusMessageList &messages); + public slots: + //! \copydoc COverlayMessages::showMessages + void showMessages(const BlackMisc::CStatusMessageList &messages, int timeOutMs = -1); - //! Show single message - void showMessage(const BlackMisc::CStatusMessage &message); + //! \copydoc COverlayMessages::showMessage + void showMessage(const BlackMisc::CStatusMessage &message, int timeOutMs = -1); + + //! \copydoc COverlayMessages::showTextMessage + void showTextMessage(const BlackMisc::Network::CTextMessage &textMessage, int timeOutMs = -1); + + //! \copydoc COverlayMessages::showVariant + void showVariant(const BlackMisc::CVariant &variant, int timeOutMs = -1); protected: //! \copydoc QFrame::paintEvent @@ -50,7 +58,7 @@ namespace BlackGui //! \copydoc QFrame::keyPressEvent virtual void keyPressEvent(QKeyEvent *event) override; - COverlayMessages *m_statusMessages = nullptr; //!< embedded QFrame with Status messages + COverlayMessages *m_overlayMessages = nullptr; //!< embedded QFrame with Status messages private: //! Calculate inner frame size @@ -59,7 +67,6 @@ namespace BlackGui //! Init the inner frame (if not yet initialized) void initInnerFrame(); }; - } // ns #endif // guard diff --git a/src/blackgui/statusmessageformsmall.cpp b/src/blackgui/statusmessageformsmall.cpp new file mode 100644 index 000000000..4d00fc252 --- /dev/null +++ b/src/blackgui/statusmessageformsmall.cpp @@ -0,0 +1,48 @@ +/* Copyright (C) 2015 + * swift project Community / Contributors + * + * This file is part of swift Project. It is subject to the license terms in the LICENSE file found in the top-level + * directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project, + * including this file, may be copied, modified, propagated, or distributed except according to the terms + * contained in the LICENSE file. + */ + +#include "statusmessageformsmall.h" +#include "ui_statusmessageformsmall.h" +#include + +using namespace BlackMisc; + +namespace BlackGui +{ + CStatusMessageFormSmall::CStatusMessageFormSmall(QWidget *parent) : + QFrame(parent), + ui(new Ui::CStatusMessageFormSmall) + { + ui->setupUi(this); + } + + CStatusMessageFormSmall::~CStatusMessageFormSmall() + { } + + void CStatusMessageFormSmall::setVariant(const CVariant &messageVariant) + { + if (!this->isVisible()) { return; } + this->setValue(messageVariant.value()); + } + + void CStatusMessageFormSmall::setValue(const CStatusMessage &message) + { + ui->te_Message->setPlainText(message.getMessage()); + ui->lbl_SeverityIcon->setPixmap(message.toPixmap()); + ui->le_Categories->setText(message.getCategories().toQString(true)); + ui->le_Severity->setText(message.getSeverityAsString()); + ui->le_Timestamp->setText(message.getFormattedUtcTimestampYmdhms()); + } + + void CStatusMessageFormSmall::toggleVisibility() + { + this->setVisible(!isVisible()); + } + +} // ns diff --git a/src/blackgui/statusmessageformsmall.h b/src/blackgui/statusmessageformsmall.h new file mode 100644 index 000000000..7993c50d7 --- /dev/null +++ b/src/blackgui/statusmessageformsmall.h @@ -0,0 +1,52 @@ +/* Copyright (C) 2015 + * swift project Community / Contributors + * + * This file is part of swift Project. It is subject to the license terms in the LICENSE file found in the top-level + * directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project, + * including this file, may be copied, modified, propagated, or distributed except according to the terms + * contained in the LICENSE file. + */ + +//! \file + +#ifndef BLACKGUI_STATUSMESSAGEFORMSMALL_H +#define BLACKGUI_STATUSMESSAGEFORMSMALL_H + +#include "blackgui/blackguiexport.h" +#include "blackmisc/statusmessage.h" +#include + +namespace Ui { class CStatusMessageFormSmall; } + +namespace BlackGui +{ + /*! + * Display details about a single status message + */ + class BLACKGUI_EXPORT CStatusMessageFormSmall : public QFrame + { + Q_OBJECT + + public: + //! Constructor + explicit CStatusMessageFormSmall(QWidget *parent = nullptr); + + //! Destructor + ~CStatusMessageFormSmall(); + + public slots: + //! Set message + void setVariant(const BlackMisc::CVariant &messageVariant); + + //! Set message + void setValue(const BlackMisc::CStatusMessage &message); + + //! Toggle visibility + void toggleVisibility(); + + private: + QScopedPointer ui; + }; + +} // ns +#endif // guard diff --git a/src/blackgui/statusmessageformsmall.ui b/src/blackgui/statusmessageformsmall.ui new file mode 100644 index 000000000..74ef8dcdc --- /dev/null +++ b/src/blackgui/statusmessageformsmall.ui @@ -0,0 +1,115 @@ + + + CStatusMessageFormSmall + + + + 0 + 0 + 266 + 274 + + + + Frame + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 4 + + + 4 + + + 4 + + + 4 + + + 4 + + + + + Severity: + + + + + + + + 200 + 16777215 + + + + true + + + + + + + true + + + + + + + true + + + + + + + + 200 + 16777215 + + + + true + + + + + + + + + + :/diagona/icons/diagona/icons/question.png + + + + + + + Timestamp: + + + + + + + Categories: + + + + + + + + + + diff --git a/src/swiftgui_standard/swiftguistd.cpp b/src/swiftgui_standard/swiftguistd.cpp index 1b879555c..eebe4c5b1 100644 --- a/src/swiftgui_standard/swiftguistd.cpp +++ b/src/swiftgui_standard/swiftguistd.cpp @@ -48,7 +48,6 @@ SwiftGuiStd::SwiftGuiStd(BlackGui::CEnableForFramelessWindow::WindowMode windowM // GUI ui->setupUi(this); this->setDynamicProperties(windowMode == CEnableForFramelessWindow::WindowFrameless); - this->m_compInfoWindow = new CInfoWindowComponent(this); // setupUi has to be first! } SwiftGuiStd::~SwiftGuiStd() @@ -97,13 +96,6 @@ void SwiftGuiStd::performGracefulShutdown() this->ui->comp_MainInfoArea->dockAllWidgets(); this->ui->comp_InvisibleInfoArea->dockAllWidgets(); - // close info window - if (this->m_compInfoWindow) - { - this->m_compInfoWindow->close(); - this->m_compInfoWindow = nullptr; - } - // allow some other parts to react QApplication::processEvents(QEventLoop::AllEvents, 100); @@ -256,7 +248,7 @@ void SwiftGuiStd::ps_displayStatusMessageInGui(const CStatusMessage &statusMessa // display overlay for errors, but not for validation if (statusMessage.getSeverity() == CStatusMessage::SeverityError && ! statusMessage.getCategories().contains(CLogCategory::validation())) { - this->m_compInfoWindow->displayStatusMessage(statusMessage); + this->ui->fr_CentralFrameInside->showMessage(statusMessage); } } diff --git a/src/swiftgui_standard/swiftguistd.h b/src/swiftgui_standard/swiftguistd.h index 65d61c916..851dc72c2 100644 --- a/src/swiftgui_standard/swiftguistd.h +++ b/src/swiftgui_standard/swiftguistd.h @@ -21,7 +21,6 @@ #include "blackcore/actionbind.h" #include "blackcore/data/globalsetup.h" #include "blackgui/components/enableforruntime.h" -#include "blackgui/components/infowindowcomponent.h" #include "blackgui/components/maininfoareacomponent.h" #include "blackgui/transpondermodeselector.h" #include "blackgui/models/atcstationlistmodel.h" @@ -30,6 +29,7 @@ #include "blackgui/models/statusmessagelistmodel.h" #include "blackgui/enableforframelesswindow.h" #include "blackgui/managedstatusbar.h" +#include "blackgui/overlaymessagesframe.h" #include "blackmisc/network/textmessage.h" #include "blackmisc/loghandler.h" #include "blackmisc/identifiable.h" @@ -111,7 +111,6 @@ protected: private: QScopedPointer ui; bool m_init = false; - BlackGui::Components::CInfoWindowComponent *m_compInfoWindow = nullptr; //!< the info window (popup BlackGui::CManagedStatusBar m_statusBar; BlackMisc::CLogSubscriber m_logSubscriber { this, &SwiftGuiStd::ps_displayStatusMessageInGui }; BlackCore::CData m_setup {this}; //!< setup cache diff --git a/src/swiftgui_standard/swiftguistd.ui b/src/swiftgui_standard/swiftguistd.ui index 77f3d3e58..d0f1ebbd8 100644 --- a/src/swiftgui_standard/swiftguistd.ui +++ b/src/swiftgui_standard/swiftguistd.ui @@ -76,7 +76,7 @@ 2
- + 0 @@ -573,6 +573,12 @@
blackgui/components/invisibleinfoareacomponent.h
1 + + BlackGui::COverlayMessagesFrame + QFrame +
blackgui/overlaymessagesframe.h
+ 1 +
diff --git a/src/swiftgui_standard/swiftguistd_init.cpp b/src/swiftgui_standard/swiftguistd_init.cpp index e020f126c..acd398026 100644 --- a/src/swiftgui_standard/swiftguistd_init.cpp +++ b/src/swiftgui_standard/swiftguistd_init.cpp @@ -186,7 +186,7 @@ void SwiftGuiStd::initGuiSignals() connect(this->ui->menu_InternalsDisplayCachedFiles, &QAction::triggered, this, &SwiftGuiStd::ps_onMenuClicked); // command line / text messages - connect(this->ui->comp_MainInfoArea->getTextMessageComponent(), &CTextMessageComponent::displayInInfoWindow, this->m_compInfoWindow, &CInfoWindowComponent::display); + connect(this->ui->comp_MainInfoArea->getTextMessageComponent(), &CTextMessageComponent::displayInInfoWindow, this->ui->fr_CentralFrameInside, &COverlayMessagesFrame::showVariant); // settings (GUI component), styles connect(this->ui->comp_MainInfoArea->getSettingsComponent(), &CSettingsComponent::changedWindowsOpacity, this, &SwiftGuiStd::ps_onChangedWindowOpacity);