Ref T203, overlay messages can be forced small and factors set

This commit is contained in:
Klaus Basan
2017-12-14 02:57:28 +01:00
parent a4d4bd7056
commit ceaf224a4f
4 changed files with 43 additions and 15 deletions

View File

@@ -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; }

View File

@@ -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::COverlayMessages> ui;
BlackMisc::CSettingReadOnly<BlackGui::Settings::TextMessageSettings> m_messageSettings { this };
QString m_header;
int m_lastConfirmation = QMessageBox::Cancel;
bool m_awaitingConfirmation = false;
bool m_hasKillButton = false;
std::function<void()> m_okLambda;
QTimer m_autoCloseTimer { this };
BlackMisc::CSettingReadOnly<Settings::TextMessageSettings> 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<void()> m_okLambda; //!< called when confirmed as "OK"
QList<std::function<void()>> m_pendingMessageCalls;
//! Stylesheet changed

View File

@@ -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<void ()> 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

View File

@@ -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