Added browse folders possibility on both sides (local and remote).
Code improvements.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@457 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/vncviewer/FTDialog.cxx b/vncviewer/FTDialog.cxx
index b7ec9ba..5998a0f 100644
--- a/vncviewer/FTDialog.cxx
+++ b/vncviewer/FTDialog.cxx
@@ -36,6 +36,7 @@
   m_hInstance = hInst;
 
   m_bDlgShown = false;
+  m_bLocalBrowsing = true;
   m_bCloseDlgAfterCancel = false;
 
   m_pLocalLV = NULL;
@@ -362,9 +363,35 @@
 }
 
 void 
+FTDialog::onEndBrowseDlg(bool bResult)
+{
+  if (m_pBrowseDlg == NULL) return;
+
+  if (bResult) {
+    if (m_bLocalBrowsing) {
+      strcpy(m_szLocalPathTmp, m_pBrowseDlg->getPath());
+      showLocalLVItems();
+    } else {
+      strcpy(m_szRemotePathTmp, m_pBrowseDlg->getPath());
+      showRemoteLVItems();
+    }
+  }
+
+  delete m_pBrowseDlg;
+  m_pBrowseDlg = NULL;
+}
+
+void 
 FTDialog::onLocalBrowse()
 {
+  if (m_pBrowseDlg != NULL) return;
+  
+  m_bLocalBrowsing = true;
 
+  m_pBrowseDlg = new FTBrowseDlg(this);
+  m_pBrowseDlg->create();
+
+  getBrowseItems("");
 }
 
 void 
@@ -372,6 +399,8 @@
 {
   if (m_pBrowseDlg != NULL) return;
   
+  m_bLocalBrowsing = false;
+
   m_pBrowseDlg = new FTBrowseDlg(this);
   m_pBrowseDlg->create();
 
@@ -881,6 +910,19 @@
 }
 
 void 
+FTDialog::getBrowseItems(char *pPath)
+{
+  if (m_bLocalBrowsing) {
+    FileInfo fi;
+    FolderManager fm;
+    fm.getDirInfo(pPath, &fi, 1);
+    if (m_pBrowseDlg != NULL) m_pBrowseDlg->addItems(&fi);
+  } else {
+    m_pFileTransfer->requestFileList(pPath, FT_FLR_DEST_BROWSE, true);
+  }
+}
+
+void 
 FTDialog::addBrowseItems(FileInfo *pFI)
 {
   if (m_pBrowseDlg == NULL) return;