]> source.dussan.org Git - tigervnc.git/commitdiff
Big code evolution for file transfer feature.
authorDennis Syrovatsky <dennis@tightvnc.com>
Mon, 28 Nov 2005 06:12:44 +0000 (06:12 +0000)
committerDennis Syrovatsky <dennis@tightvnc.com>
Mon, 28 Nov 2005 06:12:44 +0000 (06:12 +0000)
Added methods to the TransferQueue class for flag managing.
Added upload() and download() methods to the FileTransfer class.
Reconstruction of FTProgress class.
Code improvements.

git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@418 3789f03b-4d11-0410-bbf8-ca57d06f2519

rfb/TransferQueue.cxx
rfb/TransferQueue.h
rfb/fttypes.h
vncviewer/FTDialog.cxx
vncviewer/FTDialog.h
vncviewer/FTProgress.cxx
vncviewer/FTProgress.h
vncviewer/FileTransfer.cxx
vncviewer/FileTransfer.h
vncviewer/vncviewer.rc

index 820ca686a3b8c3586e7f4700902a797773040d11..58b92734940f4e0a7ef3dc2c96380cd8c24fbe7e 100644 (file)
@@ -242,12 +242,31 @@ bool
 TransferQueue::setFlagsAt(unsigned int number, unsigned int value)
 {
   if ((number >= 0) && (number < m_numEntries)) {
-    m_pEntries[number].info.flags = value;
+    m_pEntries[number].info.flags = m_pEntries[number].info.flags | value;
     return true;
   }
   return false;
 }
 
+bool 
+TransferQueue::clearFlagAt(unsigned int number, unsigned int value)
+{
+  if ((number >= 0) && (number < m_numEntries)) {
+    m_pEntries[number].info.flags = (m_pEntries[number].info.flags & (value ^ 0xFFFFFFFF));
+    return true;
+  }
+  return false;
+}
+
+bool 
+TransferQueue::setFlagToAll(unsigned int flag)
+{
+  for (unsigned int i = 0; i < m_numEntries; i++) {
+    setFlagsAt(i, flag);
+  }
+  return true;
+}
+
 bool 
 TransferQueue::deleteAt(unsigned int number)
 {
index b12c0582443f3b4ce9cde78d812616857f191167..02a043df4aa8b0baa50d14f488d6edec6c24fe89 100644 (file)
@@ -64,6 +64,8 @@ namespace rfb {
     bool setSizeAt(unsigned int number, unsigned int value);
     bool setDataAt(unsigned int number, unsigned int value);
     bool setFlagsAt(unsigned int number, unsigned int value);
+    bool clearFlagAt(unsigned int number, unsigned int value);
+    bool setFlagToAll(unsigned int flag);
     
     bool deleteAt(unsigned int number);
     
index 229d44bdfb7dfd8d540802a6f4f687928bf09c4d..5b08fd01ea1fba9dad3aaca4bb48b763c438992a 100644 (file)
 #define FT_MAX_STATUS_STRINGS           255
 #define FT_MAX_LENGTH_STATUS_STRINGS 130
 
-#define FT_ATTR_UNKNOWN                        0x00000000
-#define FT_ATTR_FILE                   0x00000001
-#define FT_ATTR_DIR                    0x00000002
+#define FT_ATTR_UNKNOWN                            0x00000000
+#define FT_ATTR_FILE                       0x00000001
+#define FT_ATTR_DIR                        0x00000002
+
+#define FT_ATTR_RESIZE_NEEDED      0x00040000
+#define FT_ATTR_FOLDER_EXISTS      0x00080000
+#define FT_ATTR_COPY_OVERWRITE     0x00100000
+#define FT_ATTR_FLR_UPLOAD_CHECK       0x00200000
+#define FT_ATTR_FLR_UPLOAD_ADD     0x00400000
+#define FT_ATTR_COPY_UPLOAD            0x00800000
+#define FT_ATTR_FLR_DOWNLOAD_CHECK  0x01000000
+#define FT_ATTR_FLR_DOWNLOAD_ADD       0x02000000
+#define FT_ATTR_COPY_DOWNLOAD      0x04000000
+#define FT_ATTR_DELETE_LOCAL       0x08000000
+#define FT_ATTR_DELETE_REMOTE      0x10000000
+#define FT_ATTR_RENAME_LOCAL       0x20000000
+#define FT_ATTR_RENAME_REMOTE      0x40000000
 
 #define FT_FLR_DEST_MAIN     101
 #define FT_FLR_DEST_BROWSE   102
index 72d9e28e3653134bc15c2485a8ccca1588fdf718..47e0c24023b05cc927c22c1fe7e1e59f2a182878 100644 (file)
@@ -102,8 +102,6 @@ FTDialog::initFTDialog()
   m_pLocalLV->initialize(m_hInstance);
   m_pRemoteLV->initialize(m_hInstance);
 
-  m_pProgress->initialize(0,0);
-
   m_hwndLocalPath = GetDlgItem(m_hwndFTDialog, IDC_FTLOCALPATH);
   m_hwndRemotePath = GetDlgItem(m_hwndFTDialog, IDC_FTREMOTEPATH);
 
@@ -597,13 +595,6 @@ FTDialog::refreshBtnState()
     }
   }
   m_BtnState.cancelBtn = false;
