mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-14 16:55:36 +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);
|
this->setDefaultConfirmationButton(QMessageBox::Cancel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
COverlayMessages::~COverlayMessages()
|
||||||
|
{}
|
||||||
|
|
||||||
COverlayMessages::COverlayMessages(const QString &headerText, int w, int h, QWidget *parent) :
|
COverlayMessages::COverlayMessages(const QString &headerText, int w, int h, QWidget *parent) :
|
||||||
QFrame(parent),
|
QFrame(parent),
|
||||||
ui(new Ui::COverlayMessages),
|
ui(new Ui::COverlayMessages),
|
||||||
@@ -123,7 +126,7 @@ namespace BlackGui
|
|||||||
|
|
||||||
bool COverlayMessages::useSmall() const
|
bool COverlayMessages::useSmall() const
|
||||||
{
|
{
|
||||||
return (this->width() < 400);
|
return (m_forceSmall || this->width() < 400 || this->height() < 300);
|
||||||
}
|
}
|
||||||
|
|
||||||
void COverlayMessages::showKill(bool show)
|
void COverlayMessages::showKill(bool show)
|
||||||
@@ -141,9 +144,6 @@ namespace BlackGui
|
|||||||
return s.popup(textMessage, ownAircraft);
|
return s.popup(textMessage, ownAircraft);
|
||||||
}
|
}
|
||||||
|
|
||||||
COverlayMessages::~COverlayMessages()
|
|
||||||
{}
|
|
||||||
|
|
||||||
void COverlayMessages::showOverlayMessages(const BlackMisc::CStatusMessageList &messages, bool appendOldMessages, int timeOutMs)
|
void COverlayMessages::showOverlayMessages(const BlackMisc::CStatusMessageList &messages, bool appendOldMessages, int timeOutMs)
|
||||||
{
|
{
|
||||||
if (messages.isEmpty()) { return; }
|
if (messages.isEmpty()) { return; }
|
||||||
|
|||||||
@@ -68,6 +68,9 @@ namespace BlackGui
|
|||||||
//! Display image
|
//! Display image
|
||||||
void setModeToImage();
|
void setModeToImage();
|
||||||
|
|
||||||
|
//! Force small
|
||||||
|
void setForceSmall(bool force) { m_forceSmall = force; }
|
||||||
|
|
||||||
//! Set header text
|
//! Set header text
|
||||||
void setHeaderText(const QString &header);
|
void setHeaderText(const QString &header);
|
||||||
|
|
||||||
@@ -132,13 +135,14 @@ namespace BlackGui
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
QScopedPointer<Ui::COverlayMessages> ui;
|
QScopedPointer<Ui::COverlayMessages> ui;
|
||||||
BlackMisc::CSettingReadOnly<BlackGui::Settings::TextMessageSettings> m_messageSettings { this };
|
BlackMisc::CSettingReadOnly<Settings::TextMessageSettings> m_messageSettings { this };
|
||||||
QString m_header;
|
QString m_header;
|
||||||
int m_lastConfirmation = QMessageBox::Cancel;
|
int m_lastConfirmation = QMessageBox::Cancel;
|
||||||
bool m_awaitingConfirmation = false;
|
bool m_awaitingConfirmation = false;
|
||||||
bool m_hasKillButton = false;
|
bool m_hasKillButton = false;
|
||||||
std::function<void()> m_okLambda;
|
bool m_forceSmall = false;
|
||||||
QTimer m_autoCloseTimer { this };
|
QTimer m_autoCloseTimer { this };
|
||||||
|
std::function<void()> m_okLambda; //!< called when confirmed as "OK"
|
||||||
QList<std::function<void()>> m_pendingMessageCalls;
|
QList<std::function<void()>> m_pendingMessageCalls;
|
||||||
|
|
||||||
//! Stylesheet changed
|
//! Stylesheet changed
|
||||||
|
|||||||
@@ -28,7 +28,8 @@ namespace BlackGui
|
|||||||
COverlayMessagesFrame::COverlayMessagesFrame(QWidget *parent) :
|
COverlayMessagesFrame::COverlayMessagesFrame(QWidget *parent) :
|
||||||
QFrame(parent)
|
QFrame(parent)
|
||||||
{
|
{
|
||||||
// void
|
const bool isFrameless = CGuiUtility::isMainWindowFrameless();
|
||||||
|
m_middleFactor = isFrameless ? 1.25 : 1.5; // 2 is middle in normal window
|
||||||
}
|
}
|
||||||
|
|
||||||
COverlayMessagesFrame::~COverlayMessagesFrame()
|
COverlayMessagesFrame::~COverlayMessagesFrame()
|
||||||
@@ -39,6 +40,13 @@ namespace BlackGui
|
|||||||
this->initInnerFrame();
|
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)
|
void COverlayMessagesFrame::showKillButton(bool killButton)
|
||||||
{
|
{
|
||||||
m_showKillButton = 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(
|
void COverlayMessagesFrame::showOverlayMessagesWithConfirmation(
|
||||||
const CStatusMessageList &messages, bool appendOldMessages,
|
const CStatusMessageList &messages, bool appendOldMessages,
|
||||||
const QString &confirmationMessage, std::function<void ()> okLambda,
|
const QString &confirmationMessage, std::function<void ()> okLambda,
|
||||||
@@ -153,17 +170,16 @@ namespace BlackGui
|
|||||||
m_overlayMessages = new COverlayMessages(inner.width(), inner.height(), this);
|
m_overlayMessages = new COverlayMessages(inner.width(), inner.height(), this);
|
||||||
m_overlayMessages->addShadow();
|
m_overlayMessages->addShadow();
|
||||||
m_overlayMessages->showKillButton(m_showKillButton);
|
m_overlayMessages->showKillButton(m_showKillButton);
|
||||||
|
m_overlayMessages->setForceSmall(m_forceSmallMsgs);
|
||||||
}
|
}
|
||||||
|
|
||||||
Q_ASSERT(m_overlayMessages);
|
Q_ASSERT(m_overlayMessages);
|
||||||
|
|
||||||
const bool isFrameless = CGuiUtility::isMainWindowFrameless();
|
|
||||||
const QPoint middle = this->geometry().center();
|
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 w = inner.width();
|
||||||
const int h = inner.height();
|
const int h = inner.height();
|
||||||
const int x = middle.x() - w / 2;
|
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);
|
m_overlayMessages->setGeometry(x, y, w, h);
|
||||||
}
|
}
|
||||||
} // ns
|
} // ns
|
||||||
|
|||||||
@@ -52,9 +52,15 @@ namespace BlackGui
|
|||||||
//! Show the inner frame
|
//! Show the inner frame
|
||||||
void showStatusMessagesFrame();
|
void showStatusMessagesFrame();
|
||||||
|
|
||||||
|
//! Set the size factors
|
||||||
|
void setOverlaySizeFactors(double widthFactor, double heightFactor, double middleFactor);
|
||||||
|
|
||||||
//! Show kill button
|
//! Show kill button
|
||||||
void showKillButton(bool killButton);
|
void showKillButton(bool killButton);
|
||||||
|
|
||||||
|
//! \copydoc COverlayMessages::setForceSmall
|
||||||
|
void setForceSmall(bool force);
|
||||||
|
|
||||||
//! \copydoc COverlayMessages::showOverlayMessagesWithConfirmation
|
//! \copydoc COverlayMessages::showOverlayMessagesWithConfirmation
|
||||||
void showOverlayMessagesWithConfirmation(
|
void showOverlayMessagesWithConfirmation(
|
||||||
const BlackMisc::CStatusMessageList &messages,
|
const BlackMisc::CStatusMessageList &messages,
|
||||||
@@ -103,8 +109,10 @@ namespace BlackGui
|
|||||||
void initInnerFrame();
|
void initInnerFrame();
|
||||||
|
|
||||||
bool m_showKillButton = false; //!< show kill button
|
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_widthFactor = 0.7; //!< inner frame x factor
|
||||||
double m_heightFactor = 0.6; //!< 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
|
} // ns
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user