Compare commits

..

53 Commits
3.15.1 ... 3.16

Author SHA1 Message Date
2dust
f6b044c10c Update AssemblyInfo.cs 2020-04-21 20:48:26 +08:00
2dust
88c87aec0e speedtest 2020-04-21 20:24:54 +08:00
2dust
b632dee0ce sort3 2020-04-21 13:33:50 +08:00
2dust
0db772aaeb sort2 2020-04-21 13:24:51 +08:00
2dust
fedfed4028 sort1 2020-04-20 21:19:00 +08:00
2dust
3b27e7be36 Revert "Merge pull request #695 from yfdyh000/pr8"
This reverts commit 78402118ef, reversing
changes made to 0c26662602.
2020-04-20 19:49:27 +08:00
2dust
78402118ef Merge pull request #695 from yfdyh000/pr8
界面和功能增强
2020-04-19 16:57:49 +08:00
YFdyh000
aa3094f796 try to speed up 2020-04-19 06:29:47 +08:00
YFdyh000
20498ce453 refine message 2020-04-19 06:29:34 +08:00
YFdyh000
56559e6509 treat index in menuRemoveDuplicateServer 2020-04-19 06:29:12 +08:00
YFdyh000
9549d17b03 fixes stats showing 2020-04-19 06:29:12 +08:00
YFdyh000
a822fa9766 fixes crashes 2020-04-19 06:29:07 +08:00
YFdyh000
dee4b19775 fixes sort the traffics may not work... 2020-04-19 04:12:55 +08:00
YFdyh000
f4b885dce5 subSetting speed up 2020-04-19 02:45:19 +08:00
YFdyh000
2c02285def refine GFWLIST_URL option 2020-04-19 02:45:18 +08:00
YFdyh000
be7d76947b Simple and refined sorting effect 2020-04-19 02:45:16 +08:00
YFdyh000
a81254dfff fix port sort 2020-04-19 00:06:00 +08:00
YFdyh000
cb24a909ae function rename 2020-04-18 22:51:16 +08:00
YFdyh000
8a87318b68 fixes SetTestResult 2020-04-18 22:42:32 +08:00
YFdyh000
219f544a43 refine code 2020-04-18 21:52:43 +08:00
YFdyh000
46c887537e remember columns order 2020-04-18 21:52:42 +08:00
YFdyh000
8cf66da07c refine StorageUI 2020-04-18 21:52:41 +08:00
YFdyh000
57bcf8a1a7 reInterlaceColoring 2020-04-18 21:52:41 +08:00
YFdyh000
05efff10da sort now works 2020-04-18 21:52:38 +08:00
YFdyh000
414ac3225a Merge branch 'billpareto_sort' into itemIndex 2020-04-18 21:12:17 +08:00
YFdyh000
0a8e822f35 simplify again & store Tag for sort 2020-04-18 21:09:37 +08:00
YFdyh000
301d1dd998 fixes 2020-04-18 21:04:38 +08:00
YFdyh000
621565f4a4 restyle 2020-04-18 21:02:48 +08:00
YFdyh000
6f51d447c7 Get real config index 2020-04-18 21:02:47 +08:00
YFdyh000
f9c7556c54 Take multi-size icon file 2020-04-18 15:12:26 +08:00
YFdyh000
32b98524ff fix crash 2020-04-18 15:12:25 +08:00
YFdyh000
efaec3ee17 refine info 2020-04-18 14:59:35 +08:00
YFdyh000
28826cad1b refine code 2020-04-18 14:33:30 +08:00
YFdyh000
ca9840abf4 code style 2020-04-18 13:21:47 +08:00
YFdyh000
8813d66274 no font specified 2020-04-18 11:57:22 +08:00
YFdyh000
da2b0f7dd4 BorderSides on status bar 2020-04-18 11:46:25 +08:00
YFdyh000
b1773dab90 bug fixes 2020-04-18 11:36:01 +08:00
YFdyh000
9538a67be1 Revert "simplify"
This reverts commit 4e449811e7.

The "Name" looks not work...
2020-04-18 10:42:08 +08:00
YFdyh000
fbfbc811d4 refine UI performance 2020-04-18 10:18:25 +08:00
YFdyh000
1c04b752cd fix typo 2020-04-18 10:17:40 +08:00
YFdyh000
3b1a2287d5 cleanup code 2020-04-18 10:17:37 +08:00
YFdyh000
f3e6bd2736 refine code 2020-04-18 10:12:47 +08:00
YFdyh000
4e449811e7 simplify 2020-04-18 10:12:24 +08:00
YFdyh000
910be7f471 fixing layout 2020-04-17 16:31:19 +08:00
YFdyh000
1e088f851b resort 2020-04-17 16:29:25 +08:00
YFdyh000
a0b0ad53d2 RefreshTaryIcon while DisplaySettingsChanged 2020-04-17 15:43:18 +08:00
YFdyh000
5b3f09aaf7 refine UserPAC setting 2020-04-17 15:39:41 +08:00
YFdyh000
f48468029e Add InterlaceColoring option 2020-04-17 15:39:40 +08:00
YFdyh000
c837ba5482 Showing routingMode on status bar 2020-04-17 15:39:39 +08:00
YFdyh000
2708ff7c1a Showing latency on status bar 2020-04-17 15:39:38 +08:00
YFdyh000
1722e50402 resort resx 2020-04-17 15:39:37 +08:00
YFdyh000
244da05e70 don't right align for testResults 2020-04-17 09:51:07 +08:00
2dust
0c26662602 fix 2020-04-16 20:48:26 +08:00
10 changed files with 151 additions and 16 deletions

