Compare commits

...

63 Commits

Author SHA1 Message Date
2dust 3c2da0a225 up 6.29 2023-09-24 16:17:54 +08:00
2dust 528400579a Merge pull request #4255 from crazypeace/master
解决当订阅数量较多时,占用窗口空间太大的问题
2023-09-22 14:57:07 +08:00
2dust 521ce1a487 Merge pull request #4235 from YheonYeung/patch-1
修正繁中用詞
2023-09-22 14:56:17 +08:00
crazypeace 34c6c953ac 考虑在更大的屏幕上可以接受更高尺寸的占用
https://zelikk.blogspot.com/2023/09/v2rayn-lstgroup-maxheight.html
2023-09-09 15:59:08 +08:00
crazypeace 40fbbc7c58 设置 订阅/分组 显示空间的最大高度
避免占用过大的窗口面积
https://github.com/2dust/v2rayN/issues/4224
2023-09-09 15:00:59 +08:00
YheonYeung 534c329970 Update ResUI.zh-Hant.resx 2023-09-01 23:42:07 +08:00
YheonYeung 328d728257 Update ResUI.zh-Hant.resx 2023-09-01 23:39:16 +08:00
YheonYeung fae6d42758 Update ResUI.zh-Hant.resx 2023-09-01 23:33:39 +08:00
YheonYeung 27693f6d23 Update ResUI.zh-Hant.resx 2023-09-01 23:31:24 +08:00
YheonYeung 89c4bab5b9 Update ResUI.zh-Hant.resx 2023-09-01 23:29:19 +08:00
YheonYeung 9d2ff04838 Update ResUI.zh-Hant.resx 2023-09-01 23:27:15 +08:00
YheonYeung cf00243107 Update ResUI.zh-Hant.resx 2023-09-01 23:25:12 +08:00
YheonYeung e8019ba7a5 修正繁中用詞 2023-09-01 23:21:10 +08:00
2dust 4f30e3f0e3 Merge pull request #4149 from eltociear/patch-1
fix typo in MainForm.cs
2023-08-02 10:15:55 +08:00
Ikko Eltociear Ashimine 047d08470f fix typo in MainForm.cs
entryOuputPath -> entryOutputPath
2023-08-02 00:33:10 +09:00
2dust 9643695389 Merge pull request #4144 from chika0801/master
修正 juicity 启动参数少了 run
2023-07-31 09:21:33 +08:00
chika0801 5cabec86e7 修正 juicity 启动参数少了 run
它的客户端启动参数是 ./juicity-client run -c config.json

