1
0
mirror of https://github.com/Ylianst/MeshCentralRouter synced 2025-12-10 13:23:49 +00:00

clickable headers to sort files and show date modified for files/folders

This commit is contained in:
adnan29979
2024-07-02 00:31:04 +05:30
committed by GitHub
parent 6c888b38a7
commit 4b8221ae35
3 changed files with 124 additions and 34 deletions

View File

@@ -61,6 +61,7 @@ namespace MeshCentralRouter
this.rightListView = new System.Windows.Forms.ListView(); this.rightListView = new System.Windows.Forms.ListView();
this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.columnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.columnHeader5 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.remoteContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components); this.remoteContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
this.renameToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.renameToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.compressToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.compressToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -74,6 +75,7 @@ namespace MeshCentralRouter
this.leftListView = new System.Windows.Forms.ListView(); this.leftListView = new System.Windows.Forms.ListView();
this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.columnHeader6 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.localContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components); this.localContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
this.renameToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.renameToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.deleteToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.deleteToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
@@ -81,8 +83,6 @@ namespace MeshCentralRouter
this.refreshToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.refreshToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.leftTopPanel = new System.Windows.Forms.Panel(); this.leftTopPanel = new System.Windows.Forms.Panel();
this.localLabel = new System.Windows.Forms.Label(); this.localLabel = new System.Windows.Forms.Label();
this.columnHeader5 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.columnHeader6 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.topPanel.SuspendLayout(); this.topPanel.SuspendLayout();
this.statusStrip.SuspendLayout(); this.statusStrip.SuspendLayout();
this.mainTableLayoutPanel.SuspendLayout(); this.mainTableLayoutPanel.SuspendLayout();
@@ -298,7 +298,6 @@ namespace MeshCentralRouter
this.rightListView.ContextMenuStrip = this.remoteContextMenuStrip; this.rightListView.ContextMenuStrip = this.remoteContextMenuStrip;
resources.ApplyResources(this.rightListView, "rightListView"); resources.ApplyResources(this.rightListView, "rightListView");
this.rightListView.FullRowSelect = true; this.rightListView.FullRowSelect = true;
this.rightListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
this.rightListView.HideSelection = false; this.rightListView.HideSelection = false;
this.rightListView.Name = "rightListView"; this.rightListView.Name = "rightListView";
this.rightListView.SmallImageList = this.fileIconImageList; this.rightListView.SmallImageList = this.fileIconImageList;
@@ -319,6 +318,10 @@ namespace MeshCentralRouter
// //
resources.ApplyResources(this.columnHeader4, "columnHeader4"); resources.ApplyResources(this.columnHeader4, "columnHeader4");
// //
// columnHeader5
//
resources.ApplyResources(this.columnHeader5, "columnHeader5");
//
// remoteContextMenuStrip // remoteContextMenuStrip
// //
this.remoteContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.remoteContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
@@ -404,7 +407,6 @@ namespace MeshCentralRouter
this.leftListView.ContextMenuStrip = this.localContextMenuStrip; this.leftListView.ContextMenuStrip = this.localContextMenuStrip;
resources.ApplyResources(this.leftListView, "leftListView"); resources.ApplyResources(this.leftListView, "leftListView");
this.leftListView.FullRowSelect = true; this.leftListView.FullRowSelect = true;
this.leftListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
this.leftListView.HideSelection = false; this.leftListView.HideSelection = false;
this.leftListView.Name = "leftListView"; this.leftListView.Name = "leftListView";
this.leftListView.SmallImageList = this.fileIconImageList; this.leftListView.SmallImageList = this.fileIconImageList;
@@ -425,6 +427,10 @@ namespace MeshCentralRouter
// //
resources.ApplyResources(this.columnHeader2, "columnHeader2"); resources.ApplyResources(this.columnHeader2, "columnHeader2");
// //
// columnHeader6
//
resources.ApplyResources(this.columnHeader6, "columnHeader6");
//
// localContextMenuStrip // localContextMenuStrip
// //
this.localContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.localContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
@@ -475,14 +481,6 @@ namespace MeshCentralRouter
resources.ApplyResources(this.localLabel, "localLabel"); resources.ApplyResources(this.localLabel, "localLabel");
this.localLabel.Name = "localLabel"; this.localLabel.Name = "localLabel";
// //
// columnHeader5
//
resources.ApplyResources(this.columnHeader5, "columnHeader5");
//
// columnHeader6
//
resources.ApplyResources(this.columnHeader6, "columnHeader6");
//
// FileViewer // FileViewer
// //
resources.ApplyResources(this, "$this"); resources.ApplyResources(this, "$this");
@@ -566,4 +564,3 @@ namespace MeshCentralRouter
private ColumnHeader columnHeader6; private ColumnHeader columnHeader6;
} }
} }

