📄 testwizardinfo.cpp
字号:
#include "stdafx.h"
#include "TestWizardInfo.h"
#include <HtmlHelp.h>
#include <mapi.h>
// NOTE: These "Display Name" string arrays depends on the enumeration
// value corresponding to the index into the array.
static LPCTSTR s_testWizardOutputTypeDisplayName[eOutput_Last+1] = {
_T("Copy to Clipboard"),
_T("Send e-mail"),
_T("Save to file"),
};
static LPCTSTR s_testWizardOutputFileEncodingDisplayName[eEncoding_Last+1] = {
_T("ASCII"),
_T("Unicode (UCS-2)"),
_T("Unicode (UTF-8)"),
};
CTestWizardInfo::CTestWizardInfo() :
m_showWelcome(false),
m_recurse(false),
m_filter(s_allFiles),
m_outputFileEncoding(eEncoding_ASCII)
{
}
CTestWizardInfo::~CTestWizardInfo()
{
}
// Set
bool CTestWizardInfo::SetShowWelcome(bool showWelcome)
{
m_showWelcome = showWelcome;
return (m_showWelcome == showWelcome);
}
bool CTestWizardInfo::SetPath(LPCTSTR path)
{
m_path = path;
return (m_path == path);
}
bool CTestWizardInfo::SetRecurse(bool recurse)
{
m_recurse = recurse;
return (m_recurse == recurse);
}
bool CTestWizardInfo::SetFilter(LPCTSTR filter)
{
m_filter = filter;
return (m_filter == filter);
}
bool CTestWizardInfo::SetOutputType(TestWizardOutputType outputType)
{
m_outputType = outputType;
return (m_outputType == outputType);
}
bool CTestWizardInfo::SetOutputTypeByDisplayName(LPCTSTR typeDisplayName)
{
return thisClass::GetOutputTypeForDisplayName(typeDisplayName, m_outputType);
}
bool CTestWizardInfo::SetOutputFileName(LPCTSTR outputFileName)
{
m_outputFileName = outputFileName;
return (m_outputFileName == outputFileName);
}
bool CTestWizardInfo::SetOutputFileEncoding(TestWizardOutputFileEncoding outputFileEncoding)
{
m_outputFileEncoding = outputFileEncoding;
return (m_outputFileEncoding == outputFileEncoding);
}
bool CTestWizardInfo::SetOutputFileEncodingByDisplayName(LPCTSTR encodingDisplayName)
{
return thisClass::GetOutputFileEncodingForDisplayName(encodingDisplayName, m_outputFileEncoding);
}
// Get
bool CTestWizardInfo::GetShowWelcome(void) const
{
return m_showWelcome;
}
CString CTestWizardInfo::GetPath(void) const
{
return m_path;
}
bool CTestWizardInfo::GetRecurse(void) const
{
return m_recurse;
}
CString CTestWizardInfo::GetFilter(void) const
{
return m_filter;
}
TestWizardOutputType CTestWizardInfo::GetOutputType(void) const
{
return m_outputType;
}
CString CTestWizardInfo::GetOutputTypeDisplayName(void) const
{
return thisClass::GetOutputTypeDisplayName(m_outputType);
}
CString CTestWizardInfo::GetOutputFileName(void) const
{
return m_outputFileName;
}
TestWizardOutputFileEncoding CTestWizardInfo::GetOutputFileEncoding(void) const
{
return m_outputFileEncoding;
}
CString CTestWizardInfo::GetOutputFileEncodingDisplayName(void) const
{
return thisClass::GetOutputFileEncodingDisplayName(m_outputFileEncoding);
}
// Static methods
bool CTestWizardInfo::IsValidOutputType(DWORD outputType)
{
return ((outputType >= (DWORD)eOutput_First) && (outputType <= (DWORD)eOutput_Last));
}
bool CTestWizardInfo::IsValidOutputFileEncoding(DWORD outputFileEncoding)
{
return ((outputFileEncoding >= (DWORD)eEncoding_First) && (outputFileEncoding <= (DWORD)eEncoding_Last));
}
CString CTestWizardInfo::GetOutputTypeDisplayName(TestWizardOutputType outputType)
{
CString typeDisplayName;
ATLASSERT(thisClass::IsValidOutputType((DWORD)outputType));
if(thisClass::IsValidOutputType((DWORD)outputType))
{
typeDisplayName = s_testWizardOutputTypeDisplayName[outputType];
}
return typeDisplayName;
}
CString CTestWizardInfo::GetOutputFileEncodingDisplayName(TestWizardOutputFileEncoding outputFileEncoding)
{
CString encodingDisplayName;
ATLASSERT(thisClass::IsValidOutputFileEncoding((DWORD)outputFileEncoding));
if(thisClass::IsValidOutputFileEncoding((DWORD)outputFileEncoding))
{
encodingDisplayName = s_testWizardOutputFileEncodingDisplayName[outputFileEncoding];
}
return encodingDisplayName;
}
bool CTestWizardInfo::GetOutputTypeForDisplayName(LPCTSTR typeDisplayName, TestWizardOutputType& outputType)
{
bool success = false;
ATLASSERT(typeDisplayName != NULL);
if(typeDisplayName != NULL)
{
for(int i=(int)eOutput_First; i<=(int)eOutput_Last && !success; ++i)
{
if(::lstrcmpi(typeDisplayName, s_testWizardOutputTypeDisplayName[i]) == 0)
{
outputType = (TestWizardOutputType)i;
success = true;
}
}
}
return success;
}
bool CTestWizardInfo::GetOutputFileEncodingForDisplayName(LPCTSTR encodingDisplayName, TestWizardOutputFileEncoding& outputFileEncoding)
{
bool success = false;
ATLASSERT(encodingDisplayName != NULL);
if(encodingDisplayName != NULL)
{
for(int i=(int)eEncoding_First; i<=(int)eEncoding_Last && !success; ++i)
{
if(::lstrcmpi(encodingDisplayName, s_testWizardOutputFileEncodingDisplayName[i]) == 0)
{
outputFileEncoding = (TestWizardOutputFileEncoding)i;
success = true;
}
}
}
return success;
}
// File List
int CTestWizardInfo::FindFiles(ITestWizardFindFileCB* callback) const
{
ATLASSERT(callback != NULL);
if(callback == NULL)
{
return 0;
}
int fileCount = 0;
bool success = callback->OnBeginFindFiles();
if(success)
{
fileCount = this->FindFiles(callback, m_path, m_filter, m_recurse);
callback->OnEndFindFiles();
}
return fileCount;
}
int CTestWizardInfo::FindFiles(ITestWizardFindFileCB* callback, LPCTSTR directory, LPCTSTR filter, bool recurse) const
{
int fileCount = 0;
bool success = callback->OnBeginDirectorySearch(directory);
if(success)
{
// First search current directory for files specified by the filter
TCHAR directoryWithFilter[MAX_PATH] = {0};
::PathCombine(directoryWithFilter, directory, filter);
WIN32_FIND_DATA findFileData = {0};
HANDLE hFindFile = ::FindFirstFile(directoryWithFilter, &findFileData);
if(hFindFile != INVALID_HANDLE_VALUE)
{
do
{
if(FILE_ATTRIBUTE_DIRECTORY != (findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
fileCount += 1;
callback->OnFileFound(directory, &findFileData);
}
} while(TRUE == ::FindNextFile(hFindFile, &findFileData));
::FindClose(hFindFile);
hFindFile = NULL;
}
// Then recurse sub-directories if appropriate
if(recurse)
{
::PathCombine(directoryWithFilter, directory, _T("*"));
HANDLE hFindDirectory = NULL;
WIN32_FIND_DATA findDirectoryData = {0};
hFindDirectory = ::FindFirstFileEx(directoryWithFilter, FindExInfoStandard, &findDirectoryData, FindExSearchLimitToDirectories, NULL, 0);
if(hFindDirectory != INVALID_HANDLE_VALUE)
{
TCHAR subDirectory[MAX_PATH] = {0};
do
{
if( FILE_ATTRIBUTE_DIRECTORY == (findDirectoryData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) &&
::lstrcmp(_T("."), findDirectoryData.cFileName) != 0 &&
::lstrcmp(_T(".."), findDirectoryData.cFileName) != 0)
{
::PathCombine(subDirectory, directory, findDirectoryData.cFileName);
fileCount += this->FindFiles(callback, subDirectory, filter, recurse);
}
} while(TRUE == ::FindNextFile(hFindDirectory, &findDirectoryData));
::FindClose(hFindDirectory);
hFindDirectory = NULL;
}
}
callback->OnEndDirectorySearch(directory);
}
return fileCount;
}
int CTestWizardInfo::FindPreviousPage(int /*pageDialogId*/) const
{
// 0 = goto previous page
// -1 = prevent page change
// >0 = jump to page by dlg ID
int page = 0;
//switch(pageDialogId)
//{
//case IDD_WIZ97_WELCOME:
// break;
//case IDD_WIZ97_PATHFILTER:
// break;
//case IDD_WIZ97_FILEPREVIEW:
// break;
//case IDD_WIZ97_OUTPUT:
// break;
//case IDD_WIZ97_COMPLETION:
// break;
//}
return page;
}
int CTestWizardInfo::FindNextPage(int /*pageDialogId*/) const
{
// 0 = goto next page
// -1 = prevent page change
// >0 = jump to page by dlg ID
int page = 0;
//switch(pageDialogId)
//{
//case IDD_WIZ97_WELCOME:
// break;
//case IDD_WIZ97_PATHFILTER:
// break;
//case IDD_WIZ97_FILEPREVIEW:
// break;
//case IDD_WIZ97_OUTPUT:
// break;
//case IDD_WIZ97_COMPLETION:
// break;
//}
return page;
}
void CTestWizardInfo::ShowHelp(int pageDialogId, int /*controlId*/)
{
LPCTSTR topicPath = NULL;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -