400397cc460ba719bdcf5f144678537ed888eacc
[openafs.git] / src / WINNT / afssvrcfg / backup_server_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 extern "C" {
15 #include <afs/param.h>
16 #include <afs/stds.h>
17 }
18
19 #include "afscfg.h"
20 #include "resource.h"
21
22
23 /*
24  * DEFINITIONS _________________________________________________________________
25  *
26  */
27 static HWND hDlg = 0;
28 int nOptionButtonSeparationHeight;  // This is used by sys_control_page.cpp
29
30
31 /*
32  * PROTOTYPES _________________________________________________________________
33  *
34  */
35 static void OnInitDialog(HWND hwndDlg);
36 static void CantBackup(UINT nMsgID);
37 static void CalcOptionButtonSeparationHeight();
38
39
40 /*
41  * EXPORTED FUNCTIONS _________________________________________________________________
42  *
43  */
44
45 /*
46  * Dialog Proc _________________________________________________________________
47  *
48  */
49 BOOL CALLBACK BackupPageDlgProc(HWND hwndDlg, UINT msg, WPARAM wp, LPARAM lp)
50 {
51         if (WizStep_Common_DlgProc (hwndDlg, msg, wp, lp))
52                 return FALSE;
53
54         switch (msg) {
55                 case WM_INITDIALOG:
56                  OnInitDialog(hwndDlg);
57                      break;
58
59                 case WM_COMMAND:
60                         switch (LOWORD(wp)) {
61                                 case IDNEXT:
62                                         g_pWiz->SetState(sidSTEP_EIGHT);
63                                         break;
64
65                                 case IDBACK:
66                                    g_pWiz->SetState(sidSTEP_SIX);
67                                    break;
68
69                                 case IDC_DONT_CONFIG_BACKUP_SERVER:
70                                         g_CfgData.configBak = CS_DONT_CONFIGURE;
71                                         break;
72
73                                 case IDC_CONFIG_BACKUP_SERVER:
74                                         g_CfgData.configBak = CS_CONFIGURE;
75                                         break;
76                         }
77                 break;
78
79         }
80
81         return FALSE;
82 }
83
84
85 /*
86  * STATIC FUNCTIONS _________________________________________________________________
87  *
88  */
89
90 /*
91  * Event Handler Functions _________________________________________________________________
92  *
93  */
94 static void OnInitDialog(HWND hwndDlg)
95 {
96         hDlg = hwndDlg;
97
98     CalcOptionButtonSeparationHeight();
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.configBak == CS_ALREADY_CONFIGURED) {
105                 CantBackup(IDS_ALREADY_A_BACKUP_SERVER);
106                 return;
107         }
108
109         // Should this step be disabled?  Yes, if this machine
110         // is not configured as a database server.
111         if (!ConfiguredOrConfiguring(g_CfgData.configDB)) {
112                 CantBackup(IDS_NOT_A_DB_SERVER);
113                 EnableStep(g_CfgData.configBak, FALSE);
114                 return;
115         }
116
117         // Enable this in case it was disabled the last time
118         EnableStep(g_CfgData.configBak);
119
120         if (g_CfgData.configBak == CS_DONT_CONFIGURE)
121                 SetCheck(hDlg, IDC_DONT_CONFIG_BACKUP_SERVER);
122         else if (g_CfgData.configBak == CS_CONFIGURE)
123                 SetCheck(hDlg, IDC_CONFIG_BACKUP_SERVER);
124 }
125
126
127 /*
128  * Utility Functions _________________________________________________________________
129  *
130  */
131 static void CantBackup(UINT nMsgID)
132 {
133         TCHAR szMsg[cchRESOURCE];
134
135         GetString(szMsg, nMsgID);
136
137         ShowWnd(hDlg, IDC_BACKUP_SERVER_QUESTION, FALSE);
138         ShowWnd(hDlg, IDC_CONFIG_BACKUP_SERVER, FALSE);
139         ShowWnd(hDlg, IDC_DONT_CONFIG_BACKUP_SERVER, FALSE);
140
141         ShowWnd(hDlg, IDC_CANT_BACKUP_MSG);
142         SetWndText(hDlg, IDC_CANT_BACKUP_MSG, szMsg);
143 }
144
145 static void CalcOptionButtonSeparationHeight()
146 {
147     RECT rectOB1, rectOB2;
148
149     GetWindowRect(GetDlgItem(hDlg, IDC_CONFIG_BACKUP_SERVER), &rectOB1);
150     GetWindowRect(GetDlgItem(hDlg, IDC_DONT_CONFIG_BACKUP_SERVER), &rectOB2);
151
152     nOptionButtonSeparationHeight = rectOB2.top - rectOB1.top;
153 }
154