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