windows-updates-including-dont-lose-tokens-20011110
[openafs.git] / src / WINNT / client_config / dlg_misc.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 extern "C" {
11 #include <afs/param.h>
12 #include <afs/stds.h>
13 }
14 #include <stdio.h>
15 #include "afs_config.h"
16
17
18 /*
19  * DEFINITIONS ________________________________________________________________
20  *
21  */
22
23 #define nLANA_MIN             0
24 #define nLANA_MAX             10
25
26 #define csecPROBE_MIN         1
27 #define csecPROBE_MAX         600
28
29 #define cTHREADS_MIN          1
30 #define cTHREADS_MAX          128
31
32 #define cDAEMONS_MIN          1
33 #define cDAEMONS_MAX          128
34
35
36 // Our dialog data
37 BOOL fFirstTime = TRUE;
38 DWORD nLanAdapter;
39 DWORD csecProbe;
40 DWORD nThreads;
41 DWORD nDaemons;
42 TCHAR szSysName[ MAX_PATH ];
43 TCHAR szRootVolume[ MAX_PATH ];
44 TCHAR szMountDir[ MAX_PATH ];
45
46
47 /*
48  * PROTOTYPES _________________________________________________________________
49  *
50  */
51
52 void Misc_OnInitDialog (HWND hDlg);
53 void Misc_OnOK(HWND hDlg);
54 void Misc_OnCancel(HWND hDlg);
55 BOOL Misc_OnApply();
56
57
58 /*
59  * ROUTINES ___________________________________________________________________
60  *
61  */
62
63 BOOL CALLBACK Misc_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
64 {
65    switch (msg)
66       {
67       case WM_INITDIALOG:
68          Misc_OnInitDialog (hDlg);
69          break;
70
71       case WM_CTLCOLORSTATIC:
72          if ((HWND)lp == GetDlgItem (hDlg, IDC_CHUNK_SIZE))
73             {
74             if (IsWindowEnabled ((HWND)lp))
75                {
76                static HBRUSH hbrStatic = CreateSolidBrush (GetSysColor (COLOR_WINDOW));
77                SetTextColor ((HDC)wp, GetSysColor (COLOR_WINDOWTEXT));
78                SetBkColor ((HDC)wp, GetSysColor (COLOR_WINDOW));
79                return (BOOL)hbrStatic;
80                }
81             }
82          break;
83
84       case WM_COMMAND:
85          switch (LOWORD(wp))
86             {
87             case IDHELP:
88                Misc_DlgProc (hDlg, WM_HELP, 0, 0);
89                break;
90
91             case IDOK:
92                 Misc_OnOK(hDlg);
93                 break;
94                 
95             case IDCANCEL:
96                 Misc_OnCancel(hDlg);
97                 break;
98                         case IDC_AUTOLANA:
99                                 if (IsDlgButtonChecked(hDlg,IDC_AUTOLANA))
100                                         nLanAdapter=-1;
101                                 else
102                                         nLanAdapter=0;
103                                 SP_SetPos (GetDlgItem (hDlg, IDC_LAN_ADAPTER),nLanAdapter);
104                                 EnableWindow(GetDlgItem(hDlg,IDC_LAN_ADAPTER),(nLanAdapter!=-1));
105             }
106          break;
107
108       case WM_HELP:
109          WinHelp (hDlg, g.szHelpFile, HELP_CONTEXT, IDH_AFSCONFIG_ADVANCED_MISC);
110          break;
111       }
112
113    return FALSE;
114 }
115
116
117 void Misc_OnInitDialog (HWND hDlg)
118 {
119    if (fFirstTime) {
120       Config_GetLanAdapter(&g.Configuration.nLanAdapter);
121       Config_GetProbeInt (&g.Configuration.csecProbe);
122       Config_GetNumThreads (&g.Configuration.nThreads);
123       Config_GetNumDaemons (&g.Configuration.nDaemons);
124       Config_GetSysName (g.Configuration.szSysName);
125       Config_GetRootVolume (g.Configuration.szRootVolume);
126       Config_GetMountRoot (g.Configuration.szMountDir);
127
128       nLanAdapter = g.Configuration.nLanAdapter;
129       csecProbe = g.Configuration.csecProbe;
130       nThreads = g.Configuration.nThreads;
131       nDaemons = g.Configuration.nDaemons;
132       lstrcpy(szSysName, g.Configuration.szSysName);
133       lstrcpy(szRootVolume, g.Configuration.szRootVolume);
134       lstrcpy(szMountDir, g.Configuration.szMountDir);
135
136       fFirstTime = FALSE;
137    }
138
139    CreateSpinner (GetDlgItem (hDlg, IDC_LAN_ADAPTER), 99, FALSE, nLANA_MIN, nLanAdapter, nLANA_MAX);
140    CreateSpinner (GetDlgItem (hDlg, IDC_PROBE), 10, FALSE, csecPROBE_MIN, csecProbe, csecPROBE_MAX);
141    CreateSpinner (GetDlgItem (hDlg, IDC_THREADS), 10, FALSE, cTHREADS_MIN, nThreads, cTHREADS_MAX);
142    CreateSpinner (GetDlgItem (hDlg, IDC_DAEMONS), 10, FALSE, cDAEMONS_MIN, nDaemons, cDAEMONS_MAX);
143    
144    SetDlgItemText (hDlg, IDC_SYSNAME, szSysName);
145    SetDlgItemText (hDlg, IDC_ROOTVOLUME, szRootVolume);
146    SetDlgItemText (hDlg, IDC_MOUNTDIR, szMountDir);
147    CheckDlgButton (hDlg, IDC_AUTOLANA, (nLanAdapter==-1));
148    EnableWindow(GetDlgItem(hDlg,IDC_LAN_ADAPTER),(nLanAdapter!=-1));
149 }
150
151 void Misc_OnOK (HWND hDlg)
152 {
153         nLanAdapter =  (IsDlgButtonChecked(hDlg,IDC_AUTOLANA))?-1
154                 :SP_GetPos (GetDlgItem (hDlg, IDC_LAN_ADAPTER));
155
156    csecProbe = SP_GetPos (GetDlgItem (hDlg, IDC_PROBE));
157   
158    nThreads = SP_GetPos (GetDlgItem (hDlg, IDC_THREADS));
159    
160    nDaemons = SP_GetPos (GetDlgItem (hDlg, IDC_DAEMONS));
161    
162    GetDlgItemText (hDlg, IDC_SYSNAME, szSysName, sizeof(szSysName));
163    GetDlgItemText (hDlg, IDC_ROOTVOLUME, szRootVolume, sizeof(szRootVolume));
164    GetDlgItemText (hDlg, IDC_MOUNTDIR, szMountDir, sizeof(szMountDir));
165    
166    EndDialog(hDlg, IDOK);
167 }
168
169
170 BOOL Misc_OnApply()
171 {
172    if (fFirstTime)
173       return TRUE;
174
175    if (nLanAdapter != g.Configuration.nLanAdapter) {
176       if (!Config_SetLanAdapter (nLanAdapter))
177          return FALSE;
178       g.Configuration.nLanAdapter = nLanAdapter;
179    }
180
181    if (csecProbe != g.Configuration.csecProbe) {
182       if (!Config_SetProbeInt (csecProbe))
183          return FALSE;
184       g.Configuration.csecProbe = csecProbe;
185    }
186    
187    if (nThreads != g.Configuration.nThreads) {
188       if (!Config_SetNumThreads (nThreads))
189          return FALSE;
190       g.Configuration.nThreads = nThreads;
191    }
192    
193    if (nDaemons != g.Configuration.nDaemons) {
194       if (!Config_SetNumDaemons (nDaemons))
195          return FALSE;
196       g.Configuration.nDaemons = nDaemons;
197    }
198    
199    if (lstrcmp(szSysName, g.Configuration.szSysName) != 0) {
200       if (!Config_SetSysName (szSysName))
201          return FALSE;
202       lstrcpy(g.Configuration.szSysName, szSysName);
203    }
204    
205    if (lstrcmp(szRootVolume, g.Configuration.szRootVolume) != 0) {
206       if (!Config_SetRootVolume (szRootVolume))
207          return FALSE;
208       lstrcpy(g.Configuration.szRootVolume, szRootVolume);
209    }
210    
211    if (lstrcmp(szMountDir, g.Configuration.szMountDir) != 0) {
212       if (!Config_SetMountRoot (szMountDir))
213          return FALSE;
214       lstrcpy(g.Configuration.szMountDir, szMountDir);
215    }
216
217    return TRUE;
218 }
219
220 void Misc_OnCancel(HWND hDlg)
221 {
222    fFirstTime = TRUE;
223
224    EndDialog(hDlg, IDCANCEL);
225 }
226