362 lines
12 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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 格式为: 告警等级_告警数量 ex1_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