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;
+ }
}
}