#define FT_ATTR_FILE 0x00000001
#define FT_ATTR_DIR 0x00000002
+#define FT_FLR_DEST_MAIN 101
+#define FT_FLR_DEST_BROWSE 102
+#define FT_FLR_DEST_DOWNLOAD 103
+#define FT_FLR_DEST_UPLOAD 104
+#define FT_FLR_DEST_DELETE 105
+#define FT_FLR_DEST_RENAME 106
+
typedef struct tagSIZEDATAINFO
{
unsigned int size;
setIcon(IDC_FTREMOTERELOAD, IDI_FTRELOAD);
showLocalLVItems();
+ showRemoteLVItems();
return true;
}
}
}
+void
+FTDialog::showRemoteLVItems()
+{
+ m_pFileTransfer->requestFileList(m_szRemotePathTmp, FT_FLR_DEST_MAIN, 0);
+}
+
void
FTDialog::addRemoteLVItems(FileInfo *pFI)
{
+ pFI->sort();
+ m_pRemoteLV->deleteAllItems();
+ m_pRemoteLV->addItems(pFI);
+ strcpy(m_szRemotePath, m_szRemotePathTmp);
+ SetWindowText(m_hwndRemotePath, m_szRemotePath);
}
void
{
}
+void
+FTDialog::reqFolderUnavailable()
+{
+ strcpy(m_szRemotePathTmp, m_szRemotePath);
+}
+
int
FTDialog::makeOneUpFolder(char *pPath)
{
static BOOL CALLBACK FTDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
- void showLocalLVItems();
void addRemoteLVItems(FileInfo *pFI);
+ void reqFolderUnavailable();
private:
FileTransfer *m_pFileTransfer;
HWND m_hwndRemotePath;
HINSTANCE m_hInstance;
+ void showLocalLVItems();
+ void showRemoteLVItems();
+
void onLocalItemActivate(LPNMITEMACTIVATE lpnmia);
void onRemoteItemActivate(LPNMITEMACTIVATE lpnmia);
bool
FileTransfer::procFileListDataMsg()
{
+ FileInfo fileInfo;
+ int res = m_pReader->readFileListData(&fileInfo);
+
+ bool bResult;
+ switch (m_queueFileListRqst.getFlagsAt(0))
+ {
+ case FT_FLR_DEST_MAIN:
+ if (!m_bFTDlgShown) break;
+
+ if (res < 0) {
+ m_pFTDialog->reqFolderUnavailable();
+ bResult = true;
+ } else {
+ bResult = procFLRMain(&fileInfo);
+ }
+ break;
+ case FT_FLR_DEST_BROWSE:
+ bResult = procFLRBrowse(&fileInfo);
+ break;
+ case FT_FLR_DEST_UPLOAD:
+ bResult = procFLRUpload(&fileInfo);
+ break;
+ case FT_FLR_DEST_DOWNLOAD:
+ bResult = procFLRDownload(&fileInfo);
+ break;
+ case FT_FLR_DEST_DELETE:
+ bResult = procFLRDelete(&fileInfo);
+ break;
+ case FT_FLR_DEST_RENAME:
+ bResult = procFLRRename(&fileInfo);
+ break;
+ }
+ m_queueFileListRqst.deleteAt(0);
+ return bResult;
+
return false;
}
{
return false;
}
+
+bool
+FileTransfer::procFLRMain(FileInfo *pFI)
+{
+ if (m_bFTDlgShown) m_pFTDialog->addRemoteLVItems(pFI);
+ return true;
+}
+
+bool
+FileTransfer::procFLRBrowse(FileInfo *pFI)
+{
+ return false;
+}
+
+bool
+FileTransfer::procFLRUpload(FileInfo *pFI)
+{
+ return false;
+}
+
+bool
+FileTransfer::procFLRDownload(FileInfo *pFI)
+{
+ return false;
+}
+
+bool
+FileTransfer::procFLRDelete(FileInfo *pFI)
+{
+ return false;
+}
+
+bool
+FileTransfer::procFLRRename(FileInfo *pFI)
+{
+ return false;
+}
+
+void
+FileTransfer::requestFileList(char *pPath, int dest, bool bDirOnly)
+{
+ m_queueFileListRqst.add(pPath, 0, 0, dest);
+
+ m_pWriter->writeFileListRqst(pPath, bDirOnly);
+}
\ No newline at end of file
#include <rdr/InStream.h>
#include <rdr/OutStream.h>
#include <rfb/msgTypes.h>
+#include <rfb/FileInfo.h>
+#include <rfb/TransferQueue.h>
#include <vncviewer/FTDialog.h>
#include <vncviewer/FTMsgReader.h>
#include <vncviewer/FTMsgWriter.h>
bool processFTMsg(int type);
bool show();
+ void requestFileList(char *pPath, int dest, bool bDirOnly);
+
private:
bool m_bFTDlgShown;
bool m_bInitialized;
FTMsgReader *m_pReader;
FTMsgWriter *m_pWriter;
+
+ FileInfo m_queueFileListRqst;
bool procFileListDataMsg();
- bool procFileSpecDirDataMsg();
bool procFileDownloadDataMsg();
bool procFileUploadCancelMsg();
bool procFileDownloadFailedMsg();
bool procFileDirSizeDataMsg();
bool procFileLastRqstFailedMsg();
+
+ bool procFLRMain(FileInfo *pFI);
+ bool procFLRBrowse(FileInfo *pFI);
+ bool procFLRUpload(FileInfo *pFI);
+ bool procFLRDownload(FileInfo *pFI);
+ bool procFLRDelete(FileInfo *pFI);
+ bool procFLRRename(FileInfo *pFI);
+
};
}
}