View File

@@ -43,6 +43,8 @@ namespace MeshCentralRouter
private static string rndString = getRandomString(12); private static string rndString = getRandomString(12);
private bool skipExistingFiles = false; private bool skipExistingFiles = false;
private FileDialogMsgForm msgForm = null; private FileDialogMsgForm msgForm = null;
private bool localSortAscending = true;
private bool remoteSortAscending = true;
// Stats // Stats
public long bytesIn = 0; public long bytesIn = 0;
@@ -93,8 +95,99 @@ namespace MeshCentralRouter
// Load the local path from the registry // Load the local path from the registry
string lp = Settings.GetRegValue("LocalPath", ""); string lp = Settings.GetRegValue("LocalPath", "");
if((lp != "") && (Directory.Exists(lp))) { localFolder = new DirectoryInfo(lp); } if((lp != "") && (Directory.Exists(lp))) { localFolder = new DirectoryInfo(lp); }
// Add ColumnClick event handlers
leftListView.ColumnClick += new ColumnClickEventHandler(LeftListView_ColumnClick);
rightListView.ColumnClick += new ColumnClickEventHandler(RightListView_ColumnClick);
} }
private void LeftListView_ColumnClick(object sender, ColumnClickEventArgs e)
{
if (localFolder == null) return;
if (e.Column == 1) // Size column
{
localSortAscending = !localSortAscending;
leftListView.ListViewItemSorter = new ListViewItemComparer(e.Column, localSortAscending, isNumeric: true);
}
else if (e.Column == 2) // Date column
{
localSortAscending = !localSortAscending;
leftListView.ListViewItemSorter = new ListViewItemComparer(e.Column, localSortAscending, isDate: true);
}
else // Name column or other columns
{
localSortAscending = !localSortAscending;
leftListView.ListViewItemSorter = new ListViewItemComparer(e.Column, localSortAscending);
}
}
private void RightListView_ColumnClick(object sender, ColumnClickEventArgs e)
{
if (remoteFolderList == null) return;
if (e.Column == 1) // Size column
{
remoteSortAscending = !remoteSortAscending;
rightListView.ListViewItemSorter = new ListViewItemComparer(e.Column, remoteSortAscending, isNumeric: true);
}
else if (e.Column == 2) // Date column
{
remoteSortAscending = !remoteSortAscending;
rightListView.ListViewItemSorter = new ListViewItemComparer(e.Column, remoteSortAscending, isDate: true);
}
else // Name column or other columns
{
remoteSortAscending = !remoteSortAscending;
rightListView.ListViewItemSorter = new ListViewItemComparer(e.Column, remoteSortAscending);
}
}
public class ListViewItemComparer : IComparer
{
private int col;
private bool ascending;
private bool isNumeric;
private bool isDate;
public ListViewItemComparer(int column, bool ascending, bool isNumeric = false, bool isDate = false)
{
this.col = column;
this.ascending = ascending;
this.isNumeric = isNumeric;
this.isDate = isDate;
}
public int Compare(object x, object y)
{
int returnVal = 0;
ListViewItem item1 = (ListViewItem)x;
ListViewItem item2 = (ListViewItem)y;
if (isNumeric)
{
long size1 = long.Parse(item1.SubItems[col].Text == "" ? "0" : item1.SubItems[col].Text);
long size2 = long.Parse(item2.SubItems[col].Text == "" ? "0" : item2.SubItems[col].Text);
returnVal = size1.CompareTo(size2);
}
else if (isDate)
{
DateTime date1 = DateTime.Parse(item1.SubItems[col].Text);
DateTime date2 = DateTime.Parse(item2.SubItems[col].Text);
returnVal = date1.CompareTo(date2);
}
else
{
returnVal = String.Compare(item1.SubItems[col].Text, item2.SubItems[col].Text);
}
if (!ascending) returnVal = -returnVal;
return returnVal;
}
}
public bool updateLocalFileView() public bool updateLocalFileView()
{ {
// Save the list of selected items // Save the list of selected items
@@ -136,7 +229,7 @@ namespace MeshCentralRouter
string[] si = new string[3]; string[] si = new string[3];
si[0] = directory.Name; si[0] = directory.Name;
si[1] = ""; // Skipping size of directory because it is very compute consuming si[1] = ""; // Skipping size of directory because it is very compute consuming
si[2] = directory.LastWriteTime.ToString("dd-MM-yyyy hh:mm:ss tt"); // Add the date information si[2] = directory.LastWriteTime.ToString(System.Globalization.CultureInfo.CurrentCulture); // Add the date information
ListViewItem x = new ListViewItem(si, 1); ListViewItem x = new ListViewItem(si, 1);
x.Tag = directory; x.Tag = directory;
leftListView.Items.Add(x); leftListView.Items.Add(x);
@@ -148,7 +241,7 @@ namespace MeshCentralRouter
string[] si = new string[3]; string[] si = new string[3];
si[0] = file.Name; si[0] = file.Name;
si[1] = "" + file.Length; si[1] = "" + file.Length;
si[2] = file.LastWriteTime.ToString("dd-MM-yyyy hh:mm:ss tt"); // Add the date information si[2] = file.LastWriteTime.ToString(System.Globalization.CultureInfo.CurrentCulture); // Add the date information
ListViewItem x = new ListViewItem(si, 2); ListViewItem x = new ListViewItem(si, 2);
x.Tag = file; x.Tag = file;
leftListView.Items.Add(x); leftListView.Items.Add(x);
@@ -246,7 +339,7 @@ namespace MeshCentralRouter
string[] si = new string[3]; string[] si = new string[3];
si[0] = fileName; si[0] = fileName;
si[1] = ""; // Skipping size of directory because it is very compute consuming si[1] = ""; // Skipping size of directory because it is very compute consuming
si[2] = fileDate != null ? DateTime.TryParse(fileDate, out DateTime parsedDate) ? parsedDate.ToString("dd-MM-yyyy hh:mm:ss tt") : "" : ""; si[2] = fileDate != null ? DateTime.TryParse(fileDate, out DateTime parsedDate) ? parsedDate.ToString(System.Globalization.CultureInfo.CurrentCulture) : "" : ""; // Add the date information
sortlist.Add(new ListViewItem(si, 0)); // Drive sortlist.Add(new ListViewItem(si, 0)); // Drive
} }
else if(fileIcon == 2) else if(fileIcon == 2)
@@ -254,7 +347,7 @@ namespace MeshCentralRouter
string[] si = new string[3]; string[] si = new string[3];
si[0] = fileName; si[0] = fileName;
si[1] = ""; // Skipping size of directory because it is very compute consuming si[1] = ""; // Skipping size of directory because it is very compute consuming
si[2] = fileDate != null ? DateTime.TryParse(fileDate, out DateTime parsedDate) ? parsedDate.ToString("dd-MM-yyyy hh:mm:ss tt") : "" : ""; si[2] = fileDate != null ? DateTime.TryParse(fileDate, out DateTime parsedDate) ? parsedDate.ToString(System.Globalization.CultureInfo.CurrentCulture) : "" : ""; // Add the date information
sortlist.Add(new ListViewItem(si, 1)); // Folder sortlist.Add(new ListViewItem(si, 1)); // Folder
} }
} }
@@ -284,7 +377,7 @@ namespace MeshCentralRouter
string[] si = new string[3]; string[] si = new string[3];
si[0] = fileName; si[0] = fileName;
si[1] = "" + fileSize; si[1] = "" + fileSize;
si[2] = fileDate != null ? DateTime.TryParse(fileDate, out DateTime parsedDate) ? parsedDate.ToString("dd-MM-yyyy hh:mm:ss tt") : "" : ""; // Add the date information si[2] = fileDate != null ? DateTime.TryParse(fileDate, out DateTime parsedDate) ? parsedDate.ToString(System.Globalization.CultureInfo.CurrentCulture) : "" : ""; // Add the date information
sortlist.Add(new ListViewItem(si, 2)); // File sortlist.Add(new ListViewItem(si, 2)); // File
} }
} }

