6 #include "TaAfsUsrMgr.h"
12 * DEFINITIONS ________________________________________________________________
16 #define nID_USERMAX_MIN 1
17 #define nID_USERMAX_MAX -1
19 #define nID_GROUPMAX_MIN -0x7FFFFFFF
20 #define nID_GROUPMAX_MAX -1
24 * PROTOTYPES _________________________________________________________________
28 BOOL CALLBACK CellProp_General_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp);
29 void CellProp_General_OnInitDialog (HWND hDlg);
30 void CellProp_General_OnDestroy (HWND hDlg);
31 void CellProp_General_OnApply (HWND hDlg);
32 void CellProp_General_UpdateDialog (HWND hDlg);
36 * ROUTINES ___________________________________________________________________
40 void Cell_ShowProperties (CELLPROPTAB cptTarget)
44 // If there is already a window open for this cell, switch to it.
46 if ((hSheet = WindowList_Search (wltCELL_PROPERTIES, g.idCell)) != NULL)
48 SetForegroundWindow (hSheet);
49 if (cptTarget != cptANY)
51 HWND hTab = GetDlgItem (hSheet, IDC_PROPSHEET_TABCTRL);
52 int nTabs = TabCtrl_GetItemCount (hTab);
53 if (nTabs < nCELLPROPTAB_MAX)
54 cptTarget = (CELLPROPTAB)( (cptTarget == cptPROBLEMS) ? ((int)cptGENERAL-1) : ((int)cptTarget-1) );
55 TabCtrl_SwitchToTab (hTab, cptTarget);
60 // Okay, we're clear to create the new properties window.
62 TCHAR szCell[ cchRESOURCE ];
63 asc_CellNameGet_Fast (g.idClient, g.idCell, szCell);
65 LPTSTR pszTitle = FormatString (IDS_CELL_PROPERTIES_TITLE, TEXT("%s"), szCell);
67 LPPROPSHEET psh = PropSheet_Create (pszTitle, TRUE, NULL, (LPARAM)g.idCell);
68 PropSheet_AddTab (psh, 0, IDD_CELL_GENERAL, (DLGPROC)CellProp_General_DlgProc, (LPARAM)g.idCell, TRUE, (cptTarget == cptGENERAL) ? TRUE : FALSE);
69 PropSheet_ShowModeless (psh, SW_SHOW);
73 BOOL CALLBACK CellProp_General_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
75 if (AfsAppLib_HandleHelp (IDD_CELL_GENERAL, hDlg, msg, wp, lp))
78 ASID idCell = (ASID)PropSheet_FindTabParam (hDlg);
82 case WM_INITDIALOG_SHEET:
83 WindowList_Add (hDlg, wltCELL_PROPERTIES, idCell);
86 case WM_DESTROY_SHEET:
87 WindowList_Remove (hDlg);
91 CellProp_General_OnInitDialog (hDlg);
95 CellProp_General_OnDestroy (hDlg);
98 case WM_ASC_NOTIFY_OBJECT:
99 CellProp_General_UpdateDialog (hDlg);
106 CellProp_General_OnApply (hDlg);
109 case IDC_CELL_USERMAX:
110 case IDC_CELL_GROUPMAX:
111 PropSheetChanged (hDlg);
121 void CellProp_General_OnInitDialog (HWND hDlg)
123 ASID idCell = (ASID)PropSheet_FindTabParam (hDlg);
125 // Indicate we want to know if anything changes with this cell
127 LPOBJECT_LISTEN_PARAMS pTask = New (OBJECT_LISTEN_PARAMS);
128 memset (pTask, 0x00, sizeof(OBJECT_LISTEN_PARAMS));
129 pTask->hNotify = hDlg;
130 asc_AsidListCreate (&pTask->pAsidList);
131 asc_AsidListAddEntry (&pTask->pAsidList, idCell, 0);
132 StartTask (taskOBJECT_LISTEN, NULL, pTask);
134 // Fix the name shown on the dialog
136 TCHAR szText[ cchRESOURCE ];
137 GetDlgItemText (hDlg, IDC_CELL_NAME, szText, cchRESOURCE);
139 TCHAR szName[ cchRESOURCE ];
140 asc_CellNameGet_Fast (g.idClient, idCell, szName);
142 LPTSTR pszText = FormatString (szText, TEXT("%s"), szName);
143 SetDlgItemText (hDlg, IDC_CELL_NAME, pszText);
144 FreeString (pszText);
146 // Fill in the rest of the information about the selected users
148 CellProp_General_UpdateDialog (hDlg);
152 void CellProp_General_OnDestroy (HWND hDlg)
154 // Indicate we no longer care if anything changes with this cell
156 LPOBJECT_LISTEN_PARAMS pTask = New (OBJECT_LISTEN_PARAMS);
157 memset (pTask, 0x00, sizeof(OBJECT_LISTEN_PARAMS));
158 pTask->hNotify = hDlg;
159 StartTask (taskOBJECT_LISTEN, NULL, pTask);
163 void CellProp_General_UpdateDialog (HWND hDlg)
165 ASID idCell = (ASID)PropSheet_FindTabParam (hDlg);
168 ASOBJPROP Properties;
169 asc_ObjectPropertiesGet_Fast (g.idClient, idCell, idCell, &Properties, &status);
171 if (fHasSpinner (GetDlgItem (hDlg, IDC_CELL_USERMAX)))
172 SP_SetPos (GetDlgItem (hDlg, IDC_CELL_USERMAX), Properties.u.CellProperties.idUserMax);
174 CreateSpinner (GetDlgItem (hDlg, IDC_CELL_USERMAX), 10, FALSE, nID_USERMAX_MIN, Properties.u.CellProperties.idUserMax, nID_USERMAX_MAX);
176 if (fHasSpinner (GetDlgItem (hDlg, IDC_CELL_GROUPMAX)))
177 SP_SetPos (GetDlgItem (hDlg, IDC_CELL_GROUPMAX), Properties.u.CellProperties.idGroupMax);
179 CreateSpinner (GetDlgItem (hDlg, IDC_CELL_GROUPMAX), 10, TRUE, nID_GROUPMAX_MIN, Properties.u.CellProperties.idGroupMax, nID_GROUPMAX_MAX);
183 void CellProp_General_OnApply (HWND hDlg)
185 ASID idCell = (ASID)PropSheet_FindTabParam (hDlg);
187 LPCELL_CHANGE_PARAMS pTask = New (CELL_CHANGE_PARAMS);
188 memset (pTask, 0x00, sizeof(CELL_CHANGE_PARAMS));
189 pTask->idCell = idCell;
190 pTask->idUserMax = SP_GetPos (GetDlgItem (hDlg, IDC_CELL_USERMAX));
191 pTask->idGroupMax = SP_GetPos (GetDlgItem (hDlg, IDC_CELL_GROUPMAX));
192 StartTask (taskCELL_CHANGE, NULL, pTask);