aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDennis Syrovatsky <dennis@tightvnc.com>2005-11-28 06:12:44 +0000
committerDennis Syrovatsky <dennis@tightvnc.com>2005-11-28 06:12:44 +0000
commit6806fec02fab3424845185968487a9c332cac0f3 (patch)
tree424fd77f51f6cf11ca3dc2ba28d3b46e6be0c514
parente3555590ec6595e6e3c383f02d0e6883bbde0edc (diff)
downloadtigervnc-6806fec02fab3424845185968487a9c332cac0f3.tar.gz
tigervnc-6806fec02fab3424845185968487a9c332cac0f3.zip
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
-rw-r--r--rfb/TransferQueue.cxx21
-rw-r--r--rfb/TransferQueue.h2
-rw-r--r--rfb/fttypes.h20
-rw-r--r--vncviewer/FTDialog.cxx15
-rw-r--r--vncviewer/FTDialog.h6
-rw-r--r--vncviewer/FTProgress.cxx49
-rw-r--r--vncviewer/FTProgress.h6
-rw-r--r--vncviewer/FileTransfer.cxx33
-rw-r--r--vncviewer/FileTransfer.h8
-rw-r--r--vncviewer/vncviewer.rc30
10 files changed, 124 insertions, 66 deletions
diff --git a/rfb/TransferQueue.cxx b/rfb/TransferQueue.cxx
index 820ca686..58b92734 100644
--- a/rfb/TransferQueue.cxx
+++ b/rfb/TransferQueue.cxx
@@ -242,13 +242,32 @@ 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)
{
if ((number >= m_numEntries) || (number < 0)) return false;
diff --git a/rfb/TransferQueue.h b/rfb/TransferQueue.h
index b12c0582..02a043df 100644
--- a/rfb/TransferQueue.h
+++ b/rfb/TransferQueue.h
@@ -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);
diff --git a/rfb/fttypes.h b/rfb/fttypes.h
index 229d44bd..5b08fd01 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
diff --git a/vncviewer/FTDialog.cxx b/vncviewer/FTDialog.cxx
index 72d9e28e..47e0c240 100644
--- a/vncviewer/FTDialog.cxx
+++ b/vncviewer/FTDialog.cxx
@@ -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);
+}
diff --git a/vncviewer/FTDialog.h b/vncviewer/FTDialog.h
index bfedf315..2c9ebfa1 100644
--- a/vncviewer/FTDialog.h
+++ b/vncviewer/FTDialog.h
@@ -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];
diff --git a/vncviewer/FTProgress.cxx b/vncviewer/FTProgress.cxx
index 46316f07..95b4dd4d 100644
--- a/vncviewer/FTProgress.cxx
+++ b/vncviewer/FTProgress.cxx
@@ -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()
{
diff --git a/vncviewer/FTProgress.h b/vncviewer/FTProgress.h
index bcfb02c8..c36c0791 100644
--- a/vncviewer/FTProgress.h
+++ b/vncviewer/FTProgress.h
@@ -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();
diff --git a/vncviewer/FileTransfer.cxx b/vncviewer/FileTransfer.cxx
index 57e67638..2eacee30 100644
--- a/vncviewer/FileTransfer.cxx
+++ b/vncviewer/FileTransfer.cxx
@@ -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;
}
@@ -91,6 +93,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()
{
FileInfo fileInfo;
diff --git a/vncviewer/FileTransfer.h b/vncviewer/FileTransfer.h
index 805c10ec..71ecf0af 100644
--- a/vncviewer/FileTransfer.h
+++ b/vncviewer/FileTransfer.h
@@ -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();
diff --git a/vncviewer/vncviewer.rc b/vncviewer/vncviewer.rc
index a878beb0..ff8ea04a 100644
--- a/vncviewer/vncviewer.rc
+++ b/vncviewer/vncviewer.rc
@@ -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