From 829fe6c6bc33d53fda9c31fd45a37e1df87befff Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期五, 30 一月 2026 11:16:24 +0800
Subject: [PATCH] Merge branch 'clh' into liuyang

---
 SourceCode/Bond/Servo/CEventEditDlg.cpp |   94 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 94 insertions(+), 0 deletions(-)

diff --git a/SourceCode/Bond/Servo/CEventEditDlg.cpp b/SourceCode/Bond/Servo/CEventEditDlg.cpp
new file mode 100644
index 0000000..1148a59
--- /dev/null
+++ b/SourceCode/Bond/Servo/CEventEditDlg.cpp
@@ -0,0 +1,94 @@
+#include "stdafx.h"
+#include "CEventEditDlg.h"
+#include "Servo.h"
+#include "resource.h"
+#include <algorithm>
+
+IMPLEMENT_DYNAMIC(CEventEditDlg, CDialogEx)
+
+CEventEditDlg::CEventEditDlg(const CString& title, int eventId, const CString& name, const CString& desc, const std::vector<unsigned int>& rptIds, CWnd* pParent)
+	: CDialogEx(IDD_DIALOG_EVENT_EDIT, pParent)
+	, m_strTitle(title)
+	, m_eventId(eventId)
+	, m_strName(name)
+	, m_strDesc(desc)
+	, m_rptIds(rptIds)
+{
+}
+
+CEventEditDlg::~CEventEditDlg()
+{
+}
+
+void CEventEditDlg::DoDataExchange(CDataExchange* pDX)
+{
+	CDialogEx::DoDataExchange(pDX);
+	DDX_Control(pDX, IDC_EDIT_EVT_ID, m_editId);
+	DDX_Control(pDX, IDC_EDIT_EVT_NAME, m_editName);
+	DDX_Control(pDX, IDC_EDIT_EVT_DESC, m_editDesc);
+	DDX_Control(pDX, IDC_LIST_EVT_RPTS, m_listRpt);
+}
+
+BEGIN_MESSAGE_MAP(CEventEditDlg, CDialogEx)
+END_MESSAGE_MAP()
+
+BOOL CEventEditDlg::OnInitDialog()
+{
+	CDialogEx::OnInitDialog();
+	SetWindowText(m_strTitle);
+
+	CString strId;
+	strId.Format(_T("%d"), m_eventId);
+	m_editId.SetWindowText(strId);
+	m_editId.SetReadOnly(TRUE);
+	m_editName.SetWindowText(m_strName);
+	m_editDesc.SetWindowText(m_strDesc);
+
+	m_listRpt.SetExtendedStyle(m_listRpt.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_CHECKBOXES);
+	m_listRpt.InsertColumn(0, _T("RPT ID"), LVCFMT_LEFT, 120);
+	m_listRpt.InsertColumn(1, _T("VIDs"), LVCFMT_LEFT, 240);
+
+	auto& reports = theApp.m_model.m_hsmsPassive.getReports();
+	for (int i = 0; i < (int)reports.size(); ++i) {
+		auto rpt = reports[i];
+		if (rpt == nullptr) continue;
+		int idx = m_listRpt.InsertItem(m_listRpt.GetItemCount(), std::to_string(rpt->getReportId()).c_str());
+		m_listRpt.SetItemText(idx, 1, rpt->getVariablesIdsText().c_str());
+		m_listRpt.SetItemData(idx, (DWORD_PTR)rpt->getReportId());
+		if (std::find(m_rptIds.begin(), m_rptIds.end(), rpt->getReportId()) != m_rptIds.end()) {
+			m_listRpt.SetCheck(idx, TRUE);
+		}
+	}
+
+	return TRUE;
+}
+
+void CEventEditDlg::OnOK()
+{
+	CString name, desc;
+	m_editName.GetWindowText(name);
+	m_editDesc.GetWindowText(desc);
+	name.Trim();
+	desc.Trim();
+	if (name.IsEmpty()) {
+		AfxMessageBox(_T("鍚嶇О涓嶈兘涓虹┖"));
+		return;
+	}
+
+	std::vector<unsigned int> selected;
+	int count = m_listRpt.GetItemCount();
+	for (int i = 0; i < count; ++i) {
+		if (m_listRpt.GetCheck(i)) {
+			selected.push_back((unsigned int)m_listRpt.GetItemData(i));
+		}
+	}
+	if (selected.empty()) {
+		AfxMessageBox(_T("鑷冲皯閫夋嫨涓�涓猂eport"));
+		return;
+	}
+
+	m_strName = name;
+	m_strDesc = desc;
+	m_rptIds.swap(selected);
+	CDialogEx::OnOK();
+}

--
Gitblit v1.9.3