280 lines
7.2 KiB
C++
280 lines
7.2 KiB
C++
|
// 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) ;
|
||
|
}
|
||
|
}
|