362 lines
12 KiB
C++
362 lines
12 KiB
C++
#ifndef CALARMPLUGIN_H
|
||
#define CALARMPLUGIN_H
|
||
|
||
#include <QWidget>
|
||
#include "CAlarmMsgInfo.h"
|
||
#include "CAlarmItemModel.h"
|
||
#include "CAlarmMediaPlayer.h"
|
||
#include "CAlarmSetMng.h"
|
||
#include "CAiAlarmTreeModel.h"
|
||
class CAlarmView;
|
||
class CAlarmForm;
|
||
class CAlarmWidget;
|
||
class CAlarmItemModel;
|
||
|
||
class CAlarmPlugin : public QWidget
|
||
{
|
||
Q_OBJECT
|
||
public:
|
||
CAlarmPlugin(QWidget *parent, bool editMode = false);
|
||
~CAlarmPlugin();
|
||
|
||
int confirmAlarm(const QList<AlarmMsgPtr> &msgs);
|
||
|
||
int removeAlarm(const QList<AlarmMsgPtr> &msgs);
|
||
|
||
public slots:
|
||
/*************************以下接口为公共接口*****************************/
|
||
/**
|
||
* @brief initialize 初始化模型
|
||
* @param mode E_Alarm_Dock-小窗(0) E_Alarm_Window-大窗(1) E_Alarm_Pop-弹窗(2)
|
||
*/
|
||
void initialize(int mode);
|
||
/**
|
||
* @brief login 用户登录(用户登录时调用)
|
||
*/
|
||
void login();
|
||
/**
|
||
* @brief logout 用户退出(用户退出时调用)
|
||
*/
|
||
void logout();
|
||
/**
|
||
* @brief switchFaultRecallState 事故追忆切换
|
||
* @param bFaultRecallState true-事故追忆 false-非事故追忆
|
||
*/
|
||
void switchFaultRecallState(bool bFaultRecallState);
|
||
/**
|
||
* @brief setAudioVolumeEnable 音量使能(仅设置一次即可)
|
||
*/
|
||
void setVolumeEnable(bool bEnable);
|
||
/**
|
||
* @brief setColumnWidth 设置列宽
|
||
* @param column 列
|
||
* @param width 宽
|
||
*/
|
||
void setColumnWidth(const int &column, const int &width);
|
||
/**
|
||
* @brief setColumnAlign 设置列对其方式
|
||
* @param column 列
|
||
* @param alignFlag 1-AlignLeft; 2-AlignRight; other-AlignHCenter
|
||
*/
|
||
void setColumnAlign(const int &column, const int &alignFlag);
|
||
/**
|
||
* @brief setEnableTrend 设置是否显示趋势图标 (程序默认显示)
|
||
* @param isNeed true-显示 false-不显示
|
||
*/
|
||
void setEnableTrend(bool isNeed =true);
|
||
/**
|
||
* @brief setEnableVideo 设置是否显示视频图标 (程序默认显示)
|
||
* @param isNeed true-显示 false-不显示
|
||
*/
|
||
void setEnableVideo(bool isNeed =true);
|
||
/**
|
||
* @brief setEnableWave 设置是否显示录波图标(程序默认显示)
|
||
* @param isNeed true-显示 false-不显示
|
||
*/
|
||
void setEnableWave(bool isNeed = true);
|
||
/**
|
||
* @brief setEnableLevel 设置是否显示等级图标 (程序默认不显示)
|
||
* @param isNeed true-显示 false-不显示
|
||
*/
|
||
void setEnableLevel(bool isNeed =true);
|
||
/**
|
||
* @brief getDevAlmInfo 获取设备告警信息
|
||
* @param device 设备
|
||
* @return QString 格式为: 告警等级_告警数量 ex:1_2 含义为 告警等级为1的告警数为2
|
||
*/
|
||
QStringList getDevAlmInfo(const QString device);
|
||
/**
|
||
* @brief getDevGroupAlmInfo 获取设备组下每个告警等级的设备数量
|
||
* @param deviceGroup 设备组
|
||
* @return QString 格式为: 告警等级_设备数量 ex:1_23 含义为 告警等级为1的设备数量为23
|
||
*/
|
||
QStringList getDevGroupAlmInfo(const QString deviceGroup);
|
||
/**
|
||
* @brief getLocAlmInfo 获取车站告警数量(优先级分组)
|
||
* @return QString 格式为: 车站id_告警等级_告警数量 ex:1_1_23 含义为 车站1告警等级为1的告警数量为23
|
||
*/
|
||
QStringList getLocAlmInfo();
|
||
/**
|
||
* @brief getLocNotConfirmAlmCount 获取位置的未确认告警条数
|
||
* @param loc 位置id
|
||
* @return 未确认告警条数
|
||
*/
|
||
int getLocNotConfirmAlmCount(int loc);
|
||
/**
|
||
* @brief getDevgNotConfirmAlmCount 获取设备组的未确认告警条数
|
||
* @param devg 设备组
|
||
* @return 未确认告警条数数
|
||
*/
|
||
int getDevgNotConfirmAlmCount(const QString & devg);
|
||
/***************************************************************************/
|
||
|
||
/****************以下接口仅针对E_Alarm_Window模式[告警大窗]有效********************/
|
||
/**
|
||
* @brief setEnableAccidentReview 设置告警大窗右键是否显示事故追忆
|
||
* @param isNeed isNeed true-显示 false-不显示 (程序默认显示)
|
||
*/
|
||
void setEnableAccidentReview(bool isNeed = true);
|
||
/**
|
||
* @brief setAccidentReviewPath 设置事故追忆画面选择对话框路径 相对于pic
|
||
* @param path
|
||
*/
|
||
void setAccidentReviewPath(const QString& path);
|
||
/**
|
||
* @brief setShowAiAlarmView 设置第一次是否显示智能告警(根据是否启用智能告警,一般不需要调用)
|
||
* @param show true-显示 false-不显示 (根据是否启用智能告警) 不配置智能告警调用显示也无效
|
||
*/
|
||
void setShowAiAlarmView(bool show = true);
|
||
/**
|
||
* @brief setHiddenLocation 设置是否在告警大窗顶部隐藏车站过滤
|
||
* @param hide true-隐藏 false-不隐藏(程序默认不隐藏)
|
||
*/
|
||
void setHiddenLocation(bool hide);
|
||
/**
|
||
* @brief setHiddenTime 设置是否在告警大窗顶部隐藏时间过滤
|
||
* @param hide true-隐藏 false-不隐藏(程序默认不隐藏)
|
||
*/
|
||
void setHiddenTime(bool hide);
|
||
/**
|
||
* @brief setHiddenStatus 设置是否在告警大窗顶部隐藏状态过滤
|
||
* @param hide true-隐藏 false-不隐藏(程序默认不隐藏)
|
||
*/
|
||
void setHiddenStatus(bool hide);
|
||
/**
|
||
* @brief setHiddenPriority 设置是否在告警大窗顶部隐藏优先级过滤
|
||
* @param hide true-隐藏 false-不隐藏(程序默认不隐藏)
|
||
*/
|
||
void setHiddenPriority(bool hide);
|
||
/**
|
||
* @brief setHiddenCheckBox 设置是否在告警大窗顶部隐藏智能告警勾选框
|
||
* @param hide true-隐藏 false-不隐藏(程序默认不隐藏)
|
||
*/
|
||
void setHiddenCheckBox(bool hide);
|
||
/**
|
||
* @brief setHiddenSetConfig 设置是否隐藏设置按钮
|
||
* @param hide true-隐藏 false-不隐藏(程序默认不隐藏)
|
||
*/
|
||
void setHiddenSetConfig(bool hide);
|
||
/**
|
||
* @brief setHiddenCloseButton 设置是否隐藏关闭按钮
|
||
* @param hide true-隐藏 false-不隐藏(程序默认不隐藏)
|
||
*/
|
||
void setHiddenCloseButton(bool hide);
|
||
|
||
/**
|
||
* @brief setHiddenInhiAlarmButton 设置是否隐藏禁止告警按钮
|
||
* @param hide true-隐藏 false-不隐藏(程序默认隐藏)
|
||
*/
|
||
void setHiddenInhiAlarmButton(bool hide);
|
||
|
||
/**
|
||
* @brief setHiddenSelectButton 设置是否隐藏全选,全不选按钮
|
||
* @param hide true-隐藏 false-不隐藏(程序默认隐藏)
|
||
*/
|
||
void setHiddenSelectButton(bool hide);
|
||
|
||
/**
|
||
* @brief setFormColumnVisible 设置列是否显示
|
||
* @param column 列
|
||
* @param visible true-显示 false-不显示
|
||
*/
|
||
void setFormColumnVisible(const int &column, const bool &visible = true);
|
||
/***************************************************************************/
|
||
|
||
/****************以下接口仅针对E_Alarm_Dock模式[底部告警栏]有效********************/
|
||
/**
|
||
* @brief confirmFirstAlarm 确认第一条告警
|
||
* @param index 确认第几条(最大值为2)
|
||
*/
|
||
void confirmFirstAlarm(int index= 0);
|
||
/**
|
||
* @brief setDockRowHeight 设置行高
|
||
* @param height 行高
|
||
*/
|
||
void setDockRowHeight(const int &height);
|
||
/**
|
||
* @brief setDockColumnVisible 设置列是否显示
|
||
* @param column 列
|
||
* @param visbile true-显示 false-不显示
|
||
*/
|
||
void setDockColumnVisible(const int &column, const bool &visbile = true);
|
||
/**
|
||
* @brief confirmAllPermAlarm 确认当前有权限的所有告警
|
||
* @param tips true-确认后提示确认总数 false-确认后不需要提示确认总数
|
||
* @return 确认总数
|
||
*/
|
||
int confirmAllPermAlarm(bool tips = true);
|
||
/***************************************************************************/
|
||
|
||
/****************以下接口仅针对E_Alarm_Pop模式[设备对话框]有效********************/
|
||
/**
|
||
* @brief setDevice 设置设备显示(已无效,保留只为兼容)
|
||
* @param device 设备
|
||
*/
|
||
void setDevice(const QString &device);
|
||
|
||
|
||
/**
|
||
* @brief setDeviceGroup 设置设备组显示
|
||
* @param deviceGroup 设备组
|
||
*/
|
||
void setDeviceGroup(const QString &deviceGroup);
|
||
|
||
/**
|
||
* @brief setPriorityFilter 设置优先级
|
||
* @param deviceGroup 优先级
|
||
*/
|
||
void setPriorityFilter(int PriorityFilter);
|
||
|
||
/**
|
||
* @brief setPointTag 设置点过滤(已无效,保留只为兼容)
|
||
* @param pointList 点集合
|
||
*/
|
||
void setPointTag(const QString &pointList);
|
||
/**
|
||
* @brief setColumnVisible 设置列是否显示
|
||
* @param column 列
|
||
* @param visible true-显示 false-不显示
|
||
*/
|
||
void setColumnVisible(const int &column, const bool &visible);
|
||
/**
|
||
* @brief currentSelectCount 获取选中的告警条数
|
||
* @return 告警条数
|
||
*/
|
||
int currentSelectCount();
|
||
/**
|
||
* @brief confirmCurrentAlarm 确认当前告警
|
||
*/
|
||
void confirmCurrentAlarm();
|
||
/**
|
||
* @brief confirmAllAlarm 确认所有告警
|
||
*/
|
||
void confirmAllAlarm();
|
||
/**
|
||
* @brief removeAllAlarm 删除所有告警
|
||
*/
|
||
void removeAllAlarm();
|
||
|
||
/***************************************************************************/
|
||
/**
|
||
* @brief recvAlarmNumChanged 告警数量变化
|
||
* @param total 总数
|
||
* @param unConfirm 未确认数
|
||
*/
|
||
void recvAlarmNumChanged(const int &total, const int &unConfirm);
|
||
|
||
signals:
|
||
/**
|
||
* @brief alarmNumChanged 告警数量变化
|
||
*/
|
||
void alarmNumChanged(const int &total, const int &unConfirm); //脚本更新数量
|
||
/**
|
||
* @brief alarmPush 告警推图
|
||
*/
|
||
void alarmPush(const QString &info);
|
||
/**
|
||
* @brief alarmPushClear 清空告警推图
|
||
*/
|
||
void alarmPushClear();
|
||
/**
|
||
* @brief alarmDockDoubleClicked 告警窗[Dock] 双击信号
|
||
*/
|
||
void alarmDockDoubleClicked();
|
||
/**
|
||
* @brief closeBtnClicked 告警窗[Window] 关闭按钮点击信号
|
||
*/
|
||
void closeBtnClicked();
|
||
/**
|
||
* @brief openVideoDialog 打开视频窗
|
||
* @param domainId 域id
|
||
* @param appId 应用id
|
||
* @param tag 点标签
|
||
* @param startTime 开始时间
|
||
* @param endTime 结束时间
|
||
*/
|
||
void openVideoDialog(int domainId,int appId,QString tag,quint64 startTime,quint64 endTime);
|
||
/**
|
||
* @brief openTrendDialog 打开趋势窗口
|
||
* @param time_stamp 时间戳
|
||
* @param tagList 标签集合
|
||
*/
|
||
void openTrendDialog(quint64 time_stamp,QStringList tagList);
|
||
/**
|
||
* @brief openAccidentReviewDialog 开始进行事故追忆
|
||
* @param starTime 开始时间
|
||
* @param keepTime 保持时间
|
||
*/
|
||
void openAccidentReviewDialog(quint64 starTime,quint64 keepTime,QString graph=QString());
|
||
/**
|
||
* @brief sigSwitchFaultRecallState 触发事故追忆(非hmi使用)
|
||
* @param bFaultRecallState true-事故追忆 false-非事故追忆
|
||
*/
|
||
void sigSwitchFaultRecallState(bool bFaultRecallState);
|
||
|
||
void sigLogin();
|
||
|
||
private slots:
|
||
/**
|
||
* @brief slotUpdateAlarmView 更新视图
|
||
*/
|
||
void slotUpdateAlarmView();
|
||
void slotUpdateAiAlarmView();
|
||
/**
|
||
* @brief slotUpdateAlarmOperateEnable 更新界面告警操作接口
|
||
* @param bEnable
|
||
*/
|
||
void slotUpdateAlarmOperateEnable(const bool &bEnable);
|
||
|
||
void slotAllViewReload();
|
||
|
||
private:
|
||
|
||
void loadConfig();
|
||
|
||
void reset();
|
||
|
||
void updateAlarmOperatePerm();
|
||
|
||
private:
|
||
E_Alarm_Mode m_mode;
|
||
bool m_bIsEditMode;
|
||
CAlarmForm * m_alarmForm;
|
||
CAlarmWidget * m_alarmWidget;
|
||
CAlarmView * m_alarmView;
|
||
CAlarmItemModel * m_pModel;
|
||
CAiAlarmTreeModel * m_pTreeModel;
|
||
int m_currentUsrId{};
|
||
std::string m_currentNodeName;
|
||
std::vector <int> m_vecRegionOptId; //告警操作权限责任区
|
||
std::vector <int> m_vecLocationOptId;//告警操作权限车站
|
||
|
||
std::vector <int> m_vecRegionDelId; //告警删除权限责任区
|
||
std::vector <int> m_vecLocationDelId;//告警删除权限车站
|
||
|
||
//static int m_number;
|
||
static QThread * m_pDataCollectThread;
|
||
static QThread * m_pMediaPlayerThread;
|
||
bool m_enableAi;
|
||
};
|
||
|
||
#endif // CALARMPLUGIN_H
|