]> source.dussan.org Git - tigervnc.git/commitdiff
Major code evolution.
authorDennis Syrovatsky <dennis@tightvnc.com>
Thu, 10 Nov 2005 08:56:34 +0000 (08:56 +0000)
committerDennis Syrovatsky <dennis@tightvnc.com>
Thu, 10 Nov 2005 08:56:34 +0000 (08:56 +0000)
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@398 3789f03b-4d11-0410-bbf8-ca57d06f2519

rfb/fttypes.h
vncviewer/FTDialog.cxx
vncviewer/FTDialog.h
vncviewer/FileTransfer.cxx
vncviewer/FileTransfer.h

index 62fd89fbfe0c05076121e2839cab24d705b3d8dc..229d44bdfb7dfd8d540802a6f4f687928bf09c4d 100644 (file)
 #define FT_ATTR_FILE                   0x00000001
 #define FT_ATTR_DIR                    0x00000002
 
+#define FT_FLR_DEST_MAIN     101
+#define FT_FLR_DEST_BROWSE   102
+#define FT_FLR_DEST_DOWNLOAD 103
+#define FT_FLR_DEST_UPLOAD   104
+#define FT_FLR_DEST_DELETE   105
+#define FT_FLR_DEST_RENAME   106
+
 typedef struct tagSIZEDATAINFO
 {
        unsigned int size;
index b37554fd23f9d16cbc352cfe44301dd6e7a64c8e..67d2f6413fb903d1453e7f340777d455476438b3 100644 (file)
@@ -111,6 +111,7 @@ FTDialog::initFTDialog()
   setIcon(IDC_FTREMOTERELOAD, IDI_FTRELOAD);
 
   showLocalLVItems();
+  showRemoteLVItems();
 
   return true;
 }
@@ -255,9 +256,20 @@ FTDialog::showLocalLVItems()
   }
 }
 
+void
+FTDialog::showRemoteLVItems()
+{
+  m_pFileTransfer->requestFileList(m_szRemotePathTmp, FT_FLR_DEST_MAIN, 0);
+}
+
 void 
 FTDialog::addRemoteLVItems(FileInfo *pFI)
 {
+  pFI->sort();
+  m_pRemoteLV->deleteAllItems();
+  m_pRemoteLV->addItems(pFI);
+  strcpy(m_szRemotePath, m_szRemotePathTmp);
+  SetWindowText(m_hwndRemotePath, m_szRemotePath);
 }
 
 void 
@@ -273,6 +285,12 @@ FTDialog::onRemoteOneUpFolder()
 {
 }
 
