コミットメタ情報

リビジョンde616ed821e7d48054aaaddeeecc0afe48b9fa75 (tree)
日時2018-03-11 23:51:02
作者Kazuhiro Fujieda <fujieda@user...>
コミッターKazuhiro Fujieda

ログメッセージ

設定ファイルをこまめに保存する

変更サマリ

差分

--- a/KancolleSniffer/ListForm.cs
+++ b/KancolleSniffer/ListForm.cs
@@ -96,7 +96,14 @@ namespace KancolleSniffer
9696 else
9797 {
9898 SetHeaderSortOrder();
99- shipListPanel.Update(_sniffer, comboBoxGroup.Text, _config.ShipList.SortOrder, _config.ShipList.ShipType);
99+ shipListPanel.Update(_sniffer, comboBoxGroup.Text, _config.ShipList.SortOrder,
100+ _config.ShipList.ShipType);
101+ }
102+ if (shipListPanel.GroupUpdated)
103+ {
104+ StoreShipGroupToConfig();
105+ _config.Save();
106+ shipListPanel.GroupUpdated = false;
100107 }
101108 }
102109
@@ -168,12 +175,7 @@ namespace KancolleSniffer
168175 checkBoxShipType.Checked = config.ShipType;
169176 if (config.ShowHpInPercent)
170177 shipListPanel.ToggleHpPercent();
171- for (var i = 0; i < ShipListPanel.GroupCount; i++)
172- {
173- shipListPanel.GroupSettings[i] = i < config.ShipGroup.Count
174- ? new HashSet<int>(config.ShipGroup[i])
175- : new HashSet<int>();
176- }
178+ LoadShipGroupFromConfig();
177179 comboBoxGroup.SelectedItem = config.Mode ?? "全員";
178180 if (config.Location.X == int.MinValue)
179181 return;
@@ -183,6 +185,13 @@ namespace KancolleSniffer
183185 Height = bounds.Height;
184186 }
185187
188+ private void LoadShipGroupFromConfig()
189+ {
190+ var group = _config.ShipList.ShipGroup;
191+ for (var i = 0; i < ShipListPanel.GroupCount; i++)
192+ shipListPanel.GroupSettings[i] = i < group.Count ? new HashSet<int>(group[i]) : new HashSet<int>();
193+ }
194+
186195 private void ShipListForm_FormClosing(object sender, FormClosingEventArgs e)
187196 {
188197 e.Cancel = true;
@@ -190,20 +199,29 @@ namespace KancolleSniffer
190199 return;
191200 var config = _config.ShipList;
192201 config.ShowHpInPercent = shipListPanel.ShowHpInPercent;
193- var all = _sniffer.ShipList.Select(s => s.Id).ToArray();
194- config.ShipGroup.Clear();
195- for (var i = 0; i < ShipListPanel.GroupCount; i++)
196- {
197- if (all.Length > 0)
198- shipListPanel.GroupSettings[i].IntersectWith(all);
199- config.ShipGroup.Add(shipListPanel.GroupSettings[i].ToList());
200- }
202+ StoreShipGroupToConfig();
201203 var bounds = WindowState == FormWindowState.Normal ? Bounds : RestoreBounds;
202204 config.Location = bounds.Location;
203205 config.Size = bounds.Size;
204206 config.Mode = (string)comboBoxGroup.SelectedItem;
205207 if (e.CloseReason != CloseReason.FormOwnerClosing)
208+ {
206209 Hide();
210+ _config.Save();
211+ }
212+ }
213+
214+ private void StoreShipGroupToConfig()
215+ {
216+ var all = _sniffer.ShipList.Select(s => s.Id).ToArray();
217+ var group = _config.ShipList.ShipGroup;
218+ group.Clear();
219+ for (var i = 0; i < ShipListPanel.GroupCount; i++)
220+ {
221+ if (all.Length > 0)
222+ shipListPanel.GroupSettings[i].IntersectWith(all);
223+ group.Add(shipListPanel.GroupSettings[i].ToList());
224+ }
207225 }
208226
209227 public void ShowShip(int id)
--- a/KancolleSniffer/MainForm.cs
+++ b/KancolleSniffer/MainForm.cs
@@ -386,6 +386,7 @@ namespace KancolleSniffer
386386 {
387387 if (_configDialog.ShowDialog(this) == DialogResult.OK)
388388 {
389+ _config.Save();
389390 ApplyConfig();
390391 StopRepeatingTimer(_configDialog.RepeatSettingsChanged);
391392 }
--- a/KancolleSniffer/ShipListPanel.cs
+++ b/KancolleSniffer/ShipListPanel.cs
@@ -40,6 +40,7 @@ namespace KancolleSniffer
4040
4141 public const int GroupCount = 4;
4242 public HashSet<int>[] GroupSettings { get; } = new HashSet<int>[GroupCount];
43+ public bool GroupUpdated { get; set; }
4344
4445 public ScrollBar ScrollBar { get; }
4546
@@ -293,6 +294,7 @@ namespace KancolleSniffer
293294 {
294295 GroupSettings[group].Remove(_shipList[idx + ScrollBar.Value].Id);
295296 }
297+ GroupUpdated = true;
296298 }
297299
298300 private void CreateRepairLabels(int i)
旧リポジトリブラウザで表示