2 * Copyright 2000, International Business Machines Corporation and others.
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
11 * INCLUDES _________________________________________________________________
18 #include <afsconfig.h>
19 #include <afs/param.h>
29 * DEFINITIONS _________________________________________________________________
32 static HWND hDlg = 0; // HWND for this page's dialog
34 #define FIRST_SERVER_STEP sidSTEP_THREE
35 #define NOT_FIRST_SERVER_STEP sidSTEP_FOUR
38 #define MAX_AFS_UID UD_MAXVAL
42 * PROTOTYPES _________________________________________________________________
45 static void OnInitDialog(HWND hwndDlg);
46 static void CheckEnableButtons();
47 static void SavePageInfo();
48 static void ShowPageInfo();
49 static void UseNextUid(BOOL bUseNext);
53 * EXPORTED FUNCTIONS _________________________________________________________________
58 * Dialog Procs _________________________________________________________________
61 BOOL CALLBACK InfoPage2DlgProc(HWND hRHS, UINT msg, WPARAM wp, LPARAM lp)
63 if (WizStep_Common_DlgProc (hRHS, msg, wp, lp))
74 if (HIWORD(wp) == wcIS_STATE_DISABLED) {
75 int nState = g_pWiz->GetState();
77 // Disable step 3 if we are not the first server
78 if (nState == sidSTEP_THREE)
79 return !g_CfgData.bFirstServer;
81 // Disable step 4 if we are the first server
82 if (nState == sidSTEP_FOUR)
83 return g_CfgData.bFirstServer;
89 g_pWiz->SetState (sidSTEP_FIVE);
94 g_pWiz->SetState (sidSTEP_TWO);
97 case IDC_USE_NEXT_UID:
102 case IDC_USE_THIS_UID:
104 CheckEnableButtons();
109 case IDC_VERIFY_ADMIN_PW:
111 if (HIWORD(wp) == EN_CHANGE)
112 CheckEnableButtons();
123 * STATIC FUNCTIONS _________________________________________________________________
128 * Event Handler Functions _________________________________________________________________
131 static void OnInitDialog(HWND hwndDlg)
135 g_pWiz->EnableButtons(BACK_BUTTON);
137 SetUpDownRange(hDlg, IDC_AFS_UID_SPINNER, MIN_AFS_UID, MAX_AFS_UID);
141 g_pWiz->SetDefaultControl(IDC_ADMIN_NAME);
146 * Utility Functions _________________________________________________________________
149 static void CheckEnableButtons()
151 BOOL bDisable = FALSE;
153 TCHAR szDummy[cchRESOURCE];
154 TCHAR szPW[cchRESOURCE];
155 TCHAR szVerifyPW[cchRESOURCE];
157 bDisable |= lstrlen(GetWndText(hDlg, IDC_ADMIN_NAME, szDummy)) == 0;
159 bDisable |= lstrlen(GetWndText(hDlg, IDC_ADMIN_PW, szPW)) == 0;
161 if (IsWindowEnabled(GetDlgItem(hDlg, IDC_VERIFY_ADMIN_PW))) {
162 GetWndText(hDlg, IDC_VERIFY_ADMIN_PW, szVerifyPW);
163 bDisable |= !lstrlen(szVerifyPW) || lstrcmp(szPW, szVerifyPW);
166 if (IsWindowEnabled(GetDlgItem(hDlg, IDC_ADMIN_UID)))
167 bDisable |= lstrlen(GetWndText(hDlg, IDC_ADMIN_UID, szDummy)) == 0;
169 if (IsWindowEnabled(GetDlgItem(hDlg, IDC_HOSTNAME)))
170 bDisable |= lstrlen(GetWndText(hDlg, IDC_HOSTNAME, szDummy)) == 0;
173 g_pWiz->EnableButtons(BACK_BUTTON);
175 g_pWiz->EnableButtons(BACK_BUTTON | NEXT_BUTTON);
178 static void SavePageInfo()
180 TCHAR szText[cchRESOURCE];
182 lstrncpy(g_CfgData.szAdminName, GetWndText(hDlg, IDC_ADMIN_NAME, szText), MAX_ADMIN_NAME_LEN);
183 lstrncpy(g_CfgData.szAdminPW, GetWndText(hDlg, IDC_ADMIN_PW, szText), MAX_ADMIN_PW_LEN);
185 if (g_pWiz->GetState() == FIRST_SERVER_STEP) {
186 g_CfgData.bUseNextUid = IsButtonChecked(hDlg, IDC_USE_NEXT_UID);
187 if (!g_CfgData.bUseNextUid)
188 lstrncpy(g_CfgData.szAdminUID, GetWndText(hDlg, IDC_ADMIN_UID, szText), MAX_UID_LEN);
191 if (g_pWiz->GetState() == NOT_FIRST_SERVER_STEP)
192 lstrncpy(g_CfgData.szCellServDbHostname, GetWndText(hDlg, IDC_HOSTNAME, szText), MAX_MACHINE_NAME_LEN);
195 static void ShowPageInfo()
197 SetWndText(hDlg, IDC_ADMIN_NAME, g_CfgData.szAdminName);
198 SetWndText(hDlg, IDC_ADMIN_PW, g_CfgData.szAdminPW);
199 SetWndText(hDlg, IDC_VERIFY_ADMIN_PW, g_CfgData.szAdminPW);
200 SetWndText(hDlg, IDC_HOSTNAME, g_CfgData.szCellServDbHostname);
202 if (g_pWiz->GetState() == FIRST_SERVER_STEP) {
203 if (g_CfgData.bUseNextUid)
204 SetCheck(hDlg, IDC_USE_NEXT_UID);
206 SetCheck(hDlg, IDC_USE_THIS_UID);
207 UseNextUid(g_CfgData.bUseNextUid);
208 SetWndText(hDlg, IDC_ADMIN_UID, g_CfgData.szAdminUID);
212 static void UseNextUid(BOOL bUseNext)
214 ENABLE_STATE es = bUseNext ? ES_DISABLE : ES_ENABLE;
216 SetEnable(hDlg, IDC_ADMIN_UID, es);
217 SetEnable(hDlg, IDC_AFS_UID_SPINNER, es);