From 58a01ed57f3608e9a58f57023c12b80e27b4a019 Mon Sep 17 00:00:00 2001 From: Dennis Syrovatsky Date: Wed, 9 Nov 2005 08:21:41 +0000 Subject: [PATCH] Code improvements. Added code for FTDialog::FTDialogProc(...) method. Now user can see the list of local drives in the File Transfers dialog. git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@388 3789f03b-4d11-0410-bbf8-ca57d06f2519 --- vncviewer/FTDialog.cxx | 80 ++++++++++++++++++++++++++++++++------ vncviewer/FileTransfer.cxx | 6 +++ 2 files changed, 74 insertions(+), 12 deletions(-) diff --git a/vncviewer/FTDialog.cxx b/vncviewer/FTDialog.cxx index f8054b06..49c948ff 100644 --- a/vncviewer/FTDialog.cxx +++ b/vncviewer/FTDialog.cxx @@ -59,8 +59,16 @@ FTDialog::createFTDialog() if (m_hwndFTDialog == NULL) return false; - m_pLocalLV = new FTListView(GetDlgItem(m_hwndFTDialog, IDC_FTLOCALLIST)); - m_pRemoteLV = new FTListView(GetDlgItem(m_hwndFTDialog, IDC_FTREMOTELIST)); + HWND hwndLocalList = GetDlgItem(m_hwndFTDialog, IDC_FTLOCALLIST); + HWND hwndRemoteList = GetDlgItem(m_hwndFTDialog, IDC_FTREMOTELIST); + + if ((hwndLocalList == NULL) || (hwndRemoteList == NULL)) { + destroyFTDialog(); + return false; + } + + m_pLocalLV = new FTListView(hwndLocalList); + m_pRemoteLV = new FTListView(hwndRemoteList); m_pProgress = new FTProgress(m_hwndFTDialog); @@ -71,15 +79,10 @@ FTDialog::createFTDialog() initFTDialog(); - if (ShowWindow(m_hwndFTDialog, SW_SHOW) == 0) { - UpdateWindow(m_hwndFTDialog); - m_bDlgShown = true; - return true; - } else { - destroyFTDialog(); - m_bDlgShown = false; - return false; - } + ShowWindow(m_hwndFTDialog, SW_SHOW); + UpdateWindow(m_hwndFTDialog); + m_bDlgShown = true; + return true; } bool @@ -99,6 +102,8 @@ FTDialog::initFTDialog() bool FTDialog::closeFTDialog() { + ShowWindow(m_hwndFTDialog, SW_HIDE); + m_bDlgShown = false; return false; } @@ -119,13 +124,64 @@ FTDialog::destroyFTDialog() delete m_pProgress; m_pProgress = NULL; } + + if (DestroyWindow(m_hwndFTDialog)) m_hwndFTDialog = NULL; } BOOL CALLBACK FTDialog::FTDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { FTDialog *_this = (FTDialog *) GetWindowLong(hwnd, GWL_USERDATA); - return FALSE; + switch (uMsg) + { + case WM_INITDIALOG: + SetWindowLong(hwnd, GWL_USERDATA, (LONG) lParam); + SetForegroundWindow(hwnd); + return TRUE; + case WM_COMMAND: + { + switch (LOWORD(wParam)) + { + case IDC_FTCLOSE: + _this->closeFTDialog(); + return FALSE; + case IDC_FTLOCALUP: + _this->onLocalOneUpFolder(); + return FALSE; + case IDC_FTREMOTEUP: + _this->onRemoteOneUpFolder(); + return FALSE; + } + } + break; + + case WM_NOTIFY: + switch (LOWORD(wParam)) + { + case IDC_FTLOCALLIST: + switch (((LPNMHDR) lParam)->code) + { + case LVN_GETDISPINFO: + _this->m_pLocalLV->onGetDispInfo((NMLVDISPINFO *) lParam); + return FALSE; + } + break; + case IDC_FTREMOTELIST: + switch (((LPNMHDR) lParam)->code) + { + case LVN_GETDISPINFO: + _this->m_pRemoteLV->onGetDispInfo((NMLVDISPINFO *) lParam); + return FALSE; + } + break; + } + break; + case WM_CLOSE: + case WM_DESTROY: + _this->closeFTDialog(); + return FALSE; + } + return FALSE; } void diff --git a/vncviewer/FileTransfer.cxx b/vncviewer/FileTransfer.cxx index 73e77cae..82888af5 100644 --- a/vncviewer/FileTransfer.cxx +++ b/vncviewer/FileTransfer.cxx @@ -67,5 +67,11 @@ FileTransfer::show() if (!m_bInitialized) return false; m_bFTDlgShown = m_pFTDialog->createFTDialog(); + + FolderManager fm; + FileInfo fileInfo; + fm.getDirInfo("",&fileInfo, 0); + m_pFTDialog->addLocalLVItems("", &fileInfo); + return m_bFTDlgShown; } -- 2.39.5