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