1.新增“读即已读”逻辑:CServoDlg::AckAlarm(int alarmId)记录已读并刷新角标;弹窗在显示任一告警时自动调用,导航上一条/下一条都会标记已读,工具条数量会同步更新。
已修改3个文件
13 ■■■■■ 文件已修改
SourceCode/Bond/Servo/AlarmPopupDlg.cpp 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/ServoDlg.cpp 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/ServoDlg.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/AlarmPopupDlg.cpp
@@ -5,6 +5,7 @@
#include "Log.h"
#include "Common.h"
#include "HorizontalLine.h"
#include "ServoDlg.h"
IMPLEMENT_DYNAMIC(CAlarmPopupDlg, CDialogEx)
@@ -228,6 +229,11 @@
    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);
SourceCode/Bond/Servo/ServoDlg.cpp
@@ -417,6 +417,12 @@
    }
}
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)");
SourceCode/Bond/Servo/ServoDlg.h
@@ -38,6 +38,7 @@
public:
    void ShowTerminalText(const char* pszText, unsigned int duration = -1);
    void AckAlarm(int alarmId);
private:
    void InitRxWindows();