订阅窗口可右键删除订阅节点

新增订阅链接勾选项(订阅启用状态)
更新订阅窗口汉化
This commit is contained in:
AmazingDM
2021-01-05 11:55:04 +08:00
parent 528abe3fdd
commit 34814fe7f5
7 changed files with 113 additions and 44 deletions

View File

@@ -40,11 +40,13 @@
this.RemarkTextBox = new System.Windows.Forms.TextBox();
this.RemarkLabel = new System.Windows.Forms.Label();
this.SubscribeLinkListView = new System.Windows.Forms.ListView();
this.EnableColumnHeader = new System.Windows.Forms.ColumnHeader();
this.RemarkColumnHeader = new System.Windows.Forms.ColumnHeader();
this.LinkColumnHeader = new System.Windows.Forms.ColumnHeader();
this.UserAgentHeader = new System.Windows.Forms.ColumnHeader();
this.pContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
this.DeleteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.deleteServerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.CopyLinkToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.UseSelectedServerCheckBox = new System.Windows.Forms.CheckBox();
this.MainTableLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
@@ -143,19 +145,29 @@
// SubscribeLinkListView
//
this.SubscribeLinkListView.AllowColumnReorder = true;
this.SubscribeLinkListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {this.RemarkColumnHeader, this.LinkColumnHeader, this.UserAgentHeader});
this.SubscribeLinkListView.CheckBoxes = true;
this.SubscribeLinkListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[]
{
this.EnableColumnHeader, this.RemarkColumnHeader, this.LinkColumnHeader, this.UserAgentHeader
});
this.SubscribeLinkListView.Dock = System.Windows.Forms.DockStyle.Fill;
this.SubscribeLinkListView.FullRowSelect = true;
this.SubscribeLinkListView.HideSelection = false;
this.SubscribeLinkListView.Location = new System.Drawing.Point(8, 8);
this.SubscribeLinkListView.MultiSelect = false;
this.SubscribeLinkListView.Name = "SubscribeLinkListView";
this.SubscribeLinkListView.Size = new System.Drawing.Size(668, 200);
this.SubscribeLinkListView.TabIndex = 0;
this.SubscribeLinkListView.UseCompatibleStateImageBehavior = false;
this.SubscribeLinkListView.View = System.Windows.Forms.View.Details;
this.SubscribeLinkListView.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.SubscribeLinkListView_ItemChecked);
this.SubscribeLinkListView.SelectedIndexChanged += new System.EventHandler(this.SubscribeLinkListView_SelectedIndexChanged);
this.SubscribeLinkListView.MouseUp += new System.Windows.Forms.MouseEventHandler(this.SubscribeLinkListView_MouseUp);
//
// EnableColumnHeader
//
this.EnableColumnHeader.Text = "Status";
//
// RemarkColumnHeader
//
this.RemarkColumnHeader.Text = "Remark";
@@ -164,7 +176,7 @@
// LinkColumnHeader
//
this.LinkColumnHeader.Text = "Link";
this.LinkColumnHeader.Width = 400;
this.LinkColumnHeader.Width = 364;
//
// UserAgentHeader
//
@@ -173,21 +185,31 @@
//
// pContextMenuStrip
//
this.pContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {this.DeleteToolStripMenuItem, this.CopyLinkToolStripMenuItem});
this.pContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[]
{
this.DeleteToolStripMenuItem, this.deleteServerToolStripMenuItem, this.CopyLinkToolStripMenuItem
});
this.pContextMenuStrip.Name = "pContextMenuStrip";
this.pContextMenuStrip.Size = new System.Drawing.Size(130, 48);
this.pContextMenuStrip.Size = new System.Drawing.Size(151, 70);
//
// DeleteToolStripMenuItem
//
this.DeleteToolStripMenuItem.Name = "DeleteToolStripMenuItem";
this.DeleteToolStripMenuItem.Size = new System.Drawing.Size(129, 22);
this.DeleteToolStripMenuItem.Size = new System.Drawing.Size(150, 22);
this.DeleteToolStripMenuItem.Text = "Delete";
this.DeleteToolStripMenuItem.Click += new System.EventHandler(this.DeleteToolStripMenuItem_Click);
//
// deleteServerToolStripMenuItem
//
this.deleteServerToolStripMenuItem.Name = "deleteServerToolStripMenuItem";
this.deleteServerToolStripMenuItem.Size = new System.Drawing.Size(150, 22);
this.deleteServerToolStripMenuItem.Text = "DeleteServer";
this.deleteServerToolStripMenuItem.Click += new System.EventHandler(this.deleteServerToolStripMenuItem_Click);
//
// CopyLinkToolStripMenuItem
//
this.CopyLinkToolStripMenuItem.Name = "CopyLinkToolStripMenuItem";
this.CopyLinkToolStripMenuItem.Size = new System.Drawing.Size(129, 22);
this.CopyLinkToolStripMenuItem.Size = new System.Drawing.Size(150, 22);
this.CopyLinkToolStripMenuItem.Text = "CopyLink";
this.CopyLinkToolStripMenuItem.Click += new System.EventHandler(this.CopyLinkToolStripMenuItem_Click);
//
@@ -253,6 +275,7 @@
this.ControlsPanel.PerformLayout();
this.ResumeLayout(false);
}
private System.Windows.Forms.ColumnHeader EnableColumnHeader;
private System.Windows.Forms.Panel ControlsPanel;
private System.Windows.Forms.TableLayoutPanel MainTableLayoutPanel;
@@ -275,5 +298,7 @@
private System.Windows.Forms.CheckBox UseSelectedServerCheckBox;
#endregion
private System.Windows.Forms.ToolStripMenuItem deleteServerToolStripMenuItem;
}
}

