2 * Copyright 2000, International Business Machines Corporation and others.
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
14 #include <afs/param.h>
20 #include "afs_config.h"
21 #include "tab_advanced.h"
26 * DEFINITIONS ________________________________________________________________
30 #define ckCACHE_MIN 1024L // 1MB Cache Minimum
31 #define ckCACHE_MAX 2097152L // 2GB Cache Maximum (limited by space)
33 #define ckCHUNK_MIN 4L
34 #define ckCHUNK_MAX 1048576L
36 #define cSTATS_MIN 256L
37 #define cSTATS_MAX 262144L
41 * PROTOTYPES _________________________________________________________________
45 void AdvancedTab_OnInitDialog (HWND hDlg
);
46 BOOL
AdvancedTab_OnApply (HWND hDlg
);
47 void AdvancedTab_OnRefresh (HWND hDlg
);
49 // From dlg_automap.cpp
50 extern BOOL CALLBACK
AutoMap_DlgProc (HWND hDlg
, UINT msg
, WPARAM wp
, LPARAM lp
);
53 extern BOOL
Misc_OnApply();
54 extern BOOL CALLBACK
Misc_DlgProc (HWND hDlg
, UINT msg
, WPARAM wp
, LPARAM lp
);
57 extern BOOL CALLBACK
Logon_DlgProc (HWND hDlg
, UINT msg
, WPARAM wp
, LPARAM lp
);
58 extern BOOL
Logon_OnApply();
61 extern BOOL CALLBACK
Diag_DlgProc (HWND hDlg
, UINT msg
, WPARAM wp
, LPARAM lp
);
62 extern BOOL
Diag_OnApply();
64 // From binding_misc.cpp
65 extern BOOL
Binding_OnApply();
66 extern BOOL CALLBACK
Binding_DlgProc (HWND hDlg
, UINT msg
, WPARAM wp
, LPARAM lp
);
69 * ROUTINES ___________________________________________________________________
73 static DWORD
log2 (DWORD dwValue
)
76 for (dwLog
= 0; (DWORD
)(1<<dwLog
) < dwValue
; ++dwLog
)
82 BOOL CALLBACK
AdvancedTab_DlgProc (HWND hDlg
, UINT msg
, WPARAM wp
, LPARAM lp
)
87 AdvancedTab_OnInitDialog (hDlg
);
90 case WM_CTLCOLORSTATIC
:
91 if ((HWND
)lp
== GetDlgItem (hDlg
, IDC_CHUNK_SIZE
))
93 if (IsWindowEnabled ((HWND
)lp
))
95 static HBRUSH hbrStatic
= CreateSolidBrush (GetSysColor (COLOR_WINDOW
));
96 SetTextColor ((HDC
)wp
, GetSysColor (COLOR_WINDOWTEXT
));
97 SetBkColor ((HDC
)wp
, GetSysColor (COLOR_WINDOW
));
98 return hbrStatic
?TRUE
:FALSE
;
107 if (!AdvancedTab_OnApply (hDlg
))
108 SetWindowLongPtr (hDlg
, DWLP_MSGRESULT
, TRUE
);
112 AdvancedTab_OnRefresh (hDlg
);
116 ModalDialog(IDD_MISC_CONFIG_PARMS
, hDlg
, (DLGPROC
)Misc_DlgProc
);
119 case IDC_BINDING_PARMS
:
120 ModalDialog(IDD_BINDING_CONFIG_PARAMS
, hDlg
, (DLGPROC
)Binding_DlgProc
);
123 case IDC_LOGON_PARMS
:
124 ModalDialog(IDD_LOGIN_CONFIG_PARMS
, hDlg
, (DLGPROC
)Logon_DlgProc
);
127 case IDC_AUTOMAP_PARMS
:
128 ModalDialog(IDD_GLOBAL_DRIVES
, hDlg
, (DLGPROC
)AutoMap_DlgProc
);
132 ModalDialog(IDD_DIAG_PARMS
, hDlg
, (DLGPROC
)Diag_DlgProc
);
139 (*(LPDWORD
)lp
) <<= 1;
141 case SPN_CHANGE_DOWN
:
142 (*(LPDWORD
)lp
) >>= 1;
145 (*(LPDWORD
)lp
) = 1 << (log2 (*(LPDWORD
)lp
));
151 AdvancedTab_DlgProc (hDlg
, WM_HELP
, 0, 0);
157 WinHelp (hDlg
, g
.szHelpFile
, HELP_CONTEXT
, IDH_AFSCONFIG_ADVANCED_NT
);
165 void AdvancedTab_OnInitDialog (HWND hDlg
)
167 Config_GetCacheSize (&g
.Configuration
.ckCache
);
168 Config_GetCachePath (g
.Configuration
.szCachePath
);
169 Config_GetChunkSize (&g
.Configuration
.ckChunk
);
170 Config_GetStatEntries (&g
.Configuration
.cStatEntries
);
172 ULONG ckCacheMin
= ckCACHE_MIN
;
173 ULONG ckCacheMax
= ckCACHE_MAX
;
175 CreateSpinner (GetDlgItem (hDlg
, IDC_CACHE_SIZE
), 10, FALSE
, ckCacheMin
, g
.Configuration
.ckCache
, ckCacheMax
);
176 CreateSpinner (GetDlgItem (hDlg
, IDC_CHUNK_SIZE
), 10, FALSE
, ckCHUNK_MIN
, g
.Configuration
.ckChunk
, ckCHUNK_MAX
);
177 CreateSpinner (GetDlgItem (hDlg
, IDC_STAT_ENTRIES
), 10, FALSE
, cSTATS_MIN
, g
.Configuration
.cStatEntries
, cSTATS_MAX
);
179 SetDlgItemText (hDlg
, IDC_CACHE_PATH
, g
.Configuration
.szCachePath
);
180 SetDlgItemText (hDlg
, IDC_SYSNAME
, g
.Configuration
.szSysName
);
182 AdvancedTab_OnRefresh (hDlg
);
186 BOOL
AdvancedTab_CommitChanges (BOOL fForce
)
189 if ((hDlg
= PropSheet_FindTabWindow (g
.psh
, (DLGPROC
)AdvancedTab_DlgProc
)) == NULL
)
192 SetWindowLongPtr (hDlg
, DWLP_MSGRESULT
, FALSE
); // Make sure we try to apply
193 if (AdvancedTab_OnApply (hDlg
))
195 SetWindowLongPtr (hDlg
, DWLP_MSGRESULT
, TRUE
);
200 BOOL
AdvancedTab_OnApply (HWND hDlg
)
202 // Don't try to do anything if we've already failed the apply
203 if (GetWindowLongPtr (hDlg
, DWLP_MSGRESULT
))
206 ULONG_PTR Value
= SP_GetPos (GetDlgItem (hDlg
, IDC_CACHE_SIZE
));
207 if (Value
!= g
.Configuration
.ckCache
)
209 if (!Config_SetCacheSize (Value
))
211 g
.Configuration
.ckCache
= Value
;
214 Value
= SP_GetPos (GetDlgItem (hDlg
, IDC_CHUNK_SIZE
));
215 if (Value
!= g
.Configuration
.ckChunk
)
217 if (!Config_SetChunkSize (Value
))
219 g
.Configuration
.ckChunk
= Value
;
222 Value
= SP_GetPos (GetDlgItem (hDlg
, IDC_STAT_ENTRIES
));
223 if (Value
!= g
.Configuration
.cStatEntries
)
225 if (!Config_SetStatEntries (Value
))
227 g
.Configuration
.cStatEntries
= Value
;
230 TCHAR szText
[ MAX_PATH
];
231 GetDlgItemText (hDlg
, IDC_CACHE_PATH
, szText
, MAX_PATH
);
232 if (lstrcmp (szText
, g
.Configuration
.szCachePath
))
234 if (!Config_SetCachePath (szText
))
236 lstrcpy (g
.Configuration
.szCachePath
, szText
);
239 // Save the data from the advanced tab dialogs
243 if (!Binding_OnApply())
246 if (!Logon_OnApply())
256 void AdvancedTab_OnRefresh (HWND hDlg
)
259 if (!Config_GetCacheInUse (&ckCacheInUse
))
264 pszInUse
= FormatString (IDS_KB_IN_USE
, TEXT("%ld"), ckCacheInUse
);
266 pszInUse
= FormatString (IDS_KB_ONLY
);
267 SetDlgItemText (hDlg
, IDC_INUSE
, pszInUse
);
268 FreeString (pszInUse
);