From 1138d660b24767f4b05889bfa86f5dd1b24dbfaa Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Thu, 2 Dec 2021 16:05:54 +0800 Subject: [PATCH] Routing rule add custom icon --- .../Forms/RoutingRuleSettingForm.Designer.cs | 78 +- v2rayN/v2rayN/Forms/RoutingRuleSettingForm.cs | 15 +- .../v2rayN/Forms/RoutingRuleSettingForm.resx | 1069 +++++++++-------- .../Forms/RoutingRuleSettingForm.zh-Hans.resx | 58 +- v2rayN/v2rayN/Handler/MainFormHandler.cs | 21 +- v2rayN/v2rayN/Mode/RoutingItem.cs | 5 +- 6 files changed, 716 insertions(+), 530 deletions(-) diff --git a/v2rayN/v2rayN/Forms/RoutingRuleSettingForm.Designer.cs b/v2rayN/v2rayN/Forms/RoutingRuleSettingForm.Designer.cs index 6a5f5c23..5f76c47d 100644 --- a/v2rayN/v2rayN/Forms/RoutingRuleSettingForm.Designer.cs +++ b/v2rayN/v2rayN/Forms/RoutingRuleSettingForm.Designer.cs @@ -34,6 +34,10 @@ this.panel2 = new System.Windows.Forms.Panel(); this.btnOK = new System.Windows.Forms.Button(); this.panel1 = new System.Windows.Forms.Panel(); + this.label5 = new System.Windows.Forms.Label(); + this.btnBrowse = new System.Windows.Forms.Button(); + this.txtCustomIcon = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label(); this.txtUrl = new System.Windows.Forms.TextBox(); this.label3 = new System.Windows.Forms.Label(); @@ -68,17 +72,17 @@ // // btnClose // - this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; resources.ApplyResources(this.btnClose, "btnClose"); + this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.btnClose.Name = "btnClose"; this.btnClose.UseVisualStyleBackColor = true; this.btnClose.Click += new System.EventHandler(this.btnClose_Click); // // panel2 // + resources.ApplyResources(this.panel2, "panel2"); this.panel2.Controls.Add(this.btnClose); this.panel2.Controls.Add(this.btnOK); - resources.ApplyResources(this.panel2, "panel2"); this.panel2.Name = "panel2"; // // btnOK @@ -90,14 +94,40 @@ // // panel1 // + resources.ApplyResources(this.panel1, "panel1"); + this.panel1.Controls.Add(this.label5); + this.panel1.Controls.Add(this.btnBrowse); + this.panel1.Controls.Add(this.txtCustomIcon); + this.panel1.Controls.Add(this.label4); this.panel1.Controls.Add(this.label1); this.panel1.Controls.Add(this.txtUrl); this.panel1.Controls.Add(this.label3); this.panel1.Controls.Add(this.txtRemarks); this.panel1.Controls.Add(this.label2); - resources.ApplyResources(this.panel1, "panel1"); this.panel1.Name = "panel1"; // + // label5 + // + resources.ApplyResources(this.label5, "label5"); + this.label5.Name = "label5"; + // + // btnBrowse + // + resources.ApplyResources(this.btnBrowse, "btnBrowse"); + this.btnBrowse.Name = "btnBrowse"; + this.btnBrowse.UseVisualStyleBackColor = true; + this.btnBrowse.Click += new System.EventHandler(this.btnBrowse_Click); + // + // txtCustomIcon + // + resources.ApplyResources(this.txtCustomIcon, "txtCustomIcon"); + this.txtCustomIcon.Name = "txtCustomIcon"; + // + // label4 + // + resources.ApplyResources(this.label4, "label4"); + this.label4.Name = "label4"; + // // label1 // resources.ApplyResources(this.label1, "label1"); @@ -125,8 +155,8 @@ // // lvRoutings // - this.lvRoutings.ContextMenuStrip = this.cmsLv; resources.ApplyResources(this.lvRoutings, "lvRoutings"); + this.lvRoutings.ContextMenuStrip = this.cmsLv; this.lvRoutings.FullRowSelect = true; this.lvRoutings.GridLines = true; this.lvRoutings.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; @@ -142,6 +172,7 @@ // // cmsLv // + resources.ApplyResources(this.cmsLv, "cmsLv"); this.cmsLv.ImageScalingSize = new System.Drawing.Size(20, 20); this.cmsLv.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.menuAdd, @@ -155,114 +186,113 @@ this.menuMoveBottom}); this.cmsLv.Name = "cmsLv"; this.cmsLv.OwnerItem = this.MenuItem1; - resources.ApplyResources(this.cmsLv, "cmsLv"); // // menuAdd // - this.menuAdd.Name = "menuAdd"; resources.ApplyResources(this.menuAdd, "menuAdd"); + this.menuAdd.Name = "menuAdd"; this.menuAdd.Click += new System.EventHandler(this.menuAdd_Click); // // menuRemove // - this.menuRemove.Name = "menuRemove"; resources.ApplyResources(this.menuRemove, "menuRemove"); + this.menuRemove.Name = "menuRemove"; this.menuRemove.Click += new System.EventHandler(this.menuRemove_Click); // // menuSelectAll // - this.menuSelectAll.Name = "menuSelectAll"; resources.ApplyResources(this.menuSelectAll, "menuSelectAll"); + this.menuSelectAll.Name = "menuSelectAll"; this.menuSelectAll.Click += new System.EventHandler(this.menuSelectAll_Click); // // menuExportSelectedRules // - this.menuExportSelectedRules.Name = "menuExportSelectedRules"; resources.ApplyResources(this.menuExportSelectedRules, "menuExportSelectedRules"); + this.menuExportSelectedRules.Name = "menuExportSelectedRules"; this.menuExportSelectedRules.Click += new System.EventHandler(this.menuExportSelectedRules_Click); // // toolStripSeparator3 // - this.toolStripSeparator3.Name = "toolStripSeparator3"; resources.ApplyResources(this.toolStripSeparator3, "toolStripSeparator3"); + this.toolStripSeparator3.Name = "toolStripSeparator3"; // // menuMoveTop // - this.menuMoveTop.Name = "menuMoveTop"; resources.ApplyResources(this.menuMoveTop, "menuMoveTop"); + this.menuMoveTop.Name = "menuMoveTop"; this.menuMoveTop.Click += new System.EventHandler(this.menuMoveTop_Click); // // menuMoveUp // - this.menuMoveUp.Name = "menuMoveUp"; resources.ApplyResources(this.menuMoveUp, "menuMoveUp"); + this.menuMoveUp.Name = "menuMoveUp"; this.menuMoveUp.Click += new System.EventHandler(this.menuMoveUp_Click); // // menuMoveDown // - this.menuMoveDown.Name = "menuMoveDown"; resources.ApplyResources(this.menuMoveDown, "menuMoveDown"); + this.menuMoveDown.Name = "menuMoveDown"; this.menuMoveDown.Click += new System.EventHandler(this.menuMoveDown_Click); // // menuMoveBottom // - this.menuMoveBottom.Name = "menuMoveBottom"; resources.ApplyResources(this.menuMoveBottom, "menuMoveBottom"); + this.menuMoveBottom.Name = "menuMoveBottom"; this.menuMoveBottom.Click += new System.EventHandler(this.menuMoveBottom_Click); // // MenuItem1 // + resources.ApplyResources(this.MenuItem1, "MenuItem1"); this.MenuItem1.DropDown = this.cmsLv; this.MenuItem1.Name = "MenuItem1"; - resources.ApplyResources(this.MenuItem1, "MenuItem1"); // // tabControl2 // - this.tabControl2.Controls.Add(this.tabPage2); resources.ApplyResources(this.tabControl2, "tabControl2"); + this.tabControl2.Controls.Add(this.tabPage2); this.tabControl2.Name = "tabControl2"; this.tabControl2.SelectedIndex = 0; // // tabPage2 // - this.tabPage2.Controls.Add(this.lvRoutings); resources.ApplyResources(this.tabPage2, "tabPage2"); + this.tabPage2.Controls.Add(this.lvRoutings); this.tabPage2.Name = "tabPage2"; this.tabPage2.UseVisualStyleBackColor = true; // // menuServer // + resources.ApplyResources(this.menuServer, "menuServer"); this.menuServer.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.MenuItem1, this.toolStripMenuItem1}); - resources.ApplyResources(this.menuServer, "menuServer"); this.menuServer.Name = "menuServer"; // // toolStripMenuItem1 // + resources.ApplyResources(this.toolStripMenuItem1, "toolStripMenuItem1"); this.toolStripMenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.menuImportRulesFromFile, this.menuImportRulesFromClipboard, this.menuImportRulesFromUrl}); this.toolStripMenuItem1.Name = "toolStripMenuItem1"; - resources.ApplyResources(this.toolStripMenuItem1, "toolStripMenuItem1"); // // menuImportRulesFromFile // - this.menuImportRulesFromFile.Name = "menuImportRulesFromFile"; resources.ApplyResources(this.menuImportRulesFromFile, "menuImportRulesFromFile"); + this.menuImportRulesFromFile.Name = "menuImportRulesFromFile"; this.menuImportRulesFromFile.Click += new System.EventHandler(this.menuImportRulesFromFile_Click); // // menuImportRulesFromClipboard // - this.menuImportRulesFromClipboard.Name = "menuImportRulesFromClipboard"; resources.ApplyResources(this.menuImportRulesFromClipboard, "menuImportRulesFromClipboard"); + this.menuImportRulesFromClipboard.Name = "menuImportRulesFromClipboard"; this.menuImportRulesFromClipboard.Click += new System.EventHandler(this.menuImportRulesFromClipboard_Click); // // menuImportRulesFromUrl // - this.menuImportRulesFromUrl.Name = "menuImportRulesFromUrl"; resources.ApplyResources(this.menuImportRulesFromUrl, "menuImportRulesFromUrl"); + this.menuImportRulesFromUrl.Name = "menuImportRulesFromUrl"; this.menuImportRulesFromUrl.Click += new System.EventHandler(this.menuImportRulesFromUrl_Click); // // RoutingRuleSettingForm @@ -319,5 +349,9 @@ private System.Windows.Forms.TextBox txtUrl; private System.Windows.Forms.Label label3; private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox txtCustomIcon; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Button btnBrowse; + private System.Windows.Forms.Label label5; } } \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/RoutingRuleSettingForm.cs b/v2rayN/v2rayN/Forms/RoutingRuleSettingForm.cs index f7957ca2..87fe775c 100644 --- a/v2rayN/v2rayN/Forms/RoutingRuleSettingForm.cs +++ b/v2rayN/v2rayN/Forms/RoutingRuleSettingForm.cs @@ -38,6 +38,7 @@ namespace v2rayN.Forms txtRemarks.Text = routingItem.remarks ?? string.Empty; txtUrl.Text = routingItem.url ?? string.Empty; + txtCustomIcon.Text = routingItem.customIcon ?? string.Empty; InitRoutingsView(); RefreshRoutingsView(); @@ -93,6 +94,7 @@ namespace v2rayN.Forms { routingItem.remarks = txtRemarks.Text.Trim(); routingItem.url = txtUrl.Text.Trim(); + routingItem.customIcon = txtCustomIcon.Text.Trim(); if (ConfigHandler.AddRoutingItem(ref config, routingItem, EditIndex) == 0) { @@ -108,6 +110,14 @@ namespace v2rayN.Forms { this.DialogResult = DialogResult.Cancel; } + private void btnBrowse_Click(object sender, EventArgs e) + { + OpenFileDialog openFileDialog1 = new OpenFileDialog(); + openFileDialog1.Filter = "PNG|*.png"; + openFileDialog1.ShowDialog(); + txtCustomIcon.Text = openFileDialog1.FileName; + + } private void lvRoutings_DoubleClick(object sender, EventArgs e) { @@ -340,8 +350,9 @@ namespace v2rayN.Forms return ConfigHandler.AddBatchRoutingRules(ref routingItem, clipboardData, blReplace); } + + #endregion - - + } } diff --git a/v2rayN/v2rayN/Forms/RoutingRuleSettingForm.resx b/v2rayN/v2rayN/Forms/RoutingRuleSettingForm.resx index 426ce16c..caef34ad 100644 --- a/v2rayN/v2rayN/Forms/RoutingRuleSettingForm.resx +++ b/v2rayN/v2rayN/Forms/RoutingRuleSettingForm.resx @@ -117,320 +117,368 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoControl - - - - 568, 17 - - - 75, 23 - - - - 4 - - - &Cancel - - - btnClose - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel2 - - - 0 - - - NoControl - - - 475, 17 - - - 75, 23 - - - 5 - - - &OK - - - btnOK - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel2 - - - 1 - - - Bottom - - - 0, 515 - - - 762, 60 - - - 7 - - - panel2 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 3 - - - True - - - NoControl - - - 18, 63 - - - 53, 12 - - - 35 - - - Optional - - - label1 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel1 - - - 0 - - - 91, 45 - - - True - - - Vertical - - - 644, 48 - - - 34 - - - txtUrl + + System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - panel1 - - - 1 - - - True - - - NoControl - - - 18, 45 - - - 47, 12 - - - 33 - - - Sub Url - - - label3 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel1 - - - 2 - - - 91, 13 - - - 166, 21 - - - 32 - - - txtRemarks - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel1 - - - 3 - - - True - - - NoControl - - - 18, 13 - - - 47, 12 - - - 31 - - - Remarks - - - label2 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel1 - - - 4 - - - Top - - - 0, 25 - - - 762, 102 - - - 11 - - - panel1 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 2 - - - 17, 17 - - - 202, 22 - - - Add - - - 202, 22 - - - Remove selected - - - 202, 22 - - - Select All (Ctrl+A) - - - 202, 22 - - - Export Selected Rules - + 199, 6 - - 202, 22 + + + Fill - - Move to top (T) + + menuImportRulesFromUrl - - 202, 22 - - - Up (U) - - - 202, 22 + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Down (D) - - 202, 22 + + 762, 25 + + + + 32 + + + 5 + + + 47, 12 Move to bottom (B) - - 120, 21 + + panel1 + + + 40 + + + Bottom Edit and Function - - 203, 186 + + panel1 + + + $this + + + 75, 23 + + + NoControl + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 4 + + + True + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel1 + + + 15 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 4, 22 + + + $this + + + panel1 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Rule Settings + + + Remove selected + + + NoControl + + + tabPage2 + + + 4 + + + 202, 22 + + + 475, 17 + + + 75, 23 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 33 + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + MenuItem1 + + + 0 + + + 754, 231 + + + 1 + + + 568, 17 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 47, 12 + + + txtCustomIcon + + + NoControl + + + 0, 0 + + + label1 + + + 762, 60 + + + Sub Url + + + 95, 21 + + + 128*128 + + + panel1 + + + True + + + 120, 21 + + + True + + + Import Rules From Sub Url + + + 2 + + + menuSelectAll + + + menuMoveTop + + + 202, 22 cmsLv - - System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 8 - - Fill + + Add + + + 12 + + + toolStripSeparator3 + + + label5 + + + tabPage2 + + + toolStripMenuItem1 + + + menuMoveBottom + + + 0, 25 + + + 18, 105 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 18, 63 + + + Import Rules From File + + + 202, 22 + + + 762, 257 + + + 1 + + + RoutingRuleSettingForm + + + panel2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel1 + + + 202, 22 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 3 + + + System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Up (U) + + + 203, 186 + + + btnOK + + + 53, 12 + + + 47, 12 + + + 14 + + + Import Rules + + + NoControl + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + panel2 + + + 3, 3 + + + 18, 117 + + + menuImportRulesFromClipboard + + + Import Rules From Clipboard + + + panel1 + + + menuAdd + + + 0, 167 + + + 247, 22 + + + 4 + + + Move to top (T) + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 762, 142 + + + txtUrl + + + 748, 225 + + + 660, 104 @@ -449,226 +497,289 @@ ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw== - - 3, 3 + + 34 - - 748, 356 + + 36 - - 12 - - - lvRoutings - - - v2rayN.Base.ListViewFlickerFree, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - tabPage2 - - - 0 - - - 4, 22 - - - 3, 3, 3, 3 - - - 754, 362 - - - 0 - - - RuleList - - - tabPage2 - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabControl2 - - - 0 - - - Fill - - - 0, 127 - - - 762, 388 - - - 14 - - - tabControl2 - - - System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 1 - - - 139, 17 - - - 247, 22 - - - Import Rules From File - - - 247, 22 - - - Import Rules From Clipboard + + 2 247, 22 - - Import Rules From Sub Url + + label4 - - 95, 21 + + &OK - - Import Rules + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 0, 0 - - - 762, 25 - - - 15 - - - menuServer - - - System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 4 - - + True - - - 6, 12 - - - 762, 575 - - - Rule Settings - - - menuAdd - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuRemove - - - 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 - - - menuExportSelectedRules System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - toolStripSeparator3 + + panel2 - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 35 - - menuMoveTop + + v2rayN.Base.ListViewFlickerFree, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 71, 12 - - menuMoveUp + + 18, 45 - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 31 - - menuMoveDown + + 91, 45 - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuMoveBottom - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - MenuItem1 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripMenuItem1 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuImportRulesFromFile - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuImportRulesFromClipboard + + 166, 21 System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - menuImportRulesFromUrl + + 644, 48 - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + menuMoveDown - - RoutingRuleSettingForm + + 202, 22 + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuImportRulesFromFile + + + label3 + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 11 + + + 3 + + + 7 + + + Vertical + + + &Browse + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 5 + + + panel1 v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + tabControl2 + + + Remarks + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 3, 3, 3, 3 + + + 0, 424 + + + menuMoveUp + + + RuleList + + + 563, 21 + + + 0 + + + Select All (Ctrl+A) + + + btnClose + + + Fill + + + 18, 13 + + + 6, 12 + + + 37 + + + menuExportSelectedRules + + + Optional + + + Export Selected Rules + + + menuServer + + + 91, 13 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 247, 22 + + + 202, 22 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + lvRoutings + + + 202, 22 + + + 91, 105 + + + label2 + + + menuRemove + + + True + + + NoControl + + + NoControl + + + 762, 484 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + btnBrowse + + + $this + + + NoControl + + + 39 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 202, 22 + + + 6 + + + &Cancel + + + NoControl + + + 0 + + + 7 + + + panel1 + + + 75, 23 + + + tabControl2 + + + panel1 + + + 0 + + + System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + txtRemarks + + + 1 + + + True + + + Custom icon + + + 0 + + + Top + + + True + + + 25 + + + 139, 17 + + + 17, 17 + \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/RoutingRuleSettingForm.zh-Hans.resx b/v2rayN/v2rayN/Forms/RoutingRuleSettingForm.zh-Hans.resx index 06ade53a..d6544331 100644 --- a/v2rayN/v2rayN/Forms/RoutingRuleSettingForm.zh-Hans.resx +++ b/v2rayN/v2rayN/Forms/RoutingRuleSettingForm.zh-Hans.resx @@ -120,16 +120,31 @@ 取消(&C) - - 确定(&O) - - 0, 613 + 0, 501 785, 60 + + 确定(&O) + + + 785, 147 + + + 670, 104 + + + 101, 105 + + + 65, 12 + + + 自定义图标 + 29, 12 @@ -154,9 +169,6 @@ 别名 - - 785, 109 - 196, 22 @@ -235,19 +247,28 @@ - 771, 447 + 771, 297 + + + 0, 172 + + + 785, 329 - 777, 453 + 777, 303 规则列表 - - 0, 134 + + 785, 25 - - 785, 479 + + 68, 21 + + + 导入规则 189, 22 @@ -267,17 +288,8 @@ 从订阅Url中导入规则 - - 68, 21 - - - 导入规则 - - - 785, 25 - - 785, 673 + 785, 561 规则集设置 diff --git a/v2rayN/v2rayN/Handler/MainFormHandler.cs b/v2rayN/v2rayN/Handler/MainFormHandler.cs index c44f8a1b..56858b92 100644 --- a/v2rayN/v2rayN/Handler/MainFormHandler.cs +++ b/v2rayN/v2rayN/Handler/MainFormHandler.cs @@ -1,5 +1,6 @@ using System; using System.Drawing; +using System.IO; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; @@ -50,9 +51,23 @@ namespace v2rayN.Handler Graphics graphics = Graphics.FromImage(bitmap); SolidBrush drawBrush = new SolidBrush(color); - graphics.FillEllipse(drawBrush, new Rectangle(0, 0, width, height)); - int zoom = 16; - graphics.DrawImage(new Bitmap(Properties.Resources.notify, width - zoom, width - zoom), zoom / 2, zoom / 2); + var customIcon = false; + if (config.enableRoutingAdvanced) + { + var item = config.routings[config.routingIndex]; + if (!Utils.IsNullOrEmpty(item.customIcon) && File.Exists(item.customIcon)) + { + graphics.FillRectangle(drawBrush, new Rectangle(0, 0, width, height)); + graphics.DrawImage(new Bitmap(item.customIcon), 0, 0); + customIcon = true; + } + } + if (!customIcon) + { + graphics.FillEllipse(drawBrush, new Rectangle(0, 0, width, height)); + int zoom = 16; + graphics.DrawImage(new Bitmap(Properties.Resources.notify, width - zoom, width - zoom), zoom / 2, zoom / 2); + } Icon createdIcon = Icon.FromHandle(bitmap.GetHicon()); diff --git a/v2rayN/v2rayN/Mode/RoutingItem.cs b/v2rayN/v2rayN/Mode/RoutingItem.cs index 2344e227..02a93edf 100644 --- a/v2rayN/v2rayN/Mode/RoutingItem.cs +++ b/v2rayN/v2rayN/Mode/RoutingItem.cs @@ -27,6 +27,9 @@ namespace v2rayN.Mode { get; set; } - + public string customIcon + { + get; set; + } } }