diff --git a/src/blackgui/overlaymessages.cpp b/src/blackgui/overlaymessages.cpp index e6a16491b..01c6a3d0a 100644 --- a/src/blackgui/overlaymessages.cpp +++ b/src/blackgui/overlaymessages.cpp @@ -65,6 +65,9 @@ namespace BlackGui this->setDefaultConfirmationButton(QMessageBox::Cancel); } + COverlayMessages::~COverlayMessages() + {} + COverlayMessages::COverlayMessages(const QString &headerText, int w, int h, QWidget *parent) : QFrame(parent), ui(new Ui::COverlayMessages), @@ -123,7 +126,7 @@ namespace BlackGui bool COverlayMessages::useSmall() const { - return (this->width() < 400); + return (m_forceSmall || this->width() < 400 || this->height() < 300); } void COverlayMessages::showKill(bool show) @@ -141,9 +144,6 @@ namespace BlackGui return s.popup(textMessage, ownAircraft); } - COverlayMessages::~COverlayMessages() - {} - void COverlayMessages::showOverlayMessages(const BlackMisc::CStatusMessageList &messages, bool appendOldMessages, int timeOutMs) { if (messages.isEmpty()) { return; } diff --git a/src/blackgui/overlaymessages.h b/src/blackgui/overlaymessages.h index 60542b87f..b1784896b 100644 --- a/src/blackgui/overlaymessages.h +++ b/src/blackgui/overlaymessages.h @@ -68,6 +68,9 @@ namespace BlackGui //! Display image void setModeToImage(); + //! Force small + void setForceSmall(bool force) { m_forceSmall = force; } + //! Set header text void setHeaderText(const QString &header); @@ -132,13 +135,14 @@ namespace BlackGui private: QScopedPointer ui; - BlackMisc::CSettingReadOnly m_messageSettings { this }; - QString m_header; - int m_lastConfirmation = QMessageBox::Cancel; - bool m_awaitingConfirmation = false; - bool m_hasKillButton = false; - std::function m_okLambda; - QTimer m_autoCloseTimer { this }; + BlackMisc::CSettingReadOnly m_messageSettings { this }; + QString m_header; + int m_lastConfirmation = QMessageBox::Cancel; + bool m_awaitingConfirmation = false; + bool m_hasKillButton = false; + bool m_forceSmall = false; + QTimer m_autoCloseTimer { this }; + std::function m_okLambda; //!< called when confirmed as "OK" QList> m_pendingMessageCalls; //! Stylesheet changed diff --git a/src/blackgui/overlaymessagesframe.cpp b/src/blackgui/overlaymessagesframe.cpp index 152852241..01155e8d0 100644 --- a/src/blackgui/overlaymessagesframe.cpp +++ b/src/blackgui/overlaymessagesframe.cpp @@ -28,7 +28,8 @@ namespace BlackGui COverlayMessagesFrame::COverlayMessagesFrame(QWidget *parent) : QFrame(parent) { - // void + const bool isFrameless = CGuiUtility::isMainWindowFrameless(); + m_middleFactor = isFrameless ? 1.25 : 1.5; // 2 is middle in normal window } COverlayMessagesFrame::~COverlayMessagesFrame() @@ -39,6 +40,13 @@ namespace BlackGui this->initInnerFrame(); } + void COverlayMessagesFrame::setOverlaySizeFactors(double widthFactor, double heightFactor, double middleFactor) + { + m_widthFactor = widthFactor; + m_heightFactor = heightFactor; + m_middleFactor = middleFactor; + } + void COverlayMessagesFrame::showKillButton(bool killButton) { m_showKillButton = killButton; @@ -48,6 +56,15 @@ namespace BlackGui } } + void COverlayMessagesFrame::setForceSmall(bool force) + { + m_forceSmallMsgs = force; + if (m_overlayMessages) + { + m_overlayMessages->setForceSmall(force); + } + } + void COverlayMessagesFrame::showOverlayMessagesWithConfirmation( const CStatusMessageList &messages, bool appendOldMessages, const QString &confirmationMessage, std::function okLambda, @@ -153,17 +170,16 @@ namespace BlackGui m_overlayMessages = new COverlayMessages(inner.width(), inner.height(), this); m_overlayMessages->addShadow(); m_overlayMessages->showKillButton(m_showKillButton); + m_overlayMessages->setForceSmall(m_forceSmallMsgs); } Q_ASSERT(m_overlayMessages); - const bool isFrameless = CGuiUtility::isMainWindowFrameless(); const QPoint middle = this->geometry().center(); - const double yFactor = isFrameless ? 1.25 : 1.5; // 2 is middle in normal window const int w = inner.width(); const int h = inner.height(); const int x = middle.x() - w / 2; - const int y = middle.y() - h / yFactor; + const int y = middle.y() - h / m_middleFactor; m_overlayMessages->setGeometry(x, y, w, h); } } // ns diff --git a/src/blackgui/overlaymessagesframe.h b/src/blackgui/overlaymessagesframe.h index 6c9929c5e..2d7d3a2b7 100644 --- a/src/blackgui/overlaymessagesframe.h +++ b/src/blackgui/overlaymessagesframe.h @@ -52,9 +52,15 @@ namespace BlackGui //! Show the inner frame void showStatusMessagesFrame(); + //! Set the size factors + void setOverlaySizeFactors(double widthFactor, double heightFactor, double middleFactor); + //! Show kill button void showKillButton(bool killButton); + //! \copydoc COverlayMessages::setForceSmall + void setForceSmall(bool force); + //! \copydoc COverlayMessages::showOverlayMessagesWithConfirmation void showOverlayMessagesWithConfirmation( const BlackMisc::CStatusMessageList &messages, @@ -103,8 +109,10 @@ namespace BlackGui void initInnerFrame(); bool m_showKillButton = false; //!< show kill button + bool m_forceSmallMsgs = false; //!< force small messages double m_widthFactor = 0.7; //!< inner frame x factor double m_heightFactor = 0.6; //!< inner frame x factor + double m_middleFactor = 2; //!< 2 means middle, 1 means on top }; } // ns