2 * Copyright 2000, International Business Machines Corporation and others.
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
11 #include <afs/param.h>
16 #include "svr_install.h"
17 #include "propcache.h"
20 * PROTOTYPES _________________________________________________________________
24 BOOL WINAPI Server_Install_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp);
26 void Server_Install_OnInitDialog (HWND hDlg, LPSVR_INSTALL_PARAMS lpp);
27 void Server_Install_OnEndTask_InitDialog (HWND hDlg, LPTASKPACKET ptp, LPSVR_INSTALL_PARAMS lpp);
28 void Server_Install_OnBrowse (HWND hDlg);
29 void Server_Install_EnableOK (HWND hDlg);
30 void Server_Install_OnOK (HWND hDlg);
34 * ROUTINES ___________________________________________________________________
38 void Server_Install (LPIDENT lpiServer)
42 if ((hCurrent = PropCache_Search (pcSVR_INSTALL, NULL)) != NULL)
48 LPSVR_INSTALL_PARAMS lpp = New (SVR_INSTALL_PARAMS);
49 lpp->lpiServer = lpiServer;
50 lpp->szSource[0] = TEXT('\0');
51 lpp->szTarget[0] = TEXT('\0');
53 HWND hDlg = ModelessDialogParam (IDD_SVR_INSTALL, NULL, (DLGPROC)Server_Install_DlgProc, (LPARAM)lpp);
54 ShowWindow (hDlg, SW_SHOW);
59 BOOL WINAPI Server_Install_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
61 if (AfsAppLib_HandleHelp (IDD_SVR_INSTALL, hDlg, msg, wp, lp))
64 LPSVR_INSTALL_PARAMS lpp;
66 if (msg == WM_INITDIALOG)
67 SetWindowLongPtr (hDlg, DWLP_USER, lp);
69 if ((lpp = (LPSVR_INSTALL_PARAMS)GetWindowLongPtr(hDlg,DWLP_USER)) != NULL)
74 PropCache_Add (pcSVR_INSTALL, NULL, hDlg);
75 Server_Install_OnInitDialog (hDlg, lpp);
80 if ((ptp = (LPTASKPACKET)lp) != NULL)
82 if (ptp->idTask == taskSVR_ENUM_TO_COMBOBOX)
83 Server_Install_OnEndTask_InitDialog (hDlg, ptp, lpp);
92 Server_Install_OnOK (hDlg);
100 Server_Install_OnBrowse (hDlg);
106 Server_Install_EnableOK (hDlg);
112 SetWindowLongPtr (hDlg, DWLP_USER, 0);
113 PropCache_Delete (pcSVR_INSTALL, NULL);
123 void Server_Install_OnInitDialog (HWND hDlg, LPSVR_INSTALL_PARAMS lpp)
125 LPTSTR pszText = FormatString (IDS_INSTALL_DESC1);
126 SetDlgItemText (hDlg, IDC_INSTALL_DESC, pszText);
127 FreeString (pszText);
129 LPSVR_ENUM_TO_COMBOBOX_PACKET lppEnum = New (SVR_ENUM_TO_COMBOBOX_PACKET);
130 lppEnum->hCombo = GetDlgItem (hDlg, IDC_SERVER);
131 lppEnum->lpiSelect = lpp->lpiServer;
132 StartTask (taskSVR_ENUM_TO_COMBOBOX, hDlg, lppEnum);
134 EnableWindow (GetDlgItem (hDlg, IDC_SERVER), FALSE);
135 EnableWindow (GetDlgItem (hDlg, IDOK), FALSE);
139 void Server_Install_OnEndTask_InitDialog (HWND hDlg, LPTASKPACKET ptp, LPSVR_INSTALL_PARAMS lpp)
141 EnableWindow (GetDlgItem (hDlg, IDC_SERVER), TRUE);
142 Server_Install_EnableOK (hDlg);
146 void Server_Install_EnableOK (HWND hDlg)
148 LPIDENT lpiServer = NULL;
150 if (IsWindowEnabled (GetDlgItem (hDlg, IDC_SERVER)))
151 lpiServer = (LPIDENT)CB_GetSelectedData (GetDlgItem (hDlg, IDC_SERVER));
153 BOOL fEnable = (lpiServer != NULL) ? TRUE : FALSE;
157 TCHAR szName[ MAX_PATH ];
158 GetDlgItemText (hDlg, IDC_FILENAME, szName, MAX_PATH);
159 if (szName[0] == TEXT('\0'))
165 TCHAR szName[ MAX_PATH ];
166 GetDlgItemText (hDlg, IDC_DIRECTORY, szName, MAX_PATH);
167 if (szName[0] == TEXT('\0'))
171 EnableWindow (GetDlgItem (hDlg, IDOK), fEnable);
175 void Server_Install_OnOK (HWND hDlg)
177 LPSVR_INSTALL_PARAMS lpp = New (SVR_INSTALL_PARAMS);
178 lpp->lpiServer = (LPIDENT)CB_GetSelectedData (GetDlgItem (hDlg, IDC_SERVER));
179 GetDlgItemText (hDlg, IDC_FILENAME, lpp->szSource, MAX_PATH);
180 GetDlgItemText (hDlg, IDC_DIRECTORY, lpp->szTarget, MAX_PATH);
182 StartTask (taskSVR_INSTALL, NULL, lpp);
186 void Server_Install_OnBrowse (HWND hDlg)
188 TCHAR szFilter[ cchRESOURCE ];
189 GetString (szFilter, IDS_FILTER_ALLFILES);
190 TCHAR chFilter = szFilter[ lstrlen(szFilter)-1 ];
191 for (LPTSTR pszFilter = szFilter;
192 (*pszFilter) && ((pszFilter = (LPTSTR)lstrchr (pszFilter, chFilter)) != NULL);
195 *pszFilter = TEXT('\0');
198 TCHAR szFilename[ MAX_PATH ];
199 GetDlgItemText (hDlg, IDC_FILENAME, szFilename, MAX_PATH);
202 memset (&ofn, 0x00, sizeof(ofn));
203 ofn.lStructSize = sizeof(ofn);
204 ofn.hwndOwner = hDlg;
205 ofn.hInstance = THIS_HINST;
206 ofn.lpstrFilter = szFilter;
207 ofn.nFilterIndex = 1;
208 ofn.lpstrFile = szFilename;
209 ofn.nMaxFile = MAX_PATH;
210 ofn.Flags = OFN_HIDEREADONLY | OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
212 TCHAR szPath[ MAX_PATH ];
213 GetCurrentDirectory (MAX_PATH, szPath);
215 BOOL rc = GetOpenFileName (&ofn);
217 SetCurrentDirectory (szPath);
220 SetDlgItemText (hDlg, IDC_FILENAME, szFilename);