Initial IBM OpenAFS 1.0 tree
[openafs.git] / src / WINNT / afsusrmgr / grp_delete.cpp
1 extern "C" {
2 #include <afs/param.h>
3 #include <afs/stds.h>
4 }
5
6 #include "TaAfsUsrMgr.h"
7 #include "grp_delete.h"
8
9
10 /*
11  * DEFINITIONS ________________________________________________________________
12  *
13  */
14
15
16 /*
17  * PROTOTYPES _________________________________________________________________
18  *
19  */
20
21 BOOL CALLBACK Group_Delete_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp);
22 void Group_Delete_OnInitDialog (HWND hDlg);
23 void Group_Delete_OnDestroy (HWND hDlg);
24 void Group_Delete_OnOK (HWND hDlg);
25
26
27 /*
28  * ROUTINES ___________________________________________________________________
29  *
30  */
31
32 void Group_ShowDelete (LPASIDLIST pGroupList)
33 {
34    ModalDialogParam (IDD_GROUP_DELETE, g.hMain, (DLGPROC)Group_Delete_DlgProc, (LPARAM)pGroupList);
35 }
36
37
38 BOOL CALLBACK Group_Delete_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
39 {
40    if (AfsAppLib_HandleHelp (IDD_GROUP_DELETE, hDlg, msg, wp, lp))
41       return TRUE;
42
43    switch (msg)
44       {
45       case WM_INITDIALOG:
46          SetWindowLong (hDlg, DWL_USER, lp);
47          Group_Delete_OnInitDialog (hDlg);
48          break;
49
50       case WM_DESTROY:
51          Group_Delete_OnDestroy (hDlg);
52          break;
53
54       case WM_COMMAND:
55          switch (LOWORD(wp))
56             {
57             case IDOK:
58                Group_Delete_OnOK (hDlg);
59                EndDialog (hDlg, IDOK);
60                break;
61
62             case IDCANCEL:
63                EndDialog (hDlg, IDCANCEL);
64                break;
65             }
66          break;
67       }
68
69    return FALSE;
70 }
71
72
73 void Group_Delete_OnInitDialog (HWND hDlg)
74 {
75    LPASIDLIST pGroupList = (LPASIDLIST)GetWindowLong (hDlg, DWL_USER);
76
77    // Fix the title of the dialog
78    //
79    if (pGroupList->cEntries == 1)
80       {
81       ULONG status;
82       TCHAR szName[ cchNAME ];
83       asc_ObjectNameGet_Fast (g.idClient, g.idCell, pGroupList->aEntries[0].idObject, szName, &status);
84
85       TCHAR szText[ cchRESOURCE ];
86       GetDlgItemText (hDlg, IDC_DELETE_TITLE, szText, cchRESOURCE);
87
88       LPTSTR pszText = FormatString (szText, TEXT("%s"), szName);
89       SetDlgItemText (hDlg, IDC_DELETE_TITLE, pszText);
90       FreeString (pszText);
91       }
92    else
93       {
94       LPTSTR pszNames = CreateNameList (pGroupList);
95
96       LPTSTR pszText = FormatString (IDS_GROUP_DELETE_MULTIPLE, TEXT("%s"), pszNames);
97       SetDlgItemText (hDlg, IDC_DELETE_TITLE, pszText);
98       FreeString (pszText);
99
100       FreeString (pszNames);
101       }
102 }
103
104
105 void Group_Delete_OnDestroy (HWND hDlg)
106 {
107    LPASIDLIST pGroupList = (LPASIDLIST)GetWindowLong (hDlg, DWL_USER);
108    asc_AsidListFree (&pGroupList);
109 }
110
111
112 void Group_Delete_OnOK (HWND hDlg)
113 {
114    LPASIDLIST pGroupList = (LPASIDLIST)GetWindowLong (hDlg, DWL_USER);
115
116    // Start a background task to do all the work.
117    //
118    LPASIDLIST pTask;
119    asc_AsidListCopy (&pTask, &pGroupList);
120    StartTask (taskGROUP_DELETE, NULL, pTask);
121 }
122