X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=KancolleSniffer%2FListForm.cs;h=3103b0b9f156ea1d0c01b88420480c6e656d6cc5;hb=de616ed821e7d48054aaaddeeecc0afe48b9fa75;hp=f7f540af2456be2455740eed3d9a066b27d772b1;hpb=fdba424819a4bc0c4104b16d842ef714b448c052;p=kancollesniffer%2FKancolleSniffer.git 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)