// SInfodlg.cpp : implementation file // #include "stdafx.h" #include "evtview.h" #include "SInfodlg.h" #include "globals.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CScheduleInfo dialog CScheduleInfo::CScheduleInfo(CWnd* pParent /*=NULL*/) : CDialog(CScheduleInfo::IDD, pParent) { //{{AFX_DATA_INIT(CScheduleInfo) //}}AFX_DATA_INIT } void CScheduleInfo::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CScheduleInfo) DDX_Control(pDX, IDC_TIMEINFOLIST, m_ctrlTime); DDX_Control(pDX, IDC_EVENTINFOLIST, m_ctrlEvent); DDX_Control(pDX, IDC_ACTIONINFOLIST, m_ctrlAction); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CScheduleInfo, CDialog) //{{AFX_MSG_MAP(CScheduleInfo) ON_BN_CLICKED(IDC_ADDACTIONINFOBUTTON, OnAddactioninfobutton) ON_BN_CLICKED(IDC_ADDEVENTINFOBUTTON, OnAddeventinfobutton) ON_BN_CLICKED(IDC_ADDTIMEINFOBUTTON, OnAddtimeinfobutton) ON_BN_CLICKED(IDC_REMOVEACTIONINFOBUTTON, OnRemoveactioninfobutton) ON_BN_CLICKED(IDC_REMOVEEVENTINFOBUTTON, OnRemoveeventinfobutton) ON_BN_CLICKED(IDC_REMOVETIMEINFOBUTTON, OnRemovetimeinfobutton) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CScheduleInfo message handlers void CScheduleInfo::OnOK() { // TODO: Add extra validation here CDialog::OnOK(); } void CScheduleInfo::InsertEventInfo (SCHEDULE_EVENTINFO *pEventInfo) { int iCount ; PEVENTDEFINITION pEvtDef ; PDWORDTOSTRINGMAP pTypeMap ; pEvtDef = GetEventDefinition (pEventInfo->dwCatagory) ; pTypeMap = pEvtDef->pFilter ; m_ctrlEvent.InsertItem (iCount = m_ctrlEvent.GetItemCount(), pEvtDef->szCatagory) ; m_ctrlEvent.SetItemText (iCount, 1, pEventInfo->szSourceName) ; m_ctrlEvent.SetItemText (iCount, 2, pEventInfo->szObjectName) ; m_ctrlEvent.SetItemText (iCount, 3, GetType (pEventInfo->dwCatagory, pEventInfo->dwFilter)) ; // m_ctrlEvent.SetItemText (iCount, 4, GetType (aTypeMap, pEventInfo->dwSubFilter)) ; } void CScheduleInfo::InsertActionInfo (SCHEDULE_ACTIONINFO *pActionInfo) { int iCount ; m_ctrlAction.InsertItem (iCount = m_ctrlAction.GetItemCount(), GetType (aAction, pActionInfo->dwActionType)) ; m_ctrlAction.SetItemText (iCount, 1, pActionInfo->stParam) ; } void CScheduleInfo::InsertTimeInfo (SCHEDULE_TIMEINFO *pTimeInfo) { int iCount ; WCHAR szBuf [NAME_LEN] ; wsprintf (szBuf, L"%d", pTimeInfo->iYear) ; m_ctrlTime.InsertItem (iCount = m_ctrlTime.GetItemCount (), szBuf) ; wsprintf (szBuf, L"%d", pTimeInfo->iMonth) ; m_ctrlTime.SetItemText (iCount, 1, szBuf) ; wsprintf (szBuf, L"%d", pTimeInfo->iDay) ; m_ctrlTime.SetItemText (iCount, 2, szBuf) ; szBuf [0] = L'\0' ; if (pTimeInfo->iWeekDay & SCHEDULE_SUNDAY) wcscat (szBuf, L"Su ") ; if (pTimeInfo->iWeekDay & SCHEDULE_MONDAY) wcscat (szBuf, L"Mo ") ; if (pTimeInfo->iWeekDay & SCHEDULE_TUESDAY) wcscat (szBuf, L"Tu ") ; if (pTimeInfo->iWeekDay & SCHEDULE_WEDNESDAY) wcscat (szBuf, L"We ") ; if (pTimeInfo->iWeekDay & SCHEDULE_THURSDAY) wcscat (szBuf, L"Th ") ; if (pTimeInfo->iWeekDay & SCHEDULE_FRIDAY) wcscat (szBuf, L"Fr ") ; if (pTimeInfo->iWeekDay & SCHEDULE_SATURDAY) wcscat (szBuf, L"Sa ") ; m_ctrlTime.SetItemText (iCount, 3, szBuf) ; wsprintf (szBuf, L"%d", pTimeInfo->iHour) ; m_ctrlTime.SetItemText (iCount, 4, szBuf) ; wsprintf (szBuf, L"%d", pTimeInfo->iMin) ; m_ctrlTime.SetItemText (iCount, 5, szBuf) ; wsprintf (szBuf, L"%d", pTimeInfo->iSec) ; m_ctrlTime.SetItemText (iCount, 6, szBuf) ; } BOOL CScheduleInfo::OnInitDialog() { CDialog::OnInitDialog(); m_ctrlAction.InsertColumn (0, L"Type", LVCFMT_LEFT, 70, 0) ; m_ctrlAction.InsertColumn (1, L"Parameters", LVCFMT_LEFT, 90, 1) ; POSITION pos ; SCHEDULE_ACTIONINFO *pActionInfo ; pos = pSInfo->lstActionInfo.GetHeadPosition () ; while (pos) { pActionInfo = (SCHEDULE_ACTIONINFO *)pSInfo->lstActionInfo.GetNext (pos) ; InsertActionInfo (pActionInfo) ; } m_ctrlEvent.InsertColumn (0, L"Catagory", LVCFMT_LEFT, 100) ; m_ctrlEvent.InsertColumn (3, L"Source Name", LVCFMT_LEFT, 140) ; m_ctrlEvent.InsertColumn (0, L"ObjectName", LVCFMT_LEFT, 100) ; m_ctrlEvent.InsertColumn (1, L"Filter", LVCFMT_LEFT, 100) ; m_ctrlEvent.InsertColumn (2, L"SubFilter", LVCFMT_LEFT, 80) ; SCHEDULE_EVENTINFO *pEventInfo ; pos = pSInfo->lstEventInfo.GetHeadPosition () ; while (pos) { pEventInfo = (SCHEDULE_EVENTINFO *)pSInfo->lstEventInfo.GetNext (pos) ; InsertEventInfo (pEventInfo) ; } m_ctrlTime.InsertColumn (0, L"Year", LVCFMT_LEFT, 60) ; m_ctrlTime.InsertColumn (1, L"Month", LVCFMT_LEFT, 60) ; m_ctrlTime.InsertColumn (2, L"Day", LVCFMT_LEFT, 60) ; m_ctrlTime.InsertColumn (3, L"Week Day", LVCFMT_LEFT, 100) ; m_ctrlTime.InsertColumn (4, L"Hour", LVCFMT_LEFT, 60) ; m_ctrlTime.InsertColumn (5, L"Minute", LVCFMT_LEFT, 60) ; m_ctrlTime.InsertColumn (6, L"Second", LVCFMT_LEFT, 60) ; SCHEDULE_TIMEINFO *pTimeInfo ; pos = pSInfo->lstTimeInfo.GetHeadPosition () ; while (pos) { pTimeInfo = (SCHEDULE_TIMEINFO *)pSInfo->lstTimeInfo.GetNext (pos) ; InsertTimeInfo (pTimeInfo) ; } return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CScheduleInfo::OnAddactioninfobutton() { if (oAction.DoModal () == IDOK) { SCHEDULE_ACTIONINFO *pActionInfo = new SCHEDULE_ACTIONINFO ; *pActionInfo = oAction.sActionInfo ; pSInfo->lstActionInfo.AddTail (pActionInfo) ; InsertActionInfo (pActionInfo) ; } } void CScheduleInfo::OnAddeventinfobutton() { oEvent.dwCatagory = EVENT_CATAGORY_CLUSTER ; if (oEvent.DoModal () == IDOK) { SCHEDULE_EVENTINFO *pEventInfo = new SCHEDULE_EVENTINFO ; *pEventInfo = oEvent.sEventInfo ; pSInfo->lstEventInfo.AddTail (pEventInfo) ; InsertEventInfo (pEventInfo) ; } } void CScheduleInfo::OnAddtimeinfobutton() { if (oTime.DoModal () == IDOK) { SCHEDULE_TIMEINFO *pTimeInfo = new SCHEDULE_TIMEINFO ; *pTimeInfo = oTime.sTimeInfo ; pSInfo->lstTimeInfo.AddTail (pTimeInfo) ; InsertTimeInfo (pTimeInfo) ; } } void CScheduleInfo::OnRemoveactioninfobutton() { int iIndex = m_ctrlAction.GetNextItem (-1, LVNI_SELECTED) ; if (iIndex != -1) { POSITION pos = pSInfo->lstActionInfo.FindIndex (iIndex) ; pSInfo->lstActionInfo.RemoveAt (pos) ; m_ctrlAction.DeleteItem (iIndex) ; } } void CScheduleInfo::OnRemoveeventinfobutton() { int iIndex = m_ctrlEvent.GetNextItem (-1, LVNI_SELECTED) ; if (iIndex != -1) { POSITION pos = pSInfo->lstEventInfo.FindIndex (iIndex) ; pSInfo->lstEventInfo.RemoveAt (pos) ; m_ctrlEvent.DeleteItem (iIndex) ; } } void CScheduleInfo::OnRemovetimeinfobutton() { int iIndex = m_ctrlTime.GetNextItem (-1, LVNI_SELECTED) ; if (iIndex != -1) { POSITION pos = pSInfo->lstTimeInfo.FindIndex (iIndex) ; pSInfo->lstTimeInfo.RemoveAt (pos) ; m_ctrlTime.DeleteItem (iIndex) ; } } void CScheduleInfo::Terminate() { if (GetSafeHwnd()) { AfxMessageBox (L"The data being edited is scheduled so it closes the dialog") ; if (oTime.GetSafeHwnd ()) oTime.EndDialog (IDCANCEL) ; if (oEvent.GetSafeHwnd ()) oEvent.EndDialog (IDCANCEL) ; if (oAction.GetSafeHwnd ()) oAction.EndDialog (IDCANCEL) ; EndDialog (IDCANCEL) ; } }