diff --git a/Netch/Forms/SubscribeForm.Designer.cs b/Netch/Forms/SubscribeForm.Designer.cs index 258552e5..30358caa 100644 --- a/Netch/Forms/SubscribeForm.Designer.cs +++ b/Netch/Forms/SubscribeForm.Designer.cs @@ -160,6 +160,7 @@ 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); // diff --git a/Netch/Forms/SubscribeForm.cs b/Netch/Forms/SubscribeForm.cs index 51138f21..72e6442a 100644 --- a/Netch/Forms/SubscribeForm.cs +++ b/Netch/Forms/SubscribeForm.cs @@ -23,62 +23,64 @@ namespace Netch.Forms ResetEditingGroup(); } - public void InitSubscribeLink() - { - SubscribeLinkListView.Items.Clear(); + #region EventHandler - foreach (var item in Global.Settings.SubscribeLink) + /// + /// 订阅列表选中节点 + /// + private void SubscribeLinkListView_SelectedIndexChanged(object sender, EventArgs e) + { + var listView = (ListView) sender; + if (listView.SelectedItems.Count == 0) { - 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); + // 重置 + ResetEditingGroup(); + return; } + _editingIndex = listView.SelectedItems[0].Index; + + var 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 SubscribeForm_FormClosing(object sender, FormClosingEventArgs e) + private void SubscribeLinkListView_MouseUp(object sender, MouseEventArgs e) { - Configuration.Save(); - Global.Settings.UseProxyToUpdateSubscription = UseSelectedServerCheckBox.Checked; - } - - private void CopyLinkToolStripMenuItem_Click(object sender, EventArgs e) - { - if (SubscribeLinkListView.SelectedItems.Count > 0) - { - for (var i = SubscribeLinkListView.SelectedItems.Count - 1; i >= 0; i--) - { - var item = SubscribeLinkListView.SelectedItems[i]; - var link = Global.Settings.SubscribeLink[item.Index]; - Clipboard.SetText(link.Link); - } - } - } - - private void DeleteToolStripMenuItem_Click(object sender, EventArgs e) - { - if (MessageBoxX.Show(i18N.Translate("Delete or not ? Will clean up the corresponding group of items in the server list"), confirm: true) == DialogResult.OK) + if (e.Button == MouseButtons.Right) { if (SubscribeLinkListView.SelectedItems.Count > 0) { - for (var i = SubscribeLinkListView.SelectedItems.Count - 1; i >= 0; i--) - { - var item = SubscribeLinkListView.SelectedItems[i]; - - DeleteServersInGroup(item.SubItems[0].Text); - Global.Settings.SubscribeLink.RemoveAt(item.Index); - SubscribeLinkListView.Items.Remove(item); - ResetEditingGroup(); - } + pContextMenuStrip.Show(SubscribeLinkListView, e.Location); } } } + private void SubscribeLinkListView_ItemChecked(object sender, ItemCheckedEventArgs e) + { + var viewItem = SubscribeLinkListView.Items[e.Item.Index]; + var subscribeLink = Global.Settings.SubscribeLink[e.Item.Index]; + subscribeLink.Enable = viewItem.Checked; + } + + + private void SubscribeForm_FormClosing(object sender, FormClosingEventArgs e) + { + Global.Settings.UseProxyToUpdateSubscription = UseSelectedServerCheckBox.Checked; + Configuration.Save(); + } + + #endregion + + #region EditBox + + private void ClearButton_Click(object sender, EventArgs e) + { + ResetEditingGroup(); + } + private void AddButton_Click(object sender, EventArgs e) { if (string.IsNullOrWhiteSpace(RemarkTextBox.Text)) @@ -117,25 +119,58 @@ namespace Netch.Forms } else { - var target = Global.Settings.SubscribeLink[_editingIndex]; - RenameServersGroup(target.Remark, RemarkTextBox.Text); + var subscribeLink = Global.Settings.SubscribeLink[_editingIndex]; - var listViewItem = SubscribeLinkListView.Items[_editingIndex]; - - target.Enable = listViewItem.Checked; - target.Link = LinkTextBox.Text; - target.Remark = RemarkTextBox.Text; - target.UserAgent = UserAgentTextBox.Text; + RenameServersGroup(subscribeLink.Remark, RemarkTextBox.Text); + subscribeLink.Link = LinkTextBox.Text; + subscribeLink.Remark = RemarkTextBox.Text; + subscribeLink.UserAgent = UserAgentTextBox.Text; } MessageBoxX.Show(i18N.Translate("Saved")); - Global.Settings.UseProxyToUpdateSubscription = UseSelectedServerCheckBox.Checked; - Configuration.Save(); InitSubscribeLink(); ResetEditingGroup(); } + #endregion + + #region ContextMenu + + private void DeleteToolStripMenuItem_Click(object sender, EventArgs e) + { + if (MessageBoxX.Show(i18N.Translate("Delete or not ? Will clean up the corresponding group of items in the server list"), confirm: true) != DialogResult.OK) + return; + + var viewItem = SubscribeLinkListView.SelectedItems[0]; + var subscribeLink = Global.Settings.SubscribeLink[viewItem.Index]; + + DeleteServersInGroup(subscribeLink.Remark); + Global.Settings.SubscribeLink.Remove(subscribeLink); + SubscribeLinkListView.Items.Remove(viewItem); + ResetEditingGroup(); + } + + private void deleteServerToolStripMenuItem_Click(object sender, EventArgs e) + { + if (MessageBoxX.Show(i18N.Translate("Confirm deletion?"), confirm: true) != DialogResult.OK) + return; + + var viewItem = SubscribeLinkListView.SelectedItems[0]; + DeleteServersInGroup(viewItem.SubItems[1].Text); + } + + private void CopyLinkToolStripMenuItem_Click(object sender, EventArgs e) + { + var viewItem = SubscribeLinkListView.SelectedItems[0]; + var subscribeLink = Global.Settings.SubscribeLink[viewItem.Index]; + Clipboard.SetText(subscribeLink.Link); + } + + #endregion + + #region Helper + private static void DeleteServersInGroup(string group) { Global.Settings.Server.RemoveAll(server => server.Group == group); @@ -143,47 +178,29 @@ namespace Netch.Forms private static void RenameServersGroup(string oldGroup, string newGroup) { - foreach (var server in Global.Settings.Server) + foreach (var server in Global.Settings.Server.Where(server => server.Group == oldGroup)) { - if (server.Group == oldGroup) - { - server.Group = newGroup; - } + server.Group = newGroup; } } - /// - /// 订阅列表选中节点 - /// - /// - /// - private void SubscribeLinkListView_SelectedIndexChanged(object sender, EventArgs e) + private void InitSubscribeLink() { - var listView = (ListView) sender; - if (listView.SelectedItems.Count == 0) + SubscribeLinkListView.Items.Clear(); + + foreach (var item in Global.Settings.SubscribeLink) { - // 重置 - ResetEditingGroup(); - return; - } - _editingIndex = listView.SelectedItems[0].Index; - - var 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) - { - if (e.Button == MouseButtons.Right) - { - if (SubscribeLinkListView.SelectedItems.Count > 0) + var viewItem = new ListViewItem(new[] { - pContextMenuStrip.Show(SubscribeLinkListView, e.Location); - } + "", + item.Remark, + item.Link, + !string.IsNullOrEmpty(item.UserAgent) ? item.UserAgent : WebUtil.DefaultUserAgent + }) + { + Checked = item.Enable + }; + SubscribeLinkListView.Items.Add(viewItem); } } @@ -196,21 +213,6 @@ namespace Netch.Forms UserAgentTextBox.Text = WebUtil.DefaultUserAgent; } - private void ClearButton_Click(object sender, EventArgs e) - { - ResetEditingGroup(); - } - - 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); - } - } + #endregion } } \ No newline at end of file