View File

@@ -165,6 +165,7 @@
this.lvServers.Name = "lvServers";
this.lvServers.UseCompatibleStateImageBehavior = false;
this.lvServers.View = System.Windows.Forms.View.Details;
this.lvServers.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.lvServers_ColumnClick);
this.lvServers.SelectedIndexChanged += new System.EventHandler(this.lvServers_SelectedIndexChanged);
this.lvServers.Click += new System.EventHandler(this.lvServers_Click);
this.lvServers.DoubleClick += new System.EventHandler(this.lvServers_DoubleClick);

View File

@@ -161,7 +161,7 @@ namespace v2rayN.Forms
private void RefreshServers()
{
RefreshServersView();
lvServers.AutoResizeColumns();
//lvServers.AutoResizeColumns();
RefreshServersMenu();
}
@@ -178,7 +178,7 @@ namespace v2rayN.Forms
lvServers.View = View.Details;
lvServers.Scrollable = true;
lvServers.MultiSelect = true;
lvServers.HeaderStyle = ColumnHeaderStyle.Nonclickable;
lvServers.HeaderStyle = ColumnHeaderStyle.Clickable;
lvServers.Columns.Add("", 30);
lvServers.Columns.Add(UIRes.I18N("LvServiceType"), 80);
@@ -239,7 +239,7 @@ namespace v2rayN.Forms
}
}
ListViewItem lvItem = new ListViewItem(def);
_addSubItem(lvItem, EServerColName.type.ToString(), ((EConfigType)item.configType).ToString());
_addSubItem(lvItem, EServerColName.configType.ToString(), ((EConfigType)item.configType).ToString());
_addSubItem(lvItem, EServerColName.remarks.ToString(), item.remarks);
_addSubItem(lvItem, EServerColName.address.ToString(), item.address);
_addSubItem(lvItem, EServerColName.port.ToString(), item.port.ToString());
@@ -377,6 +377,35 @@ namespace v2rayN.Forms
}
}
private void lvServers_ColumnClick(object sender, ColumnClickEventArgs e)
{
if (e.Column < 0)
{
return;
}
try
{
var tag = lvServers.Columns[e.Column].Tag?.ToString();
bool asc = Utils.IsNullOrEmpty(tag) ? true : !Convert.ToBoolean(tag);
if (ConfigHandler.SortServers(ref config, (EServerColName)e.Column, asc) != 0)
{
return;
}
lvServers.Columns[e.Column].Tag = Convert.ToString(asc);
RefreshServers();
}
catch (Exception ex)
{
Utils.SaveLog(ex.Message, ex);
}
if (e.Column < 0)
{
return;
}
}
#endregion
#region v2ray
@@ -1228,11 +1257,11 @@ namespace v2rayN.Forms
{
int httpPort = config.GetLocalPort(Global.InboundHttp);
WebProxy webProxy = new WebProxy(Global.Loopback, httpPort);
downloadHandle.DownloadFileAsync(url, webProxy, 60);
downloadHandle.DownloadFileAsync(url, webProxy, 600);
}
else
{
downloadHandle.DownloadFileAsync(url, null, 60);
downloadHandle.DownloadFileAsync(url, null, 600);
}
}
}
@@ -1563,8 +1592,8 @@ namespace v2rayN.Forms
}
#endregion
#endregion
}
}

View File

@@ -4,6 +4,8 @@ using System.IO;
using System.Net;
using v2rayN.Mode;
using v2rayN.Base;
using System.Linq;
using v2rayN.Tool;
namespace v2rayN.Handler
{
@@ -922,5 +924,45 @@ namespace v2rayN.Handler
}
}
public static int SortServers(ref Config config, EServerColName name, bool asc)
{
if (config.vmess.Count <= 0)
{
return -1;
}
switch (name)
{
case EServerColName.configType:
case EServerColName.remarks:
case EServerColName.address:
case EServerColName.port:
case EServerColName.security:
case EServerColName.network:
case EServerColName.testResult:
break;
default:
return -1;
}
string itemId = config.getItemId();
var items = config.vmess.AsQueryable();
if (asc)
{
config.vmess = items.OrderBy(name.ToString()).ToList();
}
else
{
config.vmess = items.OrderByDescending(name.ToString()).ToList();
}
var index_ = config.vmess.FindIndex(it => it.getItemId() == itemId);
if (index_ >= 0)
{
config.index = index_;
}
ToJsonFile(config);
return 0;
}
}
}

