summaryrefslogtreecommitdiffstats
path: root/vncviewer
diff options
context:
space:
mode:
authorDennis Syrovatsky <dennis@tightvnc.com>2005-11-23 09:15:12 +0000
committerDennis Syrovatsky <dennis@tightvnc.com>2005-11-23 09:15:12 +0000
commitbe4956b7f5ae5dabc3dc85b8ce36e61fd020748d (patch)
tree4842467d9a13c4030b641b9d22b229c8838faabe /vncviewer
parent3f079e7eff79181a17ace419ebd405a76b3f005c (diff)
downloadtigervnc-be4956b7f5ae5dabc3dc85b8ce36e61fd020748d.tar.gz
tigervnc-be4956b7f5ae5dabc3dc85b8ce36e61fd020748d.zip
Major changes in the FTDialog class.
Added routine for "file transfer" menu and for control of the buttons state on the file transfer dialog. git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@415 3789f03b-4d11-0410-bbf8-ca57d06f2519
Diffstat (limited to 'vncviewer')
-rw-r--r--vncviewer/FTDialog.cxx235
-rw-r--r--vncviewer/FTDialog.h35
-rw-r--r--vncviewer/resource.h3
-rw-r--r--vncviewer/vncviewer.rc1
4 files changed, 226 insertions, 48 deletions
diff --git a/vncviewer/FTDialog.cxx b/vncviewer/FTDialog.cxx
index b27270da..72d9e28e 100644
--- a/vncviewer/FTDialog.cxx
+++ b/vncviewer/FTDialog.cxx
@@ -40,6 +40,8 @@ FTDialog::FTDialog(HINSTANCE hInst, FileTransfer *pFT)
m_hwndLocalPath = NULL;
m_hwndRemotePath = NULL;
+ m_FTMenuSource = 0;
+
m_szLocalPath[0] = '\0';
m_szRemotePath[0] = '\0';
m_szLocalPathTmp[0] = '\0';
@@ -163,35 +165,35 @@ FTDialog::FTDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
switch (HIWORD (wParam))
{
case CBN_SETFOCUS:
- _this->refreshState();
+ _this->setButtonsState();
+ return FALSE;
+ }
+ break;
+ case IDC_FTREMOTEPATH:
+ switch (HIWORD (wParam))
+ {
+ case CBN_SETFOCUS:
+ _this->setButtonsState();
return FALSE;
}
break;
- case IDC_FTREMOTEPATH:
- switch (HIWORD (wParam))
- {
- case CBN_SETFOCUS:
- _this->refreshState();
- return FALSE;
- }
- break;
case IDC_FTCLOSE:
_this->closeFTDialog();
return FALSE;
case IDC_FTLOCALUP:
- _this->refreshState();
+ _this->setButtonsState();
_this->onLocalOneUpFolder();
return FALSE;
case IDC_FTREMOTEUP:
- _this->refreshState();
+ _this->setButtonsState();
_this->onRemoteOneUpFolder();
return FALSE;
case IDC_FTLOCALRELOAD:
- _this->refreshState();
+ _this->setButtonsState();
_this->onLocalReload();
return FALSE;
case IDC_FTREMOTERELOAD:
- _this->refreshState();
+ _this->setButtonsState();
_this->onRemoteReload();
return FALSE;
case IDC_FTUPLOAD:
@@ -200,6 +202,12 @@ FTDialog::FTDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
case IDC_FTDOWNLOAD:
_this->onDownload();
return FALSE;
+ case IDM_FTCOPY:
+ case IDM_FTRENAME:
+ case IDM_FTDELETE:
+ case IDM_FTCANCEL:
+ _this->onFTMenuCommand(LOWORD(wParam));
+ return FALSE;
}
}
break;
@@ -213,7 +221,7 @@ FTDialog::FTDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
case NM_CLICK:
case NM_SETFOCUS:
case LVN_ITEMCHANGED:
- _this->refreshState();
+ _this->setButtonsState();
return FALSE;
case LVN_GETDISPINFO:
_this->m_pLocalLV->onGetDispInfo((NMLVDISPINFO *) lParam);
@@ -232,7 +240,7 @@ FTDialog::FTDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
case NM_CLICK:
case NM_SETFOCUS:
case LVN_ITEMCHANGED:
- _this->refreshState();
+ _this->setButtonsState();
case LVN_GETDISPINFO:
_this->m_pRemoteLV->onGetDispInfo((NMLVDISPINFO *) lParam);
return FALSE;
@@ -360,29 +368,115 @@ FTDialog::makeOneUpFolder(char *pPath)
void
FTDialog::onUpload()
{
-
+ MessageBox(NULL, "onUpload", "FTDialog", MB_OK);
}
void
FTDialog::onDownload()
{
+ MessageBox(NULL, "onDownload", "FTDialog", MB_OK);
+
+}
+
+void
+FTDialog::onLocalRename()
+{
+ MessageBox(NULL, "onLocalRename", "FTDialog", MB_OK);
+
+}
+
+void
+FTDialog::onRemoteRename()
+{
+ MessageBox(NULL, "onRemoteRename", "FTDialog", MB_OK);
+
+}
+
+void
+FTDialog::onLocalDelete()
+{
+ MessageBox(NULL, "onLocalDelete", "FTDialog", MB_OK);
+
+}
+
+void
+FTDialog::onRemoteDelete()
+{
+ MessageBox(NULL, "onRemoteDelete", "FTDialog", MB_OK);
+
+}
+
+void
+FTDialog::onFTCancel()
+{
+ MessageBox(NULL, "onFTCancel", "FTDialog", MB_OK);
+
+}
+void
+FTDialog::onFTMenuCommand(int command)
+{
+ switch (command)
+ {
+ case IDM_FTCOPY:
+ {
+ switch (m_FTMenuSource)
+ {
+ case IDC_FTLOCALLIST: onUpload(); break;
+ case IDC_FTREMOTELIST: onDownload(); break;
+ default: break;
+ }
+ }
+ break;
+ case IDM_FTRENAME:
+ {
+ switch (m_FTMenuSource)
+ {
+ case IDC_FTLOCALLIST: onLocalRename(); break;
+ case IDC_FTREMOTELIST: onRemoteRename(); break;
+ default: break;
+ }
+ }
+ break;
+ case IDM_FTDELETE:
+ {
+ switch (m_FTMenuSource)
+ {
+ case IDC_FTLOCALLIST: onLocalDelete(); break;
+ case IDC_FTREMOTELIST: onRemoteDelete(); break;
+ default: break;
+ }
+ }
+ break;
+ case IDM_FTCANCEL: onFTCancel(); break;
+ default:
+ break;
+ }
}
void
FTDialog::onLocalRButton()
{
- showFTMenu(1, 1, 1, 1);
+ refreshBtnState();
+ m_FTMenuSource = IDC_FTLOCALLIST;
+ showFTMenu(m_BtnState.uploadBtn, m_BtnState.createLocalFldBtn,
+ m_BtnState.renameLocalBtn, m_BtnState.deleteLocalBtn,
+ m_BtnState.cancelBtn);
}
void
FTDialog::onRemoteRButton()
{
- showFTMenu(1, 1, 1, 1);
+ refreshBtnState();
+ m_FTMenuSource = IDC_FTREMOTELIST;
+ showFTMenu(m_BtnState.downloadBtn, m_BtnState.createRemoteFldBtn,
+ m_BtnState.renameRemoteBtn, m_BtnState.deleteRemoteBtn,
+ m_BtnState.cancelBtn);
}
void
-FTDialog::showFTMenu(int copyBtnState, int renameBtnState, int deleteBtnState, int cancelBtnState)
+FTDialog::showFTMenu(bool copyBtnState, bool createFldBtnState, bool renameBtnState,
+ bool deleteBtnState, bool cancelBtnState)
{
HMENU hMenu = LoadMenu(m_hInstance, MAKEINTRESOURCE(IDR_FTMENU));
HMENU hFTMenu = GetSubMenu(hMenu, 0);
@@ -391,9 +485,37 @@ FTDialog::showFTMenu(int copyBtnState, int renameBtnState, int deleteBtnState, i
SetForegroundWindow(m_hwndFTDialog);
+ if (copyBtnState) {
+ EnableMenuItem(hMenu, IDM_FTCOPY, MF_ENABLED);
+ } else {
+ EnableMenuItem(hMenu, IDM_FTCOPY, MF_DISABLED | MF_GRAYED);
+ }
+ if (createFldBtnState) {
+ EnableMenuItem(hMenu, IDM_FTCREATEFOLDER, MF_ENABLED);
+ } else {
+ EnableMenuItem(hMenu, IDM_FTCREATEFOLDER, MF_DISABLED | MF_GRAYED);
+ }
+ if (renameBtnState) {
+ EnableMenuItem(hMenu, IDM_FTRENAME, MF_ENABLED);
+ } else {
+ EnableMenuItem(hMenu, IDM_FTRENAME, MF_DISABLED | MF_GRAYED);
+ }
+ if (deleteBtnState) {
+ EnableMenuItem(hMenu, IDM_FTDELETE, MF_ENABLED);
+ } else {
+ EnableMenuItem(hMenu, IDM_FTDELETE, MF_DISABLED | MF_GRAYED);
+ }
+ if (cancelBtnState) {
+ EnableMenuItem(hMenu, IDM_FTCANCEL, MF_ENABLED);
+ } else {
+ EnableMenuItem(hMenu, IDM_FTCANCEL, MF_DISABLED | MF_GRAYED);
+ }
+ DrawMenuBar(m_hwndFTDialog);
+
POINT cursorPosition;
GetCursorPos(&cursorPosition);
TrackPopupMenu(hFTMenu, 0, cursorPosition.x, cursorPosition.y, 0, m_hwndFTDialog, 0);
+ DestroyMenu(hFTMenu);
}
void
@@ -405,7 +527,7 @@ FTDialog::setIcon(int dest, int idIcon)
}
void
-FTDialog::refreshState()
+FTDialog::refreshBtnState()
{
if (!m_bDlgShown) return;
@@ -413,40 +535,68 @@ FTDialog::refreshState()
int remPathLen = strlen(m_szRemotePath);
if (GetFocus() == m_pLocalLV->getWndHandle()) {
+ m_BtnState.downloadBtn = false;
if (strlen(m_szLocalPath) != 0) {
+ m_BtnState.createLocalFldBtn = true;
int nCount = ListView_GetSelectedCount(m_pLocalLV->getWndHandle());
if (nCount <= 0) {
- setButtonsState(0, 0, -1);
+ m_BtnState.uploadBtn = false;
+ m_BtnState.deleteLocalBtn = false;
+ m_BtnState.renameLocalBtn = false;
} else {
+ m_BtnState.deleteLocalBtn = true;
if (remPathLen == 0) {
- setButtonsState(0, 0, -1);
+ m_BtnState.uploadBtn = false;
+ } else {
+ m_BtnState.uploadBtn = true;
+ }
+ if (nCount == 1) {
+ m_BtnState.renameLocalBtn = true;
} else {
- setButtonsState(1, 0, -1);
+ m_BtnState.renameLocalBtn = false;
}
}
} else {
- setButtonsState(0, 0, -1);
+ m_BtnState.uploadBtn = false;
+ m_BtnState.createLocalFldBtn = false;
+ m_BtnState.deleteLocalBtn = false;
+ m_BtnState.renameLocalBtn = false;
+ m_BtnState.downloadBtn = false;
}
} else {
if (GetFocus() == m_pRemoteLV->getWndHandle()) {
+ m_BtnState.uploadBtn = false;
if (strlen(m_szRemotePath) != 0) {
+ m_BtnState.createRemoteFldBtn = true;
int nCount = ListView_GetSelectedCount(m_pRemoteLV->getWndHandle());
if (nCount <= 0) {
- setButtonsState(0, 0, -1);
+ m_BtnState.downloadBtn = false;
+ m_BtnState.deleteRemoteBtn = false;
+ m_BtnState.renameRemoteBtn = false;
} else {
+ m_BtnState.deleteRemoteBtn = true;
if (locPathLen == 0) {
- setButtonsState(0, 0, -1);
+ m_BtnState.downloadBtn = false;
} else {
- setButtonsState(0, 1, -1);
+ m_BtnState.downloadBtn = true;
+ }
+ if (nCount == 1) {
+ m_BtnState.renameRemoteBtn = true;
+ } else {
+ m_BtnState.renameRemoteBtn = false;
}
}
} else {
- setButtonsState(0, 0, -1);
+ m_BtnState.downloadBtn = false;
+ m_BtnState.createRemoteFldBtn = false;
+ m_BtnState.deleteRemoteBtn = false;
+ m_BtnState.renameRemoteBtn = false;
+ m_BtnState.uploadBtn = false;
}
} else {
- setButtonsState(0, 0, -1);
}
}
+ m_BtnState.cancelBtn = false;
/*
if (m_pFileTransfer->isTransferEnable()) {
setAllButtonsState(-1, -1, -1, -1, 1);
@@ -457,26 +607,25 @@ FTDialog::refreshState()
}
void
-FTDialog::setButtonsState(int uploadBtnState, int downloadBtnState, int cancelBtnState)
+FTDialog::setButtonsState()
{
- switch (uploadBtnState)
+ refreshBtnState();
+
+ switch (m_BtnState.uploadBtn)
{
- case 0: EnableWindow(GetDlgItem(m_hwndFTDialog, IDC_FTUPLOAD), FALSE); break;
- case 1: EnableWindow(GetDlgItem(m_hwndFTDialog, IDC_FTUPLOAD), TRUE); break;
- default: break;
+ case false: EnableWindow(GetDlgItem(m_hwndFTDialog, IDC_FTUPLOAD), FALSE); break;
+ case true: EnableWindow(GetDlgItem(m_hwndFTDialog, IDC_FTUPLOAD), TRUE); break;
}
- switch (downloadBtnState)
+ switch (m_BtnState.downloadBtn)
{
- case 0: EnableWindow(GetDlgItem(m_hwndFTDialog, IDC_FTDOWNLOAD), FALSE); break;
- case 1: EnableWindow(GetDlgItem(m_hwndFTDialog, IDC_FTDOWNLOAD), TRUE); break;
- default: break;
+ case false: EnableWindow(GetDlgItem(m_hwndFTDialog, IDC_FTDOWNLOAD), FALSE); break;
+ case true: EnableWindow(GetDlgItem(m_hwndFTDialog, IDC_FTDOWNLOAD), TRUE); break;
}
- switch (cancelBtnState)
+ switch (m_BtnState.cancelBtn)
{
- case 0: EnableWindow(GetDlgItem(m_hwndFTDialog, IDC_FTCANCEL), FALSE); break;
- case 1: EnableWindow(GetDlgItem(m_hwndFTDialog, IDC_FTCANCEL), TRUE); break;
- default: break;
+ case false: EnableWindow(GetDlgItem(m_hwndFTDialog, IDC_FTCANCEL), FALSE); break;
+ case true: EnableWindow(GetDlgItem(m_hwndFTDialog, IDC_FTCANCEL), TRUE); break;
}
-} \ No newline at end of file
+}
diff --git a/vncviewer/FTDialog.h b/vncviewer/FTDialog.h
index f9e5ba38..bfedf315 100644
--- a/vncviewer/FTDialog.h
+++ b/vncviewer/FTDialog.h
@@ -71,12 +71,22 @@ namespace rfb {
void onLocalRButton();
void onRemoteRButton();
- void showFTMenu(int copyBtnState, int renameBtnState,
- int deleteBtnState, int cancelBtnState);
+ void showFTMenu(bool copyBtnState, bool createFldBtnState,
+ bool renameBtnState, bool deleteBtnState,
+ bool cancelBtnState);
+ void onFTMenuCommand(int command);
void onUpload();
void onDownload();
+ void onLocalRename();
+ void onRemoteRename();
+
+ void onLocalDelete();
+ void onRemoteDelete();
+
+ void onFTCancel();
+
void setIcon(int dest, int idIcon);
bool initFTDialog();
@@ -84,8 +94,8 @@ namespace rfb {
void onRemoteOneUpFolder();
int makeOneUpFolder(char *pPath);
- void refreshState();
- void setButtonsState(int uploadBtnState, int downloadBtnState, int cancelBtnState);
+ void refreshBtnState();
+ void setButtonsState();
bool m_bDlgShown;
@@ -94,10 +104,27 @@ namespace rfb {
FTProgress *m_pProgress;
+ int m_FTMenuSource;
+
char m_szLocalPath[FT_FILENAME_SIZE];
char m_szRemotePath[FT_FILENAME_SIZE];
char m_szLocalPathTmp[FT_FILENAME_SIZE];
char m_szRemotePathTmp[FT_FILENAME_SIZE];
+
+ typedef struct tagFTBUTTONSSTATE
+ {
+ bool uploadBtn;
+ bool downloadBtn;
+ bool createLocalFldBtn;
+ bool createRemoteFldBtn;
+ bool renameLocalBtn;
+ bool renameRemoteBtn;
+ bool deleteLocalBtn;
+ bool deleteRemoteBtn;
+ bool cancelBtn;
+ } FTBUTTONSSTATE;
+
+ FTBUTTONSSTATE m_BtnState;
};
}
}
diff --git a/vncviewer/resource.h b/vncviewer/resource.h
index 3f3f3653..66a4a755 100644
--- a/vncviewer/resource.h
+++ b/vncviewer/resource.h
@@ -126,13 +126,14 @@
#define IDM_FTRENAME 40023
#define IDM_FTDELETE 40024
#define IDM_FTCANCEL 40025
+#define IDM_FTCREATEFOLDER 40026
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 131
-#define _APS_NEXT_COMMAND_VALUE 40026
+#define _APS_NEXT_COMMAND_VALUE 40027
#define _APS_NEXT_CONTROL_VALUE 1083
#define _APS_NEXT_SYMED_VALUE 101
#endif
diff --git a/vncviewer/vncviewer.rc b/vncviewer/vncviewer.rc
index 9836c3e2..a878beb0 100644
--- a/vncviewer/vncviewer.rc
+++ b/vncviewer/vncviewer.rc
@@ -633,6 +633,7 @@ BEGIN
BEGIN
MENUITEM "Copy Files and Folders", IDM_FTCOPY
MENUITEM SEPARATOR
+ MENUITEM "Create a Folder", IDM_FTCREATEFOLDER
MENUITEM "Rename File or Folder", IDM_FTRENAME
MENUITEM "Delete Files and Folders", IDM_FTDELETE
MENUITEM SEPARATOR