View File

@@ -1,4 +1,5 @@
using System;
using System.ComponentModel;
using System.Linq;
using System.Windows.Forms;
using Netch.Models;
@@ -21,12 +22,15 @@ namespace Netch.Forms
foreach (var item in Global.Settings.SubscribeLink)
{
SubscribeLinkListView.Items.Add(new ListViewItem(new[]
var viewItem = new ListViewItem(new[]
{
"",
item.Remark,
item.Link,
!string.IsNullOrEmpty(item.UserAgent) ? item.UserAgent : WebUtil.DefaultUserAgent
}));
});
viewItem.Checked = item.Enable;
SubscribeLinkListView.Items.Add(viewItem);
}
}
@@ -119,6 +123,7 @@ namespace Netch.Forms
Global.Settings.SubscribeLink.Add(new SubscribeLink
{
Enable = true,
Remark = RemarkTextBox.Text,
Link = LinkTextBox.Text,
UserAgent = UserAgentTextBox.Text
@@ -135,7 +140,9 @@ namespace Netch.Forms
{
RenameServersGroup(target.Remark, RemarkTextBox.Text);
}
ListViewItem listViewItem = SubscribeLinkListView.Items[_editingIndex];
target.Enable = listViewItem.Checked;
target.Link = LinkTextBox.Text;
target.Remark = RemarkTextBox.Text;
target.UserAgent = UserAgentTextBox.Text;
@@ -173,31 +180,21 @@ namespace Netch.Forms
/// <param name="e"></param>
private void SubscribeLinkListView_SelectedIndexChanged(object sender, EventArgs e)
{
var editingCanOverwrite = true;
if (_editingIndex != -1)
var listView = (ListView) sender;
if (listView.SelectedItems.Count == 0)
{
var targetItem = SubscribeLinkListView.Items[_editingIndex].SubItems;
editingCanOverwrite = RemarkTextBox.Text == targetItem[0].Text &&
LinkTextBox.Text == targetItem[1].Text &&
UserAgentTextBox.Text == targetItem[2].Text;
}
if (SubscribeLinkListView.SelectedItems.Count == 1)
{
if (editingCanOverwrite)
{
SelectEditing(SubscribeLinkListView.SelectedItems[0].Index);
}
}
else if (SubscribeLinkListView.SelectedItems.Count > 1)
{
}
else if (editingCanOverwrite)
{
// 不选
// 重置
ResetEditingGroup();
return;
}
_editingIndex = listView.SelectedItems[0].Index;
ListViewItem target = SubscribeLinkListView.Items[_editingIndex];
AddSubscriptionBox.Text = target.SubItems[1].Text;
RemarkTextBox.Text = target.SubItems[1].Text;
LinkTextBox.Text = target.SubItems[2].Text;
UserAgentTextBox.Text = target.SubItems[3].Text;
}
private void SubscribeLinkListView_MouseUp(object sender, MouseEventArgs e)
@@ -211,17 +208,6 @@ namespace Netch.Forms
}
}
private void SelectEditing(int index)
{
_editingIndex = index;
ListViewItem target;
target = SubscribeLinkListView.Items[index];
AddSubscriptionBox.Text = target.SubItems[0].Text;
RemarkTextBox.Text = target.SubItems[0].Text;
LinkTextBox.Text = target.SubItems[1].Text;
UserAgentTextBox.Text = target.SubItems[2].Text;
}
private void ResetEditingGroup()
{
_editingIndex = -1;
@@ -235,5 +221,36 @@ namespace Netch.Forms
{
ResetEditingGroup();
}
private void SubscribeLinkListView_ItemChecked(object sender, ItemCheckedEventArgs e)
{
_editingIndex = e.Item.Index;
ListViewItem listViewItem = SubscribeLinkListView.Items[e.Item.Index];
AddSubscriptionBox.Text = listViewItem.SubItems[1].Text;
RemarkTextBox.Text = listViewItem.SubItems[1].Text;
LinkTextBox.Text = listViewItem.SubItems[2].Text;
UserAgentTextBox.Text = listViewItem.SubItems[3].Text;
var settingSub = Global.Settings.SubscribeLink[_editingIndex];
settingSub.Enable = listViewItem.Checked;
settingSub.Remark = listViewItem.SubItems[1].Text;
settingSub.Link = listViewItem.SubItems[2].Text;
settingSub.UserAgent = listViewItem.SubItems[3].Text;
Configuration.Save();
}
private void deleteServerToolStripMenuItem_Click(object sender, EventArgs e)
{
if (SubscribeLinkListView.SelectedItems.Count > 0)
{
var item = SubscribeLinkListView.SelectedItems[0];
if (MessageBoxX.Show(i18N.Translate("Confirm deletion?"), confirm: true) != DialogResult.OK)
return;
DeleteServersInGroup(item.SubItems[1].Text);
}
}
}
}

