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/rfb/TransferQueue.cxx b/rfb/TransferQueue.cxx
index 820ca68..58b9273 100644
--- a/rfb/TransferQueue.cxx
+++ b/rfb/TransferQueue.cxx
@@ -242,13 +242,32 @@
 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)
 {
   if ((number >= m_numEntries) || (number < 0)) return false;
diff --git a/rfb/TransferQueue.h b/rfb/TransferQueue.h
index b12c058..02a043d 100644
--- a/rfb/TransferQueue.h
+++ b/rfb/TransferQueue.h
@@ -64,6 +64,8 @@
     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);
     
diff --git a/rfb/fttypes.h b/rfb/fttypes.h
index 229d44b..5b08fd0 100644
--- a/rfb/fttypes.h
+++ b/rfb/fttypes.h
@@ -30,9 +30,23 @@
 #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