//Just UI stuff public void LoadDirectory(FTPdirectory dir) { currentDirectoryTextbox.Text = currentDir; currentDirectory = dir; //Show the end of the text (the deepest dir) currentDirectoryTextbox.SelectionStart = currentDirectoryTextbox.Text.Length; currentDirectoryTextbox.SelectionLength = 0; DirectoryList.Controls.Clear(); var parentDirItem = new DirectoryItem(); parentDirItem.Click = async(sender, args) => { await ParentDirectoryClick(sender, args); };; DirectoryList.Controls.Add(parentDirItem); foreach (var file in dir) { var fileItem = new DirectoryItem(file); if (file.FileType == FTPfileInfo.DirectoryEntryTypes.Directory) { fileItem.Click = async(sender, args) => { await DirectoryClick(sender, args); };; } else { fileItem.Click = async(sender, args) => { await FileClick(sender, args, file); }; } DirectoryList.Controls.Add(fileItem); } }
public async Task ParentDirectoryClick(object sender, EventArgs e) { try { string newDirPath = FTPdirectory.GetParentDirectory(currentDir); var newDir = await _client.ListDirectoryDetail(newDirPath); currentDir = newDirPath; LoadDirectory(newDir); } catch { } }
public async Task FileClick(object sender, EventArgs e, FTPfileInfo file) { loadingSpinner.Visible = true; currentDirectoryForNav = currentDirectory; string ext = file.Extension.ToLower(); currentFile = file; if (ext == "jpg" || ext == "png" || ext == "jpeg" || ext == "bmp") { videoPreviewPlayer.Visible = false; textPreviewBox.Visible = false; previewPictureBox.Visible = true; using (var ftpResponse = await _client.GetRawResponseStream(file)) { using (var fileContentStream = ftpResponse.GetResponseStream()) { previewPictureBox.Visible = true; previewPictureBox.Image = Image.FromStream(fileContentStream); } } } else if (ext == "avi" || ext == "mp4" || ext == "wma" || ext == "mp3") { await _client.Download(file, Directory.GetCurrentDirectory() + "\\" + "temp." + ext, true); videoPreviewPlayer.Visible = true; textPreviewBox.Visible = false; previewPictureBox.Visible = false; videoPreviewPlayer.Warning += (Sender, Events) => { }; videoPreviewPlayer.settings.enableErrorDialogs = false; videoPreviewPlayer.URL = Directory.GetCurrentDirectory() + "\\" + "temp." + ext; videoPreviewPlayer.settings.autoStart = true; } else { videoPreviewPlayer.Visible = false; textPreviewBox.Visible = true; previewPictureBox.Visible = false; var response = await _client.GetRawResponse(file); textPreviewBox.Text = Encoding.Default.GetString(response); } loadingSpinner.Visible = false; }
//internal: share use function for GetDirectories/Files private FTPdirectory GetFileOrDir(FTPfileInfo.DirectoryEntryTypes type, string ext) { FTPdirectory result = new FTPdirectory(); foreach (FTPfileInfo fi in this) { if (fi.FileType == type) { if (ext == "") { result.Add(fi); } else if (ext == fi.Extension) { result.Add(fi); } } } return(result); }