mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-05 09:15:34 +08:00
refs #452 overlay messages (allows to display overlay messages in a widget)
* the overlay widget itself * a QFrame derived class allowing to display such widgets as overlay
This commit is contained in:
committed by
Mathew Sutcliffe
parent
2c91b3ada0
commit
61ace53989
124
src/blackgui/overlaymessages.cpp
Normal file
124
src/blackgui/overlaymessages.cpp
Normal file
@@ -0,0 +1,124 @@
|
||||
/* 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 "blackgui/overlaymessages.h"
|
||||
#include "blackgui/stylesheetutility.h"
|
||||
#include "ui_overlaymessages.h"
|
||||
#include <QKeyEvent>
|
||||
|
||||
using namespace BlackGui::Models;
|
||||
|
||||
namespace BlackGui
|
||||
{
|
||||
COverlayMessages::COverlayMessages(int w, int h, QWidget *parent) :
|
||||
QFrame(parent),
|
||||
ui(new Ui::COverlayMessages)
|
||||
{
|
||||
this->init(w, h);
|
||||
}
|
||||
|
||||
COverlayMessages::COverlayMessages(const QString &headerText, int w, int h, QWidget *parent) :
|
||||
QFrame(parent),
|
||||
ui(new Ui::COverlayMessages),
|
||||
m_header(headerText)
|
||||
{
|
||||
this->init(w, h);
|
||||
}
|
||||
|
||||
void COverlayMessages::init(int w, int h)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
resize(w, h);
|
||||
this->setAutoFillBackground(true);
|
||||
this->ui->tvp_StatusMessages->setMode(CStatusMessageListModel::Simplified);
|
||||
connect(this->ui->tb_Close, &QToolButton::released, this, &COverlayMessages::close);
|
||||
m_autoCloseTimer.setObjectName(objectName() + ":autoCloseTimer");
|
||||
connect(&m_autoCloseTimer, &QTimer::timeout, this, &COverlayMessages::close);
|
||||
}
|
||||
|
||||
void COverlayMessages::setHeader(const QString &header)
|
||||
{
|
||||
if (m_header.isEmpty())
|
||||
{
|
||||
ui->lbl_Header->setText(header);
|
||||
}
|
||||
else
|
||||
{
|
||||
ui->lbl_Header->setText(m_header);
|
||||
}
|
||||
}
|
||||
|
||||
COverlayMessages::~COverlayMessages()
|
||||
{}
|
||||
|
||||
void COverlayMessages::showMessages(const BlackMisc::CStatusMessageList &messages, int timeOutMs)
|
||||
{
|
||||
if (messages.isEmpty()) { return; }
|
||||
this->setModeToMessages();
|
||||
this->ui->tvp_StatusMessages->updateContainer(messages);
|
||||
this->display(timeOutMs);
|
||||
}
|
||||
|
||||
void COverlayMessages::showMessage(const BlackMisc::CStatusMessage &message, int timeOutMs)
|
||||
{
|
||||
if (message.isEmpty()) { return; }
|
||||
this->setModeToMessage();
|
||||
this->ui->form_StatusMessage->setValue(message);
|
||||
this->display(timeOutMs);
|
||||
}
|
||||
|
||||
void COverlayMessages::setModeToMessages()
|
||||
{
|
||||
this->ui->sw_StatusMessagesComponent->setCurrentWidget(this->ui->pg_StatusMessages);
|
||||
this->setHeader("Messages");
|
||||
}
|
||||
|
||||
void COverlayMessages::setModeToMessage()
|
||||
{
|
||||
this->ui->sw_StatusMessagesComponent->setCurrentWidget(this->ui->pg_StatusMessage);
|
||||
this->setHeader("Message");
|
||||
}
|
||||
|
||||
void COverlayMessages::keyPressEvent(QKeyEvent *event)
|
||||
{
|
||||
if (event->key() == Qt::Key_Escape)
|
||||
{
|
||||
this->close();
|
||||
event->setAccepted(true);
|
||||
}
|
||||
}
|
||||
|
||||
void COverlayMessages::close()
|
||||
{
|
||||
this->hide();
|
||||
this->setEnabled(false);
|
||||
}
|
||||
|
||||
void COverlayMessages::display(int timeOutMs)
|
||||
{
|
||||
this->show();
|
||||
this->setEnabled(true);
|
||||
if (timeOutMs > 250)
|
||||
{
|
||||
m_autoCloseTimer.start(timeOutMs);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_autoCloseTimer.stop();
|
||||
}
|
||||
}
|
||||
|
||||
void BlackGui::COverlayMessages::paintEvent(QPaintEvent *event)
|
||||
{
|
||||
bool s = CStyleSheetUtility::useStyleSheetInDerivedWidget(this, QStyle::PE_Widget);
|
||||
if (s) { return; }
|
||||
QFrame::paintEvent(event);
|
||||
}
|
||||
|
||||
} // ns
|
||||
Reference in New Issue
Block a user