#ifndef CALARMPLUGIN_H #define CALARMPLUGIN_H #include #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 &msgs); int removeAlarm(const QList &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 m_vecRegionOptId; //告警操作权限责任区 std::vector m_vecLocationOptId;//告警操作权限车站 std::vector m_vecRegionDelId; //告警删除权限责任区 std::vector m_vecLocationDelId;//告警删除权限车站 //static int m_number; static QThread * m_pDataCollectThread; static QThread * m_pMediaPlayerThread; bool m_enableAi; }; #endif // CALARMPLUGIN_H