diff --git a/rfb/fttypes.h b/rfb/fttypes.h
index 62fd89f..229d44b 100644
--- a/rfb/fttypes.h
+++ b/rfb/fttypes.h
@@ -34,6 +34,13 @@
 #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;
diff --git a/vncviewer/FTDialog.cxx b/vncviewer/FTDialog.cxx
index b37554f..67d2f64 100644
--- a/vncviewer/FTDialog.cxx
+++ b/vncviewer/FTDialog.cxx
@@ -111,6 +111,7 @@
   setIcon(IDC_FTREMOTERELOAD, IDI_FTRELOAD);
 
   showLocalLVItems();
+  showRemoteLVItems();
 
   return true;
 }
@@ -255,9 +256,20 @@
   }
 }
 
+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 
@@ -273,6 +285,12 @@
 {
 }
 
+void 
+FTDialog::reqFolderUnavailable()
+{
+  strcpy(m_szRemotePathTmp, m_szRemotePath);
+}
+
 int
 FTDialog::makeOneUpFolder(char *pPath)
 {
diff --git a/vncviewer/FTDialog.h b/vncviewer/FTDialog.h
index 81c3ba7..7c577ed 100644
--- a/vncviewer/FTDialog.h
+++ b/vncviewer/FTDialog.h
@@ -49,8 +49,8 @@
       
       static BOOL CALLBACK FTDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
       
-      void showLocalLVItems();
       void addRemoteLVItems(FileInfo *pFI);
+      void reqFolderUnavailable();
       
     private:
       FileTransfer *m_pFileTransfer;
@@ -60,6 +60,9 @@
       HWND m_hwndRemotePath;
       HINSTANCE m_hInstance;
       
+      void showLocalLVItems();
+      void showRemoteLVItems();
+
       void onLocalItemActivate(LPNMITEMACTIVATE lpnmia);
       void onRemoteItemActivate(LPNMITEMACTIVATE lpnmia);
 
diff --git a/vncviewer/FileTransfer.cxx b/vncviewer/FileTransfer.cxx
index 44cfb13..2cc84ef 100644
--- a/vncviewer/FileTransfer.cxx
+++ b/vncviewer/FileTransfer.cxx
@@ -93,6 +93,41 @@
 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;
 }
 
@@ -125,3 +160,48 @@
 {
   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
diff --git a/vncviewer/FileTransfer.h b/vncviewer/FileTransfer.h
index 7df0c18..6bf36c9 100644
--- a/vncviewer/FileTransfer.h
+++ b/vncviewer/FileTransfer.h
@@ -27,6 +27,8 @@
 #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>
@@ -45,6 +47,8 @@
       bool processFTMsg(int type);
       bool show();
 
+      void requestFileList(char *pPath, int dest, bool bDirOnly);
+
     private:
       bool m_bFTDlgShown;
       bool m_bInitialized;
@@ -53,14 +57,23 @@
 
       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);
+      
     };
   }
 }
