Added code for local and remote renaming files and folders.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@449 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/vncviewer/FTDialog.cxx b/vncviewer/FTDialog.cxx
index 64c8f3a..a02ae75 100644
--- a/vncviewer/FTDialog.cxx
+++ b/vncviewer/FTDialog.cxx
@@ -43,6 +43,7 @@
m_pProgress = NULL;
m_pCancelingDlg = NULL;
m_pCreateFolderDlg = NULL;
+ m_pRenameDlg = NULL;
m_hwndFTDialog = NULL;
m_hwndLocalPath = NULL;
@@ -170,6 +171,21 @@
m_pProgress = NULL;
}
+ if(m_pCancelingDlg != NULL) {
+ delete m_pCancelingDlg;
+ m_pCancelingDlg = NULL;
+ }
+
+ if (m_pCreateFolderDlg != NULL) {
+ delete m_pCreateFolderDlg;
+ m_pCreateFolderDlg = NULL;
+ }
+
+ if(m_pRenameDlg != NULL) {
+ delete m_pRenameDlg;
+ m_pRenameDlg = NULL;
+ }
+
if (DestroyWindow(m_hwndFTDialog)) m_hwndFTDialog = NULL;
}
@@ -442,15 +458,53 @@
void
FTDialog::onLocalRename()
{
- MessageBox(NULL, "onLocalRename", "FTDialog", MB_OK);
+ if (m_pRenameDlg != NULL) return;
+ FileInfo fi;
+ if (m_pLocalLV->getSelectedItems(&fi) == 1) {
+ unsigned int flags = fi.getFlagsAt(0);
+ m_pRenameDlg = new FTDialog::RenameDlg(this);
+ if (m_pRenameDlg != NULL) {
+ if (flags & FT_ATTR_DIR) {
+ m_pRenameDlg->create(fi.getNameAt(0), true);
+ } else {
+ m_pRenameDlg->create(fi.getNameAt(0), false);
+ }
+ if (strlen(m_pRenameDlg->getFolderName()) > 0) {
+ FolderManager fm;
+ fm.renameIt(m_szLocalPath, fi.getNameAt(0), m_pRenameDlg->getFolderName());
+ showLocalLVItems();
+ }
+ delete m_pRenameDlg;
+ m_pRenameDlg = NULL;
+ }
+ }
+ setButtonsState();
}
void
FTDialog::onRemoteRename()
{
- MessageBox(NULL, "onRemoteRename", "FTDialog", MB_OK);
+ if (m_pRenameDlg != NULL) return;
+ FileInfo fi;
+ if (m_pRemoteLV->getSelectedItems(&fi) == 1) {
+ unsigned int flags = fi.getFlagsAt(0);
+ m_pRenameDlg = new FTDialog::RenameDlg(this);
+ if (m_pRenameDlg != NULL) {
+ if (flags & FT_ATTR_DIR) {
+ m_pRenameDlg->create(fi.getNameAt(0), true);
+ } else {
+ m_pRenameDlg->create(fi.getNameAt(0), false);
+ }
+ if (strlen(m_pRenameDlg->getFolderName()) > 0) {
+ m_pFileTransfer->renameRemote(m_szRemotePath, fi.getNameAt(0), m_pRenameDlg->getFolderName());
+ }
+ delete m_pRenameDlg;
+ m_pRenameDlg = NULL;
+ }
+ }
+ setButtonsState();
}
void
@@ -938,3 +992,37 @@
strcpy(m_szFolderName, getItemString(IDC_FTFOLDERNAME));
return true;
}
+
+FTDialog::RenameDlg::RenameDlg(FTDialog *pFTDlg) : CreateFolderDlg(pFTDlg)
+{
+ m_bFolder = false;
+}
+
+FTDialog::RenameDlg::~RenameDlg()
+{
+}
+
+bool
+FTDialog::RenameDlg::create(char *pFilename, bool bFolder)
+{
+ m_bFolder = bFolder;
+ strcpy(m_szFilename, pFilename);
+ return showDialog(MAKEINTRESOURCE(IDD_FTCREATEFOLDER), m_pFTDlg->getWndHandle());
+}
+
+void
+FTDialog::RenameDlg::initDialog()
+{
+ char buf[2*FT_FILENAME_SIZE];
+ if (m_bFolder) {
+ SetWindowText(handle, "Rename Folder");
+ sprintf(buf, "Rename Folder '%s'", m_szFilename);
+ } else {
+ SetWindowText(handle, "Rename File");
+ sprintf(buf, "Rename File '%s'", m_szFilename);
+ }
+
+ setItemString(IDC_FTTEXT, buf);
+ setItemString(IDC_FTFOLDERNAME, m_szFilename);
+ SendDlgItemMessage(handle, IDC_FTFOLDERNAME, EM_SETSEL, (WPARAM) 0, (LPARAM) -1);
+}
\ No newline at end of file