| | |
| | | BEGIN_MESSAGE_MAP(CAlarmPopupDlg, CDialogEx) |
| | | ON_BN_CLICKED(IDC_POPUP_BTN_CLOSE, &CAlarmPopupDlg::OnBnClickedClose) |
| | | ON_BN_CLICKED(IDC_BUTTON_ALARM_OFF, &CAlarmPopupDlg::OnBnClickedAlarmOff) |
| | | ON_BN_CLICKED(IDC_BUTTON_PREV, &CAlarmPopupDlg::OnBnClickedPrev) |
| | | ON_BN_CLICKED(IDC_BUTTON_NEXT, &CAlarmPopupDlg::OnBnClickedNext) |
| | | ON_WM_CTLCOLOR() |
| | | ON_WM_DESTROY() |
| | | END_MESSAGE_MAP() |
| | |
| | | void CAlarmPopupDlg::ShowAlarmControls(bool bShow) |
| | | { |
| | | const int ids[] = { |
| | | IDC_BUTTON_PREV, IDC_BUTTON_NEXT, |
| | | IDC_LABEL_TITLE, IDC_ICON_ALARM, IDC_ICON_TITLE, |
| | | IDC_LABEL_LEVEL, IDC_LABEL_NAME, |
| | | IDC_LINE1, IDC_BUTTON_SOUND_OFF, IDC_BUTTON_ALARM_OFF, |
| | |
| | | |
| | | void CAlarmPopupDlg::RefreshContent() |
| | | { |
| | | auto actives = AlarmManager::getInstance().getActiveAlarms(); |
| | | if (!actives.empty()) { |
| | | m_activeAlarm = actives.front(); |
| | | m_activeAlarms = AlarmManager::getInstance().getActiveAlarms(); |
| | | m_activeIndex = 0; |
| | | |
| | | if (!m_activeAlarms.empty()) { |
| | | m_hasActive = true; |
| | | |
| | | AlarmManager& alarmManager = AlarmManager::getInstance(); |
| | | const AlarmInfo* info = alarmManager.getAlarmInfoByID(m_activeAlarm.nId); |
| | | |
| | | CString title, level, name, desc; |
| | | level.Format(_T("等级: %d"), m_activeAlarm.nSeverityLevel); |
| | | |
| | | if (info != nullptr && !info->strAlarmText.empty()) { |
| | | name = CString(info->strAlarmText.c_str()); |
| | | } |
| | | else { |
| | | name.Format(_T("ID:%d (%s)"), m_activeAlarm.nId, CString(m_activeAlarm.strDeviceName.c_str())); |
| | | } |
| | | |
| | | if (!m_activeAlarm.strDescription.empty()) { |
| | | desc = CString(m_activeAlarm.strDescription.c_str()); |
| | | } |
| | | else if (info != nullptr && !info->strDescription.empty()) { |
| | | desc = CString(info->strDescription.c_str()); |
| | | } |
| | | else { |
| | | desc = _T("暂无描述"); |
| | | } |
| | | |
| | | title.Format(_T("设备:%s 单元:%s"), |
| | | CString(m_activeAlarm.strDeviceName.c_str()), |
| | | CString(m_activeAlarm.strUnitName.c_str())); |
| | | |
| | | SetDlgItemText(IDC_LABEL_TITLE, title); |
| | | SetDlgItemText(IDC_LABEL_NAME, name); |
| | | SetDlgItemText(IDC_LABEL_LEVEL, level); |
| | | SetDlgItemText(IDC_LABEL_DESCRIPTION, desc); |
| | | DisplayActiveAt(m_activeIndex); |
| | | ShowAlarmControls(true); |
| | | ShowNoAlarmControls(false); |
| | | ShowWindow(SW_SHOW); |
| | | } |
| | | else { |
| | | m_hasActive = false; |
| | |
| | | RefreshContent(); |
| | | } |
| | | |
| | | void CAlarmPopupDlg::OnBnClickedPrev() |
| | | { |
| | | if (m_activeIndex > 0) { |
| | | --m_activeIndex; |
| | | DisplayActiveAt(m_activeIndex); |
| | | } |
| | | } |
| | | |
| | | void CAlarmPopupDlg::OnBnClickedNext() |
| | | { |
| | | if (m_activeIndex + 1 < static_cast<int>(m_activeAlarms.size())) { |
| | | ++m_activeIndex; |
| | | DisplayActiveAt(m_activeIndex); |
| | | } |
| | | } |
| | | |
| | | void CAlarmPopupDlg::DisplayActiveAt(int idx) |
| | | { |
| | | if (idx < 0 || idx >= static_cast<int>(m_activeAlarms.size())) return; |
| | | |
| | | m_activeAlarm = m_activeAlarms[idx]; |
| | | |
| | | AlarmManager& alarmManager = AlarmManager::getInstance(); |
| | | const AlarmInfo* info = alarmManager.getAlarmInfoByID(m_activeAlarm.nId); |
| | | |
| | | CString title, level, name, desc; |
| | | level.Format(_T("等级: %d"), m_activeAlarm.nSeverityLevel); |
| | | |
| | | if (info != nullptr && !info->strAlarmText.empty()) { |
| | | name = CString(info->strAlarmText.c_str()); |
| | | } |
| | | else { |
| | | name.Format(_T("ID:%d (%s)"), m_activeAlarm.nId, CString(m_activeAlarm.strDeviceName.c_str())); |
| | | } |
| | | |
| | | if (!m_activeAlarm.strDescription.empty()) { |
| | | desc = CString(m_activeAlarm.strDescription.c_str()); |
| | | } |
| | | else if (info != nullptr && !info->strDescription.empty()) { |
| | | desc = CString(info->strDescription.c_str()); |
| | | } |
| | | else { |
| | | desc = _T("暂无描述"); |
| | | } |
| | | |
| | | title.Format(_T("设备:%s 单元:%s"), |
| | | CString(m_activeAlarm.strDeviceName.c_str()), |
| | | CString(m_activeAlarm.strUnitName.c_str())); |
| | | |
| | | SetDlgItemText(IDC_LABEL_TITLE, title); |
| | | SetDlgItemText(IDC_LABEL_NAME, name); |
| | | SetDlgItemText(IDC_LABEL_LEVEL, level); |
| | | SetDlgItemText(IDC_LABEL_DESCRIPTION, desc); |
| | | |
| | | UpdateNavButtons(); |
| | | ShowWindow(SW_SHOW); |
| | | } |
| | | |
| | | void CAlarmPopupDlg::UpdateNavButtons() |
| | | { |
| | | auto* pPrev = GetDlgItem(IDC_BUTTON_PREV); |
| | | auto* pNext = GetDlgItem(IDC_BUTTON_NEXT); |
| | | if (pPrev) pPrev->EnableWindow(m_activeIndex > 0); |
| | | if (pNext) pNext->EnableWindow(m_activeIndex + 1 < static_cast<int>(m_activeAlarms.size())); |
| | | } |
| | | |
| | | HBRUSH CAlarmPopupDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) |
| | | { |
| | | HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); |
| | |
| | | afx_msg void OnDestroy(); |
| | | afx_msg void OnBnClickedClose(); |
| | | afx_msg void OnBnClickedAlarmOff(); |
| | | afx_msg void OnBnClickedPrev(); |
| | | afx_msg void OnBnClickedNext(); |
| | | |
| | | private: |
| | | bool m_hasActive; |
| | | AlarmData m_activeAlarm; |
| | | std::vector<AlarmData> m_activeAlarms; |
| | | int m_activeIndex = 0; |
| | | void SetButtonBackgroundColors(bool bMute); |
| | | void ShowNoAlarmControls(bool bShow); |
| | | void ShowAlarmControls(bool bShow); |
| | | void UpdateNavButtons(); |
| | | void DisplayActiveAt(int idx); |
| | | }; |
| | |
| | | BEGIN |
| | | PUSHBUTTON "<< 上一条",IDC_BUTTON_PREV,8,224,50,14,NOT WS_VISIBLE |
| | | PUSHBUTTON "下一条 >>",IDC_BUTTON_NEXT,62,224,50,14,NOT WS_VISIBLE |
| | | LTEXT "警告",IDC_LABEL_TITLE,27,6,67,17,SS_CENTERIMAGE | NOT WS_VISIBLE |
| | | LTEXT "警告",IDC_LABEL_TITLE,27,6,212,17,SS_CENTERIMAGE | NOT WS_VISIBLE |
| | | ICON "",IDC_ICON_ALARM,29,28,20,20 |
| | | ICON "",IDC_ICON_TITLE,7,8,20,20,NOT WS_VISIBLE |
| | | LTEXT "等级:--",IDC_LABEL_LEVEL,75,26,118,18 |
| | | LTEXT "等级:--",IDC_LABEL_LEVEL,75,26,161,18 |
| | | LTEXT "警告名称",IDC_LABEL_NAME,120,45,251,24 |
| | | PUSHBUTTON "",IDC_POPUP_BTN_CLOSE,354,0,24,22 |
| | | CONTROL "Custom1",IDC_LINE1,"BYHorizontalLine",WS_TABSTOP,7,78,364,8 |
| | |
| | | PUSHBUTTON "异常解除",IDC_BUTTON_ALARM_OFF,304,216,68,22,WS_DISABLED |
| | | CONTROL "Custom1",IDC_LINE2,"BYHorizontalLine",WS_TABSTOP,7,202,364,8 |
| | | LTEXT "警告描述:",IDC_LABEL_DESCRIPTION,18,98,329,89 |
| | | LTEXT "当前没有警告", IDC_LABEL_NO_ALARM, 18, 98, 329, 89, SS_CENTER | SS_CENTERIMAGE | NOT WS_VISIBLE |
| | | CTEXT "当前没有警告",IDC_LABEL_NO_ALARM,18,98,329,89,SS_CENTERIMAGE | NOT WS_VISIBLE |
| | | END |
| | | |
| | | |
| | |
| | | END |
| | | POPUP "测试(&T)" |
| | | BEGIN |
| | | MENUITEM "Test1", ID_MENU_TEST_ALARM_ON |
| | | MENUITEM "Test2", ID_MENU_TEST_ALARM_OFF |
| | | MENUITEM "Message &Set", ID_MENU_TEST_MESSAGE_SET |
| | | MENUITEM "Message &Clear", ID_MENU_TEST_MESSAGE_CLEAR |
| | | END |
| | |
| | | ON_UPDATE_COMMAND_UI(ID_MENU_FILE_SECSTEST, &CServoDlg::OnUpdateMenuFileSecsTest) |
| | | ON_COMMAND(ID_MENU_PROJECT_VARIABLE_LIST, &CServoDlg::OnMenuProjectVarialbleList) |
| | | ON_UPDATE_COMMAND_UI(ID_MENU_PROJECT_VARIABLE_LIST, &CServoDlg::OnUpdateMenuProjectVarialbleList) |
| | | ON_COMMAND(ID_MENU_TEST_ALARM_ON, &CServoDlg::OnMenuTestAlarmOn) |
| | | ON_UPDATE_COMMAND_UI(ID_MENU_TEST_ALARM_ON, &CServoDlg::OnUpdateMenuTestAlarmOn) |
| | | ON_COMMAND(ID_MENU_TEST_ALARM_OFF, &CServoDlg::OnMenuTestAlarmOff) |
| | | ON_UPDATE_COMMAND_UI(ID_MENU_TEST_ALARM_OFF, &CServoDlg::OnUpdateMenuTestAlarmOff) |
| | | ON_COMMAND(ID_MENU_TEST_MESSAGE_SET, &CServoDlg::OnMenuTestMessageSet) |
| | | ON_UPDATE_COMMAND_UI(ID_MENU_TEST_MESSAGE_SET, &CServoDlg::OnUpdateMenuTestMessageSet) |
| | | ON_COMMAND(ID_MENU_TEST_MESSAGE_CLEAR, &CServoDlg::OnMenuTestMessageClear) |
| | |
| | | pCmdUI->Enable(TRUE); |
| | | } |
| | | |
| | | void CServoDlg::OnMenuTestAlarmOn() |
| | | { |
| | | RaiseTestAlarm(); |
| | | } |
| | | |
| | | void CServoDlg::OnUpdateMenuTestAlarmOn(CCmdUI* pCmdUI) |
| | | { |
| | | pCmdUI->Enable(TRUE); |
| | | } |
| | | |
| | | void CServoDlg::OnMenuTestAlarmOff() |
| | | { |
| | | ClearTestAlarm(); |
| | | } |
| | | |
| | | void CServoDlg::OnUpdateMenuTestAlarmOff(CCmdUI* pCmdUI) |
| | | { |
| | | pCmdUI->Enable(TRUE); |
| | | } |
| | | |
| | | void CServoDlg::OnMenuTestMessageSet() |
| | | { |
| | | SERVO::CEquipment* pEquipment = m_pPanelMaster->GetActiveEquipment(); |
| | |
| | | |
| | | BOOL CServoDlg::PreTranslateMessage(MSG* pMsg) |
| | | { |
| | | if (pMsg->message == WM_KEYDOWN) { |
| | | const bool ctrl = (GetKeyState(VK_CONTROL) & 0x8000) != 0; |
| | | const bool alt = (GetKeyState(VK_MENU) & 0x8000) != 0; |
| | | if (ctrl && alt && pMsg->wParam == 'T') { |
| | | RaiseTestAlarm(); |
| | | return TRUE; |
| | | } |
| | | if (ctrl && alt && pMsg->wParam == 'Y') { |
| | | ClearTestAlarm(); |
| | | return TRUE; |
| | | } |
| | | } |
| | | return CDialogEx::PreTranslateMessage(pMsg); |
| | | } |
| | | |
| | |
| | | afx_msg void OnUpdateMenuFileExit(CCmdUI* pCmdUI); |
| | | afx_msg void OnMenuProjectVarialbleList(); |
| | | afx_msg void OnUpdateMenuProjectVarialbleList(CCmdUI* pCmdUI); |
| | | afx_msg void OnMenuTestAlarmOn(); |
| | | afx_msg void OnUpdateMenuTestAlarmOn(CCmdUI* pCmdUI); |
| | | afx_msg void OnMenuTestAlarmOff(); |
| | | afx_msg void OnUpdateMenuTestAlarmOff(CCmdUI* pCmdUI); |
| | | afx_msg void OnMenuTestMessageSet(); |
| | | afx_msg void OnUpdateMenuTestMessageSet(CCmdUI* pCmdUI); |
| | | afx_msg void OnMenuTestMessageClear(); |
| | |
| | | #define ID_MENU_TOOLS_CLIENT_LIST 32801 |
| | | #define ID_MENU_WND_TEST_PANEL 32802 |
| | | #define ID_MENU_WND_PRO_PANEL 32803 |
| | | #define ID_MENU_TEST_ALARM_ON 32804 |
| | | #define ID_MENU_TEST_ALARM_OFF 32805 |
| | | |
| | | // Next default values for new objects |
| | | // |
| | | #ifdef APSTUDIO_INVOKED |
| | | #ifndef APSTUDIO_READONLY_SYMBOLS |
| | | #define _APS_NEXT_RESOURCE_VALUE 192 |
| | | #define _APS_NEXT_COMMAND_VALUE 32804 |
| | | #define _APS_NEXT_COMMAND_VALUE 32806 |
| | | #define _APS_NEXT_CONTROL_VALUE 1273 |
| | | #define _APS_NEXT_SYMED_VALUE 101 |
| | | #endif |