* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-/* $Id: wizard.c,v 1.4 2004/06/17 21:23:50 kuehng Exp $
+/* $Id: wizard.c,v 1.5 2004/08/03 13:43:00 ekohl Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS system libraries
* PURPOSE: System setup
* FILE: lib/syssetup/wizard.c
- * PROGRAMER: Eric Kohl (ekohl@rz-online.de)
+ * PROGRAMER: Eric Kohl
*/
/* INCLUDES *****************************************************************/
}
-INT_PTR CALLBACK
+BOOL CALLBACK
OwnerPageDlgProc(HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
- PSETUPDATA SetupData;
-
- /* Retrieve pointer to the global setup data */
- SetupData = (PSETUPDATA)GetWindowLong (hwndDlg, GWL_USERDATA);
+ TCHAR OwnerName[51];
+ TCHAR OwnerOrganization[51];
+ HKEY hKey;
+ LPNMHDR lpnm;
switch (uMsg)
{
case WM_INITDIALOG:
{
- /* Save pointer to the global setup data */
- SetupData = (PSETUPDATA)((LPPROPSHEETPAGE)lParam)->lParam;
- SetWindowLong(hwndDlg, GWL_USERDATA, (LONG)SetupData);
-
SendDlgItemMessage(hwndDlg, IDC_OWNERNAME, EM_LIMITTEXT, 50, 0);
SendDlgItemMessage(hwndDlg, IDC_OWNERORGANIZATION, EM_LIMITTEXT, 50, 0);
- /* set focus to owner name */
- SetFocus(GetDlgItem(hwndDlg,IDC_OWNERNAME));
+ /* Set focus to owner name */
+ SetFocus(GetDlgItem(hwndDlg, IDC_OWNERNAME));
}
break;
case WM_NOTIFY:
{
- LPNMHDR lpnm = (LPNMHDR)lParam;
+ lpnm = (LPNMHDR)lParam;
switch (lpnm->code)
{
break;
case PSN_WIZNEXT:
- if (GetDlgItemText(hwndDlg, IDC_OWNERNAME, SetupData->OwnerName, 50) == 0)
+ OwnerName[0] = 0;
+ if (GetDlgItemText(hwndDlg, IDC_OWNERNAME, OwnerName, 50) == 0)
{
- MessageBox (hwndDlg,
- _T("Setup cannot continue until you enter your name."),
- _T("ReactOS Setup"),
- MB_ICONERROR | MB_OK);
+ MessageBox(hwndDlg,
+ _T("Setup cannot continue until you enter your name."),
+ _T("ReactOS Setup"),
+ MB_ICONERROR | MB_OK);
SetWindowLong(hwndDlg, DWL_MSGRESULT, -1);
return TRUE;
}
- GetDlgItemText(hwndDlg, IDC_OWNERORGANIZATION, SetupData->OwnerOrganization, 50);
+
+ OwnerOrganization[0] = 0;
+ GetDlgItemText(hwndDlg, IDC_OWNERORGANIZATION, OwnerOrganization, 50);
+
+ RegOpenKeyEx(HKEY_LOCAL_MACHINE,
+ _T("Software\\Microsoft\\Windows NT\\CurrentVersion"),
+ 0,
+ KEY_ALL_ACCESS,
+ &hKey);
+ /* FIXME: check error code */
+
+ RegSetValueEx(hKey,
+ _T("RegisteredOwner"),
+ 0,
+ REG_SZ,
+ OwnerName,
+ (_tcslen(OwnerName) + 1) * sizeof(TCHAR));
+ /* FIXME: check error code */
+
+ RegSetValueEx(hKey,
+ _T("RegisteredOrganization"),
+ 0,
+ REG_SZ,
+ OwnerOrganization,
+ (_tcslen(OwnerOrganization) + 1) * sizeof(TCHAR));
+ /* FIXME: check error code */
+
+ RegCloseKey(hKey);
break;
default:
WPARAM wParam,
LPARAM lParam)
{
- PSETUPDATA SetupData;
+ TCHAR ComputerName[MAX_COMPUTERNAME_LENGTH + 1];
TCHAR Password1[15];
TCHAR Password2[15];
-
- /* Retrieve pointer to the global setup data */
- SetupData = (PSETUPDATA)GetWindowLong (hwndDlg, GWL_USERDATA);
+ DWORD Length;
+ LPNMHDR lpnm;
switch (uMsg)
{
case WM_INITDIALOG:
{
- DWORD Length;
-
- /* Save pointer to the global setup data */
- SetupData = (PSETUPDATA)((LPPROPSHEETPAGE)lParam)->lParam;
- SetWindowLong(hwndDlg, GWL_USERDATA, (LONG)SetupData);
-
/* Retrieve current computer name */
Length = MAX_COMPUTERNAME_LENGTH + 1;
- GetComputerNameA(SetupData->ComputerName, &Length);
+ GetComputerName(ComputerName, &Length);
/* Display current computer name */
- SetDlgItemTextA(hwndDlg, IDC_COMPUTERNAME, SetupData->ComputerName);
+ SetDlgItemText(hwndDlg, IDC_COMPUTERNAME, ComputerName);
/* Set text limits */
SendDlgItemMessage(hwndDlg, IDC_COMPUTERNAME, EM_LIMITTEXT, 64, 0);
SendDlgItemMessage(hwndDlg, IDC_ADMINPASSWORD1, EM_LIMITTEXT, 14, 0);
SendDlgItemMessage(hwndDlg, IDC_ADMINPASSWORD2, EM_LIMITTEXT, 14, 0);
+
+ /* Set focus to computer name */
+ SetFocus(GetDlgItem(hwndDlg, IDC_COMPUTERNAME));
}
break;
case WM_NOTIFY:
{
- LPNMHDR lpnm = (LPNMHDR)lParam;
+ lpnm = (LPNMHDR)lParam;
switch (lpnm->code)
{
break;
case PSN_WIZNEXT:
- if (GetDlgItemText(hwndDlg, IDC_COMPUTERNAME, SetupData->ComputerName, 64) == 0)
+ if (GetDlgItemText(hwndDlg, IDC_COMPUTERNAME, ComputerName, 64) == 0)
{
- MessageBox (hwndDlg,
- _T("Setup cannot continue until you enter the name of your computer."),
- _T("ReactOS Setup"),
- MB_ICONERROR | MB_OK);
+ MessageBox(hwndDlg,
+ _T("Setup cannot continue until you enter the name of your computer."),
+ _T("ReactOS Setup"),
+ MB_ICONERROR | MB_OK);
SetWindowLong(hwndDlg, DWL_MSGRESULT, -1);
return TRUE;
}
/* FIXME: check computer name for invalid characters */
+ if (!SetComputerName(ComputerName))
+ {
+ MessageBox(hwndDlg,
+ _T("Setup failed to set the computer name."),
+ _T("ReactOS Setup"),
+ MB_ICONERROR | MB_OK);
+ SetWindowLong(hwndDlg, DWL_MSGRESULT, -1);
+ return TRUE;
+ }
+
/* Check admin passwords */
GetDlgItemText(hwndDlg, IDC_ADMINPASSWORD1, Password1, 15);
GetDlgItemText(hwndDlg, IDC_ADMINPASSWORD2, Password2, 15);
- if (_tcscmp (Password1, Password2))
+ if (_tcscmp(Password1, Password2))
{
- MessageBox (hwndDlg,
- _T("The passwords you entered do not match. Please enter "\
- "the desired password again."),
- _T("ReactOS Setup"),
- MB_ICONERROR | MB_OK);
+ MessageBox(hwndDlg,
+ _T("The passwords you entered do not match. Please enter "\
+ "the desired password again."),
+ _T("ReactOS Setup"),
+ MB_ICONERROR | MB_OK);
SetWindowLong(hwndDlg, DWL_MSGRESULT, -1);
return TRUE;
}
/* FIXME: check password for invalid characters */
- _tcscpy (SetupData->AdminPassword, Password1);
+ /* FIXME: Set admin password */
+ break;
+
+ default:
+ break;
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return FALSE;
+}
+
+
+BOOL CALLBACK
+LocalePageDlgProc(HWND hwndDlg,
+ UINT uMsg,
+ WPARAM wParam,
+ LPARAM lParam)
+{
+ PSETUPDATA SetupData;
+
+ /* Retrieve pointer to the global setup data */
+ SetupData = (PSETUPDATA)GetWindowLong (hwndDlg, GWL_USERDATA);
+
+ switch (uMsg)
+ {
+ case WM_INITDIALOG:
+ {
+ /* Save pointer to the global setup data */
+ SetupData = (PSETUPDATA)((LPPROPSHEETPAGE)lParam)->lParam;
+ SetWindowLong(hwndDlg, GWL_USERDATA, (LONG)SetupData);
+
+ }
+ break;
+
+
+ case WM_NOTIFY:
+ {
+ LPNMHDR lpnm = (LPNMHDR)lParam;
+
+ switch (lpnm->code)
+ {
+ case PSN_SETACTIVE:
+ /* Enable the Back and Next buttons */
+ PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT);
+ break;
+
+ case PSN_WIZNEXT:
break;
default:
VOID
-InstallWizard (VOID)
+InstallWizard(VOID)
{
PROPSHEETHEADER psh;
- HPROPSHEETPAGE ahpsp[4];
+ HPROPSHEETPAGE ahpsp[5];
PROPSHEETPAGE psp;
// SHAREDWIZDATA wizdata;
/* Clear setup data */
- ZeroMemory (&SetupData, sizeof(SETUPDATA));
+ ZeroMemory(&SetupData, sizeof(SETUPDATA));
/* Create the Welcome page */
ZeroMemory (&psp, sizeof(PROPSHEETPAGE));
psp.dwSize = sizeof(PROPSHEETPAGE);
- psp.dwFlags = PSP_DEFAULT; // | PSP_HIDEHEADER;
+ psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER;
psp.hInstance = hDllInstance;
psp.lParam = (LPARAM)&SetupData;
psp.pfnDlgProc = WelcomeDlgProc;
/* Create the Owner page */
psp.dwFlags = PSP_DEFAULT; // | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE;
-// psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_TITLE2);
-// psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDS_SUBTITLE2);
+// psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_TITLE1);
+// psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDS_SUBTITLE1);
psp.pszTemplate = MAKEINTRESOURCE(IDD_OWNERPAGE);
psp.pfnDlgProc = OwnerPageDlgProc;
ahpsp[1] = CreatePropertySheetPage(&psp);
/* Create the Computer page */
psp.dwFlags = PSP_DEFAULT; // | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE;
-// psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_TITLE1);
-// psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDS_SUBTITLE1);
+// psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_TITLE2);
+// psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDS_SUBTITLE2);
psp.pfnDlgProc = ComputerPageDlgProc;
psp.pszTemplate = MAKEINTRESOURCE(IDD_COMPUTERPAGE);
ahpsp[2] = CreatePropertySheetPage(&psp);
+ /* Create the Locale page */
+ psp.dwFlags = PSP_DEFAULT; // | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE;
+// psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_TITLE2);
+// psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDS_SUBTITLE2);
+ psp.pfnDlgProc = LocalePageDlgProc;
+ psp.pszTemplate = MAKEINTRESOURCE(IDD_LOCALEPAGE);
+ ahpsp[3] = CreatePropertySheetPage(&psp);
+
/* Create the Finish page */
- psp.dwFlags = PSP_DEFAULT; // | PSP_HIDEHEADER;
+ psp.dwFlags = PSP_DEFAULT | PSP_HIDEHEADER;
psp.pfnDlgProc = FinishDlgProc;
psp.pszTemplate = MAKEINTRESOURCE(IDD_FINISHPAGE);
- ahpsp[3] = CreatePropertySheetPage(&psp);
+ ahpsp[4] = CreatePropertySheetPage(&psp);
/* Create the property sheet */
psh.dwSize = sizeof(PROPSHEETHEADER);
- psh.dwFlags = PSH_WIZARD; //PSH_WIZARD97 | PSH_WATERMARK | PSH_HEADER;
+ psh.dwFlags = PSH_WIZARD; //97 | PSH_WATERMARK | PSH_HEADER;
psh.hInstance = hDllInstance;
psh.hwndParent = NULL;
- psh.nPages = 4;
+ psh.nPages = 5;
psh.nStartPage = 0;
psh.phpage = ahpsp;
-// psh.pszbmWatermark = MAKEINTRESOURCE(IDB_WATERMARK);
-// psh.pszbmHeader = MAKEINTRESOURCE(IDB_BANNER);
+// psh.pszbmWatermark = MAKEINTRESOURCE(IDB_WATERMARK);
+// psh.pszbmHeader = MAKEINTRESOURCE(IDB_HEADER);
/* Display the wizard */
PropertySheet(&psh);