import-fs-formatting-to-windows-20031207
[openafs.git] / src / WINNT / afsusrmgr / usr_delete.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
15 #include "TaAfsUsrMgr.h"
16 #include "usr_delete.h"
17 #include "usr_col.h"
18
19
20 /*
21  * DEFINITIONS ________________________________________________________________
22  *
23  */
24
25
26 /*
27  * PROTOTYPES _________________________________________________________________
28  *
29  */
30
31 BOOL CALLBACK User_Delete_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp);
32 void User_Delete_OnInitDialog (HWND hDlg);
33 void User_Delete_OnDestroy (HWND hDlg);
34 void User_Delete_OnCheck (HWND hDlg);
35 void User_Delete_OnOK (HWND hDlg);
36
37
38 /*
39  * ROUTINES ___________________________________________________________________
40  *
41  */
42
43 void User_ShowDelete (LPASIDLIST pUserList)
44 {
45    ModalDialogParam (IDD_USER_DELETE, g.hMain, User_Delete_DlgProc, (LPARAM)pUserList);
46 }
47
48
49 BOOL CALLBACK User_Delete_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
50 {
51    if (AfsAppLib_HandleHelp (IDD_USER_DELETE, hDlg, msg, wp, lp))
52       return TRUE;
53
54    switch (msg)
55       {
56       case WM_INITDIALOG:
57          SetWindowLong (hDlg, DWL_USER, lp);
58          User_Delete_OnInitDialog (hDlg);
59          break;
60
61       case WM_DESTROY:
62          User_Delete_OnDestroy (hDlg);
63          break;
64
65       case WM_COMMAND:
66          switch (LOWORD(wp))
67             {
68             case IDOK:
69                User_Delete_OnOK (hDlg);
70                EndDialog (hDlg, IDOK);
71                break;
72
73             case IDCANCEL:
74                EndDialog (hDlg, IDCANCEL);
75                break;
76
77             case IDC_DELETE_KAS:
78             case IDC_DELETE_PTS:
79                User_Delete_OnCheck (hDlg);
80                break;
81             }
82          break;
83       }
84
85    return FALSE;
86 }
87
88
89 void User_Delete_OnInitDialog (HWND hDlg)
90 {
91    LPASIDLIST pUserList = (LPASIDLIST)GetWindowLong (hDlg, DWL_USER);
92
93    // Fix the title of the dialog
94    //
95    if (pUserList->cEntries == 1)
96       {
97       TCHAR szName[ cchNAME ];
98       User_GetDisplayName (szName, pUserList->aEntries[0].idObject);
99
100       TCHAR szText[ cchRESOURCE ];
101       GetDlgItemText (hDlg, IDC_DELETE_TITLE, szText, cchRESOURCE);
102
103       LPTSTR pszText = FormatString (szText, TEXT("%s"), szName);
104       SetDlgItemText (hDlg, IDC_DELETE_TITLE, pszText);
105       FreeString (pszText);
106       }
107    else
108       {
109       LPTSTR pszNames = CreateNameList (pUserList);
110
111       LPTSTR pszText = FormatString (IDS_USER_DELETE_MULTIPLE, TEXT("%s"), pszNames);
112       SetDlgItemText (hDlg, IDC_DELETE_TITLE, pszText);
113       FreeString (pszText);
114
115       FreeString (pszNames);
116       }
117
118    // Check the checkboxes
119    //
120    CheckDlgButton (hDlg, IDC_DELETE_KAS, BST_CHECKED);
121    CheckDlgButton (hDlg, IDC_DELETE_PTS, BST_CHECKED);
122 }
123
124
125 void User_Delete_OnDestroy (HWND hDlg)
126 {
127    LPASIDLIST pUserList = (LPASIDLIST)GetWindowLong (hDlg, DWL_USER);
128    asc_AsidListFree (&pUserList);
129 }
130
131
132 void User_Delete_OnCheck (HWND hDlg)
133 {
134    BOOL fEnable = FALSE;
135    if (IsDlgButtonChecked (hDlg, IDC_DELETE_KAS))
136       fEnable = TRUE;
137    if (IsDlgButtonChecked (hDlg, IDC_DELETE_PTS))
138       fEnable = TRUE;
139    EnableWindow (GetDlgItem (hDlg, IDOK), fEnable);
140 }
141
142
143 void User_Delete_OnOK (HWND hDlg)
144 {
145    LPASIDLIST pUserList = (LPASIDLIST)GetWindowLong (hDlg, DWL_USER);
146
147    // Start a background task to do all the work.
148    //
149    LPUSER_DELETE_PARAMS pTask = New (USER_DELETE_PARAMS);
150    memset (pTask, 0x00, sizeof(USER_DELETE_PARAMS));
151    pTask->fDeleteKAS = IsDlgButtonChecked (hDlg, IDC_DELETE_KAS);
152    pTask->fDeletePTS = IsDlgButtonChecked (hDlg, IDC_DELETE_PTS);
153    asc_AsidListCopy (&pTask->pUserList, &pUserList);
154    StartTask (taskUSER_DELETE, NULL, pTask);
155 }
156