View File

@@ -2,6 +2,11 @@
{
public class SubscribeLink
{
/// <summary>
/// 启用状态
/// </summary>
public bool Enable;
/// <summary>
/// 备注
/// </summary>
@@ -17,4 +22,4 @@
/// </summary>
public string UserAgent;
}
}
}

View File

@@ -70,6 +70,13 @@
"Updating in the background": "正在后台更新中",
"Update {1} server(s) from {0}": "从 {0} 更新 {1} 个服务器",
"Update servers error from {0}": "从 {0} 更新服务器失败",
"Delete the corresponding group of items in the server list?": "是否删除订阅对应服务器?",
"Confirm deletion?": "确认删除?",
"DeleteServer": "删除订阅节点",
"Status": "状态",
"Remark": "备注",
"Link": "链接",
"Unselect": "取消选择",
"Options": "选项",
"NF Service": "NF 服务",
@@ -81,16 +88,16 @@
"Modes have been reload": "模式已重载",
"Clean DNS Cache": "清理 DNS 缓存",
"DNS cache cleanup succeeded": "DNS 缓存清理成功",
"Update PAC": "更新 PAC",
"PAC updated successfully": "PAC 更新成功",
"PAC update failed": "PAC 更新失败",
"Update ACL": "更新 ACL 规则",
"Update ACL with proxy": "使用代理更新 ACL 规则",
"ACL updated successfully": "ACL 更新成功",
"ACL update failed": "ACL 更新失败",
"Open Directory": "打开目录",
"About": "关于",

View File

@@ -24,6 +24,10 @@ namespace Netch.Utils
{
try
{
if (!item.Enable)
{
return;
}
var request = WebUtil.CreateRequest(item.Link);
if (!string.IsNullOrEmpty(item.UserAgent)) request.UserAgent = item.UserAgent;

View File

@@ -216,6 +216,14 @@ namespace Netch.Utils
func.Invoke(component);
switch (component)
{
case ListView listView:
// ListView sub item
foreach (var item in listView.Columns.Cast<ColumnHeader>())
{
ComponentIterator(item, func);
}
break;
case ToolStripMenuItem toolStripMenuItem:
// Iterator Menu strip sub item
foreach (var item in toolStripMenuItem.DropDownItems.Cast<ToolStripItem>())

View File

@@ -121,6 +121,9 @@ namespace Netch.Utils
case ToolStripItem c:
c.Text = Translate(c.Text);
break;
case ColumnHeader c:
c.Text = Translate(c.Text);
break;
}
});
}