View File

@@ -779,7 +779,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAC+ ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAC+
CQAAAk1TRnQBSQFMAgEBAwEAAcgBAAHIAQABEAEAARABAAT/AREBAAj/AUIBTQE2BwABNgMAASgDAAFA CQAAAk1TRnQBSQFMAgEBAwEAAdABAAHQAQABEAEAARABAAT/AREBAAj/AUIBTQE2BwABNgMAASgDAAFA
AwABEAMAAQEBAAEQBgABCDoAATABcwHKAWYBygFmAbUBexIAARABQgEQAUIBEAFCARABQgEQAUIBEAFC AwABEAMAAQEBAAEQBgABCDoAATABcwHKAWYBygFmAbUBexIAARABQgEQAUIBEAFCARABQgEQAUIBEAFC
ARABQgEQAUIBEAFCARABQgEQAUIBEAFCARABQkYAAcoBZgHKAWYBygFmAcoBZgHKAWYBygFmAcoBZgHK ARABQgEQAUIBEAFCARABQgEQAUIBEAFCARABQkYAAcoBZgHKAWYBygFmAcoBZgHKAWYBygFmAcoBZgHK
AWYBygFmAcoBZgHKAWYBygFmATABcwYAARABQgHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7 AWYBygFmAcoBZgHKAWYBygFmATABcwYAARABQgHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7
@@ -1587,6 +1587,12 @@
<data name="&gt;&gt;columnHeader4.Type" xml:space="preserve"> <data name="&gt;&gt;columnHeader4.Type" xml:space="preserve">
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;columnHeader5.Name" xml:space="preserve">
<value>columnHeader5</value>
</data>
<data name="&gt;&gt;columnHeader5.Type" xml:space="preserve">
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;renameToolStripMenuItem.Name" xml:space="preserve"> <data name="&gt;&gt;renameToolStripMenuItem.Name" xml:space="preserve">
<value>renameToolStripMenuItem</value> <value>renameToolStripMenuItem</value>
</data> </data>
@@ -1635,6 +1641,12 @@
<data name="&gt;&gt;columnHeader2.Type" xml:space="preserve"> <data name="&gt;&gt;columnHeader2.Type" xml:space="preserve">
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;columnHeader6.Name" xml:space="preserve">
<value>columnHeader6</value>
</data>
<data name="&gt;&gt;columnHeader6.Type" xml:space="preserve">
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;renameToolStripMenuItem1.Name" xml:space="preserve"> <data name="&gt;&gt;renameToolStripMenuItem1.Name" xml:space="preserve">
<value>renameToolStripMenuItem1</value> <value>renameToolStripMenuItem1</value>
</data> </data>
@@ -1659,18 +1671,6 @@
<data name="&gt;&gt;refreshToolStripMenuItem1.Type" xml:space="preserve"> <data name="&gt;&gt;refreshToolStripMenuItem1.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;columnHeader5.Name" xml:space="preserve">
<value>columnHeader5</value>
</data>
<data name="&gt;&gt;columnHeader5.Type" xml:space="preserve">
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;columnHeader6.Name" xml:space="preserve">
<value>columnHeader6</value>
</data>
<data name="&gt;&gt;columnHeader6.Type" xml:space="preserve">
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve"> <data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>FileViewer</value> <value>FileViewer</value>
</data> </data>