Added confirmation dialog for file transfer operation.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@458 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/vncviewer/FileTransfer.cxx b/vncviewer/FileTransfer.cxx
index bf7454e..32279d0 100644
--- a/vncviewer/FileTransfer.cxx
+++ b/vncviewer/FileTransfer.cxx
@@ -165,7 +165,10 @@
FileTransfer::addTransferQueue(char *pLocalPath, char *pRemotePath,
FileInfo *pFI, unsigned int flags)
{
- if ((m_bFTDlgShown) && (!isTransferEnable())) m_pFTDialog->setStatusText("Starting Copy Operation");
+ if (!isTransferEnable()) {
+ if (m_bFTDlgShown) m_pFTDialog->setStatusText("Starting Copy Operation");
+ m_bTransferSuccess = true;
+ }
m_TransferQueue.add(pLocalPath, pRemotePath, pFI, (flags | FT_ATTR_RESIZE_NEEDED));
@@ -221,7 +224,12 @@
m_pFTDialog->m_pProgress->clearAll();
m_dw64SizeSending = 0;
m_bResized = false;
- m_pFTDialog->setStatusText("File Transfer Operation Completed Successfully");
+
+ if (m_bTransferSuccess)
+ m_pFTDialog->setStatusText("File Transfer Operation Completed Successfully");
+ else
+ m_pFTDialog->setStatusText("File Transfer Operation Completed");
+
m_pFTDialog->afterCancelTransfer();
PostMessage(m_pFTDialog->getWndHandle(), WM_COMMAND, MAKEWPARAM(IDC_FTLOCALRELOAD, 0), 0);
PostMessage(m_pFTDialog->getWndHandle(), WM_COMMAND, MAKEWPARAM(IDC_FTREMOTERELOAD, 0), 0);
@@ -261,6 +269,7 @@
if (!fm.createDir(pLocPath)) {
if (m_bFTDlgShown) m_pFTDialog->setStatusText("Creating Local Folder Failed.");
+ m_bTransferSuccess = false;
m_TransferQueue.deleteAt(0);
m_pFTDialog->postCheckTransferQueueMsg();
return;
@@ -277,6 +286,7 @@
}
}
}
+ m_bTransferSuccess = false;
if (m_bFTDlgShown) m_pFTDialog->setStatusText("File Transfer Operation Failed. Unknown data in the transfer queue");
} // if (!isTransferEnable())
}
@@ -349,6 +359,7 @@
}
} else {
m_fileReader.close();
+ m_bTransferSuccess = false;
char reason[] = "Error While Reading File";
m_pWriter->writeFileUploadFailed(strlen(reason), reason);
if (m_bFTDlgShown) {
@@ -440,6 +451,7 @@
}
if ((!m_fileWriter.isCreated()) || (!isTransferEnable())) {
+ m_bTransferSuccess = false;
if (pFile != NULL) delete pFile;
return false;
}
@@ -449,6 +461,7 @@
m_fileWriter.write(pFile, bufSize, &bytesWritten);
delete pFile;
if (bytesWritten != bufSize) {
+ m_bTransferSuccess = false;
char reason[] = "Error File Writting to File";
m_pWriter->writeFileDownloadCancel(strlen(reason), reason);
if (m_bFTDlgShown) {
@@ -477,6 +490,7 @@
return true;
} else {
m_fileWriter.close();
+ m_bTransferSuccess = false;
char reason[] = "Error File Writting";
if (m_bFTDlgShown) {
m_pFTDialog->setStatusText("Download Failed");
@@ -546,6 +560,7 @@
} else {
if (flags & FT_ATTR_DIR) {
m_TransferQueue.deleteAt(0);
+ m_bTransferSuccess = false;
if (m_bFTDlgShown) m_pFTDialog->setStatusText("Create Remote Folder Failed.");
}
}
@@ -581,6 +596,7 @@
m_pFTDialog->postCheckTransferQueueMsg();
return true;
} else {
+ m_bTransferSuccess = false;
if (m_bFTDlgShown) m_pFTDialog->setStatusText("File Transfer Operation Failed: Unknown data from server.");
}
return false;
@@ -630,6 +646,7 @@
if (m_bFTDlgShown) m_pFTDialog->processDlgMsgs();
if (m_bCancel) {
endUndoneOperation();
+ m_bTransferSuccess = false;
if (m_bFTDlgShown) {
m_pFTDialog->setStatusText("All Operations Canceled");
}