Added code for canceling file transfer.
Code improvements.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@445 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/vncviewer/FTDialog.cxx b/vncviewer/FTDialog.cxx
index d958f5b..a4fd9a6 100644
--- a/vncviewer/FTDialog.cxx
+++ b/vncviewer/FTDialog.cxx
@@ -34,7 +34,9 @@
 {
   m_pFileTransfer = pFT;
   m_hInstance = hInst;
+
   m_bDlgShown = false;
+  m_bCloseDlgAfterCancel = false;
 
   m_pLocalLV = NULL;
   m_pRemoteLV = NULL;
@@ -65,6 +67,8 @@
   if (m_hwndFTDialog != NULL) {
     ShowWindow(m_hwndFTDialog, SW_SHOW);
     m_bDlgShown = true;
+    showLocalLVItems();
+    showRemoteLVItems();
     return true;
   }
 
@@ -200,7 +204,7 @@
         }
         break;
       case IDC_FTCLOSE:
-        _this->closeFTDialog();
+        _this->onClose();
         return FALSE;
       case IDC_FTLOCALUP:
         _this->setButtonsState();
@@ -280,8 +284,7 @@
     }
     break;
     case WM_CLOSE:
-    case WM_DESTROY:
-      _this->closeFTDialog();
+      _this->onClose();
       return FALSE;
   }
 
@@ -299,6 +302,17 @@
   return FALSE;
 }
 
+void
+FTDialog::onClose()
+{
+  if (m_pFileTransfer->isTransferEnable()) {
+    m_bCloseDlgAfterCancel = true;
+    onFTCancel();
+  } else {
+    closeFTDialog();
+  }  
+}
+
 void 
 FTDialog::onLocalItemActivate(LPNMITEMACTIVATE lpnmia)
 {
@@ -409,7 +423,7 @@
   if (m_pLocalLV->getSelectedItems(&fi) > 0) {
     m_pFileTransfer->addTransferQueue(m_szLocalPath, m_szRemotePath, &fi, FT_ATTR_COPY_UPLOAD);
   }
-  refreshBtnState();
+  setButtonsState();
 }
 
 void 
@@ -419,7 +433,7 @@
   if (m_pRemoteLV->getSelectedItems(&fi) > 0) {
     m_pFileTransfer->addTransferQueue(m_szLocalPath, m_szRemotePath, &fi, FT_ATTR_COPY_DOWNLOAD);
   }
-  refreshBtnState();
+  setButtonsState();
 }
 
 void 
@@ -443,7 +457,7 @@
   if (m_pLocalLV->getSelectedItems(&fi) > 0) {
     m_pFileTransfer->addDeleteQueue(m_szLocalPath, &fi, FT_ATTR_DELETE_LOCAL);
   }
-  refreshBtnState();
+  setButtonsState();
 }
 
 void 
@@ -453,7 +467,7 @@
   if (m_pRemoteLV->getSelectedItems(&fi) > 0) {
     m_pFileTransfer->addDeleteQueue(m_szRemotePath, &fi, FT_ATTR_DELETE_REMOTE);
   }
-  refreshBtnState();
+  setButtonsState();
 }
 
 void 
@@ -474,7 +488,23 @@
     m_pCancelingDlg = NULL;
   }
 
-  MessageBox(NULL, "FTDialog::cancelTransfer()", "FTDialog::cancelTransfer()", MB_OK);
+  setButtonsState();
+
+  if ((m_bCloseDlgAfterCancel) && (bResult)) {
+    m_bCloseDlgAfterCancel = false;
+    closeFTDialog();
+  }
+
+  m_pFileTransfer->m_bCancel = bResult;
+}
+
+void 
+FTDialog::afterCancelTransfer()
+{
+  if (m_pCancelingDlg != NULL) {
+    delete m_pCancelingDlg;
+    m_pCancelingDlg = NULL;
+  }
 }
 
 void
@@ -688,6 +718,8 @@
   case false: EnableWindow(GetDlgItem(m_hwndFTDialog, IDC_FTCANCEL), FALSE); break;
   case true: EnableWindow(GetDlgItem(m_hwndFTDialog, IDC_FTCANCEL), TRUE); break;
   }
+
+  UpdateWindow(m_hwndFTDialog);
 }
 
 void