more-rx-updates-20060504
[openafs.git] / src / WINNT / afssvrcfg / replicatition_page.cpp
1 /*
2  * Copyright 2000, International Business Machines Corporation and others.
3  * All Rights Reserved.
4  * 
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
8  */
9
10 /*
11  * INCLUDES _________________________________________________________________
12  *
13  */
14 #include <winsock2.h>
15 #include <ws2tcpip.h>
16
17 extern "C" {
18 #include <afs/param.h>
19 #include <afs/stds.h>
20 }
21
22 #include "afscfg.h"
23 #include "resource.h"
24
25
26 /*
27  * DEFINITIONS _________________________________________________________________
28  *
29  */
30 static HWND hDlg = 0;
31
32
33 /*
34  * PROTOTYPES _________________________________________________________________
35  *
36  */
37 static void OnInitDialog(HWND hwndDlg);
38 static void ShowStatusMsg(UINT nMsgID);
39
40
41 /*
42  * EXPORTED FUNCTIONS _________________________________________________________________
43  *
44  */
45
46 /*
47  * Dialog Proc _________________________________________________________________
48  *
49  */
50 BOOL CALLBACK ReplicationPageDlgProc(HWND hwndDlg, UINT msg, WPARAM wp, LPARAM lp)
51 {
52         if (WizStep_Common_DlgProc (hwndDlg, msg, wp, lp))
53                 return FALSE;
54
55         switch (msg) {
56                 case WM_INITDIALOG:
57                  OnInitDialog(hwndDlg);
58                      break;
59
60                 case WM_COMMAND:
61                         switch (LOWORD(wp)) {
62                                 case IDNEXT:
63                                         g_pWiz->SetState(sidSTEP_ELEVEN);
64                                         break;
65
66                                 case IDBACK:
67                                    g_pWiz->SetState(sidSTEP_NINE);
68                                    break;
69
70                                 case IDC_DONT_REPLICATE:
71                                         g_CfgData.configRep = CS_DONT_CONFIGURE;
72                                         break;
73
74                                 case IDC_REPLICATE:
75                                         g_CfgData.configRep = CS_CONFIGURE;
76                                         break;
77                         }
78                 break;
79
80         }
81
82         return FALSE;
83 }
84
85
86
87 /*
88  * STATIC FUNCTIONS _________________________________________________________________
89  *
90  */
91
92 /*
93  * Event Handler Functions _________________________________________________________________
94  *
95  */
96 static void OnInitDialog(HWND hwndDlg)
97 {
98         hDlg = hwndDlg;
99
100         g_pWiz->EnableButtons(BACK_BUTTON | NEXT_BUTTON);
101         g_pWiz->SetButtonText(IDNEXT, IDS_NEXT);
102         g_pWiz->SetDefaultControl(IDNEXT);
103
104         if (g_CfgData.bFirstServer) {
105                 ShowStatusMsg(IDS_MUST_REPLICATE);
106                 g_CfgData.configRep = CS_CONFIGURE;
107                 return;
108         }
109
110         if (g_CfgData.configRep == CS_ALREADY_CONFIGURED) {
111                 ShowStatusMsg(IDS_ALREADY_REPLICATED);
112         return;
113         }
114
115         // If the replication of the root volumes could not be determined, we'll
116         // ask the user if they want to create them if they don't already exist.
117         if (!g_CfgData.bRootVolumesReplicationKnown) {
118                 SetWndText(hDlg, IDC_REPLICATE_QUESTION, IDS_REP_ROOT_VOLUMES_IF_NECESSARY_PROMPT);
119         g_CfgData.configRep = CS_CONFIGURE;
120                 SetCheck(hDlg, IDC_REPLICATE);
121         return;
122         }
123
124         // Should this step be disabled?  Yes, if this machine does
125         // not have a root.afs volume.
126         if (!ConfiguredOrConfiguring(g_CfgData.configRootVolumes)) {
127                 ShowStatusMsg(IDS_ROOT_AFS_DOESNT_EXIST);
128                 EnableStep(g_CfgData.configRep, FALSE);
129                 return;
130         }
131
132         // Must do this in case it was disabled on the last run through
133         EnableStep(g_CfgData.configRep);
134
135         if (g_CfgData.configRep == CS_DONT_CONFIGURE)
136                 SetCheck(hDlg, IDC_DONT_REPLICATE);
137         else if (g_CfgData.configRep == CS_CONFIGURE)
138                 SetCheck(hDlg, IDC_REPLICATE);
139 }
140
141
142 /*
143  * Utility Functions _________________________________________________________________
144  *
145  */
146 static void ShowStatusMsg(UINT nMsgID)
147 {
148         TCHAR szMsg[cchRESOURCE];
149
150         GetString(szMsg, nMsgID);
151
152         ShowWnd(hDlg, IDC_REPLICATE_QUESTION, FALSE);
153         ShowWnd(hDlg, IDC_REPLICATE, FALSE);
154         ShowWnd(hDlg, IDC_DONT_REPLICATE, FALSE);
155
156         ShowWnd(hDlg, IDC_CANT_REPLICATE_MSG);
157         SetWndText(hDlg, IDC_CANT_REPLICATE_MSG, szMsg);
158 }
159