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.UseCompatibleStateImageBehavior = false;
|
||||
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);
|
||||
//
|
||||
// lvDetail
|
||||
@@ -86,6 +87,7 @@
|
||||
this.lvDetail.Name = "lvDetail";
|
||||
this.lvDetail.UseCompatibleStateImageBehavior = false;
|
||||
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);
|
||||
//
|
||||
// tsMain
|
||||
|
||||
@@ -18,10 +18,14 @@ namespace clashN.Forms
|
||||
{
|
||||
public partial class ProxiesForm : BaseForm
|
||||
{
|
||||
Dictionary<String, ProxiesItem> proxies;
|
||||
Dictionary<String, ProvidersItem> providers;
|
||||
ProxiesItem selectedProxy;
|
||||
private Dictionary<String, ProxiesItem> proxies;
|
||||
private Dictionary<String, ProvidersItem> providers;
|
||||
private List<ProxiesItem> lstDetail;
|
||||
private int sortColumn = 0;
|
||||
|
||||
// ProxiesItem selectedProxy;
|
||||
|
||||
#region Init
|
||||
public ProxiesForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
@@ -39,6 +43,10 @@ namespace clashN.Forms
|
||||
{
|
||||
lvProxies.Focus();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region listview
|
||||
private void InitProxiesView()
|
||||
{
|
||||
lvProxies.BeginUpdate();
|
||||
@@ -51,6 +59,7 @@ namespace clashN.Forms
|
||||
lvProxies.MultiSelect = false;
|
||||
lvProxies.HeaderStyle = ColumnHeaderStyle.Clickable;
|
||||
|
||||
lvProxies.Columns.Add("", 30);
|
||||
lvProxies.Columns.Add(ResUI.LvAlias, 130);
|
||||
lvProxies.Columns.Add(ResUI.LvServiceType, 80);
|
||||
lvProxies.Columns.Add(ResUI.LvActivity, 130);
|
||||
@@ -78,6 +87,51 @@ namespace clashN.Forms
|
||||
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)
|
||||
{
|
||||
MainFormHandler.Instance.GetClashProxies(config, (it, it2) =>
|
||||
@@ -114,7 +168,8 @@ namespace clashN.Forms
|
||||
{
|
||||
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, "Activity", kv.Value.now);
|
||||
|
||||
@@ -132,7 +187,7 @@ namespace clashN.Forms
|
||||
}
|
||||
private void RefreshDetail(int index)
|
||||
{
|
||||
selectedProxy = null;
|
||||
//selectedProxy = null;
|
||||
|
||||
lvDetail.BeginUpdate();
|
||||
lvDetail.Items.Clear();
|
||||
@@ -154,12 +209,9 @@ namespace clashN.Forms
|
||||
{
|
||||
return;
|
||||
}
|
||||
selectedProxy = proxy;
|
||||
//selectedProxy = proxy;
|
||||
|
||||
lvDetail.BeginUpdate();
|
||||
lvDetail.Items.Clear();
|
||||
|
||||
List<ProxiesItem> lstDetail = new List<ProxiesItem>();
|
||||
lstDetail = new List<ProxiesItem>();
|
||||
foreach (var item in proxy.all)
|
||||
{
|
||||
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);
|
||||
Utils.AddSubItem(lvItem, "Name", item.name);
|
||||
@@ -224,10 +309,6 @@ namespace clashN.Forms
|
||||
return null;
|
||||
}
|
||||
|
||||
private void lvProxies_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
RefreshDetail(GetLvSelectedIndex());
|
||||
}
|
||||
private void lvDetail_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
switch (e.KeyCode)
|
||||
@@ -258,7 +339,8 @@ namespace clashN.Forms
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (selectedProxy.type != "Selector")
|
||||
var selectedProxy = TryGetProxy(name);
|
||||
if (selectedProxy == null || selectedProxy.type != "Selector")
|
||||
{
|
||||
UI.Show(ResUI.OperationFailed);
|
||||
return;
|
||||
@@ -273,6 +355,10 @@ namespace clashN.Forms
|
||||
RefreshDetail(GetLvSelectedIndex());
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region toolbar
|
||||
|
||||
private void tsbReload_Click(object sender, EventArgs e)
|
||||
{
|
||||
GetClashProxies(true);
|
||||
@@ -318,5 +404,7 @@ namespace clashN.Forms
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="lvProxies.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>400, 446</value>
|
||||
<value>399, 446</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="lvProxies.TabIndex" type="System.Int32, mscorlib">
|
||||
@@ -143,7 +143,7 @@
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="lvDetail.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>426, 446</value>
|
||||
<value>427, 446</value>
|
||||
</data>
|
||||
<data name="lvDetail.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
@@ -176,7 +176,7 @@
|
||||
<value>830, 446</value>
|
||||
</data>
|
||||
<data name="splitContainer1.SplitterDistance" type="System.Int32, mscorlib">
|
||||
<value>400</value>
|
||||
<value>399</value>
|
||||
</data>
|
||||
<data name="splitContainer1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>5</value>
|
||||
|
||||
Reference in New Issue
Block a user