feat:完成收到实时报警时的UI提示功能
This commit is contained in:
parent
68a9956bcb
commit
2a09f7656e
|
|
@ -108,6 +108,9 @@ public:
|
||||||
void firstPage();
|
void firstPage();
|
||||||
void lastPage();
|
void lastPage();
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void receivedNewAlarm(const EventData& even);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void onTimeoutSimulateData();
|
void onTimeoutSimulateData();
|
||||||
void onRealTimeEventReceived(const EventData& event);
|
void onRealTimeEventReceived(const EventData& event);
|
||||||
|
|
@ -180,6 +183,8 @@ public:
|
||||||
AlarmEventDataView(AlarmDataMode mode, QWidget* parent = nullptr);
|
AlarmEventDataView(AlarmDataMode mode, QWidget* parent = nullptr);
|
||||||
~AlarmEventDataView();
|
~AlarmEventDataView();
|
||||||
|
|
||||||
|
AlarmEventDataModel* model() const { return m_tableModel; }
|
||||||
|
|
||||||
//void setModelMode(AlarmDataMode, int maxRealTimeEvents = 5);
|
//void setModelMode(AlarmDataMode, int maxRealTimeEvents = 5);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
#define ALARMEVENTREALTIMEDOCK_H
|
#define ALARMEVENTREALTIMEDOCK_H
|
||||||
|
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
#include "alarmEventGlobal.h"
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
|
|
@ -14,6 +15,7 @@ class QPropertyAnimation;
|
||||||
class AlarmEventRealTimeDock : public QWidget
|
class AlarmEventRealTimeDock : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
Q_PROPERTY(float alertWidgetBGColorAlpha READ alertWidgetBGColorAlpha WRITE setAlertWidgetBGColorAlpha NOTIFY alertWidgetBGColorAlphaChanged)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
AlarmEventRealTimeDock(QWidget *parent = nullptr);
|
AlarmEventRealTimeDock(QWidget *parent = nullptr);
|
||||||
|
|
@ -21,21 +23,34 @@ public:
|
||||||
|
|
||||||
void updateGeometry();
|
void updateGeometry();
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void alertWidgetBGColorAlphaChanged(float value);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void onBtnClicked_open();
|
void onBtnClicked_open();
|
||||||
void onBtnClicked_close();
|
void onBtnClicked_close();
|
||||||
void onBtnClicked_confirmAll();
|
void onBtnClicked_confirmAll();
|
||||||
void onBtnClicked_checkAll();
|
void onBtnClicked_checkAll();
|
||||||
|
void onSIG_receivedNewAlarm(const EventData& event);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void expand();
|
void expand();
|
||||||
void collapse();
|
void collapse();
|
||||||
|
|
||||||
|
void startAlarmAlert();
|
||||||
|
void stopAlarmAlert();
|
||||||
|
float alertWidgetBGColorAlpha() {return m_alertWidgetBGColorAlpha;}
|
||||||
|
void setAlertWidgetBGColorAlpha(float value);
|
||||||
|
void updateAlertWidgetBGColorAlpha();
|
||||||
|
|
||||||
Ui::alarmEventRealTimeDock* ui;
|
Ui::alarmEventRealTimeDock* ui;
|
||||||
AlarmEventDataView* m_tableView;
|
AlarmEventDataView* m_tableView;
|
||||||
QPropertyAnimation* m_animationExpand;
|
QPropertyAnimation* m_animationExpand;
|
||||||
QPropertyAnimation* m_animationAlert;
|
QPropertyAnimation* m_animationAlert;
|
||||||
bool m_isInAnimation;
|
bool m_isInAnimationExpand;
|
||||||
|
bool m_isInAnimationAlert;
|
||||||
|
float m_alertWidgetBGColorAlpha;
|
||||||
|
QString m_alertWidgetStyleSheet;
|
||||||
QString m_curState;
|
QString m_curState;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -109,7 +109,7 @@ AlarmEventDataModel::AlarmEventDataModel(AlarmDataMode mode, QObject* parent)
|
||||||
//实时数据测试
|
//实时数据测试
|
||||||
m_simulatedDataTimer = new QTimer(this);
|
m_simulatedDataTimer = new QTimer(this);
|
||||||
connect(m_simulatedDataTimer, &QTimer::timeout, this, &AlarmEventDataModel::onTimeoutSimulateData);
|
connect(m_simulatedDataTimer, &QTimer::timeout, this, &AlarmEventDataModel::onTimeoutSimulateData);
|
||||||
m_simulatedDataTimer->start(2500);
|
m_simulatedDataTimer->start(3000);
|
||||||
}
|
}
|
||||||
|
|
||||||
AlarmEventDataModel::~AlarmEventDataModel()
|
AlarmEventDataModel::~AlarmEventDataModel()
|
||||||
|
|
@ -423,6 +423,8 @@ void AlarmEventDataModel::onRealTimeEventReceived(const EventData& event)
|
||||||
m_displayEvents.append(event);
|
m_displayEvents.append(event);
|
||||||
|
|
||||||
endResetModel();
|
endResetModel();
|
||||||
|
|
||||||
|
emit receivedNewAlarm(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AlarmEventDataModel::setCurrentPage(int page)
|
bool AlarmEventDataModel::setCurrentPage(int page)
|
||||||
|
|
|
||||||
|
|
@ -13,15 +13,31 @@ AlarmEventRealTimeDock::AlarmEventRealTimeDock(QWidget* parent)
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
setAttribute(Qt::WA_TranslucentBackground);
|
setAttribute(Qt::WA_TranslucentBackground);
|
||||||
|
|
||||||
m_isInAnimation = false;
|
m_isInAnimationExpand = false;
|
||||||
|
m_isInAnimationAlert = false;
|
||||||
m_curState = "collapse";
|
m_curState = "collapse";
|
||||||
|
|
||||||
m_tableView = new AlarmEventDataView(RealTime, this);
|
m_tableView = new AlarmEventDataView(RealTime, this);
|
||||||
ui->tableLayout->addWidget(m_tableView);
|
ui->tableLayout->addWidget(m_tableView);
|
||||||
|
connect(m_tableView->model(), &AlarmEventDataModel::receivedNewAlarm, this, &AlarmEventRealTimeDock::onSIG_receivedNewAlarm);
|
||||||
|
|
||||||
m_animationExpand = new QPropertyAnimation(this, "geometry");
|
m_animationExpand = new QPropertyAnimation(this, "geometry", this);
|
||||||
m_animationExpand->setDuration(120);
|
m_animationExpand->setDuration(120);
|
||||||
connect(m_animationExpand, &QPropertyAnimation::finished, this, [this]{m_isInAnimation = false;});
|
connect(m_animationExpand, &QPropertyAnimation::finished, this, [this]{m_isInAnimationExpand = false;});
|
||||||
|
|
||||||
|
m_animationAlert = new QPropertyAnimation(this, "alertWidgetBGColorAlpha", this);
|
||||||
|
m_animationAlert->setDuration(3000);
|
||||||
|
m_animationAlert->setStartValue(0.0);
|
||||||
|
m_animationAlert->setEndValue(1.0);
|
||||||
|
m_animationAlert->setLoopCount(-1);//无限循环
|
||||||
|
m_alertWidgetStyleSheet = QString(
|
||||||
|
"background-color: qradialgradient("
|
||||||
|
"spread:pad, "
|
||||||
|
"cx:0.5, cy:0.5, radius:0.5, "
|
||||||
|
"fx:0.5, fy:0.5, "
|
||||||
|
"stop:0 rgba(200, 0, 0, 0), "
|
||||||
|
"stop:1 rgba(255, 255, 255, 0));"
|
||||||
|
);
|
||||||
|
|
||||||
ui->btnClose->setVisible(false);
|
ui->btnClose->setVisible(false);
|
||||||
connect(ui->btnOpen, &QPushButton::clicked, this, &AlarmEventRealTimeDock::onBtnClicked_open);
|
connect(ui->btnOpen, &QPushButton::clicked, this, &AlarmEventRealTimeDock::onBtnClicked_open);
|
||||||
|
|
@ -45,7 +61,7 @@ AlarmEventRealTimeDock::~AlarmEventRealTimeDock()
|
||||||
|
|
||||||
void AlarmEventRealTimeDock::expand()
|
void AlarmEventRealTimeDock::expand()
|
||||||
{
|
{
|
||||||
if(m_isInAnimation || m_curState == "expand" )
|
if(m_isInAnimationExpand || m_curState == "expand" )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
QWidget* parent = this->parentWidget();
|
QWidget* parent = this->parentWidget();
|
||||||
|
|
@ -57,13 +73,15 @@ void AlarmEventRealTimeDock::expand()
|
||||||
m_animationExpand->setEndValue(endRect);
|
m_animationExpand->setEndValue(endRect);
|
||||||
m_animationExpand->start();
|
m_animationExpand->start();
|
||||||
m_curState = "expand";
|
m_curState = "expand";
|
||||||
m_isInAnimation = true;
|
m_isInAnimationExpand = true;
|
||||||
|
|
||||||
|
stopAlarmAlert();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AlarmEventRealTimeDock::collapse()
|
void AlarmEventRealTimeDock::collapse()
|
||||||
{
|
{
|
||||||
if(m_isInAnimation || m_curState == "collapse" )
|
if(m_isInAnimationExpand || m_curState == "collapse" )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
QWidget* parent = this->parentWidget();
|
QWidget* parent = this->parentWidget();
|
||||||
|
|
@ -75,7 +93,7 @@ void AlarmEventRealTimeDock::collapse()
|
||||||
m_animationExpand->setEndValue(endRect);
|
m_animationExpand->setEndValue(endRect);
|
||||||
m_animationExpand->start();
|
m_animationExpand->start();
|
||||||
m_curState = "collapse";
|
m_curState = "collapse";
|
||||||
m_isInAnimation = true;
|
m_isInAnimationExpand = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -95,6 +113,63 @@ void AlarmEventRealTimeDock::updateGeometry()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AlarmEventRealTimeDock::startAlarmAlert()
|
||||||
|
{
|
||||||
|
if(m_isInAnimationAlert || m_curState == "expand")
|
||||||
|
return;
|
||||||
|
|
||||||
|
m_animationAlert->start();
|
||||||
|
m_isInAnimationAlert = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AlarmEventRealTimeDock::stopAlarmAlert()
|
||||||
|
{
|
||||||
|
if(!m_isInAnimationAlert)
|
||||||
|
return;
|
||||||
|
|
||||||
|
m_animationAlert->stop();
|
||||||
|
m_isInAnimationAlert = false;
|
||||||
|
|
||||||
|
m_alertWidgetStyleSheet = QString(
|
||||||
|
"background-color: qradialgradient("
|
||||||
|
"spread:pad, "
|
||||||
|
"cx:0.5, cy:0.5, radius:0.5, "
|
||||||
|
"fx:0.5, fy:0.5, "
|
||||||
|
"stop:0 rgba(200, 0, 0, 0), "
|
||||||
|
"stop:1 rgba(255, 255, 255, 0));"
|
||||||
|
);
|
||||||
|
ui->alertWidget->setStyleSheet(m_alertWidgetStyleSheet);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AlarmEventRealTimeDock::setAlertWidgetBGColorAlpha(float value)
|
||||||
|
{
|
||||||
|
m_alertWidgetBGColorAlpha = value;
|
||||||
|
updateAlertWidgetBGColorAlpha();
|
||||||
|
}
|
||||||
|
|
||||||
|
void AlarmEventRealTimeDock::updateAlertWidgetBGColorAlpha()
|
||||||
|
{
|
||||||
|
// 计算透明度 (从0到200再到0)
|
||||||
|
int alpha = 200 * (1 - qAbs(2 * m_alertWidgetBGColorAlpha - 1));
|
||||||
|
if(alpha == 1) //1表示不透,具体原因为探究,先舍弃该值
|
||||||
|
return;
|
||||||
|
QString styleSheet = QString(
|
||||||
|
"background-color: qradialgradient("
|
||||||
|
"spread:pad, "
|
||||||
|
"cx:0.5, cy:0.5, radius:0.5, "
|
||||||
|
"fx:0.5, fy:0.5, "
|
||||||
|
"stop:0 rgba(200, 0, 0, %1), "
|
||||||
|
"stop:1 rgba(255, 255, 255, 0));"
|
||||||
|
).arg(alpha);
|
||||||
|
|
||||||
|
if(m_alertWidgetStyleSheet != styleSheet)
|
||||||
|
{
|
||||||
|
//qDebug() << alpha;
|
||||||
|
ui->alertWidget->setStyleSheet(styleSheet);
|
||||||
|
m_alertWidgetStyleSheet = styleSheet;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void AlarmEventRealTimeDock::onBtnClicked_open()
|
void AlarmEventRealTimeDock::onBtnClicked_open()
|
||||||
{
|
{
|
||||||
expand();
|
expand();
|
||||||
|
|
@ -110,9 +185,16 @@ void AlarmEventRealTimeDock::onBtnClicked_close()
|
||||||
}
|
}
|
||||||
|
|
||||||
void AlarmEventRealTimeDock::onBtnClicked_confirmAll()
|
void AlarmEventRealTimeDock::onBtnClicked_confirmAll()
|
||||||
{}
|
{
|
||||||
|
//stopAlarmAlert();
|
||||||
|
}
|
||||||
|
|
||||||
void AlarmEventRealTimeDock::onBtnClicked_checkAll()
|
void AlarmEventRealTimeDock::onBtnClicked_checkAll()
|
||||||
{}
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void AlarmEventRealTimeDock::onSIG_receivedNewAlarm(const EventData& event)
|
||||||
|
{
|
||||||
|
startAlarmAlert();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue