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