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;