9 #include "svr_window.h"
14 * PROTOTYPES _________________________________________________________________
18 BOOL CALLBACK Filesets_MoveTo_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp);
19 void Filesets_MoveTo_OnInitDialog (HWND hDlg, LPSET_MOVE_PARAMS psmp);
20 void Filesets_MoveTo_OnSelectServer (HWND hDlg, LPIDENT *plpiTarget);
21 void Filesets_MoveTo_OnEndTask_InitDialog (HWND hDlg, LPTASKPACKET ptp, LPSET_MOVE_PARAMS psmp);
22 void Filesets_MoveTo_OnEndTask_EnumAggregates (HWND hDlg, LPSET_MOVE_PARAMS psmp);
23 void Filesets_MoveTo_EnableOK (HWND hDlg, LPSET_MOVE_PARAMS psmp);
24 void Filesets_MoveTo_StartDisplay_Aggregates (HWND hDlg, LPIDENT lpiTarget);
28 * ROUTINES ___________________________________________________________________
32 void Filesets_ShowMoveTo (LPIDENT lpiSource, LPIDENT lpiTarget)
34 LPSET_MOVE_PARAMS psmp = New (SET_MOVE_PARAMS);
35 psmp->lpiSource = lpiSource;
36 psmp->lpiTarget = lpiTarget;
38 int rc = ModalDialogParam (IDD_SET_MOVETO, GetActiveWindow(), (DLGPROC)Filesets_MoveTo_DlgProc, (LPARAM)psmp);
43 else if (!ASSERT( psmp->lpiTarget && psmp->lpiTarget->fIsAggregate() ))
49 StartTask (taskSET_MOVE, NULL, psmp);
54 BOOL CALLBACK Filesets_MoveTo_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
56 static LPSET_MOVE_PARAMS psmp = NULL;
57 if (msg == WM_INITDIALOG)
58 psmp = (LPSET_MOVE_PARAMS)lp;
60 if (HandleColumnNotify (hDlg, msg, wp, lp, &gr.viewAggMove))
63 if (AfsAppLib_HandleHelp (IDD_SET_MOVETO, hDlg, msg, wp, lp))
71 FastList_SetTextCallback (GetDlgItem (hDlg, IDC_AGG_LIST), GetItemText, (DWORD)&gr.viewAggMove);
72 Filesets_MoveTo_OnInitDialog (hDlg, psmp);
73 StartTask (taskSET_MOVETO_INIT, hDlg, psmp->lpiSource);
78 if ((ptp = (LPTASKPACKET)lp) != NULL)
80 if (ptp->idTask == taskSET_MOVETO_INIT)
81 Filesets_MoveTo_OnEndTask_InitDialog (hDlg, ptp, psmp);
82 else if (ptp->idTask == taskAGG_ENUM_TO_LISTVIEW)
83 Filesets_MoveTo_OnEndTask_EnumAggregates (hDlg, psmp);
84 else if (ptp->idTask == taskSVR_ENUM_TO_COMBOBOX)
86 EnableWindow (GetDlgItem (hDlg, IDC_MOVESET_SERVER), TRUE);
87 Filesets_MoveTo_OnSelectServer (hDlg, &psmp->lpiTarget);
95 hList = GetDlgItem (hDlg, IDC_AGG_LIST);
99 ptScreen.x = LOWORD(lp);
100 ptScreen.y = HIWORD(lp);
103 ScreenToClient (hList, &ptClient);
105 if (FL_HitTestForHeaderBar (hList, ptClient))
107 HMENU hm = TaLocale_LoadMenu (MENU_COLUMNS);
108 DisplayContextMenu (hm, ptScreen, hList);
112 case WM_COLUMNS_CHANGED:
114 lpSel = FL_GetSelectedData (GetDlgItem (hDlg, IDC_AGG_LIST));
115 FL_RestoreView (GetDlgItem (hDlg, IDC_AGG_LIST), &gr.viewAggMove);
116 Filesets_MoveTo_OnSelectServer (hDlg, (LPIDENT*)&lpSel);
124 EndDialog (hDlg, LOWORD(wp));
128 EndDialog (hDlg, LOWORD(wp));
131 case IDC_MOVESET_SERVER:
132 if (HIWORD(wp) == CBN_SELCHANGE)
133 Filesets_MoveTo_OnSelectServer (hDlg, &psmp->lpiTarget);
139 FL_StoreView (GetDlgItem (hDlg, IDC_AGG_LIST), &gr.viewAggMove);
144 switch (((LPNMHDR)lp)->code)
148 if ((lpi = (LPIDENT)FL_GetSelectedData (GetDlgItem (hDlg, IDC_AGG_LIST))) != NULL)
150 psmp->lpiTarget = lpi;
151 Filesets_MoveTo_EnableOK (hDlg, psmp);
163 static LONG procFilesetsMoveToList = 0;
165 LRESULT CALLBACK Filesets_MoveTo_SubclassListProc (HWND hList, UINT msg, WPARAM wp, LPARAM lp)
169 if (procFilesetsMoveToList == 0)
170 rc = DefWindowProc (hList, msg, wp, lp);
172 rc = CallWindowProc ((WNDPROC)procFilesetsMoveToList, hList, msg, wp, lp);
177 if (procFilesetsMoveToList != 0)
178 SetWindowLong (hList, GWL_WNDPROC, procFilesetsMoveToList);
185 ShowColumnsDialog (GetParent (hList), &gr.viewAggMove);
195 void Filesets_MoveTo_OnInitDialog (HWND hDlg, LPSET_MOVE_PARAMS psmp)
197 HWND hList = GetDlgItem (hDlg, IDC_AGG_LIST);
198 if (procFilesetsMoveToList == 0)
199 procFilesetsMoveToList = GetWindowLong (hList, GWL_WNDPROC);
200 SetWindowLong (hList, GWL_WNDPROC, (LONG)Filesets_MoveTo_SubclassListProc);
202 if (gr.viewAggMove.lvsView == 0) // never initialized this?
204 if (gr.viewAggCreate.lvsView == 0)
205 memcpy (&gr.viewAggMove, &gr.viewAgg, sizeof(VIEWINFO));
207 memcpy (&gr.viewAggMove, &gr.viewAggCreate, sizeof(VIEWINFO));
209 FL_RestoreView (GetDlgItem (hDlg, IDC_AGG_LIST), &gr.viewAggMove);
211 EnableWindow (GetDlgItem (hDlg, IDOK), FALSE);
212 EnableWindow (GetDlgItem (hDlg, IDC_MOVESET_SERVER), FALSE);
213 EnableWindow (GetDlgItem (hDlg, IDC_AGG_LIST), FALSE);
217 void Filesets_MoveTo_OnEndTask_InitDialog (HWND hDlg, LPTASKPACKET ptp, LPSET_MOVE_PARAMS psmp)
219 TCHAR szServer[ cchNAME ];
220 TCHAR szAggregate[ cchNAME ];
221 TCHAR szFileset[ cchNAME ];
222 psmp->lpiSource->GetServerName (szServer);
223 psmp->lpiSource->GetAggregateName (szAggregate);
224 psmp->lpiSource->GetFilesetName (szFileset);
228 ErrorDialog (ptp->status, IDS_ERROR_REFRESH_FILESET_STATUS, TEXT("%s%s%s"), szServer, szAggregate, szFileset);
229 EndDialog (hDlg, IDCANCEL);
233 int ids = (TASKDATA(ptp)->fs.Type == ftREADWRITE) ? IDS_MOVESET_READWRITE : IDS_MOVESET_READONLY;
234 LPTSTR pszDesc = FormatString (ids, TEXT("%s%s%s"), szServer, szAggregate, szFileset);
235 SetDlgItemText (hDlg, IDC_MOVESET_DESC, pszDesc);
236 FreeString (pszDesc);
238 // Fill in the Servers combobox, and select the default server
239 // (if one was specified).
241 LPSVR_ENUM_TO_COMBOBOX_PACKET lpp = New (SVR_ENUM_TO_COMBOBOX_PACKET);
242 lpp->hCombo = GetDlgItem (hDlg, IDC_MOVESET_SERVER);
243 lpp->lpiSelect = (psmp->lpiTarget) ? psmp->lpiTarget->GetServer() : NULL;
244 StartTask (taskSVR_ENUM_TO_COMBOBOX, hDlg, lpp);
249 void Filesets_MoveTo_OnSelectServer (HWND hDlg, LPIDENT *plpiTarget)
251 LPIDENT lpiServerNew = (LPIDENT)CB_GetSelectedData (GetDlgItem (hDlg, IDC_MOVESET_SERVER));
253 SetWindowLong (hDlg, DWL_USER, (LONG)lpiServerNew);
255 if (*plpiTarget && (*plpiTarget)->fIsServer())
257 if (*plpiTarget && ((*plpiTarget)->GetServer() != lpiServerNew))
260 Filesets_MoveTo_StartDisplay_Aggregates (hDlg, *plpiTarget);
264 void Filesets_MoveTo_OnEndTask_EnumAggregates (HWND hDlg, LPSET_MOVE_PARAMS psmp)
266 EnableWindow (GetDlgItem (hDlg, IDC_AGG_LIST), TRUE);
267 Filesets_MoveTo_EnableOK (hDlg, psmp);
271 void Filesets_MoveTo_EnableOK (HWND hDlg, LPSET_MOVE_PARAMS psmp)
273 EnableWindow (GetDlgItem (hDlg, IDOK), (psmp->lpiTarget) ? TRUE : FALSE);
277 void Filesets_MoveTo_StartDisplay_Aggregates (HWND hDlg, LPIDENT lpiTarget)
279 EnableWindow (GetDlgItem (hDlg, IDOK), FALSE);
281 LPAGG_ENUM_TO_LISTVIEW_PACKET lpp = New (AGG_ENUM_TO_LISTVIEW_PACKET);
282 lpp->lpiServer = NULL;
283 lpp->hList = GetDlgItem (hDlg, IDC_AGG_LIST);
284 lpp->lpiSelect = lpiTarget;
285 lpp->lpvi = &gr.viewAggMove;
286 StartTask (taskAGG_ENUM_TO_LISTVIEW, hDlg, lpp);