ntmakefile-clean-20040401
[openafs.git] / src / WINNT / afssvrmgr / svr_getdates.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 "svrmgr.h"
16 #include "svr_getdates.h"
17 #include "propcache.h"
18
19 /*
20  * PROTOTYPES _________________________________________________________________
21  *
22  */
23
24 BOOL WINAPI Server_GetDates_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp);
25
26 void Server_GetDates_OnInitDialog (HWND hDlg, LPSVR_GETDATES_PARAMS lpp);
27 void Server_GetDates_OnEndTask_InitDialog (HWND hDlg, LPTASKPACKET ptp, LPSVR_GETDATES_PARAMS lpp);
28 void Server_GetDates_EnableOK (HWND hDlg);
29 void Server_GetDates_OnOK (HWND hDlg);
30
31 BOOL WINAPI Server_GetDates_Results_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp);
32
33 void Server_GetDates_Results_OnInitDialog (HWND hDlg, LPSVR_GETDATES_PARAMS lppIn);
34 void Server_GetDates_Results_OnEndTask_InitDialog (HWND hDlg, LPTASKPACKET ptp);
35
36
37 /*
38  * ROUTINES ___________________________________________________________________
39  *
40  */
41
42 void Server_GetDates (LPIDENT lpiServer)
43 {
44    HWND hCurrent;
45
46    if ((hCurrent = PropCache_Search (pcSVR_GETDATES, NULL)) != NULL)
47       {
48       SetFocus (hCurrent);
49       }
50    else
51       {
52       LPSVR_GETDATES_PARAMS lpp = New (SVR_GETDATES_PARAMS);
53       lpp->lpiServer = lpiServer;
54       lpp->szFilename[0] = TEXT('\0');
55
56       HWND hDlg = ModelessDialogParam (IDD_SVR_GETDATES, NULL, (DLGPROC)Server_GetDates_DlgProc, (LPARAM)lpp);
57       ShowWindow (hDlg, SW_SHOW);
58       }
59 }
60
61
62 BOOL WINAPI Server_GetDates_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
63 {
64    if (AfsAppLib_HandleHelp (IDD_SVR_GETDATES, hDlg, msg, wp, lp))
65       return TRUE;
66
67    LPSVR_GETDATES_PARAMS lpp;
68
69    if (msg == WM_INITDIALOG)
70       SetWindowLong (hDlg, DWL_USER, lp);
71
72    if ((lpp = (LPSVR_GETDATES_PARAMS)GetWindowLong(hDlg,DWL_USER)) != NULL)
73       {
74       switch (msg)
75          {
76          case WM_INITDIALOG:
77             PropCache_Add (pcSVR_GETDATES, NULL, hDlg);
78             Server_GetDates_OnInitDialog (hDlg, lpp);
79             break;
80
81          case WM_ENDTASK:
82             LPTASKPACKET ptp;
83             if ((ptp = (LPTASKPACKET)lp) != NULL)
84                {
85                if (ptp->idTask == taskSVR_ENUM_TO_COMBOBOX)
86                   Server_GetDates_OnEndTask_InitDialog (hDlg, ptp, lpp);
87                FreeTaskPacket (ptp);
88                }
89             break;
90
91          case WM_COMMAND:
92             switch (LOWORD(wp))
93                {
94                case IDOK:
95                   Server_GetDates_OnOK (hDlg);
96                   // fall through
97
98                case IDCANCEL:
99                   DestroyWindow (hDlg);
100                   break;
101
102                case IDC_SERVER:
103                case IDC_FILENAME:
104                   Server_GetDates_EnableOK (hDlg);
105                   break;
106                }
107             break;
108
109          case WM_DESTROY:
110             Delete (lpp);
111             SetWindowLong (hDlg, DWL_USER, 0);
112             PropCache_Delete (pcSVR_GETDATES, NULL);
113             break;
114          }
115       }
116
117    return FALSE;
118 }
119
120
121 void Server_GetDates_OnInitDialog (HWND hDlg, LPSVR_GETDATES_PARAMS lpp)
122 {
123    LPSVR_ENUM_TO_COMBOBOX_PACKET lppEnum = New (SVR_ENUM_TO_COMBOBOX_PACKET);
124    lppEnum->hCombo = GetDlgItem (hDlg, IDC_SERVER);
125    lppEnum->lpiSelect = lpp->lpiServer;
126    StartTask (taskSVR_ENUM_TO_COMBOBOX, hDlg, lppEnum);
127
128    EnableWindow (GetDlgItem (hDlg, IDC_SERVER), FALSE);
129    EnableWindow (GetDlgItem (hDlg, IDOK),       FALSE);
130 }
131
132
133 void Server_GetDates_OnEndTask_InitDialog (HWND hDlg, LPTASKPACKET ptp, LPSVR_GETDATES_PARAMS lpp)
134 {
135    EnableWindow (GetDlgItem (hDlg, IDC_SERVER), TRUE);
136    Server_GetDates_EnableOK (hDlg);
137 }
138
139
140 void Server_GetDates_EnableOK (HWND hDlg)
141 {
142    LPIDENT lpiServer = NULL;
143
144    if (IsWindowEnabled (GetDlgItem (hDlg, IDC_SERVER)))
145       lpiServer = (LPIDENT)CB_GetSelectedData (GetDlgItem (hDlg, IDC_SERVER));
146
147    BOOL fEnable = (lpiServer != NULL) ? TRUE : FALSE;
148
149    if (fEnable)
150       {
151       TCHAR szName[ MAX_PATH ];
152       GetDlgItemText (hDlg, IDC_FILENAME, szName, MAX_PATH);
153       if (szName[0] == TEXT('\0'))
154          fEnable = FALSE;
155       }
156
157    EnableWindow (GetDlgItem (hDlg, IDOK), fEnable);
158 }
159
160
161 void Server_GetDates_OnOK (HWND hDlg)
162 {
163    LPSVR_GETDATES_PARAMS lpp = New (SVR_GETDATES_PARAMS);
164    lpp->lpiServer = (LPIDENT)CB_GetSelectedData (GetDlgItem (hDlg, IDC_SERVER));
165    GetDlgItemText (hDlg, IDC_FILENAME, lpp->szFilename, MAX_PATH);
166
167    ModelessDialogParam (IDD_SVR_GETDATES_RESULTS, NULL, (DLGPROC)Server_GetDates_Results_DlgProc, (LPARAM)lpp);
168 }
169
170
171 BOOL WINAPI Server_GetDates_Results_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
172 {
173    if (AfsAppLib_HandleHelp (IDD_SVR_GETDATES_RESULTS, hDlg, msg, wp, lp))
174       return TRUE;
175
176    switch (msg)
177       {
178       case WM_INITDIALOG:
179          Server_GetDates_Results_OnInitDialog (hDlg, (LPSVR_GETDATES_PARAMS)lp);
180          break;
181
182       case WM_ENDTASK:
183          LPTASKPACKET ptp;
184          if ((ptp = (LPTASKPACKET)lp) != NULL)
185             {
186             if (ptp->idTask == taskSVR_GETDATES)
187                Server_GetDates_Results_OnEndTask_InitDialog (hDlg, ptp);
188             FreeTaskPacket (ptp);
189             }
190          break;
191
192       case WM_COMMAND:
193          switch (LOWORD(wp))
194             {
195             case IDOK:
196             case IDCANCEL:
197                DestroyWindow (hDlg);
198                break;
199             }
200          break;
201       }
202
203    return FALSE;
204 }
205
206
207 void Server_GetDates_Results_OnInitDialog (HWND hDlg, LPSVR_GETDATES_PARAMS lppIn)
208 {
209    LPSVR_GETDATES_PARAMS lpp = New (SVR_GETDATES_PARAMS);
210    memcpy (lpp, lppIn, sizeof(SVR_GETDATES_PARAMS));
211    StartTask (taskSVR_GETDATES, hDlg, lpp);
212
213    TCHAR szServer[ cchNAME ];
214    lppIn->lpiServer->GetServerName (szServer);
215    SetDlgItemText (hDlg, IDC_SERVER, szServer);
216
217    SetDlgItemText (hDlg, IDC_FILENAME, lppIn->szFilename);
218 }
219
220
221 void Server_GetDates_Results_OnEndTask_InitDialog (HWND hDlg, LPTASKPACKET ptp)
222 {
223    if (ptp->rc && TASKDATA(ptp)->pszText1)
224       {
225       LPTSTR pszText = FormatString (IDS_LASTMODIFIED, TEXT("%s"), TASKDATA(ptp)->pszText1);
226       SetDlgItemText (hDlg, IDC_DATE_FILE, pszText);
227       FreeString (pszText);
228       }
229    if (ptp->rc && TASKDATA(ptp)->pszText2)
230       {
231       LPTSTR pszText = FormatString (IDS_LASTMODIFIED, TEXT("%s"), TASKDATA(ptp)->pszText2);
232       SetDlgItemText (hDlg, IDC_DATE_BAK, pszText);
233       FreeString (pszText);
234       }
235    if (ptp->rc && TASKDATA(ptp)->pszText3)
236       {
237       LPTSTR pszText = FormatString (IDS_LASTMODIFIED, TEXT("%s"), TASKDATA(ptp)->pszText3);
238       SetDlgItemText (hDlg, IDC_DATE_OLD, pszText);
239       FreeString (pszText);
240       }
241
242    ShowWindow (hDlg, SW_SHOW);
243 }
244