6 #include "afs_config.h"
7 #include "tab_drives.h"
11 * PROTOTYPES _________________________________________________________________
15 void DrivesTab_OnInitDialog (HWND hDlg);
16 void DrivesTab_OnSelect (HWND hDlg);
17 void DrivesTab_OnCheck (HWND hDlg);
18 void DrivesTab_OnAdd (HWND hDlg);
19 void DrivesTab_OnEdit (HWND hDlg);
20 void DrivesTab_OnRemove (HWND hDlg);
21 void DrivesTab_OnAdvanced (HWND hDlg);
23 void DrivesTab_Enable (HWND hDlg);
24 int DrivesTab_DriveFromItem (HWND hDlg, int iItem);
25 void DrivesTab_FillList (HWND hDlg);
26 void DrivesTab_EditMapping (HWND hDlg, int iDrive);
28 BOOL CALLBACK DriveEdit_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp);
29 void DriveEdit_OnInitDialog (HWND hDlg);
30 void DriveEdit_OnOK (HWND hDlg);
31 void DriveEdit_Enable (HWND hDlg);
33 BOOL CALLBACK Submounts_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp);
34 void Submounts_OnInitDialog (HWND hDlg);
35 void Submounts_OnApply (HWND hDlg);
36 void Submounts_OnSelect (HWND hDlg);
37 void Submounts_OnAdd (HWND hDlg);
38 void Submounts_OnEdit (HWND hDlg);
39 void Submounts_OnRemove (HWND hDlg);
40 void Submounts_EditSubmount (HWND hDlg, PSUBMOUNT pSubmount);
42 BOOL CALLBACK SubEdit_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp);
43 void SubEdit_OnInitDialog (HWND hDlg);
44 void SubEdit_OnOK (HWND hDlg);
45 void SubEdit_Enable (HWND hDlg);
49 * ROUTINES ___________________________________________________________________
53 BOOL CALLBACK DrivesTab_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
58 DrivesTab_OnInitDialog (hDlg);
65 DrivesTab_Enable (hDlg);
69 if (HIWORD(wp) == LBN_CLICKED)
70 DrivesTab_OnCheck (hDlg);
71 else if ((HIWORD(wp) == LBN_SELCHANGE) || (HIWORD(wp) == LBN_SELCANCEL))
72 DrivesTab_OnSelect (hDlg);
76 DrivesTab_OnAdd (hDlg);
80 DrivesTab_OnEdit (hDlg);
84 DrivesTab_OnRemove (hDlg);
88 DrivesTab_OnAdvanced (hDlg);
92 DrivesTab_DlgProc (hDlg, WM_HELP, 0, 0);
98 WinHelp (hDlg, g.szHelpFile, HELP_CONTEXT, IDH_AFSCONFIG_DRIVES);
106 void DrivesTab_OnInitDialog (HWND hDlg)
108 ShowWindow (GetDlgItem (hDlg, IDC_ADVANCED), g.fIsWinNT);
110 DrivesTab_FillList (hDlg);
114 void DrivesTab_OnSelect (HWND hDlg)
116 if (IsWindowEnabled (GetDlgItem (hDlg, IDC_LIST)))
118 UINT iSel = SendDlgItemMessage (hDlg, IDC_LIST, LB_GETCURSEL, 0, 0);
120 EnableWindow (GetDlgItem (hDlg, IDC_EDIT), (iSel != -1));
121 EnableWindow (GetDlgItem (hDlg, IDC_REMOVE), (iSel != -1));
126 void DrivesTab_OnCheck (HWND hDlg)
128 HWND hList = GetDlgItem (hDlg, IDC_LIST);
129 int iItemSel = SendMessage (hList, LB_GETCURSEL, 0, 0);
130 int iDriveSel = DrivesTab_DriveFromItem (hDlg, iItemSel);
131 BOOL fChecked = SendMessage (hList, LB_GETITEMDATA, iItemSel, 0);
136 if (fChecked && g.Configuration.NetDrives.aDriveMap[ iDriveSel ].szMapping[0] && !g.Configuration.NetDrives.aDriveMap[ iDriveSel ].fActive)
138 if (!ActivateDriveMap (g.Configuration.NetDrives.aDriveMap[ iDriveSel ].chDrive, g.Configuration.NetDrives.aDriveMap[ iDriveSel ].szMapping, g.Configuration.NetDrives.aDriveMap[ iDriveSel ].szSubmount, g.Configuration.NetDrives.aDriveMap[ iDriveSel ].fPersistent, &dwStatus))
139 Message (MB_OK | MB_ICONHAND, IDS_ERROR_MAP, IDS_ERROR_MAP_DESC, TEXT("%08lX"), dwStatus);
140 DrivesTab_FillList (hDlg);
142 else if (!fChecked && g.Configuration.NetDrives.aDriveMap[ iDriveSel ].fActive)
144 if (!InactivateDriveMap (g.Configuration.NetDrives.aDriveMap[ iDriveSel ].chDrive, &dwStatus))
145 Message (MB_OK | MB_ICONHAND, IDS_ERROR_UNMAP, IDS_ERROR_UNMAP_DESC, TEXT("%08lX"), dwStatus);
146 DrivesTab_FillList (hDlg);
152 void DrivesTab_OnAdd (HWND hDlg)
154 DrivesTab_EditMapping (hDlg, -1);
158 void DrivesTab_OnEdit (HWND hDlg)
160 HWND hList = GetDlgItem (hDlg, IDC_LIST);
161 int iItemSel = SendMessage (hList, LB_GETCURSEL, 0, 0);
162 int iDriveSel = DrivesTab_DriveFromItem (hDlg, iItemSel);
164 DrivesTab_EditMapping (hDlg, iDriveSel);
168 void DrivesTab_OnRemove (HWND hDlg)
170 HWND hList = GetDlgItem (hDlg, IDC_LIST);
171 int iItemSel = SendMessage (hList, LB_GETCURSEL, 0, 0);
172 int iDriveSel = DrivesTab_DriveFromItem (hDlg, iItemSel);
176 if (g.Configuration.NetDrives.aDriveMap[ iDriveSel ].szMapping[0])
178 if (g.Configuration.NetDrives.aDriveMap[ iDriveSel ].fActive)
181 if (!InactivateDriveMap (g.Configuration.NetDrives.aDriveMap[ iDriveSel ].chDrive, &dwStatus))
183 Message (MB_OK | MB_ICONHAND, IDS_ERROR_UNMAP, IDS_ERROR_UNMAP_DESC, TEXT("%08lX"), dwStatus);
187 g.Configuration.NetDrives.aDriveMap[ iDriveSel ].szMapping[0] = TEXT('\0');
188 WriteDriveMappings (&g.Configuration.NetDrives);
190 DrivesTab_FillList (hDlg);
196 void DrivesTab_OnAdvanced (HWND hDlg)
198 TCHAR szTitle[ cchRESOURCE ];
199 GetString (szTitle, IDS_SUBMOUNTS_TITLE);
201 LPPROPSHEET psh = PropSheet_Create (szTitle, FALSE, GetParent(hDlg), 0);
202 psh->sh.dwFlags |= PSH_NOAPPLYNOW; // Remove the Apply button
203 psh->sh.dwFlags |= PSH_HASHELP; // Add a Help button instead
204 PropSheet_AddTab (psh, szTitle, IDD_SUBMOUNTS, (DLGPROC)Submounts_DlgProc, 0, TRUE);
205 PropSheet_ShowModal (psh);
209 void DrivesTab_Enable (HWND hDlg)
211 BOOL fRunning = (Config_GetServiceState() == SERVICE_RUNNING);
213 EnableWindow (GetDlgItem (hDlg, IDC_LIST), fRunning);
214 EnableWindow (GetDlgItem (hDlg, IDC_ADD), fRunning);
215 EnableWindow (GetDlgItem (hDlg, IDC_EDIT), fRunning);
216 EnableWindow (GetDlgItem (hDlg, IDC_REMOVE), fRunning);
218 TCHAR szText[ cchRESOURCE ];
219 GetString (szText, (fRunning) ? IDS_TIP_DRIVES : IDS_WARN_STOPPED);
220 SetDlgItemText (hDlg, IDC_WARN, szText);
224 int DrivesTab_DriveFromItem (HWND hDlg, int iItem)
226 TCHAR szItem[ 1024 ] = TEXT("");
227 SendDlgItemMessage (hDlg, IDC_LIST, LB_GETTEXT, iItem, (LPARAM)szItem);
230 if ((pch = (LPTSTR)lstrchr (szItem, TEXT(':'))) != NULL)
235 if ((*pch >= TEXT('A')) && (*pch <= TEXT('Z')))
236 return (*pch) - TEXT('A');
244 void DrivesTab_FillList (HWND hDlg)
246 FreeDriveMapList (&g.Configuration.NetDrives);
247 QueryDriveMapList (&g.Configuration.NetDrives);
249 HWND hList = GetDlgItem (hDlg, IDC_LIST);
250 int iItemSel = SendMessage (hList, LB_GETCURSEL, 0, 0);
251 int iDriveSel = DrivesTab_DriveFromItem (hDlg, iItemSel);
252 SendMessage (hList, WM_SETREDRAW, FALSE, 0);
253 SendMessage (hList, LB_RESETCONTENT, 0, 0);
257 for (int iDrive = 0; iDrive < 26; ++iDrive)
259 if (!g.Configuration.NetDrives.aDriveMap[ iDrive ].szMapping[0])
262 TCHAR szAfsPath[ MAX_PATH ];
263 AdjustAfsPath (szAfsPath, g.Configuration.NetDrives.aDriveMap[ iDrive ].szMapping, TRUE, FALSE);
265 LPTSTR psz = FormatString (IDS_DRIVE_MAP, TEXT("%c%s"), g.Configuration.NetDrives.aDriveMap[ iDrive ].chDrive, szAfsPath);
266 int iItem = SendMessage (hList, LB_ADDSTRING, 0, (LPARAM)psz);
267 SendMessage (hList, LB_SETITEMDATA, iItem, g.Configuration.NetDrives.aDriveMap[ iDrive ].fActive);
269 if (iDrive == iDriveSel)
273 SendMessage (hList, WM_SETREDRAW, TRUE, 0);
275 SendMessage (hList, LB_SETCURSEL, iItemSel, 0);
277 DrivesTab_Enable (hDlg);
278 DrivesTab_OnSelect (hDlg);
282 void DrivesTab_EditMapping (HWND hDlg, int iDrive)
284 DRIVEMAP DriveMapOrig;
285 memset (&DriveMapOrig, 0x00, sizeof(DRIVEMAP));
289 memcpy (&DriveMapOrig, &g.Configuration.NetDrives.aDriveMap[ iDrive ], sizeof(DRIVEMAP));
293 memcpy (&DriveMap, &DriveMapOrig, sizeof(DRIVEMAP));
295 if (ModalDialogParam (IDD_DRIVE_EDIT, GetParent(hDlg), (DLGPROC)DriveEdit_DlgProc, (LPARAM)&DriveMap) == IDOK)
297 TCHAR szAfsPathOrig[ MAX_PATH ] = TEXT("");
299 AdjustAfsPath (szAfsPathOrig, DriveMapOrig.szMapping, TRUE, TRUE);
301 TCHAR szAfsPathNew[ MAX_PATH ];
302 AdjustAfsPath (szAfsPathNew, DriveMap.szMapping, TRUE, TRUE);
304 if ( (lstrcmpi (szAfsPathOrig, szAfsPathNew)) ||
305 (lstrcmpi (DriveMapOrig.szSubmount, DriveMap.szSubmount)) ||
306 (DriveMapOrig.chDrive != DriveMap.chDrive) ||
307 (DriveMapOrig.fPersistent != DriveMap.fPersistent) )
311 if ((iDrive != -1) && (DriveMapOrig.fActive))
313 if (!InactivateDriveMap (DriveMapOrig.chDrive, &dwStatus))
315 Message (MB_OK | MB_ICONHAND, IDS_ERROR_UNMAP, IDS_ERROR_UNMAP_DESC, TEXT("%08lX"), dwStatus);
316 DrivesTab_FillList (hDlg);
321 if (!ActivateDriveMap (DriveMap.chDrive, szAfsPathNew, DriveMap.szSubmount, DriveMap.fPersistent, &dwStatus))
323 Message (MB_OK | MB_ICONHAND, IDS_ERROR_MAP, IDS_ERROR_MAP_DESC, TEXT("%08lX"), dwStatus);
324 DrivesTab_FillList (hDlg);
328 if (DriveMap.szSubmount[0])
330 TCHAR szSubmountNow[ MAX_PATH ];
331 if (GetDriveSubmount (DriveMap.chDrive, szSubmountNow))
333 if (lstrcmpi (DriveMap.szSubmount, szSubmountNow))
334 Message (MB_OK | MB_ICONASTERISK, GetCautionTitle(), IDS_NEWSUB_DESC);
339 memset (&g.Configuration.NetDrives.aDriveMap[ iDrive ], 0x00, sizeof(DRIVEMAP));
340 memcpy (&g.Configuration.NetDrives.aDriveMap[ DriveMap.chDrive-chDRIVE_A ], &DriveMap, sizeof(DRIVEMAP));
341 lstrcpy (g.Configuration.NetDrives.aDriveMap[ DriveMap.chDrive-chDRIVE_A ].szMapping, szAfsPathNew);
342 WriteDriveMappings (&g.Configuration.NetDrives);
344 DrivesTab_FillList (hDlg);
350 BOOL CALLBACK DriveEdit_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
355 SetWindowLong (hDlg, DWL_USER, lp);
356 DriveEdit_OnInitDialog (hDlg);
363 DriveEdit_OnOK (hDlg);
367 EndDialog (hDlg, IDCANCEL);
371 DriveEdit_Enable (hDlg);
375 DriveEdit_DlgProc (hDlg, WM_HELP, 0, 0);
381 WinHelp (hDlg, g.szHelpFile, HELP_CONTEXT, IDH_AFSCONFIG_DRIVES_ADDEDIT);
388 void DriveEdit_OnInitDialog (HWND hDlg)
390 PDRIVEMAP pMap = (PDRIVEMAP)GetWindowLong (hDlg, DWL_USER);
392 // Fill in the combo box
394 DWORD dwDrives = GetLogicalDrives() | 0x07; // Always pretend A,B,C: are used
396 if (pMap->chDrive != 0)
397 dwDrives &= ~( 1 << (pMap->chDrive - chDRIVE_A) );
400 HWND hCombo = GetDlgItem (hDlg, IDC_DRIVE);
401 SendMessage (hCombo, WM_SETREDRAW, FALSE, 0);
403 for (int ii = 0; ii < 26; ++ii)
405 if (!(dwDrives & (1<<ii)))
407 TCHAR szText[ cchRESOURCE ];
408 GetString (szText, IDS_MAP_LETTER);
411 if ((pch = (LPTSTR)lstrchr (szText, TEXT('*'))) != NULL)
412 *pch = TEXT('A') + ii;
414 int iItem = SendMessage (hCombo, CB_ADDSTRING, 0, (LPARAM)szText);
415 SendMessage (hCombo, CB_SETITEMDATA, iItem, ii);
416 if (pMap->chDrive && (ii == pMap->chDrive - chDRIVE_A))
418 else if ((!pMap->chDrive) && (iItemSel == -1))
423 SendMessage (hCombo, WM_SETREDRAW, TRUE, 0);
424 SendMessage (hCombo, CB_SETCURSEL, iItemSel, 0);
426 TCHAR szMapping[ MAX_PATH ];
427 AdjustAfsPath (szMapping, ((pMap->szMapping[0]) ? pMap->szMapping : TEXT("/afs")), TRUE, FALSE);
428 SetDlgItemText (hDlg, IDC_PATH, szMapping);
429 SetDlgItemText (hDlg, IDC_DESC, pMap->szSubmount);
431 CheckDlgButton (hDlg, IDC_PERSISTENT, (pMap->chDrive == 0) ? TRUE : (pMap->fPersistent));
433 DriveEdit_Enable (hDlg);
437 void DriveEdit_OnOK (HWND hDlg)
439 PDRIVEMAP pMap = (PDRIVEMAP)GetWindowLong (hDlg, DWL_USER);
441 int iItem = SendDlgItemMessage (hDlg, IDC_DRIVE, CB_GETCURSEL, 0, 0);
442 int iDrive = SendDlgItemMessage (hDlg, IDC_DRIVE, CB_GETITEMDATA, iItem, 0);
444 pMap->chDrive = chDRIVE_A + iDrive;
445 GetDlgItemText (hDlg, IDC_PATH, pMap->szMapping, MAX_PATH);
446 GetDlgItemText (hDlg, IDC_DESC, pMap->szSubmount, MAX_PATH);
447 pMap->fPersistent = IsDlgButtonChecked (hDlg, IDC_PERSISTENT);
449 if (pMap->szSubmount[0] && !IsValidSubmountName (pMap->szSubmount))
451 Message (MB_ICONHAND, GetErrorTitle(), IDS_BADSUB_DESC);
455 if ( (lstrncmpi (pMap->szMapping, TEXT("/afs"), lstrlen(TEXT("/afs")))) &&
456 (lstrncmpi (pMap->szMapping, TEXT("\\afs"), lstrlen(TEXT("\\afs")))) )
458 Message (MB_ICONHAND, GetErrorTitle(), IDS_BADMAP_DESC);
462 EndDialog (hDlg, IDOK);
466 void DriveEdit_Enable (HWND hDlg)
468 TCHAR szPath[ MAX_PATH ];
469 GetDlgItemText (hDlg, IDC_PATH, szPath, MAX_PATH);
470 EnableWindow (GetDlgItem (hDlg, IDOK), (szPath[0] != TEXT('\0')));
474 BOOL CALLBACK Submounts_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
479 Submounts_OnInitDialog (hDlg);
486 Submounts_OnApply (hDlg);
490 Submounts_OnAdd (hDlg);
494 Submounts_OnEdit (hDlg);
498 Submounts_OnRemove (hDlg);
502 Submounts_DlgProc (hDlg, WM_HELP, 0, 0);
508 WinHelp (hDlg, g.szHelpFile, HELP_CONTEXT, IDH_AFSCONFIG_SUBMOUNTS_NT);
512 switch (((LPNMHDR)lp)->code)
515 Submounts_OnSelect (hDlg);
519 if (IsWindowEnabled (GetDlgItem (hDlg, IDC_EDIT)))
520 Submounts_OnEdit (hDlg);
530 void Submounts_OnInitDialog (HWND hDlg)
532 // Prepare the columns on the server list
534 HWND hList = GetDlgItem (hDlg, IDC_LIST);
536 FASTLISTCOLUMN Column;
537 Column.dwFlags = FLCF_JUSTIFY_LEFT;
538 Column.cxWidth = 100;
539 GetString (Column.szText, IDS_SUBCOL_SHARE);
540 FastList_SetColumn (hList, 0, &Column);
542 Column.dwFlags = FLCF_JUSTIFY_LEFT;
543 Column.cxWidth = 200;
544 GetString (Column.szText, IDS_SUBCOL_PATH);
545 FastList_SetColumn (hList, 1, &Column);
547 // Remove the Context Help [?] thing from the title bar
549 DWORD dwStyle = GetWindowLong (GetParent (hDlg), GWL_STYLE);
550 dwStyle &= ~DS_CONTEXTHELP;
551 SetWindowLong (GetParent (hDlg), GWL_STYLE, dwStyle);
553 dwStyle = GetWindowLong (GetParent (hDlg), GWL_EXSTYLE);
554 dwStyle &= ~WS_EX_CONTEXTHELP;
555 SetWindowLong (GetParent (hDlg), GWL_EXSTYLE, dwStyle);
557 // Fill in the list of submounts
559 FastList_Begin (hList);
561 for (size_t ii = 0; ii < g.Configuration.NetDrives.cSubmounts; ++ii)
563 if (!g.Configuration.NetDrives.aSubmounts[ ii ].szSubmount[0])
567 memset (&ai, 0x00, sizeof(FASTLISTADDITEM));
568 ai.iFirstImage = IMAGE_NOIMAGE;
569 ai.iSecondImage = IMAGE_NOIMAGE;
570 ai.pszText = g.Configuration.NetDrives.aSubmounts[ ii ].szSubmount;
572 HLISTITEM hItem = FastList_AddItem (hList, &ai);
574 TCHAR szMapping[ MAX_PATH ];
575 AdjustAfsPath (szMapping, g.Configuration.NetDrives.aSubmounts[ ii ].szMapping, TRUE, FALSE);
576 FastList_SetItemText (hList, hItem, 1, szMapping);
579 FastList_End (hList);
580 Submounts_OnSelect (hDlg);
584 void Submounts_OnApply (HWND hDlg)
586 HWND hList = GetDlgItem (hDlg, IDC_LIST);
588 // Remove our current list of submounts
590 for (size_t ii = 0; ii < g.Configuration.NetDrives.cSubmounts; ++ii)
592 RemoveSubMount (g.Configuration.NetDrives.aSubmounts[ ii ].szSubmount);
595 // Add back all our new submounts
598 for (hItem = FastList_FindFirst (hList); hItem; hItem = FastList_FindNext (hList, hItem))
601 if ((pszSubmount = FastList_GetItemText (hList, hItem, 0)) == NULL)
604 if ((pszMapping = FastList_GetItemText (hList, hItem, 1)) == NULL)
607 AddSubMount ((LPTSTR)pszSubmount, (LPTSTR)pszMapping);
610 FreeDriveMapList (&g.Configuration.NetDrives);
611 QueryDriveMapList (&g.Configuration.NetDrives);
615 void Submounts_OnSelect (HWND hDlg)
617 HWND hList = GetDlgItem (hDlg, IDC_LIST);
619 size_t cSelected = 0;
620 size_t cSelectedInUse = 0;
623 for (hItem = FastList_FindFirstSelected (hList); hItem; hItem = FastList_FindNextSelected (hList, hItem))
628 if ((pszSubmount = FastList_GetItemText (hList, hItem, 0)) != NULL)
630 for (size_t ii = 0; ii < g.Configuration.NetDrives.cSubmounts; ++ii)
632 if (!lstrcmpi (pszSubmount, g.Configuration.NetDrives.aSubmounts[ii].szSubmount))
634 if (g.Configuration.NetDrives.aSubmounts[ii].fInUse)
641 EnableWindow (GetDlgItem (hDlg, IDC_REMOVE), (cSelected != 0) && (!cSelectedInUse));
642 EnableWindow (GetDlgItem (hDlg, IDC_EDIT), (cSelected == 1) && (!cSelectedInUse));
646 void Submounts_OnAdd (HWND hDlg)
648 HWND hList = GetDlgItem (hDlg, IDC_LIST);
651 memset (&Submount, 0x00, sizeof(Submount));
653 Submounts_EditSubmount (hDlg, &Submount);
657 void Submounts_OnEdit (HWND hDlg)
659 HWND hList = GetDlgItem (hDlg, IDC_LIST);
662 if ((hItem = FastList_FindFirstSelected (hList)) != NULL)
664 LPCTSTR pszSubmount = FastList_GetItemText (hList, hItem, 0);
665 LPCTSTR pszMapping = FastList_GetItemText (hList, hItem, 1);
668 memset (&Submount, 0x00, sizeof(Submount));
669 lstrcpy (Submount.szSubmount, pszSubmount);
670 lstrcpy (Submount.szMapping, pszMapping);
672 Submounts_EditSubmount (hDlg, &Submount);
677 void Submounts_OnRemove (HWND hDlg)
679 HWND hList = GetDlgItem (hDlg, IDC_LIST);
680 FastList_Begin (hList);
683 while ((hItem = FastList_FindFirstSelected (hList)) != NULL)
685 FastList_RemoveItem (hList, hItem);
688 FastList_End (hList);
692 void Submounts_EditSubmount (HWND hDlg, PSUBMOUNT pSubmount)
694 HWND hList = GetDlgItem (hDlg, IDC_LIST);
696 if (ModalDialogParam (IDD_SUBMOUNT_EDIT, GetParent(hDlg), (DLGPROC)SubEdit_DlgProc, (LPARAM)pSubmount) == IDOK)
698 TCHAR szMapping[ MAX_PATH ];
699 AdjustAfsPath (szMapping, pSubmount->szMapping, TRUE, FALSE);
702 for (hItem = FastList_FindFirst (hList); hItem; hItem = FastList_FindNext (hList, hItem))
705 if ((pszSubmount = FastList_GetItemText (hList, hItem, 0)) == NULL)
708 if (!lstrcmpi (pszSubmount, pSubmount->szSubmount))
715 memset (&ai, 0x00, sizeof(FASTLISTADDITEM));
716 ai.iFirstImage = IMAGE_NOIMAGE;
717 ai.iSecondImage = IMAGE_NOIMAGE;
718 ai.pszText = pSubmount->szSubmount;
720 hItem = FastList_AddItem (hList, &ai);
723 FastList_SetItemText (hList, hItem, 1, szMapping);
728 BOOL CALLBACK SubEdit_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
733 SetWindowLong (hDlg, DWL_USER, lp);
734 SubEdit_OnInitDialog (hDlg);
735 SubEdit_Enable (hDlg);
746 EndDialog (hDlg, IDCANCEL);
751 SubEdit_Enable (hDlg);
755 SubEdit_DlgProc (hDlg, WM_HELP, 0, 0);
761 WinHelp (hDlg, g.szHelpFile, HELP_CONTEXT, IDH_AFSCONFIG_SUBMOUNTS_NT_ADDEDIT);
769 void SubEdit_OnInitDialog (HWND hDlg)
771 PSUBMOUNT pSubmount = (PSUBMOUNT)GetWindowLong (hDlg, DWL_USER);
773 SetDlgItemText (hDlg, IDC_SUBMOUNT, pSubmount->szSubmount);
774 SetDlgItemText (hDlg, IDC_MAPPING, pSubmount->szMapping);
778 void SubEdit_OnOK (HWND hDlg)
780 PSUBMOUNT pSubmount = (PSUBMOUNT)GetWindowLong (hDlg, DWL_USER);
781 GetDlgItemText (hDlg, IDC_SUBMOUNT, pSubmount->szSubmount, MAX_PATH);
782 GetDlgItemText (hDlg, IDC_MAPPING, pSubmount->szMapping, MAX_PATH);
783 EndDialog (hDlg, IDOK);
787 void SubEdit_Enable (HWND hDlg)
791 TCHAR szText[ MAX_PATH ];
792 GetDlgItemText (hDlg, IDC_SUBMOUNT, szText, MAX_PATH);
796 GetDlgItemText (hDlg, IDC_MAPPING, szText, MAX_PATH);
800 EnableWindow (GetDlgItem (hDlg, IDOK), fEnable);