288 lines
7.2 KiB
C++
Raw Normal View History

2001-01-01 00:00:00 +01:00
#include "shwizard.h"
HFONT CCTF_CommonInfo::GetTitleFont()
{
return _hTitleFont;
}
BOOL CCTF_CommonInfo::WasThisOptionalPathUsed(UINT uiPath)
{
BOOL bUsed = FALSE;
for (int i = 0; i < ARRAYSIZE(_uiPathChoices); i++)
{
if (_uiPathChoices[i].bChoice && (_uiPathChoices[i].ui == uiPath))
{
bUsed = TRUE;
break;
}
}
return bUsed;
}
BOOL CCTF_CommonInfo::WasThisFeatureUnCustomized(UINT uiFeature)
{
BOOL bUnCustomized = FALSE;
for (int i = 0; i < ARRAYSIZE(_uiFeatures); i++)
{
if (_uiFeatures[i].bChoice && (_uiFeatures[i].ui == uiFeature))
{
bUnCustomized = TRUE;
break;
}
}
return bUnCustomized;
}
BOOL CCTF_CommonInfo::SetPathChoice(UINT uiPath, BOOL bChoice)
{
BOOL bSet = FALSE;
for (int i = 0; i < ARRAYSIZE(_uiPathChoices); i++)
{
if (_uiPathChoices[i].ui == uiPath)
{
_uiPathChoices[i].bChoice = bChoice;
bSet = TRUE;
break;
}
}
return bSet;
}
BOOL CCTF_CommonInfo::SetUnCustomizedFeature(UINT uiFeature, BOOL bUnCustomized)
{
BOOL bSet = FALSE;
for (int i = 0; i < ARRAYSIZE(_uiFeatures); i++)
{
if (_uiFeatures[i].ui == uiFeature)
{
_uiFeatures[i].bChoice = bUnCustomized;
bSet = TRUE;
break;
}
}
return bSet;
}
void CCTF_CommonInfo::SetPath(UINT uiPath)
{
_uiPath = uiPath;
}
static const UINT auiPageSequence[] = {IDD_WELCOME, IDD_CHOOSE_PATH, IDD_REMOVE, IDD_FINISHR};
UINT CCTF_CommonInfo::GetNextPrevPage_Helper(BOOL bNext)
{
UINT uiNextPrevPage = 0;
if ((_uiCurrentPage != IDD_CHOOSE_PATH) || (_uiPath != IDC_CUSTOMIZE) || !bNext)
{
for (int i = 0; i < ARRAYSIZE(auiPageSequence); i++)
{
if (auiPageSequence[i] == _uiCurrentPage)
{
if (bNext) // Next
{
if (i < (ARRAYSIZE(auiPageSequence) - 1))
{
uiNextPrevPage = auiPageSequence[i + 1];
}
}
else // Previous
{
if (i > 0)
{
uiNextPrevPage = auiPageSequence[i - 1];
}
}
break;
}
}
}
return uiNextPrevPage;
}
UINT CCTF_CommonInfo::GetNextPage_Helper(int iChoice)
{
UINT uiNextPage = IDD_FINISHT;
if (iChoice < ARRAYSIZE(_uiPathChoices))
{
uiNextPage = _uiPathChoices[iChoice].bChoice ?
_uiPathChoices[iChoice].ui : GetNextPage_Helper(iChoice + 1);
}
return uiNextPage;
}
UINT CCTF_CommonInfo::GetPrevPage_Helper(int iChoice)
{
UINT uiPrevPage = IDD_CHOOSE_PATH;
if (iChoice >= 0)
{
uiPrevPage = _uiPathChoices[iChoice].bChoice ?
_uiPathChoices[iChoice].ui : GetPrevPage_Helper(iChoice - 1);
}
return uiPrevPage;
}
UINT CCTF_CommonInfo::GetNextPage()
{
UINT uiNextPage = GetNextPrevPage_Helper(TRUE);
if (!uiNextPage)
{
for (int i = 0; i < ARRAYSIZE(_uiPathChoices); i++)
{
if (_uiPathChoices[i].bChoice)
{
if (_uiCurrentPage == IDD_CHOOSE_PATH)
{
uiNextPage = GetNextPage_Helper(0);
break;
}
else if (_uiCurrentPage == _uiPathChoices[i].ui)
{
uiNextPage = GetNextPage_Helper(i + 1);
break;
}
}
}
}
return uiNextPage;
}
UINT CCTF_CommonInfo::GetPrevPage()
{
UINT uiPrevPage = GetNextPrevPage_Helper(FALSE);
if (!uiPrevPage)
{
for (int i = 0; i < ARRAYSIZE(_uiPathChoices); i++)
{
if (_uiPathChoices[i].bChoice)
{
if (_uiCurrentPage == IDD_FINISHT)
{
uiPrevPage = GetPrevPage_Helper(ARRAYSIZE(_uiPathChoices) - 1);
break;
}
else if (_uiCurrentPage == _uiPathChoices[i].ui)
{
uiPrevPage = GetPrevPage_Helper(i - 1);
break;
}
}
}
}
return uiPrevPage;
}
UINT CCTF_CommonInfo::OnNext(HWND hwndDlg)
{
UINT uiNextPage = GetNextPage();
//ASSERT(uiNextPage);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, uiNextPage);
_uiCurrentPage = uiNextPage;
return uiNextPage;
}
UINT CCTF_CommonInfo::OnBack(HWND hwndDlg)
{
UINT uiPrevPage = GetPrevPage();
//ASSERT(uiPrevPage);
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, uiPrevPage);
_uiCurrentPage = uiPrevPage;
return uiPrevPage;
}
void CCTF_CommonInfo::OnSetActive(HWND hwndDlg)
{
DWORD dwButtons = 0;
UINT uiNextPage = GetNextPage();
if (uiNextPage)
{
dwButtons |= PSWIZB_NEXT;
}
else
{
dwButtons |= PSWIZB_FINISH;
}
if (GetPrevPage())
{
dwButtons |= PSWIZB_BACK;
}
PropSheet_SetWizButtons(GetParent(hwndDlg), dwButtons);
if (!uiNextPage)
{
EnableWindow(GetDlgItem(GetParent(hwndDlg), ID_WIZNEXT), FALSE);
}
}
void CCTF_CommonInfo::OnFinishCustomization(HWND hwndDlg)
{
_bCustomized = TRUE;
}
void CCTF_CommonInfo::OnFinishUnCustomization(HWND hwndDlg)
{
_bUnCustomized = TRUE;
}
void CCTF_CommonInfo::OnCancel(HWND hwndDlg)
{
_bCustomized = FALSE;
_bUnCustomized = FALSE;
}
BOOL CCTF_CommonInfo::WasItCustomized()
{
return _bCustomized;
}
BOOL CCTF_CommonInfo::WasItUnCustomized()
{
return _bUnCustomized;
}
CCTF_CommonInfo::CCTF_CommonInfo()
{
// Figure out the font for the titles on the intro and ending pages and store it in _hTitleFont
NONCLIENTMETRICS ncm = {0};
ncm.cbSize = sizeof(ncm);
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, &ncm, 0);
// Create the welcome/finish title font
LOGFONT titleLogFont = ncm.lfMessageFont;
titleLogFont.lfWeight = FW_BOLD;
LoadString(g_hAppInst, IDS_WELCOME_TITLE_FONT, titleLogFont.lfFaceName, ARRAYSIZE(titleLogFont.lfFaceName));
HDC hdc = GetDC(NULL); //gets the screen DC
int fontSize = 12; // Should be size 12 (see wiz97 spec)
titleLogFont.lfHeight = 0 - GetDeviceCaps(hdc, LOGPIXELSY) * fontSize / 72;
_hTitleFont = CreateFontIndirect(&titleLogFont);
ReleaseDC(NULL, hdc);
_uiCurrentPage = IDD_WELCOME;
_uiPathChoices[0].ui = IDD_PAGEA3;
_uiPathChoices[0].bChoice = FALSE;
_uiPathChoices[1].ui = IDD_PAGET1;
_uiPathChoices[1].bChoice = FALSE;
_uiPathChoices[2].ui = IDD_COMMENT;
_uiPathChoices[2].bChoice = FALSE;
_uiFeatures[0].ui = IDC_RESTORE_HTML;
_uiFeatures[0].bChoice = FALSE;
_uiFeatures[1].ui = IDC_REMOVE_BACKGROUND;
_uiFeatures[1].bChoice = FALSE;
_uiFeatures[2].ui = IDC_RESTORE_ICONTEXT;
_uiFeatures[2].bChoice = FALSE;
_uiFeatures[3].ui = IDC_REMOVE_COMMENT;
_uiFeatures[3].bChoice = FALSE;
_uiPath = IDC_CUSTOMIZE;
_bCustomized = FALSE;
_bUnCustomized = FALSE;
}
CCTF_CommonInfo::~CCTF_CommonInfo()
{
if (_hTitleFont)
{
// Destroy the fonts
DeleteObject(_hTitleFont);
}
}