mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-01 05:26:45 +08:00
Ref T203, overlay messages can be forced small and factors set
This commit is contained in:
@@ -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; }
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user