+void 
+FTDialog::reqFolderUnavailable()
+{
+  strcpy(m_szRemotePathTmp, m_szRemotePath);
+}
+
 int
 FTDialog::makeOneUpFolder(char *pPath)
 {
index 81c3ba7d6261937447947daca4e7a1c6aa2a288b..7c577ed9ec8bbaeecdef324363eb76cf7cf757ca 100644 (file)
@@ -49,8 +49,8 @@ namespace rfb {
       
       static BOOL CALLBACK FTDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
       
-      void showLocalLVItems();
       void addRemoteLVItems(FileInfo *pFI);
+      void reqFolderUnavailable();
       
     private:
       FileTransfer *m_pFileTransfer;
@@ -60,6 +60,9 @@ namespace rfb {
       HWND m_hwndRemotePath;
       HINSTANCE m_hInstance;
       
+      void showLocalLVItems();
+      void showRemoteLVItems();
+
       void onLocalItemActivate(LPNMITEMACTIVATE lpnmia);
       void onRemoteItemActivate(LPNMITEMACTIVATE lpnmia);
 
index 44cfb13b503d070103fd7ed4dd1a75f6c89b87db..2cc84ef5e959ae0382b4a69a90d36c1708db7f93 100644 (file)
@@ -93,6 +93,41 @@ FileTransfer::processFTMsg(int type)
 bool 
 FileTransfer::procFileListDataMsg()
 {
+  FileInfo fileInfo;
+  int res = m_pReader->readFileListData(&fileInfo);
+
+  bool bResult;
+  switch (m_queueFileListRqst.getFlagsAt(0))
+  {
+  case FT_FLR_DEST_MAIN:
+    if (!m_bFTDlgShown) break;
+    
+    if (res < 0) {
+      m_pFTDialog->reqFolderUnavailable();
+      bResult = true;
+    } else {
+      bResult = procFLRMain(&fileInfo);
+    }
+    break;
+  case FT_FLR_DEST_BROWSE:
+    bResult = procFLRBrowse(&fileInfo);
+    break;
+  case FT_FLR_DEST_UPLOAD:
+    bResult = procFLRUpload(&fileInfo);
+    break;
+  case FT_FLR_DEST_DOWNLOAD:
+    bResult = procFLRDownload(&fileInfo);
+    break;
+  case FT_FLR_DEST_DELETE:
+    bResult = procFLRDelete(&fileInfo);
+    break;
+  case FT_FLR_DEST_RENAME:
+    bResult = procFLRRename(&fileInfo);
+    break;
+  }
+  m_queueFileListRqst.deleteAt(0);
+  return bResult;
+  
   return false;
 }
 
@@ -125,3 +160,48 @@ FileTransfer::procFileLastRqstFailedMsg()
 {
   return false;
 }
+
+bool 
+FileTransfer::procFLRMain(FileInfo *pFI)
+{
+  if (m_bFTDlgShown) m_pFTDialog->addRemoteLVItems(pFI);
+  return true;
+}
+
+bool 
+FileTransfer::procFLRBrowse(FileInfo *pFI)
+{
+  return false;
+}
+
+bool 
+FileTransfer::procFLRUpload(FileInfo *pFI)
+{
+  return false;
+}
+
+bool 
+FileTransfer::procFLRDownload(FileInfo *pFI)
+{
+  return false;
+}
+
+bool 
+FileTransfer::procFLRDelete(FileInfo *pFI)
+{
+  return false;
+}
+
+bool 
+FileTransfer::procFLRRename(FileInfo *pFI)
+{
+  return false;
+}
+
+void 
+FileTransfer::requestFileList(char *pPath, int dest, bool bDirOnly)
+{
+  m_queueFileListRqst.add(pPath, 0, 0, dest);
+
+  m_pWriter->writeFileListRqst(pPath, bDirOnly);
+}
\ No newline at end of file
index 7df0c1861c89ce2b0715cc8a9b5a54706284e73f..6bf36c954342d797b67151105c0ab1ac63ee62d7 100644 (file)
@@ -27,6 +27,8 @@
 #include <rdr/InStream.h>
 #include <rdr/OutStream.h>
 #include <rfb/msgTypes.h>
+#include <rfb/FileInfo.h>
+#include <rfb/TransferQueue.h>
 #include <vncviewer/FTDialog.h>
 #include <vncviewer/FTMsgReader.h>
 #include <vncviewer/FTMsgWriter.h>
@@ -45,6 +47,8 @@ namespace rfb {
       bool processFTMsg(int type);
       bool show();
 
+      void requestFileList(char *pPath, int dest, bool bDirOnly);
+
     private:
       bool m_bFTDlgShown;
       bool m_bInitialized;
@@ -53,14 +57,23 @@ namespace rfb {
 
       FTMsgReader *m_pReader;
       FTMsgWriter *m_pWriter;
+
+      FileInfo m_queueFileListRqst;
       
       bool procFileListDataMsg();
-      bool procFileSpecDirDataMsg();
       bool procFileDownloadDataMsg();
       bool procFileUploadCancelMsg();
       bool procFileDownloadFailedMsg();
       bool procFileDirSizeDataMsg();
       bool procFileLastRqstFailedMsg();
+      
+      bool procFLRMain(FileInfo *pFI);
+      bool procFLRBrowse(FileInfo *pFI);
+      bool procFLRUpload(FileInfo *pFI);
+      bool procFLRDownload(FileInfo *pFI);
+      bool procFLRDelete(FileInfo *pFI);
+      bool procFLRRename(FileInfo *pFI);
+      
     };
   }
 }