diff --git a/v2rayN/v2rayN/Forms/MainForm.Designer.cs b/v2rayN/v2rayN/Forms/MainForm.Designer.cs index 4d43e379..ac6c9e81 100644 --- a/v2rayN/v2rayN/Forms/MainForm.Designer.cs +++ b/v2rayN/v2rayN/Forms/MainForm.Designer.cs @@ -46,14 +46,15 @@ this.menuRemoveDuplicateServer = new System.Windows.Forms.ToolStripMenuItem(); this.menuCopyServer = new System.Windows.Forms.ToolStripMenuItem(); this.menuSetDefaultServer = new System.Windows.Forms.ToolStripMenuItem(); + this.menuServerFilter = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); this.menuMoveToGroup = new System.Windows.Forms.ToolStripMenuItem(); - this.menuSelectAll = new System.Windows.Forms.ToolStripMenuItem(); this.menuMoveEvent = new System.Windows.Forms.ToolStripMenuItem(); this.menuMoveTop = new System.Windows.Forms.ToolStripMenuItem(); this.menuMoveUp = new System.Windows.Forms.ToolStripMenuItem(); this.menuMoveDown = new System.Windows.Forms.ToolStripMenuItem(); this.menuMoveBottom = new System.Windows.Forms.ToolStripMenuItem(); + this.menuSelectAll = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator(); this.menuPingServer = new System.Windows.Forms.ToolStripMenuItem(); this.menuTcpingServer = new System.Windows.Forms.ToolStripMenuItem(); @@ -189,6 +190,7 @@ this.menuRemoveDuplicateServer, this.menuCopyServer, this.menuSetDefaultServer, + this.menuServerFilter, this.toolStripSeparator3, this.menuMoveToGroup, this.menuMoveEvent, @@ -285,6 +287,12 @@ resources.ApplyResources(this.menuSetDefaultServer, "menuSetDefaultServer"); this.menuSetDefaultServer.Click += new System.EventHandler(this.menuSetDefaultServer_Click); // + // menuServerFilter + // + this.menuServerFilter.Name = "menuServerFilter"; + resources.ApplyResources(this.menuServerFilter, "menuServerFilter"); + this.menuServerFilter.Click += new System.EventHandler(this.menuServerFilter_Click); + // // toolStripSeparator3 // this.toolStripSeparator3.Name = "toolStripSeparator3"; @@ -296,12 +304,6 @@ resources.ApplyResources(this.menuMoveToGroup, "menuMoveToGroup"); this.menuMoveToGroup.Click += new System.EventHandler(this.menuMoveToGroup_Click); // - // menuSelectAll - // - this.menuSelectAll.Name = "menuSelectAll"; - resources.ApplyResources(this.menuSelectAll, "menuSelectAll"); - this.menuSelectAll.Click += new System.EventHandler(this.menuSelectAll_Click); - // // menuMoveEvent // this.menuMoveEvent.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -336,6 +338,12 @@ resources.ApplyResources(this.menuMoveBottom, "menuMoveBottom"); this.menuMoveBottom.Click += new System.EventHandler(this.menuMoveBottom_Click); // + // menuSelectAll + // + this.menuSelectAll.Name = "menuSelectAll"; + resources.ApplyResources(this.menuSelectAll, "menuSelectAll"); + this.menuSelectAll.Click += new System.EventHandler(this.menuSelectAll_Click); + // // toolStripSeparator9 // this.toolStripSeparator9.Name = "toolStripSeparator9"; @@ -420,6 +428,7 @@ // // tsbServer // + this.tsbServer.DropDown = this.cmsLv; this.tsbServer.Image = global::v2rayN.Properties.Resources.server; resources.ApplyResources(this.tsbServer, "tsbServer"); this.tsbServer.Name = "tsbServer"; @@ -926,6 +935,7 @@ private System.Windows.Forms.ToolStripMenuItem menuMoveUp; private System.Windows.Forms.ToolStripMenuItem menuMoveDown; private System.Windows.Forms.ToolStripMenuItem menuMoveBottom; + private System.Windows.Forms.ToolStripMenuItem menuServerFilter; } } diff --git a/v2rayN/v2rayN/Forms/MainForm.cs b/v2rayN/v2rayN/Forms/MainForm.cs index 432c1cb6..bbc7b6a5 100644 --- a/v2rayN/v2rayN/Forms/MainForm.cs +++ b/v2rayN/v2rayN/Forms/MainForm.cs @@ -21,6 +21,7 @@ namespace v2rayN.Forms private StatisticsHandler statistics = null; private List lstVmess = null; private string groupId = string.Empty; + private string serverFilter = string.Empty; #region Window 事件 @@ -212,6 +213,7 @@ namespace v2rayN.Forms { lstVmess = config.vmess .Where(it => Utils.IsNullOrEmpty(groupId) ? true : it.groupId == groupId) + .Where(it => Utils.IsNullOrEmpty(serverFilter) ? true : it.remarks.Contains(serverFilter)) .OrderBy(it => it.sort) .ToList(); @@ -628,6 +630,9 @@ namespace v2rayN.Forms case Keys.T: menuSpeedServer_Click(null, null); break; + case Keys.F: + menuServerFilter_Click(null, null); + break; } } else @@ -717,6 +722,17 @@ namespace v2rayN.Forms SetDefaultServer(index); } + private void menuServerFilter_Click(object sender, EventArgs e) + { + var fm = new MsgFilterSetForm(); + fm.MsgFilter = serverFilter; + if (fm.ShowDialog() == DialogResult.OK) + { + serverFilter = fm.MsgFilter; + gbServers.Text = string.Format(ResUI.MsgServerTitle, serverFilter); + RefreshServers(); + } + } private void menuPingServer_Click(object sender, EventArgs e) { @@ -1501,5 +1517,6 @@ namespace v2rayN.Forms } } #endregion + } } diff --git a/v2rayN/v2rayN/Forms/MainForm.resx b/v2rayN/v2rayN/Forms/MainForm.resx index fb97d8b6..553fd572 100644 --- a/v2rayN/v2rayN/Forms/MainForm.resx +++ b/v2rayN/v2rayN/Forms/MainForm.resx @@ -203,6 +203,12 @@ Set as active server (Enter) + + 355, 22 + + + Set server filter (Ctrl+F) + 352, 6 @@ -212,6 +218,30 @@ Move to Group + + 192, 22 + + + Move to top (T) + + + 192, 22 + + + Up (U) + + + 192, 22 + + + Down (D) + + + 192, 22 + + + Move to bottom (B) + 355, 22 @@ -291,7 +321,7 @@ Export subscription (base64) share to clipboard - 356, 600 + 356, 622 cmsLv @@ -440,30 +470,6 @@ 0 - - 192, 22 - - - Move to top (T) - - - 192, 22 - - - Up (U) - - - 192, 22 - - - Down (D) - - - 192, 22 - - - Move to bottom (B) - Magenta @@ -587,27 +593,6 @@ NoControl - - 278, 192 - - - cmsMain - - - System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - v2rayN - - - True - - - 277, 22 - - - System proxy - 243, 22 @@ -626,6 +611,12 @@ Do not change system proxy + + 277, 22 + + + System proxy + 277, 22 @@ -674,6 +665,21 @@ Exit + + 278, 192 + + + cmsMain + + + System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + v2rayN + + + True + Top @@ -701,42 +707,9 @@ 315, 17 - - 0, 0 - - - 952, 56 - - - 1 - - - tsMain - - - System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 4 - 6, 56 - - Magenta - - - 99, 53 - - - Subscriptions - - - ImageAboveText - 277, 22 @@ -755,6 +728,18 @@ Update subscription with proxy + + Magenta + + + 99, 53 + + + Subscriptions + + + ImageAboveText + Magenta @@ -773,18 +758,6 @@ 6, 56 - - Magenta - - - 67, 53 - - - Settings - - - ImageAboveText - 195, 22 @@ -818,6 +791,18 @@ BackupGuiConfig + + Magenta + + + 67, 53 + + + Settings + + + ImageAboveText + 6, 56 @@ -839,18 +824,6 @@ 6, 56 - - Magenta - - - 128, 53 - - - Check for updates - - - ImageAboveText - 203, 22 @@ -878,21 +851,21 @@ Update Geo files - - 6, 56 - - + Magenta - - 48, 53 + + 128, 53 - - Help + + Check for updates - + ImageAboveText + + 6, 56 + 187, 22 @@ -920,6 +893,18 @@ 语言-[中文简体] + + Magenta + + + 48, 53 + + + Help + + + ImageAboveText + Magenta @@ -947,11 +932,32 @@ ImageAboveText + + 0, 0 + + + 952, 56 + + + 1 + + + tsMain + + + System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 4 + True - 25 + 64 6, 12 @@ -1043,6 +1049,12 @@ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + menuServerFilter + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + toolStripSeparator3 @@ -1055,12 +1067,6 @@ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - menuSelectAll - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - menuMoveEvent @@ -1091,6 +1097,12 @@ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + menuSelectAll + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + toolStripSeparator9 diff --git a/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx b/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx index 2bb49b14..740a1506 100644 --- a/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx +++ b/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx @@ -558,4 +558,7 @@ 上下移至 + + 设置服务器过滤器 (Ctrl+F) + \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/MainMsgControl.cs b/v2rayN/v2rayN/Forms/MainMsgControl.cs index 660aa2f4..edf3166b 100644 --- a/v2rayN/v2rayN/Forms/MainMsgControl.cs +++ b/v2rayN/v2rayN/Forms/MainMsgControl.cs @@ -183,6 +183,7 @@ namespace v2rayN.Forms { var fm = new MsgFilterSetForm(); fm.MsgFilter = MsgFilter; + fm.ShowDefFilter = true; if (fm.ShowDialog() == DialogResult.OK) { MsgFilter = fm.MsgFilter; diff --git a/v2rayN/v2rayN/Forms/MsgFilterSetForm.Designer.cs b/v2rayN/v2rayN/Forms/MsgFilterSetForm.Designer.cs index 96e61724..92343dee 100644 --- a/v2rayN/v2rayN/Forms/MsgFilterSetForm.Designer.cs +++ b/v2rayN/v2rayN/Forms/MsgFilterSetForm.Designer.cs @@ -30,12 +30,13 @@ { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MsgFilterSetForm)); this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.btnFilderProxy = new System.Windows.Forms.Button(); + this.btnFilterDirect = new System.Windows.Forms.Button(); this.txtMsgFilter = new System.Windows.Forms.TextBox(); this.panel2 = new System.Windows.Forms.Panel(); this.btnClose = new System.Windows.Forms.Button(); this.btnOK = new System.Windows.Forms.Button(); - this.btnFilterDirect = new System.Windows.Forms.Button(); - this.btnFilderProxy = new System.Windows.Forms.Button(); + this.btnClear = new System.Windows.Forms.Button(); this.groupBox1.SuspendLayout(); this.panel2.SuspendLayout(); this.SuspendLayout(); @@ -49,6 +50,20 @@ this.groupBox1.Name = "groupBox1"; this.groupBox1.TabStop = false; // + // btnFilderProxy + // + resources.ApplyResources(this.btnFilderProxy, "btnFilderProxy"); + this.btnFilderProxy.Name = "btnFilderProxy"; + this.btnFilderProxy.UseVisualStyleBackColor = true; + this.btnFilderProxy.Click += new System.EventHandler(this.btnFilderProxy_Click); + // + // btnFilterDirect + // + resources.ApplyResources(this.btnFilterDirect, "btnFilterDirect"); + this.btnFilterDirect.Name = "btnFilterDirect"; + this.btnFilterDirect.UseVisualStyleBackColor = true; + this.btnFilterDirect.Click += new System.EventHandler(this.btnFilterDirect_Click); + // // txtMsgFilter // resources.ApplyResources(this.txtMsgFilter, "txtMsgFilter"); @@ -56,6 +71,7 @@ // // panel2 // + this.panel2.Controls.Add(this.btnClear); this.panel2.Controls.Add(this.btnClose); this.panel2.Controls.Add(this.btnOK); resources.ApplyResources(this.panel2, "panel2"); @@ -76,19 +92,12 @@ this.btnOK.UseVisualStyleBackColor = true; this.btnOK.Click += new System.EventHandler(this.btnOK_Click); // - // btnFilterDirect + // btnClear // - resources.ApplyResources(this.btnFilterDirect, "btnFilterDirect"); - this.btnFilterDirect.Name = "btnFilterDirect"; - this.btnFilterDirect.UseVisualStyleBackColor = true; - this.btnFilterDirect.Click += new System.EventHandler(this.btnFilterDirect_Click); - // - // btnFilderProxy - // - resources.ApplyResources(this.btnFilderProxy, "btnFilderProxy"); - this.btnFilderProxy.Name = "btnFilderProxy"; - this.btnFilderProxy.UseVisualStyleBackColor = true; - this.btnFilderProxy.Click += new System.EventHandler(this.btnFilderProxy_Click); + resources.ApplyResources(this.btnClear, "btnClear"); + this.btnClear.Name = "btnClear"; + this.btnClear.UseVisualStyleBackColor = true; + this.btnClear.Click += new System.EventHandler(this.btnClear_Click); // // MsgFilterSetForm // @@ -114,5 +123,6 @@ private System.Windows.Forms.Button btnOK; private System.Windows.Forms.Button btnFilderProxy; private System.Windows.Forms.Button btnFilterDirect; + private System.Windows.Forms.Button btnClear; } } \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/MsgFilterSetForm.cs b/v2rayN/v2rayN/Forms/MsgFilterSetForm.cs index debeb482..421f294c 100644 --- a/v2rayN/v2rayN/Forms/MsgFilterSetForm.cs +++ b/v2rayN/v2rayN/Forms/MsgFilterSetForm.cs @@ -13,6 +13,7 @@ namespace v2rayN.Forms public partial class MsgFilterSetForm : BaseForm { public string MsgFilter { get; set; } + public bool ShowDefFilter { get; set; } public MsgFilterSetForm() { @@ -22,6 +23,8 @@ namespace v2rayN.Forms private void MsgFilterSetForm_Load(object sender, EventArgs e) { txtMsgFilter.Text = MsgFilter; + btnFilderProxy.Visible = + btnFilterDirect.Visible = ShowDefFilter; } private void btnOK_Click(object sender, EventArgs e) @@ -44,5 +47,11 @@ namespace v2rayN.Forms { txtMsgFilter.Text = "^(?!.*direct).*$"; } + + private void btnClear_Click(object sender, EventArgs e) + { + MsgFilter = string.Empty; + this.DialogResult = DialogResult.OK; + } } } diff --git a/v2rayN/v2rayN/Forms/MsgFilterSetForm.resx b/v2rayN/v2rayN/Forms/MsgFilterSetForm.resx index e154ee94..82cacfe0 100644 --- a/v2rayN/v2rayN/Forms/MsgFilterSetForm.resx +++ b/v2rayN/v2rayN/Forms/MsgFilterSetForm.resx @@ -117,14 +117,78 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + btnFilderProxy + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 0 + + + btnFilterDirect + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 1 + + + txtMsgFilter + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 2 + + + + Fill + + + 0, 0 + + + 490, 76 + + + + 8 + + + Filter + + + groupBox1 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + 157, 47 95, 23 - 13 @@ -143,7 +207,6 @@ 0 - NoControl @@ -192,81 +255,33 @@ 2 - - Fill + + NoControl - - 0, 0 + + 211, 17 - - 490, 76 + + 75, 23 - - 8 + + 14 - - Filter + + Clear - - groupBox1 + + btnClear - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 - - - btnClose - - + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + panel2 - + 0 - - btnOK - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel2 - - - 1 - - - Bottom - - - 0, 76 - - - 490, 60 - - - 9 - - - panel2 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 1 - NoControl @@ -292,7 +307,7 @@ panel2 - 0 + 1 NoControl @@ -319,6 +334,30 @@ panel2 + 2 + + + Bottom + + + 0, 76 + + + 490, 60 + + + 9 + + + panel2 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + 1 diff --git a/v2rayN/v2rayN/Forms/MsgFilterSetForm.zh-Hans.resx b/v2rayN/v2rayN/Forms/MsgFilterSetForm.zh-Hans.resx index 67a72ead..3ec9e0e7 100644 --- a/v2rayN/v2rayN/Forms/MsgFilterSetForm.zh-Hans.resx +++ b/v2rayN/v2rayN/Forms/MsgFilterSetForm.zh-Hans.resx @@ -135,4 +135,7 @@ 过滤Direct + + 清空 + \ No newline at end of file diff --git a/v2rayN/v2rayN/Resx/ResUI.Designer.cs b/v2rayN/v2rayN/Resx/ResUI.Designer.cs index 431ec5ea..aaa37f35 100644 --- a/v2rayN/v2rayN/Resx/ResUI.Designer.cs +++ b/v2rayN/v2rayN/Resx/ResUI.Designer.cs @@ -600,6 +600,15 @@ namespace v2rayN.Resx { } } + /// + /// 查找类似 Servers (Filter : {0}) 的本地化字符串。 + /// + internal static string MsgServerTitle { + get { + return ResourceManager.GetString("MsgServerTitle", resourceCulture); + } + } + /// /// 查找类似 Simplify PAC Success 的本地化字符串。 /// diff --git a/v2rayN/v2rayN/Resx/ResUI.resx b/v2rayN/v2rayN/Resx/ResUI.resx index e6178559..e431fc52 100644 --- a/v2rayN/v2rayN/Resx/ResUI.resx +++ b/v2rayN/v2rayN/Resx/ResUI.resx @@ -469,4 +469,7 @@ Local + + Servers (Filter : {0}) + \ No newline at end of file diff --git a/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx b/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx index 0f3a4ac1..f2fcb46c 100644 --- a/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx +++ b/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx @@ -469,4 +469,7 @@ 本地 + + 服务器 (过滤器 : {0}) + \ No newline at end of file