add sort by title
This commit is contained in:
2
clashN/clashN/Forms/ProxiesForm.Designer.cs
generated
2
clashN/clashN/Forms/ProxiesForm.Designer.cs
generated
@@ -72,6 +72,7 @@
|
|||||||
this.lvProxies.Name = "lvProxies";
|
this.lvProxies.Name = "lvProxies";
|
||||||
this.lvProxies.UseCompatibleStateImageBehavior = false;
|
this.lvProxies.UseCompatibleStateImageBehavior = false;
|
||||||
this.lvProxies.View = System.Windows.Forms.View.Details;
|
this.lvProxies.View = System.Windows.Forms.View.Details;
|
||||||
|
this.lvProxies.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.lvProxies_ColumnClick);
|
||||||
this.lvProxies.SelectedIndexChanged += new System.EventHandler(this.lvProxies_SelectedIndexChanged);
|
this.lvProxies.SelectedIndexChanged += new System.EventHandler(this.lvProxies_SelectedIndexChanged);
|
||||||
//
|
//
|
||||||
// lvDetail
|
// lvDetail
|
||||||
@@ -86,6 +87,7 @@
|
|||||||
this.lvDetail.Name = "lvDetail";
|
this.lvDetail.Name = "lvDetail";
|
||||||
this.lvDetail.UseCompatibleStateImageBehavior = false;
|
this.lvDetail.UseCompatibleStateImageBehavior = false;
|
||||||
this.lvDetail.View = System.Windows.Forms.View.Details;
|
this.lvDetail.View = System.Windows.Forms.View.Details;
|
||||||
|
this.lvDetail.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.lvDetail_ColumnClick);
|
||||||
this.lvDetail.KeyDown += new System.Windows.Forms.KeyEventHandler(this.lvDetail_KeyDown);
|
this.lvDetail.KeyDown += new System.Windows.Forms.KeyEventHandler(this.lvDetail_KeyDown);
|
||||||
//
|
//
|
||||||
// tsMain
|
// tsMain
|
||||||
|
|||||||
@@ -18,10 +18,14 @@ namespace clashN.Forms
|
|||||||
{
|
{
|
||||||
public partial class ProxiesForm : BaseForm
|
public partial class ProxiesForm : BaseForm
|
||||||
{
|
{
|
||||||
Dictionary<String, ProxiesItem> proxies;
|
private Dictionary<String, ProxiesItem> proxies;
|
||||||
Dictionary<String, ProvidersItem> providers;
|
private Dictionary<String, ProvidersItem> providers;
|
||||||
ProxiesItem selectedProxy;
|
private List<ProxiesItem> lstDetail;
|
||||||
|
private int sortColumn = 0;
|
||||||
|
|
||||||
|
// ProxiesItem selectedProxy;
|
||||||
|
|
||||||
|
#region Init
|
||||||
public ProxiesForm()
|
public ProxiesForm()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
@@ -39,6 +43,10 @@ namespace clashN.Forms
|
|||||||
{
|
{
|
||||||
lvProxies.Focus();
|
lvProxies.Focus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region listview
|
||||||
private void InitProxiesView()
|
private void InitProxiesView()
|
||||||
{
|
{
|
||||||
lvProxies.BeginUpdate();
|
lvProxies.BeginUpdate();
|
||||||
@@ -51,6 +59,7 @@ namespace clashN.Forms
|
|||||||
lvProxies.MultiSelect = false;
|
lvProxies.MultiSelect = false;
|
||||||
lvProxies.HeaderStyle = ColumnHeaderStyle.Clickable;
|
lvProxies.HeaderStyle = ColumnHeaderStyle.Clickable;
|
||||||
|
|
||||||
|
lvProxies.Columns.Add("", 30);
|
||||||
lvProxies.Columns.Add(ResUI.LvAlias, 130);
|
lvProxies.Columns.Add(ResUI.LvAlias, 130);
|
||||||
lvProxies.Columns.Add(ResUI.LvServiceType, 80);
|
lvProxies.Columns.Add(ResUI.LvServiceType, 80);
|
||||||
lvProxies.Columns.Add(ResUI.LvActivity, 130);
|
lvProxies.Columns.Add(ResUI.LvActivity, 130);
|
||||||
@@ -78,6 +87,51 @@ namespace clashN.Forms
|
|||||||
lvDetail.EndUpdate();
|
lvDetail.EndUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void lvProxies_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
RefreshDetail(GetLvSelectedIndex());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void lvProxies_ColumnClick(object sender, ColumnClickEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Column < 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (e.Column == 0)
|
||||||
|
{
|
||||||
|
foreach (ColumnHeader it in lvProxies.Columns)
|
||||||
|
{
|
||||||
|
it.Width = -2;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void lvDetail_ColumnClick(object sender, ColumnClickEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Column < 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (e.Column == 0)
|
||||||
|
{
|
||||||
|
foreach (ColumnHeader it in lvDetail.Columns)
|
||||||
|
{
|
||||||
|
it.Width = -2;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
RefreshDetailSub(e.Column);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
#region proxy function
|
||||||
|
|
||||||
private void GetClashProxies(bool refreshUI)
|
private void GetClashProxies(bool refreshUI)
|
||||||
{
|
{
|
||||||
MainFormHandler.Instance.GetClashProxies(config, (it, it2) =>
|
MainFormHandler.Instance.GetClashProxies(config, (it, it2) =>
|
||||||
@@ -114,7 +168,8 @@ namespace clashN.Forms
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
ListViewItem lvItem = new ListViewItem(kv.Key);
|
ListViewItem lvItem = new ListViewItem("");
|
||||||
|
Utils.AddSubItem(lvItem, "Name", kv.Key);
|
||||||
Utils.AddSubItem(lvItem, "Type", kv.Value.type);
|
Utils.AddSubItem(lvItem, "Type", kv.Value.type);
|
||||||
Utils.AddSubItem(lvItem, "Activity", kv.Value.now);
|
Utils.AddSubItem(lvItem, "Activity", kv.Value.now);
|
||||||
|
|
||||||
@@ -132,7 +187,7 @@ namespace clashN.Forms
|
|||||||
}
|
}
|
||||||
private void RefreshDetail(int index)
|
private void RefreshDetail(int index)
|
||||||
{
|
{
|
||||||
selectedProxy = null;
|
//selectedProxy = null;
|
||||||
|
|
||||||
lvDetail.BeginUpdate();
|
lvDetail.BeginUpdate();
|
||||||
lvDetail.Items.Clear();
|
lvDetail.Items.Clear();
|
||||||
@@ -154,12 +209,9 @@ namespace clashN.Forms
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
selectedProxy = proxy;
|
//selectedProxy = proxy;
|
||||||
|
|
||||||
lvDetail.BeginUpdate();
|
lstDetail = new List<ProxiesItem>();
|
||||||
lvDetail.Items.Clear();
|
|
||||||
|
|
||||||
List<ProxiesItem> lstDetail = new List<ProxiesItem>();
|
|
||||||
foreach (var item in proxy.all)
|
foreach (var item in proxy.all)
|
||||||
{
|
{
|
||||||
var isActive = item == proxy.now;
|
var isActive = item == proxy.now;
|
||||||
@@ -183,7 +235,40 @@ namespace clashN.Forms
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var item in lstDetail.OrderBy(t => t.delay))
|
RefreshDetailSub(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RefreshDetailSub(int column)
|
||||||
|
{
|
||||||
|
if (lstDetail == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (column < 0)
|
||||||
|
{
|
||||||
|
column = sortColumn;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sortColumn = column;
|
||||||
|
}
|
||||||
|
lvDetail.BeginUpdate();
|
||||||
|
lvDetail.Items.Clear();
|
||||||
|
|
||||||
|
switch (column)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
lstDetail = lstDetail.OrderBy(x => x.name).ToList();
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
lstDetail = lstDetail.OrderBy(x => x.type).ToList();
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
lstDetail = lstDetail.OrderBy(x => x.delay).ToList();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var item in lstDetail)
|
||||||
{
|
{
|
||||||
ListViewItem lvItem = new ListViewItem(item.now);
|
ListViewItem lvItem = new ListViewItem(item.now);
|
||||||
Utils.AddSubItem(lvItem, "Name", item.name);
|
Utils.AddSubItem(lvItem, "Name", item.name);
|
||||||
@@ -224,10 +309,6 @@ namespace clashN.Forms
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void lvProxies_SelectedIndexChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
RefreshDetail(GetLvSelectedIndex());
|
|
||||||
}
|
|
||||||
private void lvDetail_KeyDown(object sender, KeyEventArgs e)
|
private void lvDetail_KeyDown(object sender, KeyEventArgs e)
|
||||||
{
|
{
|
||||||
switch (e.KeyCode)
|
switch (e.KeyCode)
|
||||||
@@ -258,7 +339,8 @@ namespace clashN.Forms
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (selectedProxy.type != "Selector")
|
var selectedProxy = TryGetProxy(name);
|
||||||
|
if (selectedProxy == null || selectedProxy.type != "Selector")
|
||||||
{
|
{
|
||||||
UI.Show(ResUI.OperationFailed);
|
UI.Show(ResUI.OperationFailed);
|
||||||
return;
|
return;
|
||||||
@@ -273,6 +355,10 @@ namespace clashN.Forms
|
|||||||
RefreshDetail(GetLvSelectedIndex());
|
RefreshDetail(GetLvSelectedIndex());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region toolbar
|
||||||
|
|
||||||
private void tsbReload_Click(object sender, EventArgs e)
|
private void tsbReload_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
GetClashProxies(true);
|
GetClashProxies(true);
|
||||||
@@ -318,5 +404,7 @@ namespace clashN.Forms
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -89,7 +89,7 @@
|
|||||||
<value>0, 0</value>
|
<value>0, 0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="lvProxies.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="lvProxies.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>400, 446</value>
|
<value>399, 446</value>
|
||||||
</data>
|
</data>
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
<data name="lvProxies.TabIndex" type="System.Int32, mscorlib">
|
<data name="lvProxies.TabIndex" type="System.Int32, mscorlib">
|
||||||
@@ -143,7 +143,7 @@
|
|||||||
<value>0, 0</value>
|
<value>0, 0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="lvDetail.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="lvDetail.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>426, 446</value>
|
<value>427, 446</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="lvDetail.TabIndex" type="System.Int32, mscorlib">
|
<data name="lvDetail.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>3</value>
|
<value>3</value>
|
||||||
@@ -176,7 +176,7 @@
|
|||||||
<value>830, 446</value>
|
<value>830, 446</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="splitContainer1.SplitterDistance" type="System.Int32, mscorlib">
|
<data name="splitContainer1.SplitterDistance" type="System.Int32, mscorlib">
|
||||||
<value>400</value>
|
<value>399</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="splitContainer1.TabIndex" type="System.Int32, mscorlib">
|
<data name="splitContainer1.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>5</value>
|
<value>5</value>
|
||||||
|
|||||||
Reference in New Issue
Block a user