1.新增“读即已读”逻辑:CServoDlg::AckAlarm(int alarmId)记录已读并刷新角标;弹窗在显示任一告警时自动调用,导航上一条/下一条都会标记已读,工具条数量会同步更新。
| | |
| | | #include "Log.h" |
| | | #include "Common.h" |
| | | #include "HorizontalLine.h" |
| | | #include "ServoDlg.h" |
| | | |
| | | |
| | | IMPLEMENT_DYNAMIC(CAlarmPopupDlg, CDialogEx) |
| | |
| | | |
| | | m_activeAlarm = m_activeAlarms[idx]; |
| | | |
| | | // 标记已读 |
| | | if (auto* pParent = dynamic_cast<CServoDlg*>(GetParent())) { |
| | | pParent->AckAlarm(m_activeAlarm.nId); |
| | | } |
| | | |
| | | AlarmManager& alarmManager = AlarmManager::getInstance(); |
| | | const AlarmInfo* info = alarmManager.getAlarmInfoByID(m_activeAlarm.nId); |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | void CServoDlg::AckAlarm(int alarmId) |
| | | { |
| | | m_ackAlarms.insert(alarmId); |
| | | RefreshAlarmBadge(); |
| | | } |
| | | |
| | | void CServoDlg::RaiseTestAlarm() |
| | | { |
| | | theApp.m_model.raiseSoftAlarm(ALID_SOFTWARE_TEST_ALARM, "Test Alarm (Ctrl+Alt+T)"); |
| | |
| | | |
| | | public: |
| | | void ShowTerminalText(const char* pszText, unsigned int duration = -1); |
| | | void AckAlarm(int alarmId); |
| | | |
| | | private: |
| | | void InitRxWindows(); |