windows-nt/Source/XPSP1/NT/net/snmp/subagent/snmpevnt/evntwin/source.cpp
2020-09-26 16:20:57 +08:00

235 lines
5.7 KiB
C++

//******************************************************************
// source.cpp
//
// This is file contains the implementation of the CSource class.
//
// The CSource class acts as a container class for the message source,
// which is composed of the source tree control and the message list.
//
// Author: Larry A. French
//
// History:
// 20-Febuary-1996 Larry A. French
// Wrote it.
//
//
// Copyright (C) 1995, 1996 Microsoft Corporation. All rights reserved.
//******************************************************************
#include "stdafx.h"
#include "regkey.h"
#include "source.h"
#include "utils.h"
#include "globals.h"
#include "tcsource.h"
#include "lcsource.h"
#include "evntfind.h"
#include "trapdlg.h"
CSource::CSource()
{
m_pEventSource = NULL;
m_ptcSource = NULL;
m_plcSource = NULL;
m_pdlgEventTrap = NULL;
m_pdlgFind = NULL;
}
CSource::~CSource()
{
delete m_pdlgFind;
}
SCODE CSource::Create(CEventTrapDlg* pdlgEventTrap)
{
m_ptcSource = &pdlgEventTrap->m_tcSource;
m_ptcSource->m_pSource = this;
m_plcSource = &pdlgEventTrap->m_lcSource;
m_plcSource->m_pSource = this;
m_pdlgEventTrap = pdlgEventTrap;
return S_OK;
}
//***************************************************************************
// CSource::NotifyTcSelChanged
//
// This method returns an array of pointers to the messages currently selected
// in the CLcEvents list control. These pointers are owned by g_aEventLogs and
// the caller should not delete them.
//
// Parameters:
// None.
//
// Returns:
// Nothing.
//
//***************************************************************************
void CSource::GetSelectedMessages(CXMessageArray& aMessages)
{
m_plcSource->GetSelectedMessages(aMessages);
}
//***************************************************************************
// CSource::NotifyTcSelChanged
//
// This method is called when the selection changes in the event-source tree
// control (CTcSource). When the selection changes, the message list must
// be updated.
//
// Parameters:
// None.
//
// Returns:
// Nothing.
//
//***************************************************************************
void CSource::NotifyTcSelChanged()
{
m_pEventSource = m_ptcSource->GetSelectedEventSource();
m_plcSource->SetEventSource(m_pEventSource);
m_pdlgEventTrap->NotifySourceSelChanged();
}
//***************************************************************************
//
// CSource::CreateWindowEpilogue()
//
// This method is called after a window has been created for this list
// control. Final initialization is done here.
//
// Parameters:
// None.
//
// Returns:
// SCODE
// S_OK if the initialization was successful, otherwise E_FAIL.
//
// Status:
//
//***************************************************************************
SCODE CSource::CreateWindowEpilogue()
{
SCODE scTc = m_ptcSource->CreateWindowEpilogue();
SCODE scLc = m_plcSource->CreateWindowEpilogue();
if (FAILED(scTc) || FAILED(scLc)) {
return E_FAIL;
}
return S_OK;
}
//******************************************************************
// CSource::Find
//
// Find the specified event source. This is done by searching either
// the tree or the list control depending on the bSearchTree parameter.
//
// Parameters:
// BOOL bSearchTree
// TRUE if the tree should be searched, otherwise the list control
// is searched.
//
// CString& sText
// A string containing the text to search for.
//
// BOOL bWholeWord
// TRUE if this is a "whole word" search. False if it
// is OK to match a partial word.
//
// BOOL bMatchCase
// TRUE if a case-sensitive comparison should be used.
//
// Returns:
// BOOL
// TRUE if the string was found, FALSE otherwise. If the specified
// text is found, then the selection is set on the corresponding
// item, the item is scrolled into view and the focus
// is set on the item.
//
//******************************************************************
BOOL CSource::Find(BOOL bSearchTree, CString sText, BOOL bWholeWord, BOOL bMatchCase)
{
if (bSearchTree)
return m_ptcSource->Find(sText, bWholeWord, bMatchCase);
else
return m_plcSource->Find(sText, bWholeWord, bMatchCase);
}
//************************************************************************
// CSource::OnFind
//
// This method is called when the "Find" button in the CEventTrap dialog
// is clicked.
//
// Parameters:
// CWnd* pwndParent
// Pointer to the parent window of the "find" dialog. This happens
// to be the CEventTrapDialog.
//
// Returns:
// Nothing.
//
//*************************************************************************
void CSource::OnFind(CWnd* pwndParent)
{
if (m_pdlgFind == NULL) {
m_pdlgFind = new CEventFindDlg(pwndParent);
m_pdlgFind->Create(this, IDD_EVENTFINDDLG, pwndParent);
}
m_pdlgFind->BringWindowToTop();
}
//*************************************************************************
// CSource::NotifyTrappingChange
//
// This method is called when an event is added or removed from the
// event list. This CSource message source container must be notified
// so that the corresponding method can be marked as trapped or not
// trapped in the CLcSource list control.
//
// Parameters:
// CXEventSource* pEventSource
// Pointer to the event's event-source
//
// DWORD dwId
// The event's ID
//
// BOOL bIsTrapping
// TRUE if the event is being trapped, FALSE if not.,
//
// Returns:
// Nothing.
//*************************************************************************
void CSource::NotifyTrappingChange(CXEventSource* pEventSource, DWORD dwId, BOOL bIsTrapping)
{
if (pEventSource == m_pEventSource) {
m_plcSource->NotifyTrappingChange(dwId, bIsTrapping);
}
}