diff --git a/FileViewer.Designer.cs b/FileViewer.Designer.cs index aae99ae..0d85b74 100644 --- a/FileViewer.Designer.cs +++ b/FileViewer.Designer.cs @@ -48,6 +48,8 @@ namespace MeshCentralRouter this.remoteDeleteButton = new System.Windows.Forms.Button(); this.downloadButton = new System.Windows.Forms.Button(); this.uploadButton = new System.Windows.Forms.Button(); + this.localDeleteButton = new System.Windows.Forms.Button(); + this.localNewFolderButton = new System.Windows.Forms.Button(); this.topPanel = new System.Windows.Forms.Panel(); this.statusStrip = new System.Windows.Forms.StatusStrip(); this.mainToolStripStatusLabel = new System.Windows.Forms.ToolStripStatusLabel(); @@ -71,8 +73,6 @@ namespace MeshCentralRouter this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.leftTopPanel = new System.Windows.Forms.Panel(); this.localLabel = new System.Windows.Forms.Label(); - this.localDeleteButton = new System.Windows.Forms.Button(); - this.localNewFolderButton = new System.Windows.Forms.Button(); this.topPanel.SuspendLayout(); this.statusStrip.SuspendLayout(); this.mainTableLayoutPanel.SuspendLayout(); @@ -200,6 +200,24 @@ namespace MeshCentralRouter this.uploadButton.UseVisualStyleBackColor = true; this.uploadButton.Click += new System.EventHandler(this.uploadButton_Click); // + // localDeleteButton + // + resources.ApplyResources(this.localDeleteButton, "localDeleteButton"); + this.localDeleteButton.Image = global::MeshCentralRouter.Properties.Resources.delete16; + this.localDeleteButton.Name = "localDeleteButton"; + this.mainToolTip.SetToolTip(this.localDeleteButton, resources.GetString("localDeleteButton.ToolTip")); + this.localDeleteButton.UseVisualStyleBackColor = true; + this.localDeleteButton.Click += new System.EventHandler(this.localDeleteButton_Click); + // + // localNewFolderButton + // + resources.ApplyResources(this.localNewFolderButton, "localNewFolderButton"); + this.localNewFolderButton.Image = global::MeshCentralRouter.Properties.Resources.foldernew16; + this.localNewFolderButton.Name = "localNewFolderButton"; + this.mainToolTip.SetToolTip(this.localNewFolderButton, resources.GetString("localNewFolderButton.ToolTip")); + this.localNewFolderButton.UseVisualStyleBackColor = true; + this.localNewFolderButton.Click += new System.EventHandler(this.localNewFolderButton_Click); + // // topPanel // this.topPanel.BackColor = System.Drawing.SystemColors.Control; @@ -252,6 +270,7 @@ namespace MeshCentralRouter // // rightListView // + this.rightListView.AllowDrop = true; this.rightListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.columnHeader3, this.columnHeader4}); @@ -265,6 +284,8 @@ namespace MeshCentralRouter this.rightListView.View = System.Windows.Forms.View.Details; this.rightListView.ColumnWidthChanged += new System.Windows.Forms.ColumnWidthChangedEventHandler(this.rightListView_ColumnWidthChanged); this.rightListView.SelectedIndexChanged += new System.EventHandler(this.rightListView_SelectedIndexChanged); + this.rightListView.DragDrop += new System.Windows.Forms.DragEventHandler(this.rightListView_DragDrop); + this.rightListView.DragEnter += new System.Windows.Forms.DragEventHandler(this.rightListView_DragEnter); this.rightListView.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.rightListView_MouseDoubleClick); this.rightListView.Resize += new System.EventHandler(this.rightListView_Resize); // @@ -351,6 +372,7 @@ namespace MeshCentralRouter this.leftListView.ColumnWidthChanged += new System.Windows.Forms.ColumnWidthChangedEventHandler(this.leftListView_ColumnWidthChanged); this.leftListView.SelectedIndexChanged += new System.EventHandler(this.leftListView_SelectedIndexChanged); this.leftListView.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.leftListView_MouseDoubleClick); + this.leftListView.MouseMove += new System.Windows.Forms.MouseEventHandler(this.leftListView_MouseMove); this.leftListView.Resize += new System.EventHandler(this.leftListView_Resize); // // columnHeader1 @@ -377,24 +399,6 @@ namespace MeshCentralRouter resources.ApplyResources(this.localLabel, "localLabel"); this.localLabel.Name = "localLabel"; // - // localDeleteButton - // - resources.ApplyResources(this.localDeleteButton, "localDeleteButton"); - this.localDeleteButton.Image = global::MeshCentralRouter.Properties.Resources.delete16; - this.localDeleteButton.Name = "localDeleteButton"; - this.mainToolTip.SetToolTip(this.localDeleteButton, resources.GetString("localDeleteButton.ToolTip")); - this.localDeleteButton.UseVisualStyleBackColor = true; - this.localDeleteButton.Click += new System.EventHandler(this.localDeleteButton_Click); - // - // localNewFolderButton - // - resources.ApplyResources(this.localNewFolderButton, "localNewFolderButton"); - this.localNewFolderButton.Image = global::MeshCentralRouter.Properties.Resources.foldernew16; - this.localNewFolderButton.Name = "localNewFolderButton"; - this.mainToolTip.SetToolTip(this.localNewFolderButton, resources.GetString("localNewFolderButton.ToolTip")); - this.localNewFolderButton.UseVisualStyleBackColor = true; - this.localNewFolderButton.Click += new System.EventHandler(this.localNewFolderButton_Click); - // // FileViewer // resources.ApplyResources(this, "$this"); diff --git a/FileViewer.cs b/FileViewer.cs index 2f6c2b2..8e3de02 100644 --- a/FileViewer.cs +++ b/FileViewer.cs @@ -694,7 +694,7 @@ namespace MeshCentralRouter string r; if (remoteFolder.EndsWith("/")) { r = remoteFolder + f.filename; } else { r = remoteFolder + "/" + f.filename; } requestCreateFolder(r); - updateTimer.Enabled = true; + remoteRefresh(); } } @@ -771,7 +771,7 @@ namespace MeshCentralRouter if (f.ShowDialog(this) == DialogResult.OK) { requestDelete(remoteFolder, files, f.recursive); - updateTimer.Enabled = true; + remoteRefresh(); } } @@ -798,7 +798,7 @@ namespace MeshCentralRouter //string r; //if (remoteFolder.EndsWith("/")) { r = remoteFolder + f.filename; } else { r = remoteFolder + "/" + f.filename; } requestRename(remoteFolder, oldname, f.filename); - updateTimer.Enabled = true; + remoteRefresh(); } } @@ -857,14 +857,23 @@ namespace MeshCentralRouter private void uploadNextFile() { - string localFilePath; - localFilePath = Path.Combine(uploadLocalPath.FullName, (string)uploadFileArray[uploadFileArrayPtr]); + string localFilePath, localFileName; + if (uploadLocalPath != null) + { + localFilePath = Path.Combine(uploadLocalPath.FullName, (string)uploadFileArray[uploadFileArrayPtr]); + localFileName = (string)uploadFileArray[uploadFileArrayPtr]; + } + else + { + localFilePath = (string)uploadFileArray[uploadFileArrayPtr]; + localFileName = Path.GetFileName(localFilePath); + } uploadFileStream = File.OpenRead(localFilePath); uploadFileSize = new FileInfo(localFilePath).Length; uploadFilePtr = 0; // Send UPLOAD command - string cmd = "{\"action\":\"upload\",\"reqid\":" + (uploadFileArrayPtr + 1000) + ",\"path\":\"" + uploadRemotePath + "\",\"name\":\"" + uploadFileArray[uploadFileArrayPtr] + "\",\"size\":" + uploadFileSize + "}"; + string cmd = "{\"action\":\"upload\",\"reqid\":" + (uploadFileArrayPtr + 1000) + ",\"path\":\"" + uploadRemotePath + "\",\"name\":\"" + localFileName + "\",\"size\":" + uploadFileSize + "}"; byte[] bincmd = UTF8Encoding.UTF8.GetBytes(cmd); wc.SendBinary(bincmd, 0, bincmd.Length); } @@ -889,7 +898,7 @@ namespace MeshCentralRouter uploadFileSize = 0; if (uploadFileStream != null) { uploadFileStream.Close(); uploadFileStream = null; } closeTransferDialog(); - updateTimer.Enabled = true; + remoteRefresh(); } private void uploadNextPart(bool dataPriming) @@ -1061,5 +1070,44 @@ namespace MeshCentralRouter updateLocalFileView(); } } + + private void rightListView_DragEnter(object sender, DragEventArgs e) + { + if (uploadActive || downloadActive) return; + if ((node.agentid < 5) && ((remoteFolder == null) || (remoteFolder == ""))) { return; } + if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Copy; + } + + private void rightListView_DragDrop(object sender, DragEventArgs e) + { + if (uploadActive || downloadActive) return; + if ((node.agentid < 5) && ((remoteFolder == null) || (remoteFolder == ""))) { return; } + uploadFileArrayPtr = 0; + uploadFileArray = new ArrayList(); + string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); + foreach (string file in files) { uploadFileArray.Add(file); } + uploadLocalPath = null; + uploadRemotePath = remoteFolder; + uploadActive = true; + uploadStop = false; + uploadNextFile(); + + // Show transfer status dialog + transferStatusForm = new FileTransferStatusForm(this); + transferStatusForm.Show(this); + } + + private void leftListView_MouseMove(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left) + { + ArrayList files = new ArrayList(); + foreach (ListViewItem l in leftListView.SelectedItems) { if (l.ImageIndex == 2) { files.Add(Path.Combine(localFolder.FullName, l.Text)); } } + if (files.Count > 0) + { + leftListView.DoDragDrop(new DataObject(DataFormats.FileDrop, (string[])files.ToArray(typeof(string))), DragDropEffects.Copy); + } + } + } } } diff --git a/FileViewer.resx b/FileViewer.resx index de9d4ba..9e2c186 100644 --- a/FileViewer.resx +++ b/FileViewer.resx @@ -486,6 +486,66 @@ 1 + + False + + + NoControl + + + 150, 21 + + + 30, 23 + + + 10 + + + Delete + + + localDeleteButton + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + leftTopPanel + + + 0 + + + False + + + NoControl + + + 114, 21 + + + 30, 23 + + + 9 + + + New Folder + + + localNewFolderButton + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + leftTopPanel + + + 1 + Top @@ -692,7 +752,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAC+ - CQAAAk1TRnQBSQFMAgEBAwEAAWgBAAFoAQABEAEAARABAAT/AREBAAj/AUIBTQE2BwABNgMAASgDAAFA + CQAAAk1TRnQBSQFMAgEBAwEAAXABAAFwAQABEAEAARABAAT/AREBAAj/AUIBTQE2BwABNgMAASgDAAFA AwABEAMAAQEBAAEQBgABCDoAATABcwHKAWYBygFmAbUBexIAARABQgEQAUIBEAFCARABQgEQAUIBEAFC ARABQgEQAUIBEAFCARABQgEQAUIBEAFCARABQkYAAcoBZgHKAWYBygFmAcoBZgHKAWYBygFmAcoBZgHK AWYBygFmAcoBZgHKAWYBygFmATABcwYAARABQgHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7 @@ -751,84 +811,6 @@ 1 - - False - - - NoControl - - - 150, 21 - - - 30, 23 - - - 10 - - - Delete - - - localDeleteButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - leftTopPanel - - - 0 - - - False - - - NoControl - - - 114, 21 - - - 30, 23 - - - 9 - - - New Folder - - - localNewFolderButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - leftTopPanel - - - 1 - - - Top, Left, Right - - - True - - - 3, 3 - - - 33, 13 - - - 0 - - - Local - localLabel @@ -1054,6 +1036,36 @@ 5 + + Top, Left, Right + + + True + + + 3, 3 + + + 33, 13 + + + 0 + + + Local + + + localLabel + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + leftTopPanel + + + 5 + True