blob: 64c8f3ab1ca097215c32417461f7f3427c5d4166 [file] [log] [blame]
Dennis Syrovatsky139d7832005-11-02 05:36:05 +00001/* Copyright (C) 2005 TightVNC Team. All Rights Reserved.
2 *
3 * This is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation; either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This software is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this software; if not, write to the Free Software
15 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
16 * USA.
17 *
18 * TightVNC distribution homepage on the Web: http://www.tightvnc.com/
19 *
20 */
21
22// -=- FTDialog.cxx
23
24#include <vncviewer/FTDialog.h>
25
26using namespace rfb;
27using namespace rfb::win32;
28
Dennis Syrovatsky092d9982005-12-05 09:57:05 +000029const char FTDialog::szCheckDeleteQueueText[] = "TightVNC.Viewer.CheckDeleteQueue.Msg";
Dennis Syrovatsky13b4d4c2005-11-28 08:14:18 +000030const char FTDialog::szCheckTransferQueueText[] = "TightVNC.Viewer.CheckTransferQueue.Msg";
Dennis Syrovatsky13b4d4c2005-11-28 08:14:18 +000031const char FTDialog::szUploadFilePortionText[] = "TightVNC.Viewer.UploadFilePortion.Msg";
32
Dennis Syrovatsky6c6786d2005-11-07 09:17:38 +000033FTDialog::FTDialog(HINSTANCE hInst, FileTransfer *pFT)
Dennis Syrovatsky139d7832005-11-02 05:36:05 +000034{
35 m_pFileTransfer = pFT;
36 m_hInstance = hInst;
Dennis Syrovatsky2142b4a2005-12-14 11:03:19 +000037
Dennis Syrovatsky139d7832005-11-02 05:36:05 +000038 m_bDlgShown = false;
Dennis Syrovatsky2142b4a2005-12-14 11:03:19 +000039 m_bCloseDlgAfterCancel = false;
Dennis Syrovatsky6c6786d2005-11-07 09:17:38 +000040
41 m_pLocalLV = NULL;
42 m_pRemoteLV = NULL;
43 m_pProgress = NULL;
Dennis Syrovatsky7b53c662005-12-14 10:18:21 +000044 m_pCancelingDlg = NULL;
Dennis Syrovatskyf0928942005-12-14 15:12:45 +000045 m_pCreateFolderDlg = NULL;
Dennis Syrovatsky4ab41852005-11-07 09:52:36 +000046
Dennis Syrovatskyec906992005-11-07 09:56:06 +000047 m_hwndFTDialog = NULL;
Dennis Syrovatskyb595e032005-11-09 06:24:25 +000048 m_hwndLocalPath = NULL;
49 m_hwndRemotePath = NULL;
Dennis Syrovatskyd6febeb2005-11-10 04:27:49 +000050
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +000051 m_FTMenuSource = 0;
Dennis Syrovatsky922ee6a2005-12-05 10:55:51 +000052 m_dwNumStatusStrings = 0;
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +000053
Dennis Syrovatskyd6febeb2005-11-10 04:27:49 +000054 m_szLocalPath[0] = '\0';
55 m_szRemotePath[0] = '\0';
56 m_szLocalPathTmp[0] = '\0';
57 m_szRemotePathTmp[0] = '\0';
Dennis Syrovatskyf0928942005-12-14 15:12:45 +000058 m_szCreateFolderName[0] = '\0';
Dennis Syrovatsky139d7832005-11-02 05:36:05 +000059}
60
61FTDialog::~FTDialog()
62{
Dennis Syrovatsky6c6786d2005-11-07 09:17:38 +000063 destroyFTDialog();
Dennis Syrovatsky139d7832005-11-02 05:36:05 +000064}
65
66bool
Dennis Syrovatsky4905c8f2005-11-21 15:52:46 +000067FTDialog::createFTDialog(HWND hwndParent)
Dennis Syrovatsky139d7832005-11-02 05:36:05 +000068{
Dennis Syrovatskyd6febeb2005-11-10 04:27:49 +000069 if (m_hwndFTDialog != NULL) {
70 ShowWindow(m_hwndFTDialog, SW_SHOW);
71 m_bDlgShown = true;
Dennis Syrovatsky2142b4a2005-12-14 11:03:19 +000072 showLocalLVItems();
73 showRemoteLVItems();
Dennis Syrovatskyd6febeb2005-11-10 04:27:49 +000074 return true;
75 }
Dennis Syrovatsky4ab41852005-11-07 09:52:36 +000076
Dennis Syrovatsky5ae73f12005-11-30 04:15:40 +000077 if (!initFTWndMsgs()) return false;
78
Dennis Syrovatsky6c6786d2005-11-07 09:17:38 +000079 m_hwndFTDialog = CreateDialogParam(m_hInstance,
80 MAKEINTRESOURCE(IDD_FILETRANSFER_DLG),
Dennis Syrovatsky4905c8f2005-11-21 15:52:46 +000081 hwndParent,
Dennis Syrovatsky6c6786d2005-11-07 09:17:38 +000082 (DLGPROC) FTDialogProc,
83 (LONG) this);
84
85 if (m_hwndFTDialog == NULL) return false;
Dennis Syrovatsky13b4d4c2005-11-28 08:14:18 +000086
Dennis Syrovatsky58a01ed2005-11-09 08:21:41 +000087 HWND hwndLocalList = GetDlgItem(m_hwndFTDialog, IDC_FTLOCALLIST);
88 HWND hwndRemoteList = GetDlgItem(m_hwndFTDialog, IDC_FTREMOTELIST);
89
90 if ((hwndLocalList == NULL) || (hwndRemoteList == NULL)) {
91 destroyFTDialog();
92 return false;
93 }
94
95 m_pLocalLV = new FTListView(hwndLocalList);
96 m_pRemoteLV = new FTListView(hwndRemoteList);
Dennis Syrovatsky6c6786d2005-11-07 09:17:38 +000097
98 m_pProgress = new FTProgress(m_hwndFTDialog);
99
100 if ((m_pLocalLV == NULL) || (m_pRemoteLV == NULL) || (m_pProgress == NULL)) {
101 destroyFTDialog();
102 return false;
103 }
Dennis Syrovatsky4ab41852005-11-07 09:52:36 +0000104
105 initFTDialog();
Dennis Syrovatsky6c6786d2005-11-07 09:17:38 +0000106
Dennis Syrovatsky58a01ed2005-11-09 08:21:41 +0000107 ShowWindow(m_hwndFTDialog, SW_SHOW);
108 UpdateWindow(m_hwndFTDialog);
109 m_bDlgShown = true;
110 return true;
Dennis Syrovatsky139d7832005-11-02 05:36:05 +0000111}
112
113bool
114FTDialog::initFTDialog()
115{
Dennis Syrovatsky4ab41852005-11-07 09:52:36 +0000116 m_pLocalLV->initialize(m_hInstance);
117 m_pRemoteLV->initialize(m_hInstance);
118
Dennis Syrovatsky0b765cc2005-11-10 04:52:10 +0000119 m_hwndLocalPath = GetDlgItem(m_hwndFTDialog, IDC_FTLOCALPATH);
120 m_hwndRemotePath = GetDlgItem(m_hwndFTDialog, IDC_FTREMOTEPATH);
121
122 setIcon(IDC_FTLOCALUP, IDI_FTUP);
123 setIcon(IDC_FTREMOTEUP, IDI_FTUP);
124 setIcon(IDC_FTLOCALRELOAD, IDI_FTRELOAD);
125 setIcon(IDC_FTREMOTERELOAD, IDI_FTRELOAD);
Dennis Syrovatskyb595e032005-11-09 06:24:25 +0000126
Dennis Syrovatskyd6febeb2005-11-10 04:27:49 +0000127 showLocalLVItems();
Dennis Syrovatsky8b194ee2005-11-10 08:56:34 +0000128 showRemoteLVItems();
Dennis Syrovatskyd6febeb2005-11-10 04:27:49 +0000129
Dennis Syrovatsky4ab41852005-11-07 09:52:36 +0000130 return true;
Dennis Syrovatsky139d7832005-11-02 05:36:05 +0000131}
132
Dennis Syrovatsky6c6786d2005-11-07 09:17:38 +0000133bool
Dennis Syrovatsky13b4d4c2005-11-28 08:14:18 +0000134FTDialog::initFTWndMsgs()
135{
Dennis Syrovatsky092d9982005-12-05 09:57:05 +0000136 m_msgCheckDeleteQueue = RegisterWindowMessage(szCheckDeleteQueueText);
Dennis Syrovatsky13b4d4c2005-11-28 08:14:18 +0000137 m_msgCheckTransferQueue = RegisterWindowMessage(szCheckTransferQueueText);
138 m_msgUploadFilePortion = RegisterWindowMessage(szUploadFilePortionText);
Dennis Syrovatsky13b4d4c2005-11-28 08:14:18 +0000139
Dennis Syrovatsky95a01ff2005-12-14 07:58:29 +0000140 if ((m_msgCheckDeleteQueue) &&
141 (m_msgCheckTransferQueue) &&
142 (m_msgUploadFilePortion)) return true;
Dennis Syrovatsky13b4d4c2005-11-28 08:14:18 +0000143
144 return false;
145}
146
147bool
Dennis Syrovatsky139d7832005-11-02 05:36:05 +0000148FTDialog::closeFTDialog()
149{
Dennis Syrovatsky58a01ed2005-11-09 08:21:41 +0000150 ShowWindow(m_hwndFTDialog, SW_HIDE);
151 m_bDlgShown = false;
Dennis Syrovatskyd6febeb2005-11-10 04:27:49 +0000152 return true;
Dennis Syrovatsky6c6786d2005-11-07 09:17:38 +0000153}
154
155void
156FTDialog::destroyFTDialog()
157{
158 if (m_pLocalLV != NULL) {
159 delete m_pLocalLV;
160 m_pLocalLV = NULL;
161 }
162
163 if (m_pRemoteLV != NULL) {
164 delete m_pRemoteLV;
165 m_pRemoteLV = NULL;
166 }
167
168 if (m_pProgress != NULL) {
169 delete m_pProgress;
170 m_pProgress = NULL;
171 }
Dennis Syrovatsky58a01ed2005-11-09 08:21:41 +0000172
173 if (DestroyWindow(m_hwndFTDialog)) m_hwndFTDialog = NULL;
Dennis Syrovatsky139d7832005-11-02 05:36:05 +0000174}
175
176BOOL CALLBACK
177FTDialog::FTDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
178{
Dennis Syrovatskyd6febeb2005-11-10 04:27:49 +0000179 FTDialog *_this = (FTDialog *) GetWindowLong(hwnd, GWL_USERDATA);
Dennis Syrovatsky5ae73f12005-11-30 04:15:40 +0000180
Dennis Syrovatskyd6febeb2005-11-10 04:27:49 +0000181 switch (uMsg)
182 {
183 case WM_INITDIALOG:
Dennis Syrovatsky5ae73f12005-11-30 04:15:40 +0000184 _this = (FTDialog*)lParam;
Dennis Syrovatskyd6febeb2005-11-10 04:27:49 +0000185 SetWindowLong(hwnd, GWL_USERDATA, (LONG) lParam);
186 SetForegroundWindow(hwnd);
187 return TRUE;
188 case WM_COMMAND:
189 {
190 switch (LOWORD(wParam))
191 {
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000192 case IDC_FTLOCALPATH:
193 switch (HIWORD (wParam))
194 {
195 case CBN_SETFOCUS:
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000196 _this->setButtonsState();
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000197 return FALSE;
198 }
199 break;
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000200 case IDC_FTREMOTEPATH:
201 switch (HIWORD (wParam))
202 {
203 case CBN_SETFOCUS:
204 _this->setButtonsState();
205 return FALSE;
206 }
207 break;
Dennis Syrovatskyd6febeb2005-11-10 04:27:49 +0000208 case IDC_FTCLOSE:
Dennis Syrovatsky2142b4a2005-12-14 11:03:19 +0000209 _this->onClose();
Dennis Syrovatskyd6febeb2005-11-10 04:27:49 +0000210 return FALSE;
211 case IDC_FTLOCALUP:
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000212 _this->setButtonsState();
Dennis Syrovatskyd6febeb2005-11-10 04:27:49 +0000213 _this->onLocalOneUpFolder();
214 return FALSE;
215 case IDC_FTREMOTEUP:
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000216 _this->setButtonsState();
Dennis Syrovatskyd6febeb2005-11-10 04:27:49 +0000217 _this->onRemoteOneUpFolder();
218 return FALSE;
Dennis Syrovatsky0b765cc2005-11-10 04:52:10 +0000219 case IDC_FTLOCALRELOAD:
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000220 _this->setButtonsState();
Dennis Syrovatsky0b765cc2005-11-10 04:52:10 +0000221 _this->onLocalReload();
222 return FALSE;
223 case IDC_FTREMOTERELOAD:
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000224 _this->setButtonsState();
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000225 _this->onRemoteReload();
226 return FALSE;
227 case IDC_FTUPLOAD:
228 _this->onUpload();
229 return FALSE;
230 case IDC_FTDOWNLOAD:
231 _this->onDownload();
Dennis Syrovatsky0b765cc2005-11-10 04:52:10 +0000232 return FALSE;
Dennis Syrovatsky7b53c662005-12-14 10:18:21 +0000233 case IDC_FTCANCEL:
234 _this->onFTCancel();
235 return FALSE;
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000236 case IDM_FTCOPY:
237 case IDM_FTRENAME:
238 case IDM_FTDELETE:
239 case IDM_FTCANCEL:
Dennis Syrovatsky05c424e2005-12-14 11:19:19 +0000240 case IDM_FTCREATEFOLDER:
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000241 _this->onFTMenuCommand(LOWORD(wParam));
242 return FALSE;
Dennis Syrovatskyd6febeb2005-11-10 04:27:49 +0000243 }
244 }
245 break;
246
247 case WM_NOTIFY:
248 switch (LOWORD(wParam))
249 {
250 case IDC_FTLOCALLIST:
251 switch (((LPNMHDR) lParam)->code)
252 {
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000253 case NM_CLICK:
254 case NM_SETFOCUS:
255 case LVN_ITEMCHANGED:
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000256 _this->setButtonsState();
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000257 return FALSE;
Dennis Syrovatskyd6febeb2005-11-10 04:27:49 +0000258 case LVN_GETDISPINFO:
259 _this->m_pLocalLV->onGetDispInfo((NMLVDISPINFO *) lParam);
260 return FALSE;
261 case LVN_ITEMACTIVATE:
262 _this->onLocalItemActivate((LPNMITEMACTIVATE) lParam);
263 return FALSE;
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000264 case NM_RCLICK:
Dennis Syrovatsky3f079e72005-11-23 05:23:50 +0000265 _this->onLocalRButton();
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000266 return FALSE;
Dennis Syrovatskyd6febeb2005-11-10 04:27:49 +0000267 }
268 break;
269 case IDC_FTREMOTELIST:
270 switch (((LPNMHDR) lParam)->code)
271 {
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000272 case NM_CLICK:
273 case NM_SETFOCUS:
274 case LVN_ITEMCHANGED:
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000275 _this->setButtonsState();
Dennis Syrovatskyd6febeb2005-11-10 04:27:49 +0000276 case LVN_GETDISPINFO:
277 _this->m_pRemoteLV->onGetDispInfo((NMLVDISPINFO *) lParam);
278 return FALSE;
279 case LVN_ITEMACTIVATE:
280 _this->onRemoteItemActivate((LPNMITEMACTIVATE) lParam);
281 return FALSE;
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000282 case NM_RCLICK:
Dennis Syrovatsky3f079e72005-11-23 05:23:50 +0000283 _this->onRemoteRButton();
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000284 return FALSE;
Dennis Syrovatskyd6febeb2005-11-10 04:27:49 +0000285 }
286 break;
287 }
288 break;
289 case WM_CLOSE:
Dennis Syrovatsky2142b4a2005-12-14 11:03:19 +0000290 _this->onClose();
Dennis Syrovatskyd6febeb2005-11-10 04:27:49 +0000291 return FALSE;
292 }
Dennis Syrovatsky13b4d4c2005-11-28 08:14:18 +0000293
Dennis Syrovatsky5ae73f12005-11-30 04:15:40 +0000294 if (_this != NULL) {
295 if (uMsg == _this->m_msgCheckTransferQueue)
296 _this->m_pFileTransfer->checkTransferQueue();
Dennis Syrovatsky13b4d4c2005-11-28 08:14:18 +0000297
Dennis Syrovatsky5ae73f12005-11-30 04:15:40 +0000298 if (uMsg == _this->m_msgUploadFilePortion)
299 _this->m_pFileTransfer->uploadFilePortion();
300
Dennis Syrovatsky092d9982005-12-05 09:57:05 +0000301 if (uMsg == _this->m_msgCheckDeleteQueue)
302 _this->m_pFileTransfer->checkDeleteQueue();
Dennis Syrovatsky5ae73f12005-11-30 04:15:40 +0000303 }
Dennis Syrovatsky13b4d4c2005-11-28 08:14:18 +0000304
Dennis Syrovatskyd6febeb2005-11-10 04:27:49 +0000305 return FALSE;
Dennis Syrovatsky139d7832005-11-02 05:36:05 +0000306}
307
Dennis Syrovatsky2142b4a2005-12-14 11:03:19 +0000308void
309FTDialog::onClose()
310{
311 if (m_pFileTransfer->isTransferEnable()) {
312 m_bCloseDlgAfterCancel = true;
313 onFTCancel();
314 } else {
315 closeFTDialog();
316 }
317}
318
Dennis Syrovatsky139d7832005-11-02 05:36:05 +0000319void
320FTDialog::onLocalItemActivate(LPNMITEMACTIVATE lpnmia)
321{
Dennis Syrovatskyd6febeb2005-11-10 04:27:49 +0000322 if (strlen(m_szLocalPath) == 0) {
323 strcpy(m_szLocalPathTmp, m_pLocalLV->getActivateItemName(lpnmia));
324 } else {
325 sprintf(m_szLocalPathTmp, "%s\\%s", m_szLocalPath, m_pLocalLV->getActivateItemName(lpnmia));
326 }
327 showLocalLVItems();
Dennis Syrovatsky139d7832005-11-02 05:36:05 +0000328}
329
330void
331FTDialog::onRemoteItemActivate(LPNMITEMACTIVATE lpnmia)
332{
Dennis Syrovatsky4d915dd2005-11-12 06:27:34 +0000333 if (strlen(m_szRemotePath) == 0) {
334 strcpy(m_szRemotePathTmp, m_pRemoteLV->getActivateItemName(lpnmia));
335 } else {
336 sprintf(m_szRemotePathTmp, "%s\\%s", m_szRemotePath, m_pRemoteLV->getActivateItemName(lpnmia));
337 }
338 showRemoteLVItems();
Dennis Syrovatsky139d7832005-11-02 05:36:05 +0000339}
340
Dennis Syrovatsky0b765cc2005-11-10 04:52:10 +0000341void
342FTDialog::onLocalReload()
343{
344 strcpy(m_szLocalPathTmp, m_szLocalPath);
345 showLocalLVItems();
346}
347
348void
349FTDialog::onRemoteReload()
350{
Dennis Syrovatsky4d915dd2005-11-12 06:27:34 +0000351 strcpy(m_szRemotePathTmp, m_szRemotePath);
352 showRemoteLVItems();
Dennis Syrovatsky0b765cc2005-11-10 04:52:10 +0000353}
354
Dennis Syrovatsky139d7832005-11-02 05:36:05 +0000355void
Dennis Syrovatskyd6febeb2005-11-10 04:27:49 +0000356FTDialog::showLocalLVItems()
Dennis Syrovatskyb595e032005-11-09 06:24:25 +0000357{
Dennis Syrovatskyd6febeb2005-11-10 04:27:49 +0000358 FolderManager fm;
359 FileInfo fileInfo;
360 if (fm.getDirInfo(m_szLocalPathTmp, &fileInfo, 0)) {
361 fileInfo.sort();
362 m_pLocalLV->deleteAllItems();
363 m_pLocalLV->addItems(&fileInfo);
364 strcpy(m_szLocalPath, m_szLocalPathTmp);
365 SetWindowText(m_hwndLocalPath, m_szLocalPath);
366 }
Dennis Syrovatskyb595e032005-11-09 06:24:25 +0000367}
368
Dennis Syrovatsky8b194ee2005-11-10 08:56:34 +0000369void
370FTDialog::showRemoteLVItems()
371{
372 m_pFileTransfer->requestFileList(m_szRemotePathTmp, FT_FLR_DEST_MAIN, 0);
373}
374
Dennis Syrovatskyb595e032005-11-09 06:24:25 +0000375void
Dennis Syrovatskyd6febeb2005-11-10 04:27:49 +0000376FTDialog::addRemoteLVItems(FileInfo *pFI)
Dennis Syrovatskyb595e032005-11-09 06:24:25 +0000377{
Dennis Syrovatsky8b194ee2005-11-10 08:56:34 +0000378 pFI->sort();
379 m_pRemoteLV->deleteAllItems();
380 m_pRemoteLV->addItems(pFI);
381 strcpy(m_szRemotePath, m_szRemotePathTmp);
382 SetWindowText(m_hwndRemotePath, m_szRemotePath);
Dennis Syrovatsky4905c8f2005-11-21 15:52:46 +0000383 UpdateWindow(m_hwndFTDialog);
Dennis Syrovatskyb595e032005-11-09 06:24:25 +0000384}
385
386void
387FTDialog::onLocalOneUpFolder()
Dennis Syrovatsky139d7832005-11-02 05:36:05 +0000388{
Dennis Syrovatsky0b765cc2005-11-10 04:52:10 +0000389 strcpy(m_szLocalPathTmp, m_szLocalPath);
390 makeOneUpFolder(m_szLocalPathTmp);
391 showLocalLVItems();
Dennis Syrovatsky139d7832005-11-02 05:36:05 +0000392}
393
394void
Dennis Syrovatskyb595e032005-11-09 06:24:25 +0000395FTDialog::onRemoteOneUpFolder()
Dennis Syrovatsky139d7832005-11-02 05:36:05 +0000396{
Dennis Syrovatsky4d915dd2005-11-12 06:27:34 +0000397 strcpy(m_szRemotePathTmp, m_szRemotePath);
398 makeOneUpFolder(m_szRemotePathTmp);
399 showRemoteLVItems();
Dennis Syrovatsky139d7832005-11-02 05:36:05 +0000400}
Dennis Syrovatsky0b765cc2005-11-10 04:52:10 +0000401
Dennis Syrovatsky8b194ee2005-11-10 08:56:34 +0000402void
403FTDialog::reqFolderUnavailable()
404{
405 strcpy(m_szRemotePathTmp, m_szRemotePath);
406}
407
Dennis Syrovatsky0b765cc2005-11-10 04:52:10 +0000408int
409FTDialog::makeOneUpFolder(char *pPath)
410{
411 if (strcmp(pPath, "") == 0) return strlen(pPath);
412 for (int i=(strlen(pPath)-2); i>=0; i--) {
413 if (pPath[i] == '\\') {
414 pPath[i] = '\0';
415 break;
416 }
417 if (i == 0) pPath[0] = '\0';
418 }
419 return strlen(pPath);
420}
421
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000422void
423FTDialog::onUpload()
424{
Dennis Syrovatsky13b4d4c2005-11-28 08:14:18 +0000425 FileInfo fi;
Dennis Syrovatsky13b4d4c2005-11-28 08:14:18 +0000426 if (m_pLocalLV->getSelectedItems(&fi) > 0) {
427 m_pFileTransfer->addTransferQueue(m_szLocalPath, m_szRemotePath, &fi, FT_ATTR_COPY_UPLOAD);
428 }
Dennis Syrovatsky2142b4a2005-12-14 11:03:19 +0000429 setButtonsState();
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000430}
431
432void
433FTDialog::onDownload()
434{
Dennis Syrovatsky3f5ccbd2005-12-13 04:33:07 +0000435 FileInfo fi;
436 if (m_pRemoteLV->getSelectedItems(&fi) > 0) {
437 m_pFileTransfer->addTransferQueue(m_szLocalPath, m_szRemotePath, &fi, FT_ATTR_COPY_DOWNLOAD);
438 }
Dennis Syrovatsky2142b4a2005-12-14 11:03:19 +0000439 setButtonsState();
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000440}
441
Dennis Syrovatsky3f079e72005-11-23 05:23:50 +0000442void
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000443FTDialog::onLocalRename()
444{
445 MessageBox(NULL, "onLocalRename", "FTDialog", MB_OK);
446
447}
448
449void
450FTDialog::onRemoteRename()
451{
452 MessageBox(NULL, "onRemoteRename", "FTDialog", MB_OK);
453
454}
455
456void
457FTDialog::onLocalDelete()
458{
Dennis Syrovatsky29440e82005-12-05 09:31:28 +0000459 FileInfo fi;
460 if (m_pLocalLV->getSelectedItems(&fi) > 0) {
461 m_pFileTransfer->addDeleteQueue(m_szLocalPath, &fi, FT_ATTR_DELETE_LOCAL);
462 }
Dennis Syrovatsky2142b4a2005-12-14 11:03:19 +0000463 setButtonsState();
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000464}
465
466void
467FTDialog::onRemoteDelete()
468{
Dennis Syrovatsky29440e82005-12-05 09:31:28 +0000469 FileInfo fi;
470 if (m_pRemoteLV->getSelectedItems(&fi) > 0) {
471 m_pFileTransfer->addDeleteQueue(m_szRemotePath, &fi, FT_ATTR_DELETE_REMOTE);
472 }
Dennis Syrovatsky2142b4a2005-12-14 11:03:19 +0000473 setButtonsState();
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000474}
475
Dennis Syrovatskyf0928942005-12-14 15:12:45 +0000476bool
477FTDialog::getCreateFolderName()
478{
479 if (m_pCreateFolderDlg != NULL) return false;
480
481 bool bResult = false;
482
483 m_pCreateFolderDlg = new FTDialog::CreateFolderDlg(this);
484 m_pCreateFolderDlg->create();
485 if (strlen(m_pCreateFolderDlg->getFolderName()) != 0) {
486 strcpy(m_szCreateFolderName, m_pCreateFolderDlg->getFolderName());
487 bResult = true;
488 } else {
489 m_szCreateFolderName[0] = '\0';
490 bResult = false;
491 }
492 delete m_pCreateFolderDlg;
493 m_pCreateFolderDlg = NULL;
494
495 return bResult;
496}
497
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000498void
Dennis Syrovatsky05c424e2005-12-14 11:19:19 +0000499FTDialog::onLocalCreateFolder()
500{
Dennis Syrovatskyf0928942005-12-14 15:12:45 +0000501 if (getCreateFolderName()) {
502 char path[FT_FILENAME_SIZE];
503 sprintf(path, "%s\\%s", m_szLocalPath, m_szCreateFolderName);
504 setStatusText("Creating Local Folder: %s", path);
505 FolderManager fm;
506 if (fm.createDir(path)) showLocalLVItems();
507 }
Dennis Syrovatsky05c424e2005-12-14 11:19:19 +0000508}
509
510void
511FTDialog::onRemoteCreateFolder()
512{
Dennis Syrovatskyf0928942005-12-14 15:12:45 +0000513 if (getCreateFolderName()) {
514 m_pFileTransfer->createRemoteFolder(m_szRemotePath, m_szCreateFolderName);
515 }
Dennis Syrovatsky05c424e2005-12-14 11:19:19 +0000516}
517
518void
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000519FTDialog::onFTCancel()
520{
Dennis Syrovatsky7b53c662005-12-14 10:18:21 +0000521 if (m_pCancelingDlg != NULL) return;
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000522
Dennis Syrovatsky7b53c662005-12-14 10:18:21 +0000523 m_pCancelingDlg = new CancelingDlg(this);
524
525 m_pCancelingDlg->create();
526}
527
528void
529FTDialog::cancelTransfer(bool bResult)
530{
531 if (m_pCancelingDlg != NULL) {
532 delete m_pCancelingDlg;
533 m_pCancelingDlg = NULL;
534 }
535
Dennis Syrovatsky2142b4a2005-12-14 11:03:19 +0000536 setButtonsState();
537
538 if ((m_bCloseDlgAfterCancel) && (bResult)) {
539 m_bCloseDlgAfterCancel = false;
540 closeFTDialog();
541 }
542
543 m_pFileTransfer->m_bCancel = bResult;
544}
545
546void
547FTDialog::afterCancelTransfer()
548{
549 if (m_pCancelingDlg != NULL) {
550 delete m_pCancelingDlg;
551 m_pCancelingDlg = NULL;
552 }
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000553}
554
555void
556FTDialog::onFTMenuCommand(int command)
557{
558 switch (command)
559 {
560 case IDM_FTCOPY:
561 {
562 switch (m_FTMenuSource)
563 {
564 case IDC_FTLOCALLIST: onUpload(); break;
565 case IDC_FTREMOTELIST: onDownload(); break;
566 default: break;
567 }
568 }
569 break;
570 case IDM_FTRENAME:
571 {
572 switch (m_FTMenuSource)
573 {
574 case IDC_FTLOCALLIST: onLocalRename(); break;
575 case IDC_FTREMOTELIST: onRemoteRename(); break;
576 default: break;
577 }
578 }
579 break;
580 case IDM_FTDELETE:
581 {
582 switch (m_FTMenuSource)
583 {
584 case IDC_FTLOCALLIST: onLocalDelete(); break;
585 case IDC_FTREMOTELIST: onRemoteDelete(); break;
586 default: break;
587 }
588 }
589 break;
590 case IDM_FTCANCEL: onFTCancel(); break;
Dennis Syrovatsky05c424e2005-12-14 11:19:19 +0000591 case IDM_FTCREATEFOLDER:
592 {
593 switch (m_FTMenuSource)
594 {
595 case IDC_FTLOCALLIST: onLocalCreateFolder(); break;
596 case IDC_FTREMOTELIST: onRemoteCreateFolder(); break;
597 default: break;
598 }
599 }
600 break;
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000601 default:
602 break;
603 }
604}
605
606void
Dennis Syrovatsky3f079e72005-11-23 05:23:50 +0000607FTDialog::onLocalRButton()
608{
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000609 refreshBtnState();
610 m_FTMenuSource = IDC_FTLOCALLIST;
611 showFTMenu(m_BtnState.uploadBtn, m_BtnState.createLocalFldBtn,
612 m_BtnState.renameLocalBtn, m_BtnState.deleteLocalBtn,
613 m_BtnState.cancelBtn);
Dennis Syrovatsky3f079e72005-11-23 05:23:50 +0000614}
615
616void
617FTDialog::onRemoteRButton()
618{
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000619 refreshBtnState();
620 m_FTMenuSource = IDC_FTREMOTELIST;
621 showFTMenu(m_BtnState.downloadBtn, m_BtnState.createRemoteFldBtn,
622 m_BtnState.renameRemoteBtn, m_BtnState.deleteRemoteBtn,
623 m_BtnState.cancelBtn);
Dennis Syrovatsky3f079e72005-11-23 05:23:50 +0000624}
625
626void
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000627FTDialog::showFTMenu(bool copyBtnState, bool createFldBtnState, bool renameBtnState,
628 bool deleteBtnState, bool cancelBtnState)
Dennis Syrovatsky3f079e72005-11-23 05:23:50 +0000629{
630 HMENU hMenu = LoadMenu(m_hInstance, MAKEINTRESOURCE(IDR_FTMENU));
631 HMENU hFTMenu = GetSubMenu(hMenu, 0);
632
633 SetMenuDefaultItem(hFTMenu, IDM_FTCOPY, FALSE);
634
635 SetForegroundWindow(m_hwndFTDialog);
636
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000637 if (copyBtnState) {
638 EnableMenuItem(hMenu, IDM_FTCOPY, MF_ENABLED);
639 } else {
640 EnableMenuItem(hMenu, IDM_FTCOPY, MF_DISABLED | MF_GRAYED);
641 }
642 if (createFldBtnState) {
643 EnableMenuItem(hMenu, IDM_FTCREATEFOLDER, MF_ENABLED);
644 } else {
645 EnableMenuItem(hMenu, IDM_FTCREATEFOLDER, MF_DISABLED | MF_GRAYED);
646 }
647 if (renameBtnState) {
648 EnableMenuItem(hMenu, IDM_FTRENAME, MF_ENABLED);
649 } else {
650 EnableMenuItem(hMenu, IDM_FTRENAME, MF_DISABLED | MF_GRAYED);
651 }
652 if (deleteBtnState) {
653 EnableMenuItem(hMenu, IDM_FTDELETE, MF_ENABLED);
654 } else {
655 EnableMenuItem(hMenu, IDM_FTDELETE, MF_DISABLED | MF_GRAYED);
656 }
657 if (cancelBtnState) {
658 EnableMenuItem(hMenu, IDM_FTCANCEL, MF_ENABLED);
659 } else {
660 EnableMenuItem(hMenu, IDM_FTCANCEL, MF_DISABLED | MF_GRAYED);
661 }
662 DrawMenuBar(m_hwndFTDialog);
663
Dennis Syrovatsky3f079e72005-11-23 05:23:50 +0000664 POINT cursorPosition;
665 GetCursorPos(&cursorPosition);
666 TrackPopupMenu(hFTMenu, 0, cursorPosition.x, cursorPosition.y, 0, m_hwndFTDialog, 0);
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000667 DestroyMenu(hFTMenu);
Dennis Syrovatsky3f079e72005-11-23 05:23:50 +0000668}
669
Dennis Syrovatsky0b765cc2005-11-10 04:52:10 +0000670void
671FTDialog::setIcon(int dest, int idIcon)
672{
673 HANDLE hIcon = LoadImage(m_hInstance, MAKEINTRESOURCE(idIcon), IMAGE_ICON, 16, 16, LR_SHARED);
674 SendMessage(GetDlgItem(m_hwndFTDialog, dest), BM_SETIMAGE, (WPARAM) IMAGE_ICON, (LPARAM) hIcon);
675 DestroyIcon((HICON) hIcon);
676}
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000677
678void
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000679FTDialog::refreshBtnState()
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000680{
681 if (!m_bDlgShown) return;
682
683 int locPathLen = strlen(m_szLocalPath);
684 int remPathLen = strlen(m_szRemotePath);
685
686 if (GetFocus() == m_pLocalLV->getWndHandle()) {
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000687 m_BtnState.downloadBtn = false;
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000688 if (strlen(m_szLocalPath) != 0) {
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000689 m_BtnState.createLocalFldBtn = true;
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000690 int nCount = ListView_GetSelectedCount(m_pLocalLV->getWndHandle());
691 if (nCount <= 0) {
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000692 m_BtnState.uploadBtn = false;
693 m_BtnState.deleteLocalBtn = false;
694 m_BtnState.renameLocalBtn = false;
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000695 } else {
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000696 m_BtnState.deleteLocalBtn = true;
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000697 if (remPathLen == 0) {
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000698 m_BtnState.uploadBtn = false;
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000699 } else {
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000700 m_BtnState.uploadBtn = true;
701 }
702 if (nCount == 1) {
703 m_BtnState.renameLocalBtn = true;
704 } else {
705 m_BtnState.renameLocalBtn = false;
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000706 }
707 }
708 } else {
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000709 m_BtnState.uploadBtn = false;
710 m_BtnState.createLocalFldBtn = false;
711 m_BtnState.deleteLocalBtn = false;
712 m_BtnState.renameLocalBtn = false;
713 m_BtnState.downloadBtn = false;
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000714 }
715 } else {
716 if (GetFocus() == m_pRemoteLV->getWndHandle()) {
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000717 m_BtnState.uploadBtn = false;
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000718 if (strlen(m_szRemotePath) != 0) {
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000719 m_BtnState.createRemoteFldBtn = true;
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000720 int nCount = ListView_GetSelectedCount(m_pRemoteLV->getWndHandle());
721 if (nCount <= 0) {
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000722 m_BtnState.downloadBtn = false;
723 m_BtnState.deleteRemoteBtn = false;
724 m_BtnState.renameRemoteBtn = false;
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000725 } else {
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000726 m_BtnState.deleteRemoteBtn = true;
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000727 if (locPathLen == 0) {
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000728 m_BtnState.downloadBtn = false;
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000729 } else {
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000730 m_BtnState.downloadBtn = true;
731 }
732 if (nCount == 1) {
733 m_BtnState.renameRemoteBtn = true;
734 } else {
735 m_BtnState.renameRemoteBtn = false;
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000736 }
737 }
738 } else {
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000739 m_BtnState.downloadBtn = false;
740 m_BtnState.createRemoteFldBtn = false;
741 m_BtnState.deleteRemoteBtn = false;
742 m_BtnState.renameRemoteBtn = false;
743 m_BtnState.uploadBtn = false;
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000744 }
745 } else {
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000746 }
747 }
Dennis Syrovatsky7b53c662005-12-14 10:18:21 +0000748 if (m_pFileTransfer->isTransferEnable())
749 m_BtnState.cancelBtn = true;
750 else
751 m_BtnState.cancelBtn = false;
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000752}
753
754void
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000755FTDialog::setButtonsState()
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000756{
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000757 refreshBtnState();
758
759 switch (m_BtnState.uploadBtn)
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000760 {
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000761 case false: EnableWindow(GetDlgItem(m_hwndFTDialog, IDC_FTUPLOAD), FALSE); break;
762 case true: EnableWindow(GetDlgItem(m_hwndFTDialog, IDC_FTUPLOAD), TRUE); break;
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000763 }
764
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000765 switch (m_BtnState.downloadBtn)
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000766 {
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000767 case false: EnableWindow(GetDlgItem(m_hwndFTDialog, IDC_FTDOWNLOAD), FALSE); break;
768 case true: EnableWindow(GetDlgItem(m_hwndFTDialog, IDC_FTDOWNLOAD), TRUE); break;
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000769 }
770
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000771 switch (m_BtnState.cancelBtn)
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000772 {
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000773 case false: EnableWindow(GetDlgItem(m_hwndFTDialog, IDC_FTCANCEL), FALSE); break;
774 case true: EnableWindow(GetDlgItem(m_hwndFTDialog, IDC_FTCANCEL), TRUE); break;
Dennis Syrovatskyabc2cc52005-11-23 03:52:07 +0000775 }
Dennis Syrovatsky2142b4a2005-12-14 11:03:19 +0000776
777 UpdateWindow(m_hwndFTDialog);
Dennis Syrovatskybe4956b2005-11-23 09:15:12 +0000778}
Dennis Syrovatsky6806fec2005-11-28 06:12:44 +0000779
780void
Dennis Syrovatskyc4ed9b72005-11-28 07:10:27 +0000781FTDialog::setStatusText(LPCSTR format,...)
Dennis Syrovatsky6806fec2005-11-28 06:12:44 +0000782{
Dennis Syrovatskyc4ed9b72005-11-28 07:10:27 +0000783 char text[1024];
784 va_list args;
785 va_start(args, format);
786 int nSize = _vsnprintf(text, sizeof(text), format, args);
Dennis Syrovatsky922ee6a2005-12-05 10:55:51 +0000787
788 HWND hStatusBox = GetDlgItem(m_hwndFTDialog, IDC_FTSTATUS);
789
790 LRESULT lRes = SendMessage(hStatusBox, (UINT) CB_INSERTSTRING, (WPARAM) 0, (LPARAM) text);
791 if ((lRes != CB_ERR) && (lRes != CB_ERRSPACE)) {
792 lRes = SendMessage(hStatusBox, (UINT) CB_SETCURSEL, (WPARAM) lRes, (LPARAM) 0);
793 }
794
795 m_dwNumStatusStrings++;
796 if (m_dwNumStatusStrings > FT_MAX_STATUS_STRINGS) {
797 int numItems = SendMessage(hStatusBox, (UINT) CB_GETCOUNT, (WPARAM) 0, (LPARAM) 0);
798 if (numItems != CB_ERR) {
799 m_dwNumStatusStrings--;
800 SendMessage(hStatusBox, (UINT) CB_DELETESTRING, (WPARAM) numItems - 1, (LPARAM) 0);
801 }
802 }
Dennis Syrovatsky6806fec2005-11-28 06:12:44 +0000803}
Dennis Syrovatsky13b4d4c2005-11-28 08:14:18 +0000804
805void
Dennis Syrovatsky7b53c662005-12-14 10:18:21 +0000806FTDialog::processDlgMsgs()
807{
808 MSG msg;
809 while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) != 0) {
810 TranslateMessage(&msg);
811 DispatchMessage(&msg);
812 }
813}
814
815void
Dennis Syrovatsky13b4d4c2005-11-28 08:14:18 +0000816FTDialog::postCheckTransferQueueMsg()
817{
818 PostMessage(m_hwndFTDialog, m_msgCheckTransferQueue, 0, 0);
819}
820
821void
822FTDialog::postUploadFilePortionMsg()
823{
824 PostMessage(m_hwndFTDialog, m_msgUploadFilePortion, 0, 0);
825}
826
827void
Dennis Syrovatsky092d9982005-12-05 09:57:05 +0000828FTDialog::postCheckDeleteQueueMsg()
829{
830 PostMessage(m_hwndFTDialog, m_msgCheckDeleteQueue, 0, 0);
831}
Dennis Syrovatsky7b53c662005-12-14 10:18:21 +0000832
833FTDialog::CancelingDlg::CancelingDlg(FTDialog *pFTDlg)
834{
835 m_pFTDlg = pFTDlg;
836 m_hwndDlg = NULL;
837}
838
839FTDialog::CancelingDlg::~CancelingDlg()
840{
841 destroy();
842}
843
844bool
845FTDialog::CancelingDlg::create()
846{
847 if (m_hwndDlg != NULL) return false;
848
849 m_hwndDlg = CreateDialogParam(GetModuleHandle(0),
850 MAKEINTRESOURCE(IDD_FTCANCELING),
851 NULL,
852 (DLGPROC) cancelingDlgProc,
853 (LONG) this);
854
855 if (m_hwndDlg == NULL) return false;
856
857 ShowWindow(m_hwndDlg, SW_SHOW);
858 DrawIcon(GetDC(m_hwndDlg), 15, 22, LoadIcon(NULL, IDI_QUESTION));
859 UpdateWindow(m_hwndDlg);
860
861 return true;
862}
863
864bool
865FTDialog::CancelingDlg::destroy()
866{
867 if (m_hwndDlg == NULL) return true;
868
869 if (DestroyWindow(m_hwndDlg)) {
870 m_hwndDlg = NULL;
871 return true;
872 } else {
873 return false;
874 }
875}
876
877bool
878FTDialog::CancelingDlg::close(bool bResult)
879{
880 if (m_hwndDlg == NULL) return true;
881
882 destroy();
883
884 m_pFTDlg->cancelTransfer(bResult);
885
886 return false;
887}
888
889BOOL CALLBACK
890FTDialog::CancelingDlg::cancelingDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
891{
892 FTDialog::CancelingDlg *_this = (FTDialog::CancelingDlg *) GetWindowLong(hwnd, GWL_USERDATA);
893 switch (uMsg)
894 {
895 case WM_INITDIALOG:
896 SetWindowLong(hwnd, GWL_USERDATA, (LONG) lParam);
897 SetForegroundWindow(hwnd);
898 return TRUE;
899
900 case WM_COMMAND:
901 switch (LOWORD(wParam))
902 {
903 case IDOK:
904 _this->close(true);
905 return TRUE;
906 case IDCANCEL:
907 _this->close(false);
908 return TRUE;
909 }
910 break;
911 case WM_CLOSE:
912 _this->close(false);
913 return TRUE;
914 }
915 return FALSE;
916}
Dennis Syrovatskyf0928942005-12-14 15:12:45 +0000917
918FTDialog::CreateFolderDlg::CreateFolderDlg(FTDialog *pFTDlg) : Dialog(GetModuleHandle(0))
919{
920 m_pFTDlg = pFTDlg;
921 m_szFolderName[0] = '\0';
922}
923
924FTDialog::CreateFolderDlg::~CreateFolderDlg()
925{
926
927}
928
929bool
930FTDialog::CreateFolderDlg::create()
931{
932 return showDialog(MAKEINTRESOURCE(IDD_FTCREATEFOLDER), m_pFTDlg->getWndHandle());
933}
934
935bool
936FTDialog::CreateFolderDlg::onOk()
937{
938 strcpy(m_szFolderName, getItemString(IDC_FTFOLDERNAME));
939 return true;
940}