From 4a28a1aa9681f7bddd85504ee15ceb7100df3ee0 Mon Sep 17 00:00:00 2001 From: adelikat Date: Sat, 4 Aug 2012 22:45:58 +0000 Subject: [PATCH] Archive Chooser - sort entries by region, add hotkeys 1-9 that select items 1-9 respectively --- .../ArchiveChooser.Designer.cs | 1 + BizHawk.MultiClient/ArchiveChooser.cs | 94 ++++++++++++++++--- 2 files changed, 83 insertions(+), 12 deletions(-) diff --git a/BizHawk.MultiClient/ArchiveChooser.Designer.cs b/BizHawk.MultiClient/ArchiveChooser.Designer.cs index ba0f39ae21..29a933a41a 100644 --- a/BizHawk.MultiClient/ArchiveChooser.Designer.cs +++ b/BizHawk.MultiClient/ArchiveChooser.Designer.cs @@ -85,6 +85,7 @@ this.lvMembers.UseCompatibleStateImageBehavior = false; this.lvMembers.View = System.Windows.Forms.View.Details; this.lvMembers.ItemActivate += new System.EventHandler(this.lvMembers_ItemActivate); + this.lvMembers.KeyDown += new System.Windows.Forms.KeyEventHandler(this.lvMembers_KeyDown); // // colSize // diff --git a/BizHawk.MultiClient/ArchiveChooser.cs b/BizHawk.MultiClient/ArchiveChooser.cs index 5268e6068e..a522c85f75 100644 --- a/BizHawk.MultiClient/ArchiveChooser.cs +++ b/BizHawk.MultiClient/ArchiveChooser.cs @@ -21,27 +21,72 @@ namespace BizHawk.MultiClient lvi.SubItems.Add(new ListViewItem.ListViewSubItem()); lvi.Text = Util.FormatFileSize(item.size); lvi.SubItems[1].Text = item.name; - - if (IsVerifiedUSA(item.name)) - { - lvMembers.Items.Insert(0, lvi); - } - else - { - lvMembers.Items.Add(lvi); - } - + lvMembers.Items.Add(lvi); } + + SortItems(); } - private bool IsVerifiedUSA(string name) + private bool IsVerifiedRegion(string name, string region) { - if (name.Contains("(U)") && name.Contains("[!]")) + if (name.Contains(region) && name.Contains("[!]")) return true; else return false; } + private bool IsUnverifiedRegion(string name, string region) + { + if (name.Contains(region) && !(name.Contains("[!]"))) + return true; + else + return false; + } + + private bool IsNotRegion(string name) + { + if (name.Contains("(W)")) return false; + if (name.Contains("(JU)")) return false; + if (name.Contains("(U)")) return false; + if (name.Contains("(J)")) return false; + if (name.Contains("(E)")) return false; + return true; + } + + private void SortItems() + { + List lvitems = new List(); + foreach(ListViewItem item in lvMembers.Items) + { + lvitems.Add(item); + } + + List sorteditems = new List(); + + sorteditems.AddRange(lvitems.Where(x => IsVerifiedRegion(x.SubItems[1].Text, "(W)")).OrderBy(x => x.Name).ToList()); + sorteditems.AddRange(lvitems.Where(x => IsUnverifiedRegion(x.SubItems[1].Text, "(W)")).OrderBy(x => x.Name).ToList()); + + sorteditems.AddRange(lvitems.Where(x => IsVerifiedRegion(x.SubItems[1].Text, "(JU)")).OrderBy(x => x.Name).ToList()); + sorteditems.AddRange(lvitems.Where(x => IsUnverifiedRegion(x.SubItems[1].Text, "(JU)")).OrderBy(x => x.Name).ToList()); + + sorteditems.AddRange(lvitems.Where(x => IsVerifiedRegion(x.SubItems[1].Text, "(U)")).OrderBy(x => x.Name).ToList()); + sorteditems.AddRange(lvitems.Where(x => IsUnverifiedRegion(x.SubItems[1].Text, "(U)")).OrderBy(x => x.Name).ToList()); + + sorteditems.AddRange(lvitems.Where(x => IsVerifiedRegion(x.SubItems[1].Text, "(J)")).OrderBy(x => x.Name).ToList()); + sorteditems.AddRange(lvitems.Where(x => IsUnverifiedRegion(x.SubItems[1].Text, "(J)")).OrderBy(x => x.Name).ToList()); + + sorteditems.AddRange(lvitems.Where(x => IsVerifiedRegion(x.SubItems[1].Text, "(E)")).OrderBy(x => x.Name).ToList()); + sorteditems.AddRange(lvitems.Where(x => IsUnverifiedRegion(x.SubItems[1].Text, "(E)")).OrderBy(x => x.Name).ToList()); + + sorteditems.AddRange(lvitems.Where(x => IsNotRegion(x.SubItems[1].Text)).ToList()); + + lvMembers.Items.Clear(); + foreach (ListViewItem i in sorteditems) + { + lvMembers.Items.Add(i); + } + } + public int SelectedMemberIndex { get @@ -73,5 +118,30 @@ namespace BizHawk.MultiClient { lvMembers.Items[0].Selected = true; } + + private void lvMembers_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.D1) SetItem(1); + if (e.KeyCode == Keys.D2) SetItem(2); + if (e.KeyCode == Keys.D3) SetItem(3); + if (e.KeyCode == Keys.D4) SetItem(4); + if (e.KeyCode == Keys.D5) SetItem(5); + if (e.KeyCode == Keys.D6) SetItem(6); + if (e.KeyCode == Keys.D7) SetItem(7); + if (e.KeyCode == Keys.D8) SetItem(8); + if (e.KeyCode == Keys.D9) SetItem(9); + } + + private void SetItem(int num) + { + if (num <= lvMembers.Items.Count) + { + foreach (ListViewItem item in lvMembers.SelectedItems) + { + item.Selected = false; + } + lvMembers.Items[num - 1].Selected = true; + } + } } }