-/*
-  if (m_pFileTransfer->isTransferEnable()) {
-    setAllButtonsState(-1, -1, -1, -1, 1);
-  } else {
-    setAllButtonsState(-1, -1, -1, -1, 0);
-  }
-*/
 }
 
 void
@@ -629,3 +620,9 @@ FTDialog::setButtonsState()
   case true: EnableWindow(GetDlgItem(m_hwndFTDialog, IDC_FTCANCEL), TRUE); break;
   }
 }
+
+void 
+FTDialog::setStatusText(char *pText)
+{
+  SetDlgItemText(m_hwndFTDialog, IDC_FTSTATUS, pText);
+}
index bfedf3156ddeaae7e1ec8b7b25e8f0b5086d713b..2c9ebfa158b08288aeed5ad65afbece96bd9b320 100644 (file)
@@ -51,6 +51,10 @@ namespace rfb {
       
       void addRemoteLVItems(FileInfo *pFI);
       void reqFolderUnavailable();
+
+      void setStatusText(char *pText);
+
+      FTProgress *m_pProgress;
       
     private:
       FileTransfer *m_pFileTransfer;
@@ -102,8 +106,6 @@ namespace rfb {
       FTListView *m_pLocalLV;
       FTListView *m_pRemoteLV;
 
-      FTProgress *m_pProgress;
-
       int m_FTMenuSource;
 
       char m_szLocalPath[FT_FILENAME_SIZE];
index 46316f07779216e0b55665a2dcf441bb674b4e5c..95b4dd4d232eb3f701d561ffd8019517476442ed 100644 (file)
@@ -33,6 +33,11 @@ FTProgress::FTProgress(HWND hwndParent)
 
   m_pSingleProgress = NULL;
   m_pGeneralProgress = NULL;
+
+  m_hwndSinglePercent = GetDlgItem(m_hwndParent, IDC_FTSINGLEPERCENT);
+  m_hwndGeneralPercent = GetDlgItem(m_hwndParent, IDC_FTGENERALPERCENT);
+
+  m_bInitialized = createProgressBarObjects();
 }
 
 FTProgress::~FTProgress()
@@ -40,43 +45,35 @@ FTProgress::~FTProgress()
   destroyProgressBarObjects();
 }
 
-bool
-FTProgress::initialize(DWORD64 totalMaxValue, DWORD maxValue)
+void
+FTProgress::increase(DWORD value)
 {
-  m_bInitialized = false;
-
-  m_hwndSinglePercent = GetDlgItem(m_hwndParent, IDC_FTSINGLEPERCENT);
-  m_hwndGeneralPercent = GetDlgItem(m_hwndParent, IDC_FTGENERALPERCENT);
-
-  if ((m_hwndSinglePercent == NULL) || (m_hwndGeneralPercent == NULL)) return false;
-  if (!createProgressBarObjects()) return false;
+  if (!m_bInitialized) return;
 
-  if (!initProgressControls(totalMaxValue, maxValue)) return false;
+  m_pSingleProgress->increase(value);
+  m_pGeneralProgress->increase(value);
 
   setProgressText();
-
-  m_bInitialized = true;
-  return true;
 }
 
 void
-FTProgress::increase(DWORD value)
+FTProgress::clearAndInitGeneral(DWORD64 dw64MaxValue, DWORD64 dw64Position)
 {
   if (!m_bInitialized) return;
 
-  m_pSingleProgress->increase(value);
-  m_pGeneralProgress->increase(value);
+  m_pGeneralProgress->clear();
+  m_pGeneralProgress->init(dw64MaxValue, dw64Position);
 
   setProgressText();
 }
 
 void
