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