windows-nt/Source/XPSP1/NT/base/ntsetup/opktools/setupmgr/oem/iecust.c
2020-09-26 16:20:57 +08:00

341 lines
10 KiB
C

/****************************************************************************\
IECUST.C / OPK Wizard (OPKWIZ.EXE)
Microsoft Confidential
Copyright (c) Microsoft Corporation 1998
All rights reserved
Source file for the OPK Wizard that contains the external and internal
functions used by the "IE Customize" wizard page.
4/99 - Jason Cohen (JCOHEN)
Added this new source file for the OPK Wizard as part of the
Millennium rewrite.
10/99 - Brian Ku (BRIANK)
Modified this file for the IEAK integration. Separated the toolbar
button features into btoolbar.c.
09/2000 - Stephen Lodwick (STELO)
Ported OPK Wizard to Whistler
\****************************************************************************/
//
// Include File(s):
//
#include "pch.h"
#include "wizard.h"
#include "resource.h"
/* Example:
[URL]
...
Home_Page=http://www.bbc.co.uk
Search_Page=http://www.yahoo.com
Help_Page=http://www.online.com
*/
//
// Internal Defined Value(s):
//
#define INI_KEY_HOMEPAGE _T("Home_Page")
#define INI_KEY_HELPPAGE _T("Help_Page")
#define INI_KEY_SEARCHPAGE _T("Search_Page")
/* NOTE: Moved to btoolbar.c
#define INI_KEY_CAPTION _T("Caption0")
#define INI_KEY_ACTION _T("Action0")
#define INI_KEY_TOOLTIP _T("ToolTipText0")
*/
//
// Internal Globals
//
BOOL g_fGrayHomePage = TRUE, g_fGrayHelpPage = TRUE, g_fGraySearchPage = TRUE;
//
// Internal Function Prototype(s):
//
static BOOL OnInit(HWND, HWND, LPARAM);
static void OnCommand(HWND, INT, HWND, UINT);
static BOOL OnNext(HWND);
static void EnableControls(HWND hwnd, UINT uId, BOOL fEnable);
/* NOTE: Moved to btoolbar.c
BOOL CALLBACK ToolBarDlgProc(HWND, UINT, WPARAM, LPARAM);
static BOOL ToolBarOnInit(HWND, HWND, LPARAM);
static void ToolBarOnCommand(HWND, INT, HWND, UINT);
static BOOL ValidData(HWND);
static void SaveData(HWND);
*/
//
// External Function(s):
//
LRESULT CALLBACK StartSearchDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
HANDLE_MSG(hwnd, WM_INITDIALOG, OnInit);
HANDLE_MSG(hwnd, WM_COMMAND, OnCommand);
case WM_NOTIFY:
switch ( ((NMHDR FAR *) lParam)->code )
{
case PSN_KILLACTIVE:
case PSN_RESET:
case PSN_WIZBACK:
case PSN_WIZFINISH:
break;
case PSN_WIZNEXT:
if (!OnNext(hwnd))
WIZ_FAIL(hwnd);
break;
case PSN_QUERYCANCEL:
WIZ_CANCEL(hwnd);
break;
case PSN_HELP:
WIZ_HELP();
break;
case PSN_SETACTIVE:
g_App.dwCurrentHelp = IDH_IECUST;
WIZ_BUTTONS(hwnd, PSWIZB_BACK | PSWIZB_NEXT);
// Press next if the user is in auto mode
//
WIZ_NEXTONAUTO(hwnd, PSBTN_NEXT);
break;
default:
return FALSE;
}
break;
default:
return FALSE;
}
return TRUE;
}
//
// Internal Function(s):
//
static BOOL OnInit(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
TCHAR szUrl[MAX_URL];
// Retrieve the IE home page URL.
//
szUrl[0] = NULLCHR;
ReadInstallInsKey(INI_SEC_URL, INI_KEY_HOMEPAGE, szUrl, STRSIZE(szUrl),
GET_FLAG(OPK_BATCHMODE) ? g_App.szOpkWizIniFile : g_App.szInstallInsFile, &g_fGrayHomePage);
SendDlgItemMessage(hwnd, IDC_HOMEPAGE, EM_LIMITTEXT, STRSIZE(szUrl) - 1, 0L);
SetDlgItemText(hwnd, IDC_HOMEPAGE, szUrl);
EnableControls(hwnd, IDC_STARTPAGE, !g_fGrayHomePage);
// Retrieve the IE search page URL.
//
szUrl[0] = NULLCHR;
ReadInstallInsKey(INI_SEC_URL, INI_KEY_SEARCHPAGE, szUrl, STRSIZE(szUrl),
GET_FLAG(OPK_BATCHMODE) ? g_App.szOpkWizIniFile : g_App.szInstallInsFile, &g_fGraySearchPage);
SendDlgItemMessage(hwnd, IDC_SEARCHPAGE, EM_LIMITTEXT, STRSIZE(szUrl) - 1, 0L);
SetDlgItemText(hwnd, IDC_SEARCHPAGE, szUrl);
EnableControls(hwnd, IDC_SEARCHPAGE2, !g_fGraySearchPage);
// Retrieve the IE help page URL.
//
szUrl[0] = NULLCHR;
ReadInstallInsKey(INI_SEC_URL, INI_KEY_HELPPAGE, szUrl, STRSIZE(szUrl),
GET_FLAG(OPK_BATCHMODE) ? g_App.szOpkWizIniFile : g_App.szInstallInsFile, &g_fGrayHelpPage);
SendDlgItemMessage(hwnd, IDC_HELPPAGE, EM_LIMITTEXT, STRSIZE(szUrl) - 1, 0L);
SetDlgItemText(hwnd, IDC_HELPPAGE, szUrl);
EnableControls(hwnd, IDC_CUSTOMSUPPORT, !g_fGrayHelpPage);
// Always return false to WM_INITDIALOG.
//
return FALSE;
}
static void OnCommand(HWND hwnd, INT id, HWND hwndCtl, UINT codeNotify)
{
TCHAR szUrl[MAX_URL];
LPTSTR lpUrlPart;
BOOL bEnable = FALSE;
HWND hTestControl = NULL;
switch ( id )
{
case IDC_HPTEST:
case IDC_SPTEST:
case IDC_HLPTEST:
lstrcpyn(szUrl, _T("http://"), AS(szUrl));
lpUrlPart = szUrl + lstrlen(szUrl);
GetDlgItemText(hwnd, id == IDC_HPTEST ? IDC_HOMEPAGE : id == IDC_SPTEST ? IDC_SEARCHPAGE : IDC_HELPPAGE, lpUrlPart, (int)(STRSIZE(szUrl) - (lpUrlPart - szUrl)));
if ( *lpUrlPart )
ShellExecute(hwnd, STR_OPEN, _tcsstr(lpUrlPart, _T("://")) ? lpUrlPart : szUrl, NULL, NULL, SW_SHOW);
break;
case IDC_STARTPAGE:
g_fGrayHomePage = !g_fGrayHomePage;
EnableControls(hwnd, IDC_STARTPAGE, !g_fGrayHomePage);
break;
case IDC_SEARCHPAGE2:
g_fGraySearchPage = !g_fGraySearchPage;
EnableControls(hwnd, IDC_SEARCHPAGE2, !g_fGraySearchPage);
break;
case IDC_CUSTOMSUPPORT:
g_fGrayHelpPage = !g_fGrayHelpPage;
EnableControls(hwnd, IDC_CUSTOMSUPPORT, !g_fGrayHelpPage);
break;
case IDC_HOMEPAGE:
case IDC_SEARCHPAGE:
case IDC_HELPPAGE:
// This is the notification for a text box that has just changed
//
if (codeNotify == EN_CHANGE)
{
szUrl[0] = NULLCHR;
// Get the text (if any) in the text box
//
GetDlgItemText(hwnd, id, szUrl, STRSIZE(szUrl));
// Is there text
//
if ( szUrl[0] )
bEnable = TRUE;
// Get the sibling test button
//
switch ( id )
{
case IDC_HOMEPAGE:
hTestControl = GetDlgItem(hwnd, IDC_HPTEST);
break;
case IDC_SEARCHPAGE:
hTestControl = GetDlgItem(hwnd, IDC_SPTEST);
break;
case IDC_HELPPAGE:
hTestControl = GetDlgItem(hwnd, IDC_HLPTEST);
break;
}
// Enable/Disable the control
//
if ( hTestControl )
EnableWindow(hTestControl, bEnable);
}
break;
/* NOTE: Moved to btoolbar.c
case IDC_REMOVE:
WritePrivateProfileSection(INI_SEC_TOOLBAR, NULLSTR, g_App.szInstallInsFile);
WritePrivateProfileSection(INI_SEC_TOOLBAR, NULL, g_App.szOpkWizIniFile);
SetDlgItemText(hwnd, IDC_TOOLBAR, NULLSTR);
EnableWindow(GetDlgItem(hwnd,IDC_EDIT),FALSE);
EnableWindow(GetDlgItem(hwnd,IDC_REMOVE),FALSE);
EnableWindow(GetDlgItem(hwnd,IDC_ADD),TRUE);
break;
*/
}
}
static BOOL OnNext(HWND hwnd)
{
TCHAR szUrl[MAX_URL];
// Save the IE home page URL.
//
szUrl[0] = NULLCHR;
GetDlgItemText(hwnd, IDC_HOMEPAGE, szUrl, STRSIZE(szUrl));
if (!g_fGrayHomePage && !ValidURL(szUrl)) {
MsgBox(hwnd, IDS_ERR_FAVURL, IDS_APPNAME, MB_ERRORBOX);
SetFocus(GetDlgItem(hwnd, IDC_HOMEPAGE));
return FALSE;
}
WriteInstallInsKey(INI_SEC_URL, INI_KEY_HOMEPAGE, szUrl, g_App.szInstallInsFile, g_fGrayHomePage);
// Save the IE search page URL.
//
szUrl[0] = NULLCHR;
GetDlgItemText(hwnd, IDC_SEARCHPAGE, szUrl, STRSIZE(szUrl));
if (!g_fGraySearchPage && !ValidURL(szUrl)) {
MsgBox(hwnd, IDS_ERR_FAVURL, IDS_APPNAME, MB_ERRORBOX);
SetFocus(GetDlgItem(hwnd, IDC_SEARCHPAGE));
return FALSE;
}
WriteInstallInsKey(INI_SEC_URL, INI_KEY_SEARCHPAGE, szUrl, g_App.szInstallInsFile, g_fGraySearchPage);
// Save the IE help page URL.
//
szUrl[0] = NULLCHR;
GetDlgItemText(hwnd, IDC_HELPPAGE, szUrl, STRSIZE(szUrl));
if (!g_fGrayHelpPage && !ValidURL(szUrl)) {
MsgBox(hwnd, IDS_ERR_FAVURL, IDS_APPNAME, MB_ERRORBOX);
SetFocus(GetDlgItem(hwnd, IDC_HELPPAGE));
return FALSE;
}
WriteInstallInsKey(INI_SEC_URL, INI_KEY_HELPPAGE, szUrl, g_App.szInstallInsFile, g_fGrayHelpPage);
return TRUE;
}
static void EnableControls(HWND hwnd, UINT uId, BOOL fEnable)
{
TCHAR szUrl[MAX_URL];
switch ( uId )
{
case IDC_STARTPAGE:
EnableWindow(GetDlgItem(hwnd, IDC_HPSTATIC), fEnable);
EnableWindow(GetDlgItem(hwnd, IDC_HOMEPAGE), fEnable);
EnableWindow(GetDlgItem(hwnd, IDC_HPTEST), fEnable && GetDlgItemText(hwnd, IDC_HOMEPAGE, szUrl, STRSIZE(szUrl)));
CheckDlgButton(hwnd, IDC_STARTPAGE, fEnable ? BST_CHECKED : BST_UNCHECKED);
break;
case IDC_SEARCHPAGE2:
EnableWindow(GetDlgItem(hwnd, IDC_SPSTATIC), fEnable);
EnableWindow(GetDlgItem(hwnd, IDC_SEARCHPAGE), fEnable);
EnableWindow(GetDlgItem(hwnd, IDC_SPTEST), fEnable && GetDlgItemText(hwnd, IDC_SEARCHPAGE, szUrl, STRSIZE(szUrl)));
CheckDlgButton(hwnd, IDC_SEARCHPAGE2, fEnable ? BST_CHECKED : BST_UNCHECKED);
break;
case IDC_CUSTOMSUPPORT:
EnableWindow(GetDlgItem(hwnd, IDC_HLPSTATIC), fEnable);
EnableWindow(GetDlgItem(hwnd, IDC_HELPPAGE), fEnable);
EnableWindow(GetDlgItem(hwnd, IDC_HLPTEST), fEnable && GetDlgItemText(hwnd, IDC_HELPPAGE, szUrl, STRSIZE(szUrl)));
CheckDlgButton(hwnd, IDC_CUSTOMSUPPORT, fEnable ? BST_CHECKED : BST_UNCHECKED);
break;
}
}