Big code evolution for file transfer feature.
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
diff --git a/vncviewer/FTDialog.cxx b/vncviewer/FTDialog.cxx
index 72d9e28..47e0c24 100644
--- a/vncviewer/FTDialog.cxx
+++ b/vncviewer/FTDialog.cxx
@@ -102,8 +102,6 @@
   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 @@
     }
   }
   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 @@
   case true: EnableWindow(GetDlgItem(m_hwndFTDialog, IDC_FTCANCEL), TRUE); break;
   }
 }
+
+void 
+FTDialog::setStatusText(char *pText)
+{
+  SetDlgItemText(m_hwndFTDialog, IDC_FTSTATUS, pText);
+}
diff --git a/vncviewer/FTDialog.h b/vncviewer/FTDialog.h
index bfedf31..2c9ebfa 100644
--- a/vncviewer/FTDialog.h
+++ b/vncviewer/FTDialog.h
@@ -51,6 +51,10 @@
       
       void addRemoteLVItems(FileInfo *pFI);
       void reqFolderUnavailable();
+
+      void setStatusText(char *pText);
+
+      FTProgress *m_pProgress;
       
     private:
       FileTransfer *m_pFileTransfer;
@@ -102,8 +106,6 @@
       FTListView *m_pLocalLV;
       FTListView *m_pRemoteLV;
 
-      FTProgress *m_pProgress;
-
       int m_FTMenuSource;
 
       char m_szLocalPath[FT_FILENAME_SIZE];
diff --git a/vncviewer/FTProgress.cxx b/vncviewer/FTProgress.cxx
index 46316f0..95b4dd4 100644
--- a/vncviewer/FTProgress.cxx
+++ b/vncviewer/FTProgress.cxx
@@ -33,6 +33,11 @@
 
   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,26 +45,6 @@
   destroyProgressBarObjects();
 }
 
-bool
-FTProgress::initialize(DWORD64 totalMaxValue, DWORD maxValue)
-{
-  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 (!initProgressControls(totalMaxValue, maxValue)) return false;
-
-  setProgressText();
-
-  m_bInitialized = true;
-  return true;
-}
-
 void
 FTProgress::increase(DWORD value)
 {
@@ -72,11 +57,23 @@
 }
 
 void
-FTProgress::clearSingle()
+FTProgress::clearAndInitGeneral(DWORD64 dw64MaxValue, DWORD64 dw64Position)
+{
+  if (!m_bInitialized) return;
+
+  m_pGeneralProgress->clear();
+  m_pGeneralProgress->init(dw64MaxValue, dw64Position);
+
+  setProgressText();
+}
+
+void
+FTProgress::clearAndInitSingle(DWORD dwMaxValue, DWORD dwPosition)
 {
   if (!m_bInitialized) return;
 
   m_pSingleProgress->clear();
+  m_pSingleProgress->init(dwMaxValue, dwPosition);
 
   setProgressText();
 }
@@ -130,22 +127,6 @@
   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()
 {
diff --git a/vncviewer/FTProgress.h b/vncviewer/FTProgress.h
index bcfb02c..c36c079 100644
--- a/vncviewer/FTProgress.h
+++ b/vncviewer/FTProgress.h
@@ -39,9 +39,9 @@
       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 @@
 
       bool m_bInitialized;
 
-      bool initProgressControls(DWORD64 totalMaxValue, DWORD maxValue);
-
       void setProgressText();
       bool createProgressBarObjects();
       bool destroyProgressBarObjects();
diff --git a/vncviewer/FileTransfer.cxx b/vncviewer/FileTransfer.cxx
index 57e6763..2eacee3 100644
--- a/vncviewer/FileTransfer.cxx
+++ b/vncviewer/FileTransfer.cxx
@@ -53,6 +53,8 @@
   m_pReader = new FTMsgReader(pIS);
   m_pWriter = new FTMsgWriter(pOS);
 
+  m_TransferQueue.free();
+
   m_bInitialized = true;
   return true;
 }
@@ -91,6 +93,37 @@
 }
 
 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()
 {
   FileInfo fileInfo;
diff --git a/vncviewer/FileTransfer.h b/vncviewer/FileTransfer.h
index 805c10e..71ecf0a 100644
--- a/vncviewer/FileTransfer.h
+++ b/vncviewer/FileTransfer.h
@@ -49,6 +49,12 @@
 
       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 @@
       FTMsgWriter *m_pWriter;
 
       FileInfo m_queueFileListRqst;
+
+      TransferQueue m_TransferQueue;
       
       bool procFileListDataMsg();
       bool procFileDownloadDataMsg();
diff --git a/vncviewer/vncviewer.rc b/vncviewer/vncviewer.rc
index a878beb..ff8ea04 100644
--- a/vncviewer/vncviewer.rc
+++ b/vncviewer/vncviewer.rc
@@ -33,20 +33,12 @@
 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 @@
     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