You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
911 lines
22 KiB
911 lines
22 KiB
/**********************************************************************/
|
|
/** Microsoft Windows/NT **/
|
|
/** Copyright(c) Microsoft Corporation, 1997 - 1999 **/
|
|
/**********************************************************************/
|
|
|
|
/*
|
|
logdatapp.cpp
|
|
Log data properties implementation file
|
|
|
|
FILE HISTORY:
|
|
oct/11/2001 - vbhanu modified
|
|
*/
|
|
|
|
#include "stdafx.h"
|
|
#include "logdatapp.h"
|
|
#include "logdatanode.h"
|
|
#include "spdutil.h"
|
|
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CLogDataProperties holder
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
CLogDataProperties::CLogDataProperties(
|
|
ITFSNode *pNode,
|
|
IComponentData *pComponentData,
|
|
ITFSComponentData *pTFSCompData,
|
|
CLogDataInfo *pLogDataInfo,
|
|
ISpdInfo *pSpdInfo,
|
|
LPCTSTR pszSheetName,
|
|
LPDATAOBJECT pDataObject,
|
|
ITFSNodeMgr *pNodeMgr,
|
|
ITFSComponent *pComponent)
|
|
: CPropertyPageHolderBase(pNode, pComponentData, pszSheetName)
|
|
{
|
|
//ASSERT(pFolderNode == GetContainerNode());
|
|
|
|
m_bAutoDeletePages = FALSE; // we have the pages as embedded members
|
|
|
|
AddPageToList((CPropertyPageBase*) &m_pageGeneral);
|
|
|
|
Assert(pTFSCompData != NULL);
|
|
m_spTFSCompData.Set(pTFSCompData);
|
|
|
|
m_spSpdInfo.Set(pSpdInfo);
|
|
|
|
m_LogDataInfo = *pLogDataInfo;
|
|
|
|
m_bTheme = TRUE;
|
|
|
|
m_pDataObject = pDataObject;
|
|
m_pNodeMgr = pNodeMgr;
|
|
|
|
m_pComponent = pComponent;
|
|
m_pageGeneral.SetLogDataProperties(this);
|
|
}
|
|
|
|
CLogDataProperties::~CLogDataProperties()
|
|
{
|
|
RemovePageFromList((CPropertyPageBase*) &m_pageGeneral, FALSE);
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CLogDataGenProp property page
|
|
|
|
IMPLEMENT_DYNCREATE(CLogDataGenProp, CPropertyPageBase)
|
|
|
|
CLogDataGenProp::CLogDataGenProp()
|
|
: CPropertyPageBase(CLogDataGenProp::IDD)
|
|
{
|
|
//{{AFX_DATA_INIT(CLogDataGenProp)
|
|
// NOTE: the ClassWizard will add member initialization here
|
|
//}}AFX_DATA_INIT
|
|
|
|
m_hgCopy = NULL;
|
|
}
|
|
|
|
CLogDataGenProp::~CLogDataGenProp()
|
|
{
|
|
if (m_hgCopy != NULL)
|
|
GlobalFree(m_hgCopy);
|
|
}
|
|
|
|
void
|
|
CLogDataGenProp::DoDataExchange(
|
|
CDataExchange* pDX)
|
|
{
|
|
CPropertyPageBase::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CLogDataGenProp)
|
|
//DDX_Control(pDX, IDC_LIST_SPECIFIC, m_listSpecificFilters);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CLogDataGenProp, CPropertyPageBase)
|
|
//{{AFX_MSG_MAP(CLogDataGenProp)
|
|
ON_BN_CLICKED(IDC_BTN_MOVE_UP, OnButtonUp)
|
|
ON_BN_CLICKED(IDC_BTN_MOVE_DOWN, OnButtonDown)
|
|
ON_BN_CLICKED(IDC_BTN_COPY, OnButtonCopy)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CLogDataGenProp message handlers
|
|
|
|
BOOL
|
|
CLogDataGenProp::OnInitDialog()
|
|
{
|
|
AFX_MANAGE_STATE(AfxGetStaticModuleState());
|
|
|
|
CPropertyPageBase::OnInitDialog();
|
|
|
|
PopulateLogInfo();
|
|
|
|
SetDirty(FALSE);
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
|
|
HRESULT
|
|
CLogDataGenProp::SetLogDataProperties(
|
|
CLogDataProperties *pLogDataProp)
|
|
/*++
|
|
CLogDataGenProp::SetLogDataProperties - Sets member var to parent
|
|
|
|
Arguments:
|
|
pLogDataProp - A pointer to the parent class
|
|
|
|
Returns:
|
|
S_OK on success
|
|
--*/
|
|
{
|
|
HRESULT hr = S_OK;
|
|
|
|
if (NULL == pLogDataProp)
|
|
hr = HRESULT_FROM_WIN32(ERROR_INVALID_PARAMETER);
|
|
else
|
|
m_pLogDataProp = pLogDataProp;
|
|
|
|
return hr;
|
|
}
|
|
|
|
|
|
HRESULT
|
|
CLogDataGenProp::GetSelectedItemState(
|
|
int *pnSelIndex,
|
|
PUINT puiState,
|
|
IResultData *pResultData)
|
|
/*++
|
|
CLogDataGenProp::GetSelectedItemState - Gets the list item state for the
|
|
selected item
|
|
|
|
Arguments:
|
|
[out] puiState - holds the state of the item
|
|
[out] nIndex - Returns the index to the selected item
|
|
[in] pResultData - Pointer to result data to use for the search
|
|
|
|
Returns:
|
|
S_OK on success
|
|
--*/
|
|
{
|
|
HRESULT hr = S_OK;
|
|
RESULTDATAITEM rdi;
|
|
|
|
if ( (NULL == puiState) || (NULL == pResultData) )
|
|
{
|
|
hr = HRESULT_FROM_WIN32(ERROR_INVALID_PARAMETER);
|
|
goto Error;
|
|
}
|
|
|
|
memset(&rdi, 0, sizeof(RESULTDATAITEM));
|
|
|
|
rdi.mask = RDI_STATE | RDI_INDEX;
|
|
//search from the beginning
|
|
rdi.nIndex = -1;
|
|
//for a selected item
|
|
rdi.nState = LVIS_SELECTED;
|
|
|
|
//start the search
|
|
CORg(pResultData->GetNextItem(&rdi));
|
|
|
|
//copy out the state
|
|
*puiState = (UINT) rdi.nState;
|
|
*pnSelIndex = rdi.nIndex;
|
|
|
|
COM_PROTECT_ERROR_LABEL;
|
|
return hr;
|
|
}
|
|
|
|
|
|
#if 0
|
|
|
|
HRESULT
|
|
CLogDataGenProp::MoveSelection(
|
|
int nIndexTo
|
|
)
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
CLogDataGenProp::UpdateSelection:
|
|
Moves the selection to the specified index
|
|
|
|
Arguments:
|
|
|
|
nIndexTo - A valid virtual index to move to
|
|
|
|
Returns:
|
|
|
|
S_OK on success
|
|
|
|
--*/
|
|
{
|
|
int nIndexFrom = 0;
|
|
UINT uiState = 0;
|
|
HRESULT hr = S_OK;
|
|
SPIResultData spResultData;
|
|
|
|
CORg(m_pLogDataProp->m_pComponent->GetResultData(&spResultData));
|
|
CORg(GetSelectedItemState(&nIndexFrom, &uiState, spResultData));
|
|
CORg(spResultData->ModifyItemState(nIndexFrom, 0, 0,
|
|
LVIS_SELECTED | LVIS_FOCUSED));
|
|
CORg(spResultData->ModifyItemState(nIndexTo, 0, uiState, 0));
|
|
|
|
COM_PROTECT_ERROR_LABEL;
|
|
return hr;
|
|
}
|
|
|
|
void
|
|
CLogDataGenProp::OnButtonUp()
|
|
{
|
|
int nIndex = 0;
|
|
HRESULT hr = hrOK;
|
|
CLogDataInfo *pLogDataInfo = NULL;
|
|
CLogDataProperties *pLogDataProp = (CLogDataProperties *)GetHolder();
|
|
CDataObject *pDataObject = NULL;
|
|
SPIConsole spConsole;
|
|
int nCount = 0;
|
|
|
|
pDataObject = reinterpret_cast<CDataObject *>(pLogDataProp->m_pDataObject);
|
|
nIndex = pDataObject->GetVirtualIndex();
|
|
nIndex--;
|
|
|
|
pLogDataProp->GetLogDataInfo(&pLogDataInfo);
|
|
ASSERT(pLogDataInfo != NULL);
|
|
|
|
//
|
|
// Free up the space occupied by the previous log entry
|
|
//
|
|
|
|
pLogDataInfo->Deallocate();
|
|
|
|
CORg(pLogDataProp->m_spSpdInfo->GetSpecificLog(
|
|
nIndex,
|
|
pLogDataInfo));
|
|
|
|
//
|
|
// Refresh the contents
|
|
//
|
|
|
|
ShowSpecificInfo(pLogDataInfo);
|
|
pDataObject->SetVirtualIndex(nIndex);
|
|
MoveSelection(nIndex);
|
|
|
|
//
|
|
// Force the listbox to update its status
|
|
//
|
|
|
|
pLogDataProp->m_pNodeMgr->GetConsole(&spConsole);
|
|
nCount = pLogDataProp->m_spSpdInfo->GetLogDataCount();
|
|
spConsole->UpdateAllViews(pDataObject, nCount, IPFWMON_UPDATE_STATUS);
|
|
|
|
COM_PROTECT_ERROR_LABEL;
|
|
if (FAILED(hr))
|
|
{
|
|
switch(hr)
|
|
{
|
|
case HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND):
|
|
//
|
|
// Get the old log back
|
|
//
|
|
|
|
nIndex++;
|
|
hr = pLogDataProp->m_spSpdInfo->GetSpecificLog(
|
|
nIndex,
|
|
pLogDataInfo);
|
|
ASSERT(SUCCEEDED(hr));
|
|
|
|
//
|
|
// Display a warning
|
|
//
|
|
|
|
AfxMessageBox(IDS_LOGDATA_WARN_BOF, MB_OK | MB_ICONEXCLAMATION, 0);
|
|
break;
|
|
|
|
default:
|
|
//
|
|
// Unexpected error
|
|
//
|
|
|
|
ASSERT(FALSE);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
void
|
|
CLogDataGenProp::OnButtonDown()
|
|
{
|
|
int nIndex = 0;
|
|
HRESULT hr = hrOK;
|
|
CLogDataInfo *pLogDataInfo = NULL;
|
|
CLogDataProperties *pLogDataProp = (CLogDataProperties *)GetHolder();
|
|
CDataObject *pDataObject = NULL;
|
|
SPIConsole spConsole;
|
|
int nCount = 0;
|
|
|
|
pDataObject = reinterpret_cast<CDataObject *>(pLogDataProp->m_pDataObject);
|
|
nIndex = pDataObject->GetVirtualIndex();
|
|
nIndex++;
|
|
|
|
pLogDataProp->GetLogDataInfo(&pLogDataInfo);
|
|
ASSERT(pLogDataInfo != NULL);
|
|
|
|
//
|
|
// Free up the space occupied by the previous log entry
|
|
//
|
|
|
|
pLogDataInfo->Deallocate();
|
|
|
|
CORg(pLogDataProp->m_spSpdInfo->GetSpecificLog(
|
|
nIndex,
|
|
pLogDataInfo));
|
|
//
|
|
// Refresh the contents
|
|
//
|
|
|
|
ShowSpecificInfo(pLogDataInfo);
|
|
pDataObject->SetVirtualIndex(nIndex);
|
|
MoveSelection(nIndex);
|
|
|
|
//
|
|
// Force the listbox to update its status
|
|
//
|
|
|
|
pLogDataProp->m_pNodeMgr->GetConsole(&spConsole);
|
|
nCount = pLogDataProp->m_spSpdInfo->GetLogDataCount();
|
|
spConsole->UpdateAllViews(pDataObject, nCount, IPFWMON_UPDATE_STATUS);
|
|
|
|
COM_PROTECT_ERROR_LABEL;
|
|
if (FAILED(hr))
|
|
{
|
|
switch(hr)
|
|
{
|
|
case HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND):
|
|
//
|
|
// Get the old log back
|
|
//
|
|
|
|
nIndex--;
|
|
hr = pLogDataProp->m_spSpdInfo->GetSpecificLog(
|
|
nIndex,
|
|
pLogDataInfo);
|
|
ASSERT(SUCCEEDED(hr));
|
|
|
|
//
|
|
// Display a warning
|
|
//
|
|
AfxMessageBox(IDS_LOGDATA_WARN_EOF, MB_OK | MB_ICONEXCLAMATION, 0);
|
|
break;
|
|
|
|
default:
|
|
//
|
|
// Unexpected error
|
|
//
|
|
ASSERT(FALSE);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
#endif //0
|
|
|
|
|
|
HRESULT
|
|
CLogDataGenProp::MoveSelection(
|
|
CLogDataProperties *pLogDataProp,
|
|
CDataObject *pDataObj,
|
|
int nIndexTo
|
|
)
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
CLogDataGenProp::MoveSelection:
|
|
Moves the selection to the specified index
|
|
|
|
Arguments:
|
|
|
|
nIndexTo - A valid virtual index to move to
|
|
|
|
Returns:
|
|
|
|
S_OK on success
|
|
HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) if the index could not be located
|
|
|
|
--*/
|
|
{
|
|
HRESULT hr = S_OK;
|
|
HRESULT hrErr = S_OK;
|
|
int nIndexFrom = 0;
|
|
int nCount = 0;
|
|
UINT uiState = 0;
|
|
CLogDataInfo *pLogDataInfo = NULL;
|
|
SPIConsole spConsole;
|
|
SPIResultData spResultData;
|
|
|
|
//
|
|
// Blow the old record away
|
|
//
|
|
pLogDataProp->GetLogDataInfo(&pLogDataInfo);
|
|
|
|
ASSERT(pLogDataInfo != NULL);
|
|
|
|
pLogDataInfo->Deallocate();
|
|
|
|
//
|
|
// Attempt to get the new record at nIndexTo
|
|
//
|
|
|
|
CORg(pLogDataProp->m_spSpdInfo->GetSpecificLog(
|
|
nIndexTo,
|
|
pLogDataInfo));
|
|
|
|
//
|
|
// Refresh the contents and the selection
|
|
//
|
|
|
|
ShowSpecificInfo(pLogDataInfo);
|
|
pDataObj->SetVirtualIndex(nIndexTo);
|
|
|
|
CORg(m_pLogDataProp->m_pComponent->GetResultData(&spResultData));
|
|
CORg(GetSelectedItemState(&nIndexFrom, &uiState, spResultData));
|
|
CORg(spResultData->ModifyItemState(nIndexFrom, 0, 0,
|
|
LVIS_SELECTED | LVIS_FOCUSED));
|
|
CORg(spResultData->ModifyItemState(nIndexTo, 0, uiState, 0));
|
|
|
|
//
|
|
// Force the listbox to update its status
|
|
//
|
|
|
|
pLogDataProp->m_pNodeMgr->GetConsole(&spConsole);
|
|
nCount = pLogDataProp->m_spSpdInfo->GetLogDataCount();
|
|
spConsole->UpdateAllViews(
|
|
pDataObj,
|
|
nCount,
|
|
IPFWMON_UPDATE_STATUS);
|
|
|
|
COM_PROTECT_ERROR_LABEL;
|
|
if (FAILED(hr))
|
|
{
|
|
switch(hr)
|
|
{
|
|
case HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND):
|
|
//
|
|
// Get the old log back, we have not yet updated the display or
|
|
// the virtual index.
|
|
//
|
|
|
|
hrErr = pLogDataProp->m_spSpdInfo->GetSpecificLog(
|
|
nIndexFrom,
|
|
pLogDataInfo);
|
|
ASSERT(SUCCEEDED(hrErr));
|
|
break;
|
|
|
|
default:
|
|
//
|
|
// Should never happen.
|
|
//
|
|
|
|
ASSERT(FALSE);
|
|
break;
|
|
}
|
|
}
|
|
|
|
return hr;
|
|
}
|
|
|
|
|
|
void
|
|
CLogDataGenProp::OnButtonUp()
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
CLogDataGenProp::OnButtonUp:
|
|
Moves the selection up by a single record
|
|
|
|
Arguments:
|
|
|
|
None.
|
|
|
|
Returns:
|
|
|
|
Nothing.
|
|
|
|
--*/
|
|
{
|
|
HRESULT hr = S_OK;
|
|
int nIndex = 0;
|
|
CLogDataProperties *pLogDataProp = NULL;
|
|
CDataObject *pDataObj = NULL;
|
|
|
|
//
|
|
// Get the parent class, data object and the new index
|
|
//
|
|
|
|
pLogDataProp = (CLogDataProperties *)GetHolder();
|
|
pDataObj = reinterpret_cast<CDataObject *>(pLogDataProp->m_pDataObject);
|
|
|
|
nIndex = pDataObj->GetVirtualIndex();
|
|
nIndex--;
|
|
|
|
//
|
|
// Try moving the selection up
|
|
//
|
|
|
|
CORg(MoveSelection(
|
|
pLogDataProp,
|
|
pDataObj,
|
|
nIndex));
|
|
|
|
COM_PROTECT_ERROR_LABEL;
|
|
if (FAILED(hr))
|
|
{
|
|
switch(hr)
|
|
{
|
|
case HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND):
|
|
//
|
|
// Display a warning, indicating BOF as this is the only possible
|
|
// reason for this error.
|
|
//
|
|
|
|
AfxMessageBox(
|
|
IDS_LOGDATA_WARN_BOF,
|
|
MB_OK | MB_ICONEXCLAMATION,
|
|
0);
|
|
break;
|
|
|
|
default:
|
|
//
|
|
// Unexpected error
|
|
//
|
|
|
|
ASSERT(FALSE);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
void
|
|
CLogDataGenProp::OnButtonDown()
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
CLogDataGenProp::OnButtonDown:
|
|
Moves the selection down by a single record
|
|
|
|
Arguments:
|
|
|
|
None.
|
|
|
|
Returns:
|
|
|
|
Nothing.
|
|
|
|
--*/
|
|
{
|
|
HRESULT hr = S_OK;
|
|
int nIndex = 0;
|
|
CLogDataProperties *pLogDataProp = NULL;
|
|
CDataObject *pDataObj = NULL;
|
|
|
|
//
|
|
// Get the parent class, data object and the new index
|
|
//
|
|
|
|
pLogDataProp = (CLogDataProperties *)GetHolder();
|
|
pDataObj = reinterpret_cast<CDataObject *>(pLogDataProp->m_pDataObject);
|
|
|
|
nIndex = pDataObj->GetVirtualIndex();
|
|
nIndex++;
|
|
|
|
//
|
|
// Try moving the selection down
|
|
//
|
|
|
|
CORg(MoveSelection(
|
|
pLogDataProp,
|
|
pDataObj,
|
|
nIndex));
|
|
|
|
COM_PROTECT_ERROR_LABEL;
|
|
if (FAILED(hr))
|
|
{
|
|
switch(hr)
|
|
{
|
|
case HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND):
|
|
//
|
|
// Display a warning, indicating BOF as this is the only possible
|
|
// reason for this error.
|
|
//
|
|
|
|
AfxMessageBox(
|
|
IDS_LOGDATA_WARN_EOF,
|
|
MB_OK | MB_ICONEXCLAMATION,
|
|
0);
|
|
break;
|
|
|
|
default:
|
|
//
|
|
// Unexpected error
|
|
//
|
|
|
|
ASSERT(FALSE);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
#if 0
|
|
void
|
|
CLogDataGenProp::OnSelectionJump(
|
|
int nIndex
|
|
)
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
CLogDataGenProp::OnSelectionJump:
|
|
Changes the selection to a specific index
|
|
|
|
Arguments:
|
|
|
|
nIndex - The index to jump to
|
|
|
|
Returns:
|
|
|
|
Nothing.
|
|
|
|
--*/
|
|
{
|
|
HRESULT hr = S_OK;
|
|
CLogDataProperties *pLogDataProp = NULL;
|
|
CDataObject *pDataObj = NULL;
|
|
|
|
//
|
|
// Get the parent class, data object and the new index
|
|
//
|
|
|
|
pLogDataProp = (CLogDataProperties *)GetHolder();
|
|
pDataObj = reinterpret_cast<CDataObject *>(pLogDataProp->m_pDataObject);
|
|
|
|
//
|
|
// Try moving the selection
|
|
//
|
|
|
|
CORg(MoveSelection(
|
|
pLogDataProp,
|
|
pDataObj,
|
|
nIndex));
|
|
|
|
COM_PROTECT_ERROR_LABEL;
|
|
ASSERT(SUCCEDED(hr));
|
|
}
|
|
#endif //0
|
|
|
|
|
|
#define PRECOMPUTED_STATIC_SIZE 200
|
|
void
|
|
CLogDataGenProp::OnButtonCopy()
|
|
{
|
|
DWORD dwErr = ERROR_SUCCESS;
|
|
int nNumBytes = 0;
|
|
BOOL bClipOpened = FALSE;
|
|
BOOL bErr = FALSE;
|
|
LPTSTR lptstrCopy = NULL;
|
|
DWORD dwSize = PRECOMPUTED_STATIC_SIZE * sizeof(TCHAR);
|
|
CString csTemp;
|
|
CLogDataInfo *pLogDataInfo = NULL;
|
|
CLogDataProperties *pLogDataProp = (CLogDataProperties *)GetHolder();
|
|
HANDLE hData = NULL;
|
|
|
|
Assert(pLogDataProp);
|
|
pLogDataProp->GetLogDataInfo(&pLogDataInfo);
|
|
|
|
dwSize += pLogDataInfo->m_wzcDbRecord.message.dwDataLen +
|
|
pLogDataInfo->m_wzcDbRecord.ssid.dwDataLen +
|
|
pLogDataInfo->m_wzcDbRecord.context.dwDataLen;
|
|
|
|
//open the clipboard
|
|
bClipOpened = ::OpenClipboard(NULL);
|
|
if (FALSE == bClipOpened)
|
|
goto exit;
|
|
|
|
bErr = EmptyClipboard();
|
|
if (FALSE == bErr)
|
|
{
|
|
dwErr = GetLastError();
|
|
goto exit;
|
|
}
|
|
|
|
//copy
|
|
if (m_hgCopy != NULL)
|
|
GlobalFree(m_hgCopy);
|
|
|
|
m_hgCopy = GlobalAlloc(GMEM_MOVEABLE, dwSize);
|
|
if (NULL == m_hgCopy)
|
|
goto exit;
|
|
|
|
lptstrCopy = (LPTSTR) GlobalLock(m_hgCopy);
|
|
|
|
ComponentIDToString(pLogDataInfo->m_wzcDbRecord.componentid, csTemp);
|
|
nNumBytes = _stprintf(lptstrCopy, _T("Source: %s\r\n"), (LPCTSTR)csTemp);
|
|
lptstrCopy += nNumBytes;
|
|
|
|
CategoryToString(pLogDataInfo->m_wzcDbRecord.category, csTemp);
|
|
nNumBytes = _stprintf(lptstrCopy, _T("Type: %s\r\n"),(LPCTSTR)csTemp);
|
|
lptstrCopy += nNumBytes;
|
|
|
|
FileTimeToString(pLogDataInfo->m_wzcDbRecord.timestamp, &csTemp);
|
|
nNumBytes = _stprintf(lptstrCopy, _T("Timestamp: %s\r\n"),(LPCTSTR)csTemp);
|
|
lptstrCopy += nNumBytes;
|
|
|
|
nNumBytes = _stprintf(lptstrCopy, _T("Description: %s\r\n"),
|
|
(LPCTSTR) pLogDataInfo->m_wzcDbRecord.message.pData);
|
|
lptstrCopy += nNumBytes;
|
|
|
|
nNumBytes = _stprintf(lptstrCopy, _T("Local MAC: %s\r\n"),
|
|
(LPCTSTR)pLogDataInfo->m_wzcDbRecord.localmac.pData);
|
|
lptstrCopy += nNumBytes;
|
|
|
|
nNumBytes = _stprintf(lptstrCopy, _T("Remote MAC: %s\r\n"),
|
|
(LPCTSTR)pLogDataInfo->m_wzcDbRecord.remotemac.pData);
|
|
lptstrCopy += nNumBytes;
|
|
|
|
nNumBytes = _stprintf(lptstrCopy, _T("SSID: "));
|
|
lptstrCopy += nNumBytes;
|
|
|
|
CopyAndStripNULL(lptstrCopy,
|
|
(LPTSTR)pLogDataInfo->m_wzcDbRecord.ssid.pData,
|
|
pLogDataInfo->m_wzcDbRecord.ssid.dwDataLen);
|
|
lptstrCopy += pLogDataInfo->m_wzcDbRecord.ssid.dwDataLen/sizeof(TCHAR) - 1;
|
|
nNumBytes = _stprintf(lptstrCopy, _T("\r\n"));
|
|
lptstrCopy += nNumBytes;
|
|
|
|
nNumBytes = _stprintf(lptstrCopy, _T("Details: %s\r\n"),
|
|
(LPWSTR) pLogDataInfo->m_wzcDbRecord.context.pData);
|
|
|
|
GlobalUnlock(m_hgCopy);
|
|
|
|
hData = SetClipboardData(CF_UNICODETEXT, m_hgCopy);
|
|
if (NULL == hData)
|
|
dwErr = GetLastError();
|
|
exit:
|
|
//close clipboard
|
|
if (TRUE == bClipOpened)
|
|
CloseClipboard();
|
|
}
|
|
|
|
void
|
|
CLogDataGenProp::ShowSpecificInfo(
|
|
CLogDataInfo *pLogDataInfo)
|
|
{
|
|
LPTSTR lptstrTemp = NULL;
|
|
CString csTemp;
|
|
|
|
ComponentIDToString(pLogDataInfo->m_wzcDbRecord.componentid, csTemp);
|
|
GetDlgItem(IDC_LOGDATA_EDIT1)->SetWindowText(csTemp);
|
|
|
|
CategoryToString(pLogDataInfo->m_wzcDbRecord.category, csTemp);
|
|
GetDlgItem(IDC_LOGDATA_EDIT2)->SetWindowText(csTemp);
|
|
|
|
FileTimeToString(pLogDataInfo->m_wzcDbRecord.timestamp, &csTemp);
|
|
GetDlgItem(IDC_LOGDATA_EDIT3)->SetWindowText(csTemp);
|
|
|
|
if (NULL != pLogDataInfo->m_wzcDbRecord.message.pData)
|
|
csTemp = (LPWSTR) pLogDataInfo->m_wzcDbRecord.message.pData;
|
|
else
|
|
csTemp = _T("");
|
|
GetDlgItem(IDC_LOGDATA_EDIT4)->SetWindowText(csTemp);
|
|
|
|
if (NULL != pLogDataInfo->m_wzcDbRecord.localmac.pData)
|
|
csTemp = (LPWSTR) pLogDataInfo->m_wzcDbRecord.localmac.pData;
|
|
else
|
|
csTemp = _T("");
|
|
GetDlgItem(IDC_LOGDATA_EDIT5)->SetWindowText(csTemp);
|
|
|
|
if (NULL != pLogDataInfo->m_wzcDbRecord.remotemac.pData)
|
|
csTemp = (LPWSTR) pLogDataInfo->m_wzcDbRecord.remotemac.pData;
|
|
else
|
|
csTemp = _T("");
|
|
GetDlgItem(IDC_LOGDATA_EDIT6)->SetWindowText(csTemp);
|
|
|
|
if (NULL != pLogDataInfo->m_wzcDbRecord.ssid.pData)
|
|
{
|
|
lptstrTemp = csTemp.GetBuffer(pLogDataInfo->
|
|
m_wzcDbRecord.ssid.dwDataLen);
|
|
CopyAndStripNULL(lptstrTemp,
|
|
(LPTSTR)pLogDataInfo->m_wzcDbRecord.ssid.pData,
|
|
pLogDataInfo->m_wzcDbRecord.ssid.dwDataLen);
|
|
csTemp.ReleaseBuffer();
|
|
}
|
|
else
|
|
csTemp = _T("");
|
|
GetDlgItem(IDC_LOGDATA_EDIT7)->SetWindowText(csTemp);
|
|
|
|
if (NULL != pLogDataInfo->m_wzcDbRecord.context.pData)
|
|
csTemp = (LPWSTR) pLogDataInfo->m_wzcDbRecord.context.pData;
|
|
else
|
|
csTemp = _T("");
|
|
GetDlgItem(IDC_LOGDATA_EDIT8)->SetWindowText(csTemp);
|
|
}
|
|
|
|
|
|
void
|
|
CLogDataGenProp::SetButtonIcon(
|
|
HWND hwndBtn,
|
|
ULONG ulIconID)
|
|
{
|
|
AFX_MANAGE_STATE(AfxGetStaticModuleState());
|
|
HICON hIcon = NULL;
|
|
HICON hIconPrev = NULL;
|
|
|
|
hIcon = (HICON) LoadImage(AfxGetInstanceHandle(),
|
|
MAKEINTRESOURCE(ulIconID), IMAGE_ICON,
|
|
16, 16, LR_DEFAULTCOLOR);
|
|
if (hIcon != NULL)
|
|
{
|
|
hIconPrev = (HICON) ::SendMessage(hwndBtn, BM_SETIMAGE,
|
|
(WPARAM) IMAGE_ICON,
|
|
(LPARAM) hIcon);
|
|
if (hIconPrev != NULL)
|
|
DestroyIcon(hIconPrev);
|
|
}
|
|
}
|
|
|
|
|
|
void
|
|
CLogDataGenProp::PopulateLogInfo()
|
|
{
|
|
AFX_MANAGE_STATE(AfxGetStaticModuleState());
|
|
|
|
CWnd *pWnd = NULL;
|
|
CLogDataInfo *pLogDataInfo = NULL;
|
|
CLogDataProperties *pLogDataProp = (CLogDataProperties *)GetHolder();
|
|
|
|
Assert(pLogDataProp);
|
|
pLogDataProp->GetLogDataInfo(&pLogDataInfo);
|
|
|
|
//set fancy buttons
|
|
pWnd = GetDlgItem(IDC_BTN_MOVE_UP);
|
|
SetButtonIcon(pWnd->m_hWnd, IDI_LOG_UP_ARROW);
|
|
|
|
pWnd = GetDlgItem(IDC_BTN_MOVE_DOWN);
|
|
SetButtonIcon(pWnd->m_hWnd, IDI_LOG_DOWN_ARROW);
|
|
|
|
pWnd = GetDlgItem(IDC_BTN_COPY);
|
|
SetButtonIcon(pWnd->m_hWnd, IDI_LOG_COPY);
|
|
|
|
ShowSpecificInfo(pLogDataInfo);
|
|
}
|
|
|
|
|
|
BOOL
|
|
CLogDataGenProp::OnApply()
|
|
{
|
|
if (!IsDirty())
|
|
return TRUE;
|
|
|
|
UpdateData();
|
|
|
|
//TODO
|
|
//Do nothing at this time
|
|
|
|
//CPropertyPageBase::OnApply();
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
BOOL
|
|
CLogDataGenProp::OnPropertyChange(
|
|
BOOL bScope,
|
|
LONG_PTR *ChangeMask)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|