#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("至少选择一个Report"));
|
return;
|
}
|
|
m_strName = name;
|
m_strDesc = desc;
|
m_rptIds.swap(selected);
|
CDialogEx::OnOK();
|
}
|