From 50f3078f4efb3718e921b76567bd33d6c3640a44 Mon Sep 17 00:00:00 2001
From: chenluhua1980 <Chenluhua@qq.com>
Date: 星期三, 21 一月 2026 22:20:31 +0800
Subject: [PATCH] 1.新增“读即已读”逻辑:CServoDlg::AckAlarm(int alarmId)记录已读并刷新角标;弹窗在显示任一告警时自动调用,导航上一条/下一条都会标记已读,工具条数量会同步更新。
---
SourceCode/Bond/Servo/AlarmPopupDlg.cpp | 6 ++++++
SourceCode/Bond/Servo/ServoDlg.cpp | 6 ++++++
SourceCode/Bond/Servo/ServoDlg.h | 1 +
3 files changed, 13 insertions(+), 0 deletions(-)
diff --git a/SourceCode/Bond/Servo/AlarmPopupDlg.cpp b/SourceCode/Bond/Servo/AlarmPopupDlg.cpp
index 0c64574..8f7b50a 100644
--- a/SourceCode/Bond/Servo/AlarmPopupDlg.cpp
+++ b/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);
diff --git a/SourceCode/Bond/Servo/ServoDlg.cpp b/SourceCode/Bond/Servo/ServoDlg.cpp
index 2a9f177..7ab2e44 100644
--- a/SourceCode/Bond/Servo/ServoDlg.cpp
+++ b/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)");
diff --git a/SourceCode/Bond/Servo/ServoDlg.h b/SourceCode/Bond/Servo/ServoDlg.h
index aa16b76..19e56fb 100644
--- a/SourceCode/Bond/Servo/ServoDlg.h
+++ b/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();
--
Gitblit v1.9.3