-FTProgress::clearSingle()
+FTProgress::clearAndInitSingle(DWORD dwMaxValue, DWORD dwPosition)
 {
   if (!m_bInitialized) return;
 
   m_pSingleProgress->clear();
+  m_pSingleProgress->init(dwMaxValue, dwPosition);
 
   setProgressText();
 }
@@ -130,22 +127,6 @@ FTProgress::destroyProgressBarObjects()
   return true;
 }
 
-bool
-FTProgress::initProgressControls(DWORD64 totalMaxValue, DWORD maxValue)
-{
-  bool bResult = true;
-
-  if ((m_pSingleProgress != NULL) && (m_pGeneralProgress != NULL)) {
-    if (!m_pSingleProgress->init(totalMaxValue, 0)) return false;
-    if (!m_pGeneralProgress->init(maxValue, 0)) return false;
-  } else {
-    return false;
-  }
-
-  setProgressText();
-  return true;
-}
-
 void
 FTProgress::setProgressText()
 {
index bcfb02c831ccb6f2957ea0bb4cd7671aecb10b81..c36c079182cbec276f521409156e3dbf5a04a0a1 100644 (file)
@@ -39,9 +39,9 @@ namespace rfb {
       FTProgress(HWND hwndParent);
       ~FTProgress();
       
-      bool initialize(DWORD64 totalMaxValue, DWORD maxValue);
       void increase(DWORD value);
-      void clearSingle();
+      void clearAndInitGeneral(DWORD64 dw64MaxValue, DWORD64 dw64Position);
+      void clearAndInitSingle(DWORD dwMaxValue, DWORD dwPosition);
       void clearAll();
 
     private:
@@ -54,8 +54,6 @@ namespace rfb {
 
       bool m_bInitialized;
 
-      bool initProgressControls(DWORD64 totalMaxValue, DWORD maxValue);
-
       void setProgressText();
       bool createProgressBarObjects();
       bool destroyProgressBarObjects();
index 57e6763866b168ba495507891721573d455b6860..2eacee30a34d54817986f3c763ddc2db03db3438 100644 (file)
@@ -53,6 +53,8 @@ FileTransfer::initialize(rdr::InStream *pIS, rdr::OutStream *pOS)
   m_pReader = new FTMsgReader(pIS);
   m_pWriter = new FTMsgWriter(pOS);
 
+  m_TransferQueue.free();
+
   m_bInitialized = true;
   return true;
 }
@@ -90,6 +92,37 @@ FileTransfer::processFTMsg(int type)
   }
 }
 
