mirror of
https://github.com/2dust/v2rayN.git
synced 2025-10-23 08:44:41 +00:00
Add one-click test of real connection delay
This commit is contained in:
parent
54a47d00a3
commit
e4701d6703
13 changed files with 83 additions and 19 deletions
|
@ -5,5 +5,6 @@ public enum ESpeedActionType
|
|||
Tcping,
|
||||
Realping,
|
||||
Speedtest,
|
||||
Mixedtest
|
||||
Mixedtest,
|
||||
FastRealping
|
||||
}
|
||||
|
|
11
v2rayN/ServiceLib/Resx/ResUI.Designer.cs
generated
11
v2rayN/ServiceLib/Resx/ResUI.Designer.cs
generated
|
@ -19,7 +19,7 @@ namespace ServiceLib.Resx {
|
|||
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
|
||||
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
|
||||
// (以 /str 作为命令选项),或重新生成 VS 项目。
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "18.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
public class ResUI {
|
||||
|
@ -1023,6 +1023,15 @@ namespace ServiceLib.Resx {
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Test real delay 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string menuFastRealPing {
|
||||
get {
|
||||
return ResourceManager.GetString("menuFastRealPing", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Full Config Template Setting 的本地化字符串。
|
||||
/// </summary>
|
||||
|
|
|
@ -1596,4 +1596,7 @@
|
|||
<data name="TbBootstrapDNSTips" xml:space="preserve">
|
||||
<value>Resolve DNS server domains, requires IP</value>
|
||||
</data>
|
||||
<data name="menuFastRealPing" xml:space="preserve">
|
||||
<value>Test real delay</value>
|
||||
</data>
|
||||
</root>
|
|
@ -1596,4 +1596,7 @@
|
|||
<data name="TbBootstrapDNSTips" xml:space="preserve">
|
||||
<value>Resolve DNS server domains, requires IP</value>
|
||||
</data>
|
||||
<data name="menuFastRealPing" xml:space="preserve">
|
||||
<value>Test real delay</value>
|
||||
</data>
|
||||
</root>
|
|
@ -1596,4 +1596,7 @@
|
|||
<data name="TbBootstrapDNSTips" xml:space="preserve">
|
||||
<value>Resolve DNS server domains, requires IP</value>
|
||||
</data>
|
||||
<data name="menuFastRealPing" xml:space="preserve">
|
||||
<value>Test real delay</value>
|
||||
</data>
|
||||
</root>
|
|
@ -1596,4 +1596,7 @@
|
|||
<data name="TbBootstrapDNSTips" xml:space="preserve">
|
||||
<value>Resolve DNS server domains, requires IP</value>
|
||||
</data>
|
||||
<data name="menuFastRealPing" xml:space="preserve">
|
||||
<value>Test real delay</value>
|
||||
</data>
|
||||
</root>
|
|
@ -1593,4 +1593,7 @@
|
|||
<data name="TbBootstrapDNSTips" xml:space="preserve">
|
||||
<value>解析 DNS 服务器域名,需指定为 IP</value>
|
||||
</data>
|
||||
<data name="menuFastRealPing" xml:space="preserve">
|
||||
<value>一键测试真连接延迟</value>
|
||||
</data>
|
||||
</root>
|
|
@ -1593,4 +1593,7 @@
|
|||
<data name="TbBootstrapDNSTips" xml:space="preserve">
|
||||
<value>解析 DNS 伺服器網域名稱,需指定為 IP</value>
|
||||
</data>
|
||||
</root>
|
||||
<data name="menuFastRealPing" xml:space="preserve">
|
||||
<value>一鍵測試真連線延遲</value>
|
||||
</data>
|
||||
</root>
|
|
@ -66,6 +66,7 @@ public class ProfilesViewModel : MyReactiveObject
|
|||
public ReactiveCommand<Unit, Unit> SpeedServerCmd { get; }
|
||||
public ReactiveCommand<Unit, Unit> SortServerResultCmd { get; }
|
||||
public ReactiveCommand<Unit, Unit> RemoveInvalidServerResultCmd { get; }
|
||||
public ReactiveCommand<Unit, Unit> FastRealPingCmd { get; }
|
||||
|
||||
//servers export
|
||||
public ReactiveCommand<Unit, Unit> Export2ClientConfigCmd { get; }
|
||||
|
@ -179,6 +180,10 @@ public class ProfilesViewModel : MyReactiveObject
|
|||
}, canEditRemove);
|
||||
|
||||
//servers ping
|
||||
FastRealPingCmd = ReactiveCommand.CreateFromTask(async () =>
|
||||
{
|
||||
await ServerSpeedtest(ESpeedActionType.FastRealping);
|
||||
});
|
||||
MixedTestServerCmd = ReactiveCommand.CreateFromTask(async () =>
|
||||
{
|
||||
await ServerSpeedtest(ESpeedActionType.Mixedtest);
|
||||
|
@ -729,6 +734,12 @@ public class ProfilesViewModel : MyReactiveObject
|
|||
{
|
||||
SelectedProfiles = ProfileItems;
|
||||
}
|
||||
else if (actionType == ESpeedActionType.FastRealping)
|
||||
{
|
||||
SelectedProfiles = ProfileItems;
|
||||
actionType = ESpeedActionType.Realping;
|
||||
}
|
||||
|
||||
var lstSelected = await GetProfileItems(false);
|
||||
if (lstSelected == null)
|
||||
{
|
||||
|
|
|
@ -49,6 +49,13 @@
|
|||
</Button.Content>
|
||||
</Button>
|
||||
|
||||
<TextBox
|
||||
x:Name="txtServerFilter"
|
||||
Width="200"
|
||||
Margin="{StaticResource MarginLr4}"
|
||||
VerticalContentAlignment="Center"
|
||||
Watermark="{x:Static resx:ResUI.MsgServerTitle}" />
|
||||
|
||||
<Button
|
||||
x:Name="btnAutofitColumnWidth"
|
||||
Margin="{StaticResource MarginLr4}"
|
||||
|
@ -59,12 +66,16 @@
|
|||
</Button.Content>
|
||||
</Button>
|
||||
|
||||
<TextBox
|
||||
x:Name="txtServerFilter"
|
||||
Width="200"
|
||||
<Button
|
||||
x:Name="btnFastRealPing"
|
||||
Margin="{StaticResource MarginLr4}"
|
||||
VerticalContentAlignment="Center"
|
||||
Watermark="{x:Static resx:ResUI.MsgServerTitle}" />
|
||||
Classes="IconButton Success"
|
||||
ToolTip.Tip="{x:Static resx:ResUI.menuFastRealPing}">
|
||||
<Button.Content>
|
||||
<PathIcon Data="{StaticResource SemiIconBolt}" />
|
||||
</Button.Content>
|
||||
</Button>
|
||||
|
||||
</WrapPanel>
|
||||
<DataGrid
|
||||
x:Name="lstProfiles"
|
||||
|
@ -127,7 +138,8 @@
|
|||
<Separator />
|
||||
<MenuItem x:Name="menuExport2ShareUrl" Header="{x:Static resx:ResUI.menuExport2ShareUrl}" />
|
||||
<MenuItem x:Name="menuExport2ShareUrlBase64" Header="{x:Static resx:ResUI.menuExport2ShareUrlBase64}" />
|
||||
</MenuItem><Separator />
|
||||
</MenuItem>
|
||||
<Separator />
|
||||
<MenuItem Header="{x:Static resx:ResUI.menuGenGroupMultipleServer}">
|
||||
<MenuItem x:Name="menuGenGroupMultipleServerXrayRandom" Header="{x:Static resx:ResUI.menuGenGroupMultipleServerXrayRandom}" />
|
||||
<MenuItem x:Name="menuGenGroupMultipleServerXrayRoundRobin" Header="{x:Static resx:ResUI.menuGenGroupMultipleServerXrayRoundRobin}" />
|
||||
|
|
|
@ -80,6 +80,7 @@ public partial class ProfilesView : ReactiveUserControl<ProfilesViewModel>
|
|||
this.BindCommand(ViewModel, vm => vm.SpeedServerCmd, v => v.menuSpeedServer).DisposeWith(disposables);
|
||||
this.BindCommand(ViewModel, vm => vm.SortServerResultCmd, v => v.menuSortServerResult).DisposeWith(disposables);
|
||||
this.BindCommand(ViewModel, vm => vm.RemoveInvalidServerResultCmd, v => v.menuRemoveInvalidServerResult).DisposeWith(disposables);
|
||||
this.BindCommand(ViewModel, vm => vm.FastRealPingCmd, v => v.btnFastRealPing).DisposeWith(disposables);
|
||||
|
||||
//servers export
|
||||
this.BindCommand(ViewModel, vm => vm.Export2ClientConfigCmd, v => v.menuExport2ClientConfig).DisposeWith(disposables);
|
||||
|
|
|
@ -57,16 +57,6 @@
|
|||
<materialDesign:PackIcon VerticalAlignment="Center" Kind="Plus" />
|
||||
</Button>
|
||||
|
||||
<Button
|
||||
x:Name="btnAutofitColumnWidth"
|
||||
Width="30"
|
||||
Height="30"
|
||||
Margin="{StaticResource MarginLeftRight8}"
|
||||
AutomationProperties.Name="{x:Static resx:ResUI.menuProfileAutofitColumnWidth}"
|
||||
Style="{StaticResource MaterialDesignFloatingActionMiniLightButton}"
|
||||
ToolTip="{x:Static resx:ResUI.menuProfileAutofitColumnWidth}">
|
||||
<materialDesign:PackIcon VerticalAlignment="Center" Kind="ArrowSplitVertical" />
|
||||
</Button>
|
||||
<TextBox
|
||||
x:Name="txtServerFilter"
|
||||
Width="200"
|
||||
|
@ -76,6 +66,27 @@
|
|||
materialDesign:TextFieldAssist.HasClearButton="True"
|
||||
AutomationProperties.Name="{x:Static resx:ResUI.MsgServerTitle}"
|
||||
Style="{StaticResource DefTextBox}" />
|
||||
|
||||
<Button
|
||||
x:Name="btnAutofitColumnWidth"
|
||||
Width="30"
|
||||
Height="30"
|
||||
Margin="{StaticResource MarginLeftRight4}"
|
||||
AutomationProperties.Name="{x:Static resx:ResUI.menuProfileAutofitColumnWidth}"
|
||||
Style="{StaticResource MaterialDesignFloatingActionMiniLightButton}"
|
||||
ToolTip="{x:Static resx:ResUI.menuProfileAutofitColumnWidth}">
|
||||
<materialDesign:PackIcon VerticalAlignment="Center" Kind="ArrowSplitVertical" />
|
||||
</Button>
|
||||
|
||||
<Button
|
||||
x:Name="btnFastRealPing"
|
||||
Width="30"
|
||||
Height="30"
|
||||
Margin="{StaticResource MarginLeftRight4}"
|
||||
Style="{StaticResource MaterialDesignFloatingActionMiniLightButton}"
|
||||
ToolTip="{x:Static resx:ResUI.menuFastRealPing}">
|
||||
<materialDesign:PackIcon VerticalAlignment="Center" Kind="LightningBolt" />
|
||||
</Button>
|
||||
</WrapPanel>
|
||||
<DataGrid
|
||||
x:Name="lstProfiles"
|
||||
|
|
|
@ -77,6 +77,7 @@ public partial class ProfilesView
|
|||
this.BindCommand(ViewModel, vm => vm.SpeedServerCmd, v => v.menuSpeedServer).DisposeWith(disposables);
|
||||
this.BindCommand(ViewModel, vm => vm.SortServerResultCmd, v => v.menuSortServerResult).DisposeWith(disposables);
|
||||
this.BindCommand(ViewModel, vm => vm.RemoveInvalidServerResultCmd, v => v.menuRemoveInvalidServerResult).DisposeWith(disposables);
|
||||
this.BindCommand(ViewModel, vm => vm.FastRealPingCmd, v => v.btnFastRealPing).DisposeWith(disposables);
|
||||
|
||||
//servers export
|
||||
this.BindCommand(ViewModel, vm => vm.Export2ClientConfigCmd, v => v.menuExport2ClientConfig).DisposeWith(disposables);
|
||||
|
|
Loading…
Reference in a new issue