c16df9ca5e7d501a30457a2cebd234300f5c16c5
[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             }
99          break;
100
101       case WM_HELP:
102          WinHelp (hDlg, g.szHelpFile, HELP_CONTEXT, IDH_AFSCONFIG_ADVANCED_MISC);
103          break;
104       }
105
106    return FALSE;
107 }
108
109
110 void Misc_OnInitDialog (HWND hDlg)
111 {
112    if (fFirstTime) {
113       Config_GetLanAdapter(&g.Configuration.nLanAdapter);
114       Config_GetProbeInt (&g.Configuration.csecProbe);
115       Config_GetNumThreads (&g.Configuration.nThreads);
116       Config_GetNumDaemons (&g.Configuration.nDaemons);
117       Config_GetSysName (g.Configuration.szSysName);
118       Config_GetRootVolume (g.Configuration.szRootVolume);
119       Config_GetMountRoot (g.Configuration.szMountDir);
120
121       nLanAdapter = g.Configuration.nLanAdapter;
122       csecProbe = g.Configuration.csecProbe;
123       nThreads = g.Configuration.nThreads;
124       nDaemons = g.Configuration.nDaemons;
125       lstrcpy(szSysName, g.Configuration.szSysName);
126       lstrcpy(szRootVolume, g.Configuration.szRootVolume);
127       lstrcpy(szMountDir, g.Configuration.szMountDir);
128
129       fFirstTime = FALSE;
130    }
131
132    CreateSpinner (GetDlgItem (hDlg, IDC_LAN_ADAPTER), 10, FALSE, nLANA_MIN, nLanAdapter, nLANA_MAX);
133    CreateSpinner (GetDlgItem (hDlg, IDC_PROBE), 10, FALSE, csecPROBE_MIN, csecProbe, csecPROBE_MAX);
134    CreateSpinner (GetDlgItem (hDlg, IDC_THREADS), 10, FALSE, cTHREADS_MIN, nThreads, cTHREADS_MAX);
135    CreateSpinner (GetDlgItem (hDlg, IDC_DAEMONS), 10, FALSE, cDAEMONS_MIN, nDaemons, cDAEMONS_MAX);
136    
137    SetDlgItemText (hDlg, IDC_SYSNAME, szSysName);
138    SetDlgItemText (hDlg, IDC_ROOTVOLUME, szRootVolume);
139    SetDlgItemText (hDlg, IDC_MOUNTDIR, szMountDir);
140 }
141
142 void Misc_OnOK (HWND hDlg)
143 {
144    nLanAdapter = SP_GetPos (GetDlgItem (hDlg, IDC_LAN_ADAPTER));
145
146    csecProbe = SP_GetPos (GetDlgItem (hDlg, IDC_PROBE));
147   
148    nThreads = SP_GetPos (GetDlgItem (hDlg, IDC_THREADS));
149    
150    nDaemons = SP_GetPos (GetDlgItem (hDlg, IDC_DAEMONS));
151    
152    GetDlgItemText (hDlg, IDC_SYSNAME, szSysName, sizeof(szSysName));
153    GetDlgItemText (hDlg, IDC_ROOTVOLUME, szRootVolume, sizeof(szRootVolume));
154    GetDlgItemText (hDlg, IDC_MOUNTDIR, szMountDir, sizeof(szMountDir));
155    
156    EndDialog(hDlg, IDOK);
157 }
158
159
160 BOOL Misc_OnApply()
161 {
162    if (fFirstTime)
163       return TRUE;
164    
165    if (nLanAdapter != g.Configuration.nLanAdapter) {
166       if (!Config_SetLanAdapter (nLanAdapter))
167          return FALSE;
168       g.Configuration.nLanAdapter = nLanAdapter;
169    }
170
171    if (csecProbe != g.Configuration.csecProbe) {
172       if (!Config_SetProbeInt (csecProbe))
173          return FALSE;
174       g.Configuration.csecProbe = csecProbe;
175    }
176    
177    if (nThreads != g.Configuration.nThreads) {
178       if (!Config_SetNumThreads (nThreads))
179          return FALSE;
180       g.Configuration.nThreads = nThreads;
181    }
182    
183    if (nDaemons != g.Configuration.nDaemons) {
184       if (!Config_SetNumDaemons (nDaemons))
185          return FALSE;
186       g.Configuration.nDaemons = nDaemons;
187    }
188    
189    if (lstrcmp(szSysName, g.Configuration.szSysName) != 0) {
190       if (!Config_SetSysName (szSysName))
191          return FALSE;
192       lstrcpy(g.Configuration.szSysName, szSysName);
193    }
194    
195    if (lstrcmp(szRootVolume, g.Configuration.szRootVolume) != 0) {
196       if (!Config_SetRootVolume (szRootVolume))
197          return FALSE;
198       lstrcpy(g.Configuration.szRootVolume, szRootVolume);
199    }
200    
201    if (lstrcmp(szMountDir, g.Configuration.szMountDir) != 0) {
202       if (!Config_SetMountRoot (szMountDir))
203          return FALSE;
204       lstrcpy(g.Configuration.szMountDir, szMountDir);
205    }
206
207    return TRUE;
208 }
209
210 void Misc_OnCancel(HWND hDlg)
211 {
212    fFirstTime = TRUE;
213
214    EndDialog(hDlg, IDCANCEL);
215 }
216