+bool 
+FileTransfer::isTransferEnable()
+{
+  if (m_TransferQueue.getNumEntries() > 0) return true; else return false;
+}
+
+void 
+FileTransfer::upload(TransferQueue *pTransQueue)
+{
+  if ((m_bFTDlgShown) && (!isTransferEnable())) m_pFTDialog->setStatusText("Starting Copy Operation");
+  
+  pTransQueue->setFlagToAll(FT_ATTR_RESIZE_NEEDED);
+  
+  m_TransferQueue.add(pTransQueue);
+
+  resizeSending();
+  
+}
+
+void 
+FileTransfer::download(TransferQueue *pTransQueue)
+{
+
+}
+
+void
+FileTransfer::resizeSending()
+{
+
+}
+
 bool 
 FileTransfer::procFileListDataMsg()
 {
index 805c10ec3904604cf92a7e5a9e7ba31a96b07426..71ecf0aff9d648a6a690a7182aa0b24f02750420 100644 (file)
@@ -49,6 +49,12 @@ namespace rfb {
 
       void requestFileList(char *pPath, int dest, bool bDirOnly);
 
+      void upload(TransferQueue *pTransQueue);
+      void download(TransferQueue *pTransQueue);
+
+      bool isTransferEnable();
+      void resizeSending();
+
     private:
       bool m_bFTDlgShown;
       bool m_bInitialized;
@@ -59,6 +65,8 @@ namespace rfb {
       FTMsgWriter *m_pWriter;
 
       FileInfo m_queueFileListRqst;
+
+      TransferQueue m_TransferQueue;
       
       bool procFileListDataMsg();
       bool procFileDownloadDataMsg();
index a878beb026b329d26dfca9fcd16cc017fef2ff53..ff8ea04a9a0893619e6203601d63af01f91d0d13 100644 (file)
@@ -33,20 +33,12 @@ EXSTYLE WS_EX_CONTEXTHELP | WS_EX_CONTROLPARENT
 CAPTION "TightVNC File Transfers"
 FONT 8, "MS Sans Serif"
 BEGIN
-    EDITTEXT        IDC_FTLOCALPATH,7,20,155,12,ES_AUTOHSCROLL
     CONTROL         "List1",IDC_FTLOCALLIST,"SysListView32",LVS_REPORT | 
                     LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | 
                     WS_TABSTOP,7,40,200,196
-    PUSHBUTTON      "...",IDC_FTLOCALBROWSE,165,20,14,12
-    PUSHBUTTON      "",IDC_FTLOCALUP,179,20,14,12,BS_ICON
-    PUSHBUTTON      "",IDC_FTLOCALRELOAD,193,20,14,12,BS_ICON
-    EDITTEXT        IDC_FTREMOTEPATH,323,20,155,12,ES_AUTOHSCROLL
     CONTROL         "List2",IDC_FTREMOTELIST,"SysListView32",LVS_REPORT | 
                     LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | 
                     WS_TABSTOP,323,40,200,196
-    PUSHBUTTON      "...",IDC_FTREMOTEBROWSE,481,20,14,12
-    PUSHBUTTON      "",IDC_FTREMOTEUP,495,20,14,12,BS_ICON
-    PUSHBUTTON      "",IDC_FTREMOTERELOAD,509,20,14,12,BS_ICON
     PUSHBUTTON      "Upload Files and Folders",IDC_FTUPLOAD,218,66,94,12,
                     WS_DISABLED
     PUSHBUTTON      "Download Files and Folders",IDC_FTDOWNLOAD,218,85,94,12,
@@ -54,16 +46,28 @@ BEGIN
     PUSHBUTTON      "Cancel File Transfer",IDC_FTCANCEL,218,167,94,12,
                     WS_DISABLED
     PUSHBUTTON      "Close File Transfers",IDC_FTCLOSE,218,217,94,12
-    COMBOBOX        IDC_FTSTATUS,7,262,516,30,CBS_DROPDOWNLIST | CBS_SORT | 
-                    WS_VSCROLL | WS_TABSTOP
+    EDITTEXT        IDC_FTLOCALPATH,7,20,155,12,ES_AUTOHSCROLL | NOT 
+                    WS_TABSTOP
     CTEXT           "Local Computer",IDC_FTLOCALLABEL,7,7,200,10
-    CTEXT           "TightVNC Server",IDC_FTREMOTELABEL,323,7,200,10
-    LTEXT           "File Transfer",IDC_STATIC,7,245,40,8
-    LTEXT           "Current File",IDC_STATIC,323,245,36,8
+    PUSHBUTTON      "...",IDC_FTLOCALBROWSE,165,20,14,12,NOT WS_TABSTOP
+    PUSHBUTTON      "",IDC_FTLOCALUP,179,20,14,12,BS_ICON | NOT WS_TABSTOP
+    PUSHBUTTON      "",IDC_FTLOCALRELOAD,193,20,14,12,BS_ICON | NOT 
+                    WS_TABSTOP
     CONTROL         "Progress1",IDC_FTGENERALPROGRESS,"msctls_progress32",
                     WS_BORDER,55,244,128,10
+    LTEXT           "File Transfer",IDC_STATIC,7,245,40,8
+    COMBOBOX        IDC_FTSTATUS,7,262,516,30,CBS_DROPDOWNLIST | CBS_SORT | 
+                    WS_VSCROLL
     CONTROL         "Progress1",IDC_FTSINGLEPROGRESS,"msctls_progress32",
                     WS_BORDER,370,244,128,10
+    EDITTEXT        IDC_FTREMOTEPATH,323,20,155,12,ES_AUTOHSCROLL | NOT 
+                    WS_TABSTOP
+    PUSHBUTTON      "...",IDC_FTREMOTEBROWSE,481,20,14,12,NOT WS_TABSTOP
+    PUSHBUTTON      "",IDC_FTREMOTEUP,495,20,14,12,BS_ICON | NOT WS_TABSTOP
+    PUSHBUTTON      "",IDC_FTREMOTERELOAD,509,20,14,12,BS_ICON | NOT 
+                    WS_TABSTOP
+    CTEXT           "TightVNC Server",IDC_FTREMOTELABEL,323,7,200,10
+    LTEXT           "Current File",IDC_STATIC,323,245,36,8
     CTEXT           "0%",IDC_FTGENERALPERCENT,189,245,18,8
     CTEXT           "0%",IDC_FTSINGLEPERCENT,505,245,18,8
 END