https://github.com/juicity/juicity/blob/main/cmd/client/README.md#run
2023-07-30 21:33:12 +08:00
2dust f2d0e37255 Merge pull request #4141 from chika0801/master
添加 juicity 作为自定义 core
2023-07-30 18:26:36 +08:00
chika0801 9560851a3f add juicity 2023-07-30 16:37:44 +08:00
chika0801 4aeec1caa1 add juicity 2023-07-30 16:36:48 +08:00
chika0801 ae45b1ef44 Update Global.cs 2023-07-30 16:33:11 +08:00
2dust aad1b087c9 Up 6.28 2023-07-30 14:30:20 +08:00
2dust b69c581fa1 Merge pull request #4123 from openGiraffes/master
繁体字典添加
2023-07-30 11:08:24 +08:00
2dust 9eb4d90cd6 Merge pull request #4122 from yu0A/master
Fix timestamps in log TextBox
2023-07-30 11:08:14 +08:00
Ding 958567c2c5 繁體支持 2023-07-24 10:55:45 +08:00
yu0A f1fc4583ed fix #4121 2023-07-23 21:20:36 +08:00
Ding f7bfd5f766 upload part1 2023-07-21 17:57:16 +08:00
2dust aadc3c216a Merge pull request #4055 from meaqese/meaqese-patch-1
Russian lang improvements
2023-07-10 15:27:43 +08:00
2dust 6fd2499daf Merge pull request #4048 from crazypeace/master
解决窗口尺寸大于屏幕尺寸的问题 #
2023-07-10 15:26:20 +08:00
meaqese f0405f1c5d imporvements 2 2023-07-04 21:16:01 +03:00
crazypeace 1914cb3994 Delete dotnet-desktop.yml 2023-07-03 01:50:27 +08:00
crazypeace ab38fb572d Update dotnet-desktop.yml 2023-07-02 19:52:42 +08:00
crazypeace 46d7128a6e Update dotnet-desktop.yml 2023-07-02 19:49:09 +08:00
crazypeace 0821884ff3 Create dotnet-desktop.yml 2023-07-02 19:45:15 +08:00
crazypeace 62233281ef 与上游一致 2023-07-02 12:40:01 +08:00
crazypeace 39504502af Update AddServerWindow.xaml.cs 2023-07-02 12:22:17 +08:00
crazypeace f97530a671 设置窗口的尺寸不大于屏幕的尺寸 2023-07-02 12:15:51 +08:00
crazypeace 0fe7d5e598 Update AddServerWindow.xaml.cs 2023-07-01 04:53:42 +08:00
crazypeace 527362dc9f 初始化窗口宽和高的最大值, 依据工作区的宽和高.
解决在笔记本屏幕上因为DPI较高导致窗口显示不全的问题.
2023-06-30 13:29:43 +08:00
meaqese 1023426c8d Russian imporvements 2023-06-18 12:34:53 +03:00
2dust 4458fd7541 Up 6.27 2023-06-18 16:44:03 +08:00
2dust f0b03f59ff Up PackageReference 2023-06-18 16:33:18 +08:00
2dust d5b17b3cfb Update MainWindowViewModel.cs 2023-06-18 16:23:03 +08:00
2dust 9664d1d77f Fix update the pre version 2023-06-18 16:18:50 +08:00
2dust d329646a52 Merge pull request #3989 from hvvvvvvv/v2rayN_2
Update HotkeyHandler.cs
2023-06-18 09:43:50 +08:00
2dust 8eafe72bb0 Merge pull request #3943 from hsbtr/master
feat: pac rule add chat.openai.com
2023-06-18 09:43:31 +08:00
2dust c38a0bde65 Optimize interface 2023-06-18 09:42:45 +08:00
2dust eef5d3cc16 Update DNSSettingWindow.xaml.cs
https://github.com/2dust/v2rayN/issues/3992
2023-06-18 08:49:04 +08:00
咸鱼而已 59ada594a5 Merge pull request #1 from hvvvvvvv/hvvvvvvv-patch-1
Update HotkeyHandler.cs
2023-06-15 17:12:03 +08:00
咸鱼而已 5ec1d18143 Update HotkeyHandler.cs
fix bug
2023-06-15 16:58:04 +08:00
2dust fd1e1bb6bf AddServerView CanResize 2023-06-11 19:57:00 +08:00
2dust 5d545d8a85 bug fixes 2023-06-08 20:36:13 +08:00
liuyan e38bc45527 feat: pac rule add chat.openai.com 2023-06-05 17:42:06 +08:00
2dust 1b11425acd up 6.26 2023-06-04 20:31:05 +08:00
2dust 1e67850a80 Add inet6_address for sing-box 2023-06-04 20:30:00 +08:00
2dust 975f89456f Update ProtosLib.csproj 2023-06-04 17:13:37 +08:00
2dust e267b4b379 Update v2rayN.csproj 2023-06-04 17:13:34 +08:00
2dust 2fd21690a5 Enable extra inbound for tun mode 2023-06-04 17:11:37 +08:00
2dust b176ad03aa Remove ToolTipText 2023-06-04 16:30:42 +08:00
2dust 152c4802d0 Fix the bug for flow is empty 2023-06-04 16:24:48 +08:00
2dust 8adbc57f23 remove statisticsFreshRate 2023-06-04 16:14:17 +08:00
2dust d263a78db8 bug fixes 2023-06-04 15:50:38 +08:00
2dust b94a065c06 Optimize Subscription 2023-06-04 15:50:25 +08:00
47 changed files with 1480 additions and 218 deletions
+2 -1
View File
@@ -5982,7 +5982,8 @@ var rules = [
"zyzc9.com", "zyzc9.com",
"zzcartoon.com", "zzcartoon.com",
"zzcloud.me", "zzcloud.me",
"zzux.com" "zzux.com",
"chat.openai.com"
] ]
] ]
]; ];
+2 -2
View File
@@ -9,8 +9,8 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Google.Protobuf" Version="3.23.0" /> <PackageReference Include="Google.Protobuf" Version="3.23.3" />
<PackageReference Include="Grpc.Net.Client" Version="2.53.0" /> <PackageReference Include="Grpc.Net.Client" Version="2.54.0" />
<PackageReference Include="Grpc.Tools" Version="2.54.0"> <PackageReference Include="Grpc.Tools" Version="2.54.0">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+10
View File
@@ -70,5 +70,15 @@ namespace v2rayN.Base
return value; return value;
} }
} }
public static string UpperFirstChar(this string value)
{
if (string.IsNullOrEmpty(value))
{
return string.Empty;
}
return char.ToUpper(value[0]) + value.Substring(1);
}
} }
} }
+3 -2
View File
@@ -22,6 +22,7 @@
public const string geoUrl = "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/{0}.dat"; public const string geoUrl = "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/{0}.dat";
public const string singboxGeoUrl = "https://github.com/soffchen/sing-{0}/releases/latest/download/{0}.db"; public const string singboxGeoUrl = "https://github.com/soffchen/sing-{0}/releases/latest/download/{0}.db";
public const string SpeedPingTestUrl = @"https://www.google.com/generate_204"; public const string SpeedPingTestUrl = @"https://www.google.com/generate_204";
public const string juicityCoreUrl = "https://github.com/juicity/juicity/releases";
public const string CustomRoutingListUrl = @"https://raw.githubusercontent.com/2dust/v2rayCustomRoutingList/master/"; public const string CustomRoutingListUrl = @"https://raw.githubusercontent.com/2dust/v2rayCustomRoutingList/master/";
public const string PromotionUrl = @"aHR0cHM6Ly85LjIzNDQ1Ni54eXovYWJjLmh0bWw="; public const string PromotionUrl = @"aHR0cHM6Ly85LjIzNDQ1Ni54eXovYWJjLmh0bWw=";
@@ -149,7 +150,7 @@
public static readonly List<string> allowInsecures = new() { "true", "false", "" }; public static readonly List<string> allowInsecures = new() { "true", "false", "" };
public static readonly List<string> domainStrategy4Freedoms = new() { "AsIs", "UseIP", "UseIPv4", "UseIPv6", "" }; public static readonly List<string> domainStrategy4Freedoms = new() { "AsIs", "UseIP", "UseIPv4", "UseIPv6", "" };
public static readonly List<string> Languages = new() { "zh-Hans", "en", "fa-Ir", "ru" }; public static readonly List<string> Languages = new() { "zh-Hans", "zh-Hant", "en", "fa-Ir", "ru" };
public static readonly List<string> alpns = new() { "h2", "http/1.1", "h2,http/1.1", "" }; public static readonly List<string> alpns = new() { "h2", "http/1.1", "h2,http/1.1", "" };
public static readonly List<string> LogLevel = new() { "debug", "info", "warning", "error", "none" }; public static readonly List<string> LogLevel = new() { "debug", "info", "warning", "error", "none" };
public static readonly List<string> InboundTags = new() { "socks", "http", "socks2", "http2" }; public static readonly List<string> InboundTags = new() { "socks", "http", "socks2", "http2" };
@@ -170,4 +171,4 @@
#endregion global variable #endregion global variable
} }
} }
+18 -9
View File
@@ -140,7 +140,6 @@ namespace v2rayN.Handler
config.guiItem = new() config.guiItem = new()
{ {
enableStatistics = false, enableStatistics = false,
statisticsFreshRate = 1,
}; };
} }
if (config.uiItem == null) if (config.uiItem == null)
@@ -185,11 +184,6 @@ namespace v2rayN.Handler
config.speedTestItem.speedPingTestUrl = Global.SpeedPingTestUrl; config.speedTestItem.speedPingTestUrl = Global.SpeedPingTestUrl;
} }
if (config.guiItem.statisticsFreshRate is > 100 or < 1)
{
config.guiItem.statisticsFreshRate = 1;
}
if (config.mux4Sbox == null) if (config.mux4Sbox == null)
{ {
config.mux4Sbox = new() config.mux4Sbox = new()
@@ -331,7 +325,6 @@ namespace v2rayN.Handler
config.guiItem = new() config.guiItem = new()
{ {
enableStatistics = configOld.enableStatistics, enableStatistics = configOld.enableStatistics,
statisticsFreshRate = configOld.statisticsFreshRate,
keepOlderDedupl = configOld.keepOlderDedupl, keepOlderDedupl = configOld.keepOlderDedupl,
ignoreGeoUpdateCore = configOld.ignoreGeoUpdateCore, ignoreGeoUpdateCore = configOld.ignoreGeoUpdateCore,
autoUpdateInterval = configOld.autoUpdateInterval, autoUpdateInterval = configOld.autoUpdateInterval,
@@ -376,6 +369,10 @@ namespace v2rayN.Handler
{ {
return -1; return -1;
} }
if (profileItem.id.IsNullOrEmpty())
{
return -1;
}
AddServerCommon(ref config, profileItem, toFile); AddServerCommon(ref config, profileItem, toFile);
@@ -597,7 +594,7 @@ namespace v2rayN.Handler
profileItem.configType = EConfigType.Custom; profileItem.configType = EConfigType.Custom;
if (Utils.IsNullOrEmpty(profileItem.remarks)) if (Utils.IsNullOrEmpty(profileItem.remarks))
{ {
profileItem.remarks = $"import custom@{DateTime.Now.ToShortDateString()}"; profileItem.remarks = $"import custom@{DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")}";
} }
AddServerCommon(ref config, profileItem, true); AddServerCommon(ref config, profileItem, true);
@@ -643,6 +640,10 @@ namespace v2rayN.Handler
{ {
return -1; return -1;
} }
if (profileItem.id.IsNullOrEmpty())
{
return -1;
}
AddServerCommon(ref config, profileItem, toFile); AddServerCommon(ref config, profileItem, toFile);
@@ -682,6 +683,10 @@ namespace v2rayN.Handler
{ {
profileItem.streamSecurity = Global.StreamSecurity; profileItem.streamSecurity = Global.StreamSecurity;
} }
if (profileItem.id.IsNullOrEmpty())
{
return -1;
}
AddServerCommon(ref config, profileItem, toFile); AddServerCommon(ref config, profileItem, toFile);
@@ -807,6 +812,10 @@ namespace v2rayN.Handler
{ {
profileItem.flow = Global.flows.First(); profileItem.flow = Global.flows.First();
} }
if (profileItem.id.IsNullOrEmpty())
{
return -1;
}
AddServerCommon(ref config, profileItem, toFile); AddServerCommon(ref config, profileItem, toFile);
@@ -1034,7 +1043,7 @@ namespace v2rayN.Handler
addStatus = AddVlessServer(ref config, profileItem, false); addStatus = AddVlessServer(ref config, profileItem, false);
} }
if (addStatus == 0 && profileItem.port > 0) if (addStatus == 0)
{ {
countServers++; countServers++;
lstAdd.Add(profileItem); lstAdd.Add(profileItem);
+32 -21
View File
@@ -107,29 +107,18 @@ namespace v2rayN.Handler
{ {
try try
{ {
if (_config.tunModeItem.enableTun) singboxConfig.inbounds.Clear();
if (!_config.tunModeItem.enableTun || (_config.tunModeItem.enableTun && _config.tunModeItem.enableExInbound))
{ {
singboxConfig.inbounds.Clear(); var inbound = new Inbound4Sbox()
if (_config.tunModeItem.mtu <= 0)
{ {
_config.tunModeItem.mtu = Convert.ToInt32(Global.TunMtus[0]); type = Global.InboundSocks,
} tag = Global.InboundSocks,
if (Utils.IsNullOrEmpty(_config.tunModeItem.stack)) listen = Global.Loopback,
{ };
_config.tunModeItem.stack = Global.TunStacks[0]; singboxConfig.inbounds.Add(inbound);
}
var tunInbound = Utils.FromJson<Inbound4Sbox>(Utils.GetEmbedText(Global.TunSingboxInboundFileName));
tunInbound.mtu = _config.tunModeItem.mtu;
tunInbound.strict_route = _config.tunModeItem.strictRoute;
tunInbound.stack = _config.tunModeItem.stack;
singboxConfig.inbounds.Add(tunInbound);
}
else
{
var inbound = singboxConfig.inbounds[0];
inbound.listen_port = LazyConfig.Instance.GetLocalPort(Global.InboundSocks); inbound.listen_port = LazyConfig.Instance.GetLocalPort(Global.InboundSocks);
inbound.sniff = _config.inbound[0].sniffingEnabled; inbound.sniff = _config.inbound[0].sniffingEnabled;
inbound.sniff_override_destination = _config.inbound[0].routeOnly ? false : _config.inbound[0].sniffingEnabled; inbound.sniff_override_destination = _config.inbound[0].routeOnly ? false : _config.inbound[0].sniffingEnabled;
@@ -174,6 +163,25 @@ namespace v2rayN.Handler
} }
} }
} }
if (_config.tunModeItem.enableTun)
{
if (_config.tunModeItem.mtu <= 0)
{
_config.tunModeItem.mtu = Convert.ToInt32(Global.TunMtus[0]);
}
if (Utils.IsNullOrEmpty(_config.tunModeItem.stack))
{
_config.tunModeItem.stack = Global.TunStacks[0];
}
var tunInbound = Utils.FromJson<Inbound4Sbox>(Utils.GetEmbedText(Global.TunSingboxInboundFileName));
tunInbound.mtu = _config.tunModeItem.mtu;
tunInbound.strict_route = _config.tunModeItem.strictRoute;
tunInbound.stack = _config.tunModeItem.stack;
singboxConfig.inbounds.Add(tunInbound);
}
} }
catch (Exception ex) catch (Exception ex)
{ {
@@ -255,7 +263,6 @@ namespace v2rayN.Handler
outbound.type = Global.vlessProtocolLite; outbound.type = Global.vlessProtocolLite;
outbound.uuid = node.id; outbound.uuid = node.id;
outbound.flow = node.flow;
outbound.packet_encoding = "xudp"; outbound.packet_encoding = "xudp";
@@ -263,6 +270,10 @@ namespace v2rayN.Handler
{ {
outboundMux(node, outbound); outboundMux(node, outbound);
} }
else
{
outbound.flow = node.flow;
}
} }
else if (node.configType == EConfigType.Trojan) else if (node.configType == EConfigType.Trojan)
{ {
-2
View File
@@ -423,7 +423,6 @@ namespace v2rayN.Handler
usersItem = vnextItem.users[0]; usersItem = vnextItem.users[0];
} }
usersItem.id = node.id; usersItem.id = node.id;
usersItem.flow = string.Empty;
usersItem.email = Global.userEMail; usersItem.email = Global.userEMail;
usersItem.encryption = node.security; usersItem.encryption = node.security;
@@ -462,7 +461,6 @@ namespace v2rayN.Handler
serversItem.address = node.address; serversItem.address = node.address;
serversItem.port = node.port; serversItem.port = node.port;
serversItem.password = node.id; serversItem.password = node.id;
serversItem.flow = string.Empty;
serversItem.ota = false; serversItem.ota = false;
serversItem.level = 1; serversItem.level = 1;
+2 -2
View File
@@ -152,7 +152,7 @@ namespace v2rayN.Handler
private void CoreStart(ProfileItem node) private void CoreStart(ProfileItem node)
{ {
ShowMsg(false, string.Format(ResUI.StartService, DateTime.Now.ToString())); ShowMsg(false, string.Format(ResUI.StartService, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")));
ECoreType coreType; ECoreType coreType;
if (node.configType != EConfigType.Custom && _config.tunModeItem.enableTun) if (node.configType != EConfigType.Custom && _config.tunModeItem.enableTun)
@@ -201,7 +201,7 @@ namespace v2rayN.Handler
private int CoreStartViaString(string configStr) private int CoreStartViaString(string configStr)
{ {
ShowMsg(false, string.Format(ResUI.StartService, DateTime.Now.ToString())); ShowMsg(false, string.Format(ResUI.StartService, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")));
try try
{ {
+3 -3
View File
@@ -113,9 +113,9 @@ namespace v2rayN.Handler
var mdif = (KeyModifiers)_fsModifiers; var mdif = (KeyModifiers)_fsModifiers;
var key = KeyInterop.KeyFromVirtualKey(_vkey); var key = KeyInterop.KeyFromVirtualKey(_vkey);
if ((mdif | KeyModifiers.Ctrl) == KeyModifiers.Ctrl) _hotkeyStr.Append($"{KeyModifiers.Ctrl}+"); if ((mdif & KeyModifiers.Ctrl) == KeyModifiers.Ctrl) _hotkeyStr.Append($"{KeyModifiers.Ctrl}+");
if ((mdif | KeyModifiers.Alt) == KeyModifiers.Alt) _hotkeyStr.Append($"{KeyModifiers.Alt}+"); if ((mdif & KeyModifiers.Alt) == KeyModifiers.Alt) _hotkeyStr.Append($"{KeyModifiers.Alt}+");
if ((mdif | KeyModifiers.Shift) == KeyModifiers.Shift) _hotkeyStr.Append($"{KeyModifiers.Shift}+"); if ((mdif & KeyModifiers.Shift) == KeyModifiers.Shift) _hotkeyStr.Append($"{KeyModifiers.Shift}+");
_hotkeyStr.Append(key.ToString()); _hotkeyStr.Append(key.ToString());
foreach (var name in _hotkeyTriggerDic[hotkeycode]) foreach (var name in _hotkeyTriggerDic[hotkeycode])
+9 -1
View File
@@ -353,8 +353,16 @@ namespace v2rayN.Handler
match = "sing-box", match = "sing-box",
versionArg = "version", versionArg = "version",
}); });
coreInfos.Add(new CoreInfo
{
coreType = ECoreType.juicity,
coreExes = new List<string> { "juicity-client", "juicity" },
arguments = "run -c config.json",
coreUrl = Global.juicityCoreUrl
});
} }
#endregion Core Type #endregion Core Type
} }
} }
+1 -1
View File
@@ -26,7 +26,7 @@ namespace v2rayN.Handler
public void SendMessage(string msg, bool time) public void SendMessage(string msg, bool time)
{ {
msg = $"{DateTime.Now} {msg}"; msg = $"{DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")} {msg}";
MessageBus.Current.SendMessage(msg, "MsgView"); MessageBus.Current.SendMessage(msg, "MsgView");
} }
} }
+1 -1
View File
@@ -629,7 +629,7 @@ namespace v2rayN.Handler
server.security = details.Groups["method"].Value; server.security = details.Groups["method"].Value;
server.id = details.Groups["password"].Value; server.id = details.Groups["password"].Value;
server.address = details.Groups["hostname"].Value; server.address = details.Groups["hostname"].Value;
server.port = int.Parse(details.Groups["port"].Value); server.port = Utils.ToInt(details.Groups["port"].Value);
return server; return server;
} }
@@ -71,6 +71,7 @@ namespace v2rayN.Handler
webSocket.Abort(); webSocket.Abort();
webSocket = null; webSocket = null;
Init(); Init();
continue;
} }
if (webSocket.State != WebSocketState.Open) if (webSocket.State != WebSocketState.Open)
+1 -2
View File
@@ -61,8 +61,7 @@ namespace v2rayN.Handler
_updateFunc(server); _updateFunc(server);
} }
} }
var sleep = _config.guiItem.statisticsFreshRate < 1 ? 1 : _config.guiItem.statisticsFreshRate; await Task.Delay(1000);
await Task.Delay(1000 * sleep);
await _channel.ConnectAsync(); await _channel.ConnectAsync();
} }
catch catch
+6 -2
View File
@@ -154,7 +154,7 @@ namespace v2rayN.Handler
_updateFunc = update; _updateFunc = update;
_updateFunc(false, ResUI.MsgUpdateSubscriptionStart); _updateFunc(false, ResUI.MsgUpdateSubscriptionStart);
var subItem = LazyConfig.Instance.SubItems(); var subItem = LazyConfig.Instance.SubItems().OrderBy(t => t.sort).ToList();
if (subItem == null || subItem.Count <= 0) if (subItem == null || subItem.Count <= 0)
{ {
@@ -175,6 +175,10 @@ namespace v2rayN.Handler
//_updateFunc(false, $"{hashCode}{ResUI.MsgNoValidSubscription}"); //_updateFunc(false, $"{hashCode}{ResUI.MsgNoValidSubscription}");
continue; continue;
} }
if (!url.StartsWith(Global.httpsProtocol) && !url.StartsWith(Global.httpProtocol))
{
continue;
}
if (item.enabled == false) if (item.enabled == false)
{ {
_updateFunc(false, $"{hashCode}{ResUI.MsgSkipSubscriptionUpdate}"); _updateFunc(false, $"{hashCode}{ResUI.MsgSkipSubscriptionUpdate}");
@@ -510,7 +514,7 @@ namespace v2rayN.Handler
throw new ArgumentException("Type"); throw new ArgumentException("Type");
} }
if (curVersion >= version) if (curVersion >= version && version != new SemanticVersion(0, 0, 0))
{ {
AbsoluteCompleted?.Invoke(this, new ResultEventArgs(false, message)); AbsoluteCompleted?.Invoke(this, new ResultEventArgs(false, message));
return; return;
+2 -3
View File
@@ -88,8 +88,6 @@ namespace v2rayN.Mode
public bool enableStatistics { get; set; } public bool enableStatistics { get; set; }
public int statisticsFreshRate { get; set; }
public bool keepOlderDedupl { get; set; } public bool keepOlderDedupl { get; set; }
public bool ignoreGeoUpdateCore { get; set; } = true; public bool ignoreGeoUpdateCore { get; set; } = true;
@@ -162,9 +160,10 @@ namespace v2rayN.Mode
public class TunModeItem public class TunModeItem
{ {
public bool enableTun { get; set; } public bool enableTun { get; set; }
public bool strictRoute { get; set; } public bool strictRoute { get; set; } = true;
public string stack { get; set; } public string stack { get; set; }
public int mtu { get; set; } public int mtu { get; set; }
public bool enableExInbound { get; set; }
} }
[Serializable] [Serializable]
+2 -1
View File
@@ -12,6 +12,7 @@
naiveproxy = 22, naiveproxy = 22,
tuic = 23, tuic = 23,
sing_box = 24, sing_box = 24,
juicity = 25,
v2rayN = 99 v2rayN = 99
} }
} }
+1 -1
View File
@@ -185,7 +185,7 @@ namespace v2rayN.Mode
/// <summary> /// <summary>
/// VLESS /// VLESS
/// </summary> /// </summary>
public string flow { get; set; } public string? flow { get; set; }
} }
public class Sniffing4Ray public class Sniffing4Ray
-9
View File
@@ -2752,15 +2752,6 @@ namespace v2rayN.Resx {
} }
} }
/// <summary>
/// 查找类似 Statistics freshrate (second) 的本地化字符串。
/// </summary>
public static string TbSettingsStatisticsFreshRate {
get {
return ResourceManager.GetString("TbSettingsStatisticsFreshRate", resourceCulture);
}
}
/// <summary> /// <summary>
/// 查找类似 Subscription conversion Url 的本地化字符串。 /// 查找类似 Subscription conversion Url 的本地化字符串。
/// </summary> /// </summary>
-3
View File
@@ -793,9 +793,6 @@
<data name="TbSettingsStatistics" xml:space="preserve"> <data name="TbSettingsStatistics" xml:space="preserve">
<value>فعال کردن آمار (نیاز به راه اندازی مجدد)</value> <value>فعال کردن آمار (نیاز به راه اندازی مجدد)</value>
</data> </data>
<data name="TbSettingsStatisticsFreshRate" xml:space="preserve">
<value>نرخ تازه سازی آمار (ثانیه)</value>
</data>
<data name="TbSettingsSubConvert" xml:space="preserve"> <data name="TbSettingsSubConvert" xml:space="preserve">
<value>Subscription conversion Url</value> <value>Subscription conversion Url</value>
</data> </data>
-3
View File
@@ -796,9 +796,6 @@
<data name="TbSettingsStatistics" xml:space="preserve"> <data name="TbSettingsStatistics" xml:space="preserve">
<value>Enable Statistics (Require restart)</value> <value>Enable Statistics (Require restart)</value>
</data> </data>
<data name="TbSettingsStatisticsFreshRate" xml:space="preserve">
<value>Statistics freshrate (second)</value>
</data>
<data name="TbSettingsSubConvert" xml:space="preserve"> <data name="TbSettingsSubConvert" xml:space="preserve">
<value>Subscription conversion Url</value> <value>Subscription conversion Url</value>
</data> </data>
+37 -19
View File
@@ -317,7 +317,7 @@
<value>Сканирование URL-адреса импорта успешна.</value> <value>Сканирование URL-адреса импорта успешна.</value>
</data> </data>
<data name="TestMeOutput" xml:space="preserve"> <data name="TestMeOutput" xml:space="preserve">
<value>Пинг текущей службы: {0} мс</value> <value>Задержка текущего сервера: {0} мс</value>
</data> </data>
<data name="OperationSuccess" xml:space="preserve"> <data name="OperationSuccess" xml:space="preserve">
<value>Операция успешна</value> <value>Операция успешна</value>
@@ -335,7 +335,7 @@
<value>Примечания</value> <value>Примечания</value>
</data> </data>
<data name="LvUrl" xml:space="preserve"> <data name="LvUrl" xml:space="preserve">
<value>Url(Необязательно)</value> <value>URL (необязательно)</value>
</data> </data>
<data name="LvCount" xml:space="preserve"> <data name="LvCount" xml:space="preserve">
<value>Количество</value> <value>Количество</value>
@@ -506,7 +506,7 @@
<value>Тёмный режим</value> <value>Тёмный режим</value>
</data> </data>
<data name="TbSettingsFollowSystemTheme" xml:space="preserve"> <data name="TbSettingsFollowSystemTheme" xml:space="preserve">
<value>следить за системной темой</value> <value>Следить за системной темой</value>
</data> </data>
<data name="TbSettingsLanguage" xml:space="preserve"> <data name="TbSettingsLanguage" xml:space="preserve">
<value>Язык (требуется перезапуск)</value> <value>Язык (требуется перезапуск)</value>
@@ -533,19 +533,19 @@
<value>Очистить всю статистику</value> <value>Очистить всю статистику</value>
</data> </data>
<data name="menuPingServer" xml:space="preserve"> <data name="menuPingServer" xml:space="preserve">
<value>Проверить пинг серверов (Ctrl+P)</value> <value>Тест на задержку сервера (Ctrl+P)</value>
</data> </data>
<data name="menuRealPingServer" xml:space="preserve"> <data name="menuRealPingServer" xml:space="preserve">
<value>Тест на реальную задержку серверов (Ctrl+R)</value> <value>Тест на реальную задержку сервера (Ctrl+R)</value>
</data> </data>
<data name="menuSortServerResult" xml:space="preserve"> <data name="menuSortServerResult" xml:space="preserve">
<value>Сортировать по результату теста</value> <value>Сортировать по результату теста</value>
</data> </data>
<data name="menuSpeedServer" xml:space="preserve"> <data name="menuSpeedServer" xml:space="preserve">
<value>Проверить скорость загрузки серверов (Ctrl+T)</value> <value>Тест на скорость загрузки сервера (Ctrl+T)</value>
</data> </data>
<data name="menuTcpingServer" xml:space="preserve"> <data name="menuTcpingServer" xml:space="preserve">
<value>Тестировать сервера с tcping (Ctrl+O)</value> <value>Тест задержки с tcping (Ctrl+O)</value>
</data> </data>
<data name="menuTestMe" xml:space="preserve"> <data name="menuTestMe" xml:space="preserve">
<value>Проверить текущий статус службы</value> <value>Проверить текущий статус службы</value>
@@ -644,7 +644,7 @@
<value>Тип камуфляжа</value> <value>Тип камуфляжа</value>
</data> </data>
<data name="TbId" xml:space="preserve"> <data name="TbId" xml:space="preserve">
<value>UUID(id)</value> <value>UUID (id)</value>
</data> </data>
<data name="TbNetwork" xml:space="preserve"> <data name="TbNetwork" xml:space="preserve">
<value>Транспортный протокол сети</value> <value>Транспортный протокол сети</value>
@@ -656,7 +656,7 @@
<value>Порт</value> <value>Порт</value>
</data> </data>
<data name="TbRemarks" xml:space="preserve"> <data name="TbRemarks" xml:space="preserve">
<value>Псевдоним (примечания)</value> <value>Примечание</value>
</data> </data>
<data name="TbRequestHost" xml:space="preserve"> <data name="TbRequestHost" xml:space="preserve">
<value>Маскирующий домен (хост)</value> <value>Маскирующий домен (хост)</value>
@@ -719,16 +719,22 @@
<value>Разрешить подключения из локальной сети</value> <value>Разрешить подключения из локальной сети</value>
</data> </data>
<data name="TbSettingsAutoHideStartup" xml:space="preserve"> <data name="TbSettingsAutoHideStartup" xml:space="preserve">
<value>Auto hide startup</value> <value>Автоскрытие при автозапуске</value>
</data> </data>
<data name="TbSettingsAutoUpdateInterval" xml:space="preserve"> <data name="TbSettingsAutoUpdateInterval" xml:space="preserve">
<value>Интервал автоматического обновления Geo в часах</value> <value>Интервал автоматического обновления Geo в часах</value>
</data> </data>
<data name="LvAutoUpdateInterval" xml:space="preserve">
<value>Интервал автоматического обновления в минутах</value>
</data>
<data name="TbSettingsCore" xml:space="preserve"> <data name="TbSettingsCore" xml:space="preserve">
<value>Ядро: базовые настройки</value> <value>Ядро: базовые настройки</value>
</data> </data>
<data name="TbSettingsCoreDns" xml:space="preserve"> <data name="TbSettingsCoreDns" xml:space="preserve">
<value>V2ray DNS settings</value> <value>Настройки DNS V2ray</value>
</data>
<data name="TbSettingsCoreDnsSingbox" xml:space="preserve">
<value>Настройки DNS sing-box</value>
</data> </data>
<data name="TbSettingsCoreKcp" xml:space="preserve"> <data name="TbSettingsCoreKcp" xml:space="preserve">
<value>Ядро: настройки KCP</value> <value>Ядро: настройки KCP</value>
@@ -796,9 +802,6 @@
<data name="TbSettingsStatistics" xml:space="preserve"> <data name="TbSettingsStatistics" xml:space="preserve">
<value>Включить статистику (требуется перезагрузка)</value> <value>Включить статистику (требуется перезагрузка)</value>
</data> </data>
<data name="TbSettingsStatisticsFreshRate" xml:space="preserve">
<value>Частота обновления статистики в секундах</value>
</data>
<data name="TbSettingsSubConvert" xml:space="preserve"> <data name="TbSettingsSubConvert" xml:space="preserve">
<value>URL-адрес конверсии подписки</value> <value>URL-адрес конверсии подписки</value>
</data> </data>
@@ -809,7 +812,7 @@
<value>Включить протокол безопасности TLS v1.3 (обновление подписки)</value> <value>Включить протокол безопасности TLS v1.3 (обновление подписки)</value>
</data> </data>
<data name="TbSettingsTrayMenuServersLimit" xml:space="preserve"> <data name="TbSettingsTrayMenuServersLimit" xml:space="preserve">
<value>Tray right-click menu servers display limit</value> <value>Лимит серверов в меню трея</value>
</data> </data>
<data name="TbSettingsUdpEnabled" xml:space="preserve"> <data name="TbSettingsUdpEnabled" xml:space="preserve">
<value>Включить UDP</value> <value>Включить UDP</value>
@@ -953,7 +956,7 @@
<value>Поддержка DnsObject</value> <value>Поддержка DnsObject</value>
</data> </data>
<data name="SubUrlTips" xml:space="preserve"> <data name="SubUrlTips" xml:space="preserve">
<value>Group please leave blank here</value> <value>Необязательное поле</value>
</data> </data>
<data name="TipChangeRouting" xml:space="preserve"> <data name="TipChangeRouting" xml:space="preserve">
<value>Настройки маршрутизации изменены</value> <value>Настройки маршрутизации изменены</value>
@@ -965,7 +968,7 @@
<value>Только маршрут</value> <value>Только маршрут</value>
</data> </data>
<data name="menuMixedTestServer" xml:space="preserve"> <data name="menuMixedTestServer" xml:space="preserve">
<value>Тест задержки и скорости (Ctrl+E)</value> <value>Тест задержки и скорости всех серверов (Ctrl+E)</value>
</data> </data>
<data name="LvTestDelay" xml:space="preserve"> <data name="LvTestDelay" xml:space="preserve">
<value>Задержка (ms)</value> <value>Задержка (ms)</value>
@@ -986,7 +989,7 @@
<value>Импортировать старый конфиг guiNConfig</value> <value>Импортировать старый конфиг guiNConfig</value>
</data> </data>
<data name="TbEnableTunAs" xml:space="preserve"> <data name="TbEnableTunAs" xml:space="preserve">
<value>Включить интерфейс</value> <value>Режим VPN</value>
</data> </data>
<data name="TbSettingsNewPort4LAN" xml:space="preserve"> <data name="TbSettingsNewPort4LAN" xml:space="preserve">
<value>Новый порт для локальной сети</value> <value>Новый порт для локальной сети</value>
@@ -1054,4 +1057,19 @@
<data name="TbSettingsEnableHWA" xml:space="preserve"> <data name="TbSettingsEnableHWA" xml:space="preserve">
<value>Включить аппаратное ускорение (требуется перезагрузка)</value> <value>Включить аппаратное ускорение (требуется перезагрузка)</value>
</data> </data>
</root> <data name="menuRebootAsAdmin" xml:space="preserve">
<value>Перезагрузить как администратор</value>
</data>
<data name="menuDNSSetting" xml:space="preserve">
<value>Настройки DNS</value>
</data>
<data name="TbSettingsLogEnabledToFile" xml:space="preserve">
<value>Включить логгирование в файл</value>
</data>
<data name="TbSettingsSpeedTestTimeout" xml:space="preserve">
<value>Таймаут одиночного спидтеста</value>
</data>
<data name="TbSettingsSpeedTestUrl" xml:space="preserve">
<value>URL спидтеста</value>
</data>
</root>
-3
View File
@@ -796,9 +796,6 @@
<data name="TbSettingsStatistics" xml:space="preserve"> <data name="TbSettingsStatistics" xml:space="preserve">
<value>启用统计(实时网速显示,需重启)</value> <value>启用统计(实时网速显示,需重启)</value>
</data> </data>
<data name="TbSettingsStatisticsFreshRate" xml:space="preserve">
<value>统计刷新频率(单位秒)</value>
</data>
<data name="TbSettingsSubConvert" xml:space="preserve"> <data name="TbSettingsSubConvert" xml:space="preserve">
<value>订阅转换网址(可选)</value> <value>订阅转换网址(可选)</value>
</data> </data>
File diff suppressed because it is too large Load Diff
+10 -9
View File
@@ -1,11 +1,12 @@
{ {
"type":"tun", "type": "tun",
"tag":"tun-in", "tag": "tun-in",
"interface_name":"singbox_tun", "interface_name": "singbox_tun",
"inet4_address":"172.19.0.1/30", "inet4_address": "172.19.0.1/30",
"mtu":9000, "inet6_address": "fdfe:dcba:9876::1/126",
"auto_route":true, "mtu": 9000,
"strict_route":false, "auto_route": true,
"stack":"system", "strict_route": false,
"sniff":true "stack": "system",
"sniff": true
} }
+1 -1
View File
@@ -45,7 +45,7 @@ namespace v2rayN.Tool
this.major = 0; this.major = 0;
this.minor = 0; this.minor = 0;
this.patch = 0; this.patch = 0;
this.version = "0.0.0"; //this.version = "0.0.0";
} }
} }
@@ -167,8 +167,8 @@ namespace v2rayN.ViewModels
[Reactive] [Reactive]
public ImageSource AppIcon { get; set; } public ImageSource AppIcon { get; set; }
[Reactive] //[Reactive]
public bool BlShowTrayTip { get; set; } //public bool BlShowTrayTip { get; set; }
#endregion Menu #endregion Menu
@@ -210,8 +210,8 @@ namespace v2rayN.ViewModels
[Reactive] [Reactive]
public string RunningServerDisplay { get; set; } public string RunningServerDisplay { get; set; }
[Reactive] //[Reactive]
public string RunningServerToolTipText { get; set; } //public string RunningServerToolTipText { get; set; }
[Reactive] [Reactive]
public string RunningInfoDisplay { get; set; } public string RunningInfoDisplay { get; set; }
@@ -849,12 +849,12 @@ namespace v2rayN.ViewModels
{ {
var runningSummary = running.GetSummary(); var runningSummary = running.GetSummary();
RunningServerDisplay = $"{ResUI.menuServers}:{runningSummary}"; RunningServerDisplay = $"{ResUI.menuServers}:{runningSummary}";
RunningServerToolTipText = runningSummary; //RunningServerToolTipText = runningSummary;
} }
else else
{ {
RunningServerDisplay = RunningServerDisplay = ResUI.CheckServerSettings;
RunningServerToolTipText = ResUI.CheckServerSettings; //RunningServerToolTipText = ResUI.CheckServerSettings;
} }
})); }));
} }
@@ -1529,7 +1529,7 @@ namespace v2rayN.ViewModels
private void ChangeSystemProxyStatus(ESysProxyType type, bool blChange) private void ChangeSystemProxyStatus(ESysProxyType type, bool blChange)
{ {
SysProxyHandle.UpdateSysProxy(_config, _config.tunModeItem.enableTun ? true : false); SysProxyHandle.UpdateSysProxy(_config, _config.tunModeItem.enableTun ? true : false);
_noticeHandler?.SendMessage(ResUI.TipChangeSystemProxy, true); _noticeHandler?.SendMessage(ResUI.TipChangeSystemProxy + _config.sysProxyType.ToString(), true);
Application.Current.Dispatcher.Invoke((Action)(() => Application.Current.Dispatcher.Invoke((Action)(() =>
{ {
@@ -1686,7 +1686,7 @@ namespace v2rayN.ViewModels
} }
CurrentFontSize = _config.uiItem.currentFontSize; CurrentFontSize = _config.uiItem.currentFontSize;
CurrentLanguage = _config.uiItem.currentLanguage; CurrentLanguage = _config.uiItem.currentLanguage;
BlShowTrayTip = _config.uiItem.showTrayTip; //BlShowTrayTip = _config.uiItem.showTrayTip;
this.WhenAnyValue( this.WhenAnyValue(
x => x.ColorModeDark, x => x.ColorModeDark,
@@ -51,7 +51,6 @@ namespace v2rayN.ViewModels
[Reactive] public bool AutoRun { get; set; } [Reactive] public bool AutoRun { get; set; }
[Reactive] public bool EnableStatistics { get; set; } [Reactive] public bool EnableStatistics { get; set; }
[Reactive] public int StatisticsFreshRate { get; set; }
[Reactive] public bool KeepOlderDedupl { get; set; } [Reactive] public bool KeepOlderDedupl { get; set; }
[Reactive] public bool IgnoreGeoUpdateCore { get; set; } [Reactive] public bool IgnoreGeoUpdateCore { get; set; }
[Reactive] public bool EnableAutoAdjustMainLvColWidth { get; set; } [Reactive] public bool EnableAutoAdjustMainLvColWidth { get; set; }
@@ -141,7 +140,6 @@ namespace v2rayN.ViewModels
AutoRun = _config.guiItem.autoRun; AutoRun = _config.guiItem.autoRun;
EnableStatistics = _config.guiItem.enableStatistics; EnableStatistics = _config.guiItem.enableStatistics;
StatisticsFreshRate = _config.guiItem.statisticsFreshRate;
KeepOlderDedupl = _config.guiItem.keepOlderDedupl; KeepOlderDedupl = _config.guiItem.keepOlderDedupl;
IgnoreGeoUpdateCore = _config.guiItem.ignoreGeoUpdateCore; IgnoreGeoUpdateCore = _config.guiItem.ignoreGeoUpdateCore;
EnableAutoAdjustMainLvColWidth = _config.uiItem.enableAutoAdjustMainLvColWidth; EnableAutoAdjustMainLvColWidth = _config.uiItem.enableAutoAdjustMainLvColWidth;
@@ -291,11 +289,6 @@ namespace v2rayN.ViewModels
Utils.SetAutoRun(AutoRun); Utils.SetAutoRun(AutoRun);
_config.guiItem.autoRun = AutoRun; _config.guiItem.autoRun = AutoRun;
_config.guiItem.enableStatistics = EnableStatistics; _config.guiItem.enableStatistics = EnableStatistics;
_config.guiItem.statisticsFreshRate = StatisticsFreshRate;
if (_config.guiItem.statisticsFreshRate > 100 || _config.guiItem.statisticsFreshRate < 1)
{
_config.guiItem.statisticsFreshRate = 1;
}
_config.guiItem.keepOlderDedupl = KeepOlderDedupl; _config.guiItem.keepOlderDedupl = KeepOlderDedupl;
_config.guiItem.ignoreGeoUpdateCore = IgnoreGeoUpdateCore; _config.guiItem.ignoreGeoUpdateCore = IgnoreGeoUpdateCore;
_config.uiItem.enableAutoAdjustMainLvColWidth = EnableAutoAdjustMainLvColWidth; _config.uiItem.enableAutoAdjustMainLvColWidth = EnableAutoAdjustMainLvColWidth;
+1 -1
View File
@@ -47,7 +47,7 @@ namespace v2rayN.ViewModels
private void SaveSub() private void SaveSub()
{ {
string remarks = SelectedSource.remarks; string remarks = SelectedSource.remarks;
if (Utils.IsNullOrEmpty(remarks)) if (string.IsNullOrEmpty(remarks))
{ {
UI.Show(ResUI.PleaseFillRemarks); UI.Show(ResUI.PleaseFillRemarks);
return; return;
@@ -11,6 +11,17 @@ namespace v2rayN.Views
public AddServer2Window(ProfileItem profileItem) public AddServer2Window(ProfileItem profileItem)
{ {
InitializeComponent(); InitializeComponent();
// 设置窗口的尺寸不大于屏幕的尺寸
if (this.Width > SystemParameters.WorkArea.Width)
{
this.Width = SystemParameters.WorkArea.Width;
}
if (this.Height > SystemParameters.WorkArea.Height)
{
this.Height = SystemParameters.WorkArea.Height;
}
this.Owner = Application.Current.MainWindow; this.Owner = Application.Current.MainWindow;
this.Loaded += Window_Loaded; this.Loaded += Window_Loaded;
ViewModel = new AddServer2ViewModel(profileItem, this); ViewModel = new AddServer2ViewModel(profileItem, this);
+1 -1
View File
@@ -15,7 +15,7 @@
x:TypeArguments="vms:AddServerViewModel" x:TypeArguments="vms:AddServerViewModel"
Background="{DynamicResource MaterialDesignPaper}" Background="{DynamicResource MaterialDesignPaper}"
FontFamily="{x:Static conv:MaterialDesignFonts.MyFont}" FontFamily="{x:Static conv:MaterialDesignFonts.MyFont}"
ResizeMode="NoResize" ResizeMode="CanResize"
ShowInTaskbar="False" ShowInTaskbar="False"
TextElement.FontFamily="{x:Static conv:MaterialDesignFonts.MyFont}" TextElement.FontFamily="{x:Static conv:MaterialDesignFonts.MyFont}"
TextElement.Foreground="{DynamicResource MaterialDesignBody}" TextElement.Foreground="{DynamicResource MaterialDesignBody}"
@@ -15,6 +15,17 @@ namespace v2rayN.Views
public AddServerWindow(ProfileItem profileItem) public AddServerWindow(ProfileItem profileItem)
{ {
InitializeComponent(); InitializeComponent();
// 设置窗口的尺寸不大于屏幕的尺寸
if (this.Width > SystemParameters.WorkArea.Width)
{
this.Width = SystemParameters.WorkArea.Width;
}
if (this.Height > SystemParameters.WorkArea.Height)
{
this.Height = SystemParameters.WorkArea.Height;
}
this.Owner = Application.Current.MainWindow; this.Owner = Application.Current.MainWindow;
this.Loaded += Window_Loaded; this.Loaded += Window_Loaded;
cmbNetwork.SelectionChanged += CmbNetwork_SelectionChanged; cmbNetwork.SelectionChanged += CmbNetwork_SelectionChanged;
+24 -27
View File
@@ -4,6 +4,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:conv="clr-namespace:v2rayN.Converters" xmlns:conv="clr-namespace:v2rayN.Converters"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:reactiveui="http://reactiveui.net" xmlns:reactiveui="http://reactiveui.net"
xmlns:resx="clr-namespace:v2rayN.Resx" xmlns:resx="clr-namespace:v2rayN.Resx"
@@ -84,13 +85,15 @@
Cursor="Hand" Cursor="Hand"
Style="{StaticResource DefButton}" /> Style="{StaticResource DefButton}" />
</StackPanel> </StackPanel>
<TextBox <TextBox
x:Name="txtnormalDNS" x:Name="txtnormalDNS"
Margin="{StaticResource SettingItemMargin}" Margin="{StaticResource SettingItemMargin}"
VerticalAlignment="Stretch" VerticalAlignment="Stretch"
materialDesign:HintAssist.Hint="Http/Socks"
AcceptsReturn="True" AcceptsReturn="True"
BorderThickness="1" BorderThickness="1"
Style="{StaticResource DefTextBox}" Style="{StaticResource MaterialDesignOutlinedTextBox}"
TextWrapping="Wrap" TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto" /> VerticalScrollBarVisibility="Auto" />
</DockPanel> </DockPanel>
@@ -122,35 +125,29 @@
<ColumnDefinition Width="1*" /> <ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<GroupBox <TextBox
x:Name="txtnormalDNS2"
Grid.Column="0" Grid.Column="0"
Header="" VerticalAlignment="Stretch"
Style="{StaticResource MyGroupBox}"> materialDesign:HintAssist.Hint="Http/Socks"
<TextBox AcceptsReturn="True"
x:Name="txtnormalDNS2" BorderThickness="1"
Margin="{StaticResource SettingItemMargin}" Style="{StaticResource MaterialDesignOutlinedTextBox}"
VerticalAlignment="Stretch" TextWrapping="Wrap"
AcceptsReturn="True" VerticalScrollBarVisibility="Auto" />
BorderThickness="1"
Style="{StaticResource DefTextBox}"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto" />
</GroupBox>
<GridSplitter Grid.Column="1" HorizontalAlignment="Stretch" /> <GridSplitter Grid.Column="1" HorizontalAlignment="Stretch" />
<GroupBox
<TextBox
x:Name="txttunDNS2"
Grid.Column="2" Grid.Column="2"
Header="{x:Static resx:ResUI.TbSettingsTunMode}" VerticalAlignment="Stretch"
Style="{StaticResource MyGroupBox}"> materialDesign:HintAssist.Hint="{x:Static resx:ResUI.TbSettingsTunMode}"
<TextBox AcceptsReturn="True"
x:Name="txttunDNS2" BorderThickness="1"
Margin="{StaticResource SettingItemMargin}" Style="{StaticResource MaterialDesignOutlinedTextBox}"
VerticalAlignment="Stretch" TextWrapping="Wrap"
AcceptsReturn="True" VerticalScrollBarVisibility="Auto" />
BorderThickness="1"
Style="{StaticResource DefTextBox}"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto" />
</GroupBox>
</Grid> </Grid>
</DockPanel> </DockPanel>
</TabItem> </TabItem>
+12 -1
View File
@@ -14,6 +14,17 @@ namespace v2rayN.Views
public DNSSettingWindow() public DNSSettingWindow()
{ {
InitializeComponent(); InitializeComponent();
// 设置窗口的尺寸不大于屏幕的尺寸
if (this.Width > SystemParameters.WorkArea.Width)
{
this.Width = SystemParameters.WorkArea.Width;
}
if (this.Height > SystemParameters.WorkArea.Height)
{
this.Height = SystemParameters.WorkArea.Height;
}
this.Owner = Application.Current.MainWindow; this.Owner = Application.Current.MainWindow;
_config = LazyConfig.Instance.GetConfig(); _config = LazyConfig.Instance.GetConfig();
@@ -44,7 +55,7 @@ namespace v2rayN.Views
private void linkDnsSingboxObjectDoc_Click(object sender, RoutedEventArgs e) private void linkDnsSingboxObjectDoc_Click(object sender, RoutedEventArgs e)
{ {
Utils.ProcessStart("http://sing-box.sagernet.org/zh/configuration/dns/"); Utils.ProcessStart("https://sing-box.sagernet.org/zh/configuration/dns/");
} }
private void btnCancel_Click(object sender, RoutedEventArgs e) private void btnCancel_Click(object sender, RoutedEventArgs e)
@@ -16,6 +16,17 @@ namespace v2rayN.Views
public GlobalHotkeySettingWindow() public GlobalHotkeySettingWindow()
{ {
InitializeComponent(); InitializeComponent();
// 设置窗口的尺寸不大于屏幕的尺寸
if (this.Width > SystemParameters.WorkArea.Width)
{
this.Width = SystemParameters.WorkArea.Width;
}
if (this.Height > SystemParameters.WorkArea.Height)
{
this.Height = SystemParameters.WorkArea.Height;
}
this.Owner = Application.Current.MainWindow; this.Owner = Application.Current.MainWindow;
_config = LazyConfig.Instance.GetConfig(); _config = LazyConfig.Instance.GetConfig();
_config.globalHotkeys ??= new List<KeyEventItem>(); _config.globalHotkeys ??= new List<KeyEventItem>();
+11 -30
View File
@@ -15,8 +15,6 @@
Title="v2rayN" Title="v2rayN"
Width="900" Width="900"
Height="700" Height="700"
MinWidth="900"
MinHeight="700"
x:TypeArguments="vms:MainWindowViewModel" x:TypeArguments="vms:MainWindowViewModel"
Background="{DynamicResource MaterialDesignPaper}" Background="{DynamicResource MaterialDesignPaper}"
FontFamily="{x:Static conv:MaterialDesignFonts.MyFont}" FontFamily="{x:Static conv:MaterialDesignFonts.MyFont}"
@@ -209,7 +207,7 @@
<MenuItem <MenuItem
x:Name="menuCheckUpdateN" x:Name="menuCheckUpdateN"
Height="{StaticResource MenuItemHeight}" Height="{StaticResource MenuItemHeight}"
Header="v2rayN" /> Header="V2rayN" />
<MenuItem <MenuItem
x:Name="menuCheckUpdateV2flyCore" x:Name="menuCheckUpdateV2flyCore"
Height="{StaticResource MenuItemHeight}" Height="{StaticResource MenuItemHeight}"
@@ -235,7 +233,7 @@
<MenuItem <MenuItem
x:Name="menuCheckUpdateSingBoxCore" x:Name="menuCheckUpdateSingBoxCore"
Height="{StaticResource MenuItemHeight}" Height="{StaticResource MenuItemHeight}"
Header="sing-box Core" /> Header="Sing-box Core" />
<Separator Margin="-40,5" /> <Separator Margin="-40,5" />
<MenuItem <MenuItem
x:Name="menuCheckUpdateGeo" x:Name="menuCheckUpdateGeo"
@@ -301,7 +299,7 @@
<Grid> <Grid>
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
@@ -323,13 +321,13 @@
Margin="8" Margin="8"
IsEnabled="{Binding ElementName=followSystemTheme, Path=IsChecked, Converter={StaticResource InverseBooleanConverter}}" /> IsEnabled="{Binding ElementName=followSystemTheme, Path=IsChecked, Converter={StaticResource InverseBooleanConverter}}" />
<TextBlock <TextBlock
Grid.Row="1" Grid.Row="1"
Grid.Column="0" Grid.Column="0"
VerticalAlignment="Center" VerticalAlignment="Center"
Style="{StaticResource ToolbarTextBlock}" Style="{StaticResource ToolbarTextBlock}"
Text="{x:Static resx:ResUI.TbSettingsFollowSystemTheme}" /> Text="{x:Static resx:ResUI.TbSettingsFollowSystemTheme}" />
<ToggleButton <ToggleButton
x:Name="followSystemTheme" x:Name="followSystemTheme"
Grid.Row="1" Grid.Row="1"
Grid.Column="1" Grid.Column="1"
@@ -388,7 +386,7 @@
x:Name="lstGroup" x:Name="lstGroup"
FontSize="{DynamicResource StdFontSize}" FontSize="{DynamicResource StdFontSize}"
ItemContainerStyle="{StaticResource MyChipListBoxItem}" ItemContainerStyle="{StaticResource MyChipListBoxItem}"
Style="{StaticResource MaterialDesignChoiceChipPrimaryOutlineListBox}"> Style="{StaticResource MaterialDesignChoiceChipPrimaryOutlineListBox}" MaxHeight="120">
<ListBox.ItemTemplate> <ListBox.ItemTemplate>
<DataTemplate> <DataTemplate>
<TextBlock Text="{Binding remarks}" /> <TextBlock Text="{Binding remarks}" />
@@ -856,23 +854,6 @@
Header="{x:Static resx:ResUI.menuExit}" /> Header="{x:Static resx:ResUI.menuExit}" />
</ContextMenu> </ContextMenu>
</tb:TaskbarIcon.ContextMenu> </tb:TaskbarIcon.ContextMenu>
<tb:TaskbarIcon.TrayToolTip>
<Border
x:Name="borTrayToolTip"
Width="Auto"
Height="Auto"
Background="{DynamicResource MaterialDesignLightBackground}"
BorderBrush="{DynamicResource MaterialDesignDarkBackground}"
BorderThickness="0"
CornerRadius="4">
<TextBlock
Margin="8"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Foreground="{DynamicResource MaterialDesignDarkBackground}"
Text="{Binding Mode=OneWay, Path=ToolTipText}" />
</Border>
</tb:TaskbarIcon.TrayToolTip>
</tb:TaskbarIcon> </tb:TaskbarIcon>
<materialDesign:Snackbar x:Name="MainSnackbar" MessageQueue="{materialDesign:MessageQueue}" /> <materialDesign:Snackbar x:Name="MainSnackbar" MessageQueue="{materialDesign:MessageQueue}" />
</Grid> </Grid>
+20 -3
View File
@@ -25,6 +25,19 @@ namespace v2rayN.Views
public MainWindow() public MainWindow()
{ {
InitializeComponent(); InitializeComponent();
// 设置窗口的尺寸不大于屏幕的尺寸
if (this.Width > SystemParameters.WorkArea.Width)
{
this.Width = SystemParameters.WorkArea.Width;
}
if (this.Height > SystemParameters.WorkArea.Height)
{
this.Height = SystemParameters.WorkArea.Height;
}
lstGroup.MaxHeight = Math.Floor(SystemParameters.WorkArea.Height * 0.20 / 40) * 40;
_config = LazyConfig.Instance.GetConfig(); _config = LazyConfig.Instance.GetConfig();
App.Current.SessionEnding += Current_SessionEnding; App.Current.SessionEnding += Current_SessionEnding;
@@ -163,10 +176,10 @@ namespace v2rayN.Views
this.BindCommand(ViewModel, vm => vm.SubUpdateViaProxyCmd, v => v.menuSubUpdateViaProxy2).DisposeWith(disposables); this.BindCommand(ViewModel, vm => vm.SubUpdateViaProxyCmd, v => v.menuSubUpdateViaProxy2).DisposeWith(disposables);
this.OneWayBind(ViewModel, vm => vm.NotifyIcon, v => v.tbNotify.Icon).DisposeWith(disposables); this.OneWayBind(ViewModel, vm => vm.NotifyIcon, v => v.tbNotify.Icon).DisposeWith(disposables);
this.OneWayBind(ViewModel, vm => vm.RunningServerToolTipText, v => v.tbNotify.ToolTipText).DisposeWith(disposables); //this.OneWayBind(ViewModel, vm => vm.RunningServerToolTipText, v => v.tbNotify.ToolTipText).DisposeWith(disposables);
this.OneWayBind(ViewModel, vm => vm.NotifyLeftClickCmd, v => v.tbNotify.LeftClickCommand).DisposeWith(disposables); this.OneWayBind(ViewModel, vm => vm.NotifyLeftClickCmd, v => v.tbNotify.LeftClickCommand).DisposeWith(disposables);
this.OneWayBind(ViewModel, vm => vm.AppIcon, v => v.Icon).DisposeWith(disposables); this.OneWayBind(ViewModel, vm => vm.AppIcon, v => v.Icon).DisposeWith(disposables);
this.OneWayBind(ViewModel, vm => vm.BlShowTrayTip, v => v.borTrayToolTip.Visibility).DisposeWith(disposables); //this.OneWayBind(ViewModel, vm => vm.BlShowTrayTip, v => v.borTrayToolTip.Visibility).DisposeWith(disposables);
//status bar //status bar
this.OneWayBind(ViewModel, vm => vm.InboundDisplay, v => v.txtInboundDisplay.Text).DisposeWith(disposables); this.OneWayBind(ViewModel, vm => vm.InboundDisplay, v => v.txtInboundDisplay.Text).DisposeWith(disposables);
@@ -519,10 +532,14 @@ namespace v2rayN.Views
var coreInfos = LazyConfig.Instance.GetCoreInfos(); var coreInfos = LazyConfig.Instance.GetCoreInfos();
foreach (var it in coreInfos) foreach (var it in coreInfos)
{ {
if (it.coreType == ECoreType.v2fly)
{
continue;
}
var item = new MenuItem() var item = new MenuItem()
{ {
Tag = it.coreUrl.Replace(@"/releases", ""), Tag = it.coreUrl.Replace(@"/releases", ""),
Header = string.Format(Resx.ResUI.menuWebsiteItem, it.coreType.ToString().Replace("_", " ")) Header = string.Format(Resx.ResUI.menuWebsiteItem, it.coreType.ToString().Replace("_", " ")).UpperFirstChar()
}; };
item.Click += MenuItem_Click; item.Click += MenuItem_Click;
menuHelp.Items.Add(item); menuHelp.Items.Add(item);
+4 -19
View File
@@ -1,12 +1,12 @@
<reactiveui:ReactiveWindow <reactiveui:ReactiveWindow
x:Class="v2rayN.Views.OptionSettingWindow" x:Class="v2rayN.Views.OptionSettingWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:conv="clr-namespace:v2rayN.Converters"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes" xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:reactiveui="http://reactiveui.net" xmlns:reactiveui="http://reactiveui.net"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:conv="clr-namespace:v2rayN.Converters"
xmlns:resx="clr-namespace:v2rayN.Resx" xmlns:resx="clr-namespace:v2rayN.Resx"
xmlns:vms="clr-namespace:v2rayN.ViewModels" xmlns:vms="clr-namespace:v2rayN.ViewModels"
Title="{x:Static resx:ResUI.menuSetting}" Title="{x:Static resx:ResUI.menuSetting}"
@@ -498,21 +498,6 @@
Margin="{StaticResource SettingItemMargin}" Margin="{StaticResource SettingItemMargin}"
HorizontalAlignment="Left" /> HorizontalAlignment="Left" />
<TextBlock
Grid.Row="3"
Grid.Column="0"
Margin="{StaticResource SettingItemMargin}"
VerticalAlignment="Center"
Style="{StaticResource ToolbarTextBlock}"
Text="{x:Static resx:ResUI.TbSettingsStatisticsFreshRate}" />
<ComboBox
x:Name="cmbStatisticsFreshRate"
Grid.Row="3"
Grid.Column="1"
Width="200"
Margin="{StaticResource SettingItemMargin}"
Style="{StaticResource DefComboBox}" />
<TextBlock <TextBlock
Grid.Row="4" Grid.Row="4"
Grid.Column="0" Grid.Column="0"
@@ -18,6 +18,17 @@ namespace v2rayN.Views
public OptionSettingWindow() public OptionSettingWindow()
{ {
InitializeComponent(); InitializeComponent();
// 设置窗口的尺寸不大于屏幕的尺寸
if (this.Width > SystemParameters.WorkArea.Width)
{
this.Width = SystemParameters.WorkArea.Width;
}
if (this.Height > SystemParameters.WorkArea.Height)
{
this.Height = SystemParameters.WorkArea.Height;
}
this.Owner = Application.Current.MainWindow; this.Owner = Application.Current.MainWindow;
_config = LazyConfig.Instance.GetConfig(); _config = LazyConfig.Instance.GetConfig();
@@ -44,10 +55,6 @@ namespace v2rayN.Views
cmbmux4SboxProtocol.Items.Add(it); cmbmux4SboxProtocol.Items.Add(it);
}); });
for (int i = 1; i <= 10; i++)
{
cmbStatisticsFreshRate.Items.Add(i);
}
Global.TunMtus.ForEach(it => Global.TunMtus.ForEach(it =>
{ {
cmbMtu.Items.Add(it); cmbMtu.Items.Add(it);
@@ -150,7 +157,6 @@ namespace v2rayN.Views
this.Bind(ViewModel, vm => vm.AutoRun, v => v.togAutoRun.IsChecked).DisposeWith(disposables); this.Bind(ViewModel, vm => vm.AutoRun, v => v.togAutoRun.IsChecked).DisposeWith(disposables);
this.Bind(ViewModel, vm => vm.EnableStatistics, v => v.togEnableStatistics.IsChecked).DisposeWith(disposables); this.Bind(ViewModel, vm => vm.EnableStatistics, v => v.togEnableStatistics.IsChecked).DisposeWith(disposables);
this.Bind(ViewModel, vm => vm.StatisticsFreshRate, v => v.cmbStatisticsFreshRate.Text).DisposeWith(disposables);
this.Bind(ViewModel, vm => vm.KeepOlderDedupl, v => v.togKeepOlderDedupl.IsChecked).DisposeWith(disposables); this.Bind(ViewModel, vm => vm.KeepOlderDedupl, v => v.togKeepOlderDedupl.IsChecked).DisposeWith(disposables);
this.Bind(ViewModel, vm => vm.IgnoreGeoUpdateCore, v => v.togIgnoreGeoUpdateCore.IsChecked).DisposeWith(disposables); this.Bind(ViewModel, vm => vm.IgnoreGeoUpdateCore, v => v.togIgnoreGeoUpdateCore.IsChecked).DisposeWith(disposables);
this.Bind(ViewModel, vm => vm.EnableAutoAdjustMainLvColWidth, v => v.togEnableAutoAdjustMainLvColWidth.IsChecked).DisposeWith(disposables); this.Bind(ViewModel, vm => vm.EnableAutoAdjustMainLvColWidth, v => v.togEnableAutoAdjustMainLvColWidth.IsChecked).DisposeWith(disposables);
@@ -12,6 +12,17 @@ namespace v2rayN.Views
public RoutingRuleDetailsWindow(RulesItem rulesItem) public RoutingRuleDetailsWindow(RulesItem rulesItem)
{ {
InitializeComponent(); InitializeComponent();
// 设置窗口的尺寸不大于屏幕的尺寸
if (this.Width > SystemParameters.WorkArea.Width)
{
this.Width = SystemParameters.WorkArea.Width;
}
if (this.Height > SystemParameters.WorkArea.Height)
{
this.Height = SystemParameters.WorkArea.Height;
}
this.Owner = Application.Current.MainWindow; this.Owner = Application.Current.MainWindow;
this.Loaded += Window_Loaded; this.Loaded += Window_Loaded;
clbProtocol.SelectionChanged += ClbProtocol_SelectionChanged; clbProtocol.SelectionChanged += ClbProtocol_SelectionChanged;
@@ -10,7 +10,7 @@
xmlns:resx="clr-namespace:v2rayN.Resx" xmlns:resx="clr-namespace:v2rayN.Resx"
xmlns:vms="clr-namespace:v2rayN.ViewModels" xmlns:vms="clr-namespace:v2rayN.ViewModels"
Title="{x:Static resx:ResUI.menuRoutingRuleSetting}" Title="{x:Static resx:ResUI.menuRoutingRuleSetting}"
Width="900" Width="960"
Height="700" Height="700"
x:TypeArguments="vms:RoutingRuleSettingViewModel" x:TypeArguments="vms:RoutingRuleSettingViewModel"
Background="{DynamicResource MaterialDesignPaper}" Background="{DynamicResource MaterialDesignPaper}"
@@ -280,7 +280,7 @@
Binding="{Binding outboundTag}" Binding="{Binding outboundTag}"
Header="outboundTag" /> Header="outboundTag" />
<DataGridTextColumn <DataGridTextColumn
Width="100" Width="80"
Binding="{Binding port}" Binding="{Binding port}"
Header="port" /> Header="port" />
<DataGridTextColumn <DataGridTextColumn
@@ -288,15 +288,15 @@
Binding="{Binding protocols}" Binding="{Binding protocols}"
Header="protocol" /> Header="protocol" />
<DataGridTextColumn <DataGridTextColumn
Width="120" Width="110"
Binding="{Binding inboundTags}" Binding="{Binding inboundTags}"
Header="inboundTag" /> Header="inboundTag" />
<DataGridTextColumn <DataGridTextColumn
Width="150" Width="220"
Binding="{Binding domains}" Binding="{Binding domains}"
Header="domain" /> Header="domain" />
<DataGridTextColumn <DataGridTextColumn
Width="150" Width="220"
Binding="{Binding ips}" Binding="{Binding ips}"
Header="ip" /> Header="ip" />
<DataGridTextColumn <DataGridTextColumn
@@ -13,6 +13,17 @@ namespace v2rayN.Views
public RoutingRuleSettingWindow(RoutingItem routingItem) public RoutingRuleSettingWindow(RoutingItem routingItem)
{ {
InitializeComponent(); InitializeComponent();
// 设置窗口的尺寸不大于屏幕的尺寸
if (this.Width > SystemParameters.WorkArea.Width)
{
this.Width = SystemParameters.WorkArea.Width;
}
if (this.Height > SystemParameters.WorkArea.Height)
{
this.Height = SystemParameters.WorkArea.Height;
}
this.Owner = Application.Current.MainWindow; this.Owner = Application.Current.MainWindow;
this.Loaded += Window_Loaded; this.Loaded += Window_Loaded;
this.PreviewKeyDown += RoutingRuleSettingWindow_PreviewKeyDown; this.PreviewKeyDown += RoutingRuleSettingWindow_PreviewKeyDown;
@@ -12,6 +12,17 @@ namespace v2rayN.Views
public RoutingSettingWindow() public RoutingSettingWindow()
{ {
InitializeComponent(); InitializeComponent();
// 设置窗口的尺寸不大于屏幕的尺寸
if (this.Width > SystemParameters.WorkArea.Width)
{
this.Width = SystemParameters.WorkArea.Width;
}
if (this.Height > SystemParameters.WorkArea.Height)
{
this.Height = SystemParameters.WorkArea.Height;
}
this.Owner = Application.Current.MainWindow; this.Owner = Application.Current.MainWindow;
this.Closing += RoutingSettingWindow_Closing; this.Closing += RoutingSettingWindow_Closing;
this.PreviewKeyDown += RoutingSettingWindow_PreviewKeyDown; this.PreviewKeyDown += RoutingSettingWindow_PreviewKeyDown;
+11
View File
@@ -11,6 +11,17 @@ namespace v2rayN.Views
public SubEditWindow(SubItem subItem) public SubEditWindow(SubItem subItem)
{ {
InitializeComponent(); InitializeComponent();
// 设置窗口的尺寸不大于屏幕的尺寸
if (this.Width > SystemParameters.WorkArea.Width)
{
this.Width = SystemParameters.WorkArea.Width;
}
if (this.Height > SystemParameters.WorkArea.Height)
{
this.Height = SystemParameters.WorkArea.Height;
}
this.Owner = Application.Current.MainWindow; this.Owner = Application.Current.MainWindow;
this.Loaded += Window_Loaded; this.Loaded += Window_Loaded;
@@ -13,6 +13,17 @@ namespace v2rayN.Views
public SubSettingWindow() public SubSettingWindow()
{ {
InitializeComponent(); InitializeComponent();
// 设置窗口的尺寸不大于屏幕的尺寸
if (this.Width > SystemParameters.WorkArea.Width)
{
this.Width = SystemParameters.WorkArea.Width;
}
if (this.Height > SystemParameters.WorkArea.Height)
{
this.Height = SystemParameters.WorkArea.Height;
}
this.Owner = Application.Current.MainWindow; this.Owner = Application.Current.MainWindow;
ViewModel = new SubSettingViewModel(this); ViewModel = new SubSettingViewModel(this);
+8 -5
View File
@@ -10,13 +10,13 @@
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<ApplicationIcon>v2rayN.ico</ApplicationIcon> <ApplicationIcon>v2rayN.ico</ApplicationIcon>
<Copyright>Copyright © 2017-2023 (GPLv3)</Copyright> <Copyright>Copyright © 2017-2023 (GPLv3)</Copyright>
<FileVersion>6.25</FileVersion> <FileVersion>6.29</FileVersion>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Downloader" Version="3.0.4" /> <PackageReference Include="Downloader" Version="3.0.6" />
<PackageReference Include="MaterialDesignThemes" Version="4.9.0" /> <PackageReference Include="MaterialDesignThemes" Version="4.9.0" />
<PackageReference Include="H.NotifyIcon.Wpf" Version="2.0.108" /> <PackageReference Include="H.NotifyIcon.Wpf" Version="2.0.118" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" /> <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="QRCoder.Xaml" Version="1.4.3" /> <PackageReference Include="QRCoder.Xaml" Version="1.4.3" />
<PackageReference Include="sqlite-net-pcl" Version="1.8.116" /> <PackageReference Include="sqlite-net-pcl" Version="1.8.116" />
@@ -25,8 +25,8 @@
<PackageReference Include="ReactiveUI.Fody" Version="18.4.1" /> <PackageReference Include="ReactiveUI.Fody" Version="18.4.1" />
<PackageReference Include="ReactiveUI.Validation" Version="3.0.22" /> <PackageReference Include="ReactiveUI.Validation" Version="3.0.22" />
<PackageReference Include="ReactiveUI.WPF" Version="18.4.1" /> <PackageReference Include="ReactiveUI.WPF" Version="18.4.1" />
<PackageReference Include="Splat.NLog" Version="14.6.8" /> <PackageReference Include="Splat.NLog" Version="14.7.1" />
<PackageReference Include="System.Reactive" Version="5.0.0" /> <PackageReference Include="System.Reactive" Version="6.0.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@@ -108,6 +108,9 @@
<EmbeddedResource Update="Resx\ResUI.zh-Hans.resx"> <EmbeddedResource Update="Resx\ResUI.zh-Hans.resx">
<Generator>PublicResXFileCodeGenerator</Generator> <Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Update="Resx\ResUI.zh-Hant.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Resx\ResUI.fa-Ir.resx"> <EmbeddedResource Update="Resx\ResUI.fa-Ir.resx">
<Generator>PublicResXFileCodeGenerator</Generator> <Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource> </EmbeddedResource>
+4 -4
View File
@@ -92,9 +92,9 @@ namespace v2rayUpgrade
File.Move(Application.ExecutablePath, thisAppOldFile); File.Move(Application.ExecutablePath, thisAppOldFile);
} }
string entryOuputPath = GetPath(fullName); string entryOutputPath = GetPath(fullName);
Directory.CreateDirectory(Path.GetDirectoryName(entryOuputPath)!); Directory.CreateDirectory(Path.GetDirectoryName(entryOutputPath)!);
entry.ExtractToFile(entryOuputPath, true); entry.ExtractToFile(entryOutputPath, true);
} }
catch (Exception ex) catch (Exception ex)
{ {
@@ -145,4 +145,4 @@ namespace v2rayUpgrade
return Path.Combine(startupPath, fileName); return Path.Combine(startupPath, fileName);
} }
} }
} }