Created code for FTDialog::createFTDialog, FTDialog::destroyFTDialog methods.
Deleted Dialog class as a base class for FTDialog.
Code improvements.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@382 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/vncviewer/FTDialog.cxx b/vncviewer/FTDialog.cxx
index 08bb771..f4f8220 100644
--- a/vncviewer/FTDialog.cxx
+++ b/vncviewer/FTDialog.cxx
@@ -26,7 +26,7 @@
 using namespace rfb;
 using namespace rfb::win32;
 
-FTDialog::FTDialog(HINSTANCE hInst, FileTransfer *pFT) : Dialog(hInst)
+FTDialog::FTDialog(HINSTANCE hInst, FileTransfer *pFT)
 {
   m_pFileTransfer = pFT;
   m_hInstance = hInst;
@@ -35,17 +35,46 @@
   m_szRemotePath[0] = '\0';
   m_szLocalPathTmp[0] = '\0';
   m_szRemotePathTmp[0] = '\0';
+
+  m_pLocalLV = NULL;
+  m_pRemoteLV = NULL;
+  m_pProgress = NULL;
 }
 
 FTDialog::~FTDialog()
 {
-  closeFTDialog();
+  destroyFTDialog();
 }
 
 bool
 FTDialog::createFTDialog()
 {
-	return false;
+  m_hwndFTDialog = CreateDialogParam(m_hInstance, 
+                                     MAKEINTRESOURCE(IDD_FILETRANSFER_DLG),
+                                     NULL, 
+                                     (DLGPROC) FTDialogProc,
+                                     (LONG) this);
+  
+  if (m_hwndFTDialog == NULL) return false;
+  
+  m_pLocalLV = new FTListView(GetDlgItem(m_hwndFTDialog, IDC_FTLOCALLIST));
+  m_pRemoteLV = new FTListView(GetDlgItem(m_hwndFTDialog, IDC_FTREMOTELIST));
+  
+  m_pProgress = new FTProgress(m_hwndFTDialog);
+  
+  if ((m_pLocalLV == NULL) || (m_pRemoteLV == NULL) || (m_pProgress == NULL)) {
+    destroyFTDialog();
+    return false;
+  }
+  
+  m_pLocalLV->initialize(m_hInstance);
+  m_pRemoteLV->initialize(m_hInstance);
+  
+  ShowWindow(m_hwndFTDialog, SW_SHOW);
+  UpdateWindow(m_hwndFTDialog);
+  m_bDlgShown = true;
+  
+  return true;
 }
 
 bool
@@ -54,9 +83,29 @@
   return false;
 }
 
-void
+bool
 FTDialog::closeFTDialog()
 {
+  return false;
+}
+
+void
+FTDialog::destroyFTDialog()
+{
+  if (m_pLocalLV != NULL) {
+    delete m_pLocalLV;
+    m_pLocalLV = NULL;
+  }
+
+  if (m_pRemoteLV != NULL) {
+    delete m_pRemoteLV;
+    m_pRemoteLV = NULL;
+  }
+
+  if (m_pProgress != NULL) {
+    delete m_pProgress;
+    m_pProgress = NULL;
+  }
 }
 
 BOOL CALLBACK 
diff --git a/vncviewer/FTDialog.h b/vncviewer/FTDialog.h
index 2748d9c..5bd165c 100644
--- a/vncviewer/FTDialog.h
+++ b/vncviewer/FTDialog.h
@@ -28,20 +28,22 @@
 #include <commctrl.h>
 
 #include <rfb/FileInfo.h>
-#include <rfb_win32/Dialog.h>
+#include <vncviewer/FTListView.h>
+#include <vncviewer/FTProgress.h>
 #include <vncviewer/FileTransfer.h>
 #include <vncviewer/resource.h>
 
 namespace rfb {
   namespace win32 {
-    class FTDialog : public Dialog
+    class FTDialog
     {
     public:
       FTDialog(HINSTANCE hInst, FileTransfer *pFT);
       ~FTDialog();
       
       bool createFTDialog();
-      void closeFTDialog();
+      bool closeFTDialog();
+      void destroyFTDialog();
       
       static BOOL CALLBACK FTDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
       
@@ -74,6 +76,11 @@
       char m_szRemotePathTmp[MAX_PATH];
       
       bool m_bDlgShown;
+
+      FTListView *m_pLocalLV;
+      FTListView *m_pRemoteLV;
+
+      FTProgress *m_pProgress;
     };
   }
 }
diff --git a/vncviewer/FTListView.cxx b/vncviewer/FTListView.cxx
index 8b43ba5..ab43cbd 100644
--- a/vncviewer/FTListView.cxx
+++ b/vncviewer/FTListView.cxx
@@ -56,7 +56,9 @@
   addColumn("Name", 0, xwidth0, LVCFMT_LEFT);
   addColumn("Size", 1, xwidth1, LVCFMT_RIGHT);
   addColumn("Data", 2, xwidth2, LVCFMT_LEFT);
-  
+
+  ListView_SetExtendedListViewStyleEx(m_hListView, LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT);
+ 
   return true;
 }