From de616ed821e7d48054aaaddeeecc0afe48b9fa75 Mon Sep 17 00:00:00 2001 From: Kazuhiro Fujieda Date: Fri, 9 Mar 2018 23:11:02 +0900 Subject: [PATCH 1/1] =?utf8?q?=E8=A8=AD=E5=AE=9A=E3=83=95=E3=82=A1?= =?utf8?q?=E3=82=A4=E3=83=AB=E3=82=92=E3=81=93=E3=81=BE=E3=82=81=E3=81=AB?= =?utf8?q?=E4=BF=9D=E5=AD=98=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- KancolleSniffer/ListForm.cs | 48 +++++++++++++++++++++++++++------------- KancolleSniffer/MainForm.cs | 1 + KancolleSniffer/ShipListPanel.cs | 2 ++ 3 files changed, 36 insertions(+), 15 deletions(-) diff --git a/KancolleSniffer/ListForm.cs b/KancolleSniffer/ListForm.cs index f7f540a..3103b0b 100644 --- a/KancolleSniffer/ListForm.cs +++ b/KancolleSniffer/ListForm.cs @@ -96,7 +96,14 @@ namespace KancolleSniffer else { SetHeaderSortOrder(); - shipListPanel.Update(_sniffer, comboBoxGroup.Text, _config.ShipList.SortOrder, _config.ShipList.ShipType); + shipListPanel.Update(_sniffer, comboBoxGroup.Text, _config.ShipList.SortOrder, + _config.ShipList.ShipType); + } + if (shipListPanel.GroupUpdated) + { + StoreShipGroupToConfig(); + _config.Save(); + shipListPanel.GroupUpdated = false; } } @@ -168,12 +175,7 @@ namespace KancolleSniffer checkBoxShipType.Checked = config.ShipType; if (config.ShowHpInPercent) shipListPanel.ToggleHpPercent(); - for (var i = 0; i < ShipListPanel.GroupCount; i++) - { - shipListPanel.GroupSettings[i] = i < config.ShipGroup.Count - ? new HashSet(config.ShipGroup[i]) - : new HashSet(); - } + LoadShipGroupFromConfig(); comboBoxGroup.SelectedItem = config.Mode ?? "全員"; if (config.Location.X == int.MinValue) return; @@ -183,6 +185,13 @@ namespace KancolleSniffer Height = bounds.Height; } + private void LoadShipGroupFromConfig() + { + var group = _config.ShipList.ShipGroup; + for (var i = 0; i < ShipListPanel.GroupCount; i++) + shipListPanel.GroupSettings[i] = i < group.Count ? new HashSet(group[i]) : new HashSet(); + } + private void ShipListForm_FormClosing(object sender, FormClosingEventArgs e) { e.Cancel = true; @@ -190,20 +199,29 @@ namespace KancolleSniffer return; var config = _config.ShipList; config.ShowHpInPercent = shipListPanel.ShowHpInPercent; - var all = _sniffer.ShipList.Select(s => s.Id).ToArray(); - config.ShipGroup.Clear(); - for (var i = 0; i < ShipListPanel.GroupCount; i++) - { - if (all.Length > 0) - shipListPanel.GroupSettings[i].IntersectWith(all); - config.ShipGroup.Add(shipListPanel.GroupSettings[i].ToList()); - } + StoreShipGroupToConfig(); var bounds = WindowState == FormWindowState.Normal ? Bounds : RestoreBounds; config.Location = bounds.Location; config.Size = bounds.Size; config.Mode = (string)comboBoxGroup.SelectedItem; if (e.CloseReason != CloseReason.FormOwnerClosing) + { Hide(); + _config.Save(); + } + } + + private void StoreShipGroupToConfig() + { + var all = _sniffer.ShipList.Select(s => s.Id).ToArray(); + var group = _config.ShipList.ShipGroup; + group.Clear(); + for (var i = 0; i < ShipListPanel.GroupCount; i++) + { + if (all.Length > 0) + shipListPanel.GroupSettings[i].IntersectWith(all); + group.Add(shipListPanel.GroupSettings[i].ToList()); + } } public void ShowShip(int id) diff --git a/KancolleSniffer/MainForm.cs b/KancolleSniffer/MainForm.cs index 17c3068..e13a0ad 100644 --- a/KancolleSniffer/MainForm.cs +++ b/KancolleSniffer/MainForm.cs @@ -386,6 +386,7 @@ namespace KancolleSniffer { if (_configDialog.ShowDialog(this) == DialogResult.OK) { + _config.Save(); ApplyConfig(); StopRepeatingTimer(_configDialog.RepeatSettingsChanged); } diff --git a/KancolleSniffer/ShipListPanel.cs b/KancolleSniffer/ShipListPanel.cs index 41c2e95..33e7be8 100644 --- a/KancolleSniffer/ShipListPanel.cs +++ b/KancolleSniffer/ShipListPanel.cs @@ -40,6 +40,7 @@ namespace KancolleSniffer public const int GroupCount = 4; public HashSet[] GroupSettings { get; } = new HashSet[GroupCount]; + public bool GroupUpdated { get; set; } public ScrollBar ScrollBar { get; } @@ -293,6 +294,7 @@ namespace KancolleSniffer { GroupSettings[group].Remove(_shipList[idx + ScrollBar.Value].Id); } + GroupUpdated = true; } private void CreateRepairLabels(int i) -- 2.11.0