View File

@@ -228,19 +228,33 @@ namespace v2rayN.Handler
}
}
}
void ws_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
try
{
if (UpdateCompleted != null)
{
if (e.Error != null) throw e.Error;
if (e.Cancelled)
{
((WebClientEx)sender).Dispose();
TimeSpan ts = (DateTime.Now - totalDatetime);
string speed = string.Format("{0} M/s", (totalBytesToReceive / ts.TotalMilliseconds / 1000).ToString("#0.##"));
UpdateCompleted(this, new ResultEventArgs(true, speed));
return;
}
((WebClientEx)sender).Dispose();
TimeSpan ts = (DateTime.Now - totalDatetime);
string speed = string.Format("<{0} MB/s", (totalBytesToReceive / ts.TotalMilliseconds / 1000).ToString("#0.##"));
UpdateCompleted(this, new ResultEventArgs(true, speed));
if (e.Error == null
|| Utils.IsNullOrEmpty(e.Error.ToString()))
{
TimeSpan ts = (DateTime.Now - totalDatetime);
string speed = string.Format("{0} M/s", (totalBytesToReceive / ts.TotalMilliseconds / 1000).ToString("#0.##"));
UpdateCompleted(this, new ResultEventArgs(true, speed));
}
else
{
throw e.Error;
}
}
}
catch (Exception ex)

View File

@@ -219,7 +219,7 @@ namespace v2rayN.Handler
testCounter++;
WebProxy webProxy = new WebProxy(Global.Loopback, httpPort + index);
downloadHandle2.DownloadFileAsync(url, webProxy, 20);
downloadHandle2.DownloadFileAsync(url, webProxy, 10);
}
}

View File

@@ -4,7 +4,7 @@ namespace v2rayN.Mode
public enum EServerColName
{
def = 0,
type,
configType,
remarks,
address,
port,

View File

@@ -32,4 +32,4 @@ using System.Runtime.InteropServices;
// 方法是按如下所示使用“*”:
//[assembly: AssemblyVersion("1.0.*")]
//[assembly: AssemblyVersion("1.0.0")]
[assembly: AssemblyFileVersion("3.15.1")]
[assembly: AssemblyFileVersion("3.16")]

View File

@@ -0,0 +1,48 @@
using System;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
namespace v2rayN.Tool
{
public static class QueryableExtension
{
public static IOrderedQueryable<T> OrderBy<T>(this IQueryable<T> query, string propertyName)
{
return _OrderBy<T>(query, propertyName, false);
}
public static IOrderedQueryable<T> OrderByDescending<T>(this IQueryable<T> query, string propertyName)
{
return _OrderBy<T>(query, propertyName, true);
}
static IOrderedQueryable<T> _OrderBy<T>(IQueryable<T> query, string propertyName, bool isDesc)
{
string methodname = (isDesc) ? "OrderByDescendingInternal" : "OrderByInternal";
var memberProp = typeof(T).GetProperty(propertyName);
var method = typeof(QueryableExtension).GetMethod(methodname)
.MakeGenericMethod(typeof(T), memberProp.PropertyType);
return (IOrderedQueryable<T>)method.Invoke(null, new object[] { query, memberProp });
}
public static IOrderedQueryable<T> OrderByInternal<T, TProp>(IQueryable<T> query, PropertyInfo memberProperty)
{//public
return query.OrderBy(_GetLamba<T, TProp>(memberProperty));
}
public static IOrderedQueryable<T> OrderByDescendingInternal<T, TProp>(IQueryable<T> query, PropertyInfo memberProperty)
{//public
return query.OrderByDescending(_GetLamba<T, TProp>(memberProperty));
}
static Expression<Func<T, TProp>> _GetLamba<T, TProp>(PropertyInfo memberProperty)
{
if (memberProperty.PropertyType != typeof(TProp)) throw new Exception();
var thisArg = Expression.Parameter(typeof(T));
var lamba = Expression.Lambda<Func<T, TProp>>(Expression.Property(thisArg, memberProperty), thisArg);
return lamba;
}
}
}

View File

@@ -209,6 +209,7 @@
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Tool\FileManager.cs" />
<Compile Include="Tool\Job.cs" />
<Compile Include="Tool\QueryableExtension.cs" />
<Compile Include="Tool\UIRes.cs" />
<Compile Include="Tool\UI.cs" />
<Compile Include="Tool\Utils.cs" />

View File

@@ -9,7 +9,7 @@
<ErrorReportUrlHistory />
<FallbackCulture>zh-CN</FallbackCulture>
<VerifyUploadedFiles>false</VerifyUploadedFiles>
<ProjectView>ShowAllFiles</ProjectView>
<ProjectView>ProjectFiles</ProjectView>
</PropertyGroup>
<PropertyGroup>
<EnableSecurityDebugging>false</EnableSecurityDebugging>