OSDN Git Service

設定ファイルをこまめに保存する
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Fri, 9 Mar 2018 14:11:02 +0000 (23:11 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sun, 11 Mar 2018 14:51:02 +0000 (23:51 +0900)
KancolleSniffer/ListForm.cs
KancolleSniffer/MainForm.cs
KancolleSniffer/ShipListPanel.cs

index f7f540a..3103b0b 100644 (file)
@@ -96,7 +96,14 @@ namespace KancolleSniffer
             else\r
             {\r
                 SetHeaderSortOrder();\r
-                shipListPanel.Update(_sniffer, comboBoxGroup.Text, _config.ShipList.SortOrder, _config.ShipList.ShipType);\r
+                shipListPanel.Update(_sniffer, comboBoxGroup.Text, _config.ShipList.SortOrder,\r
+                    _config.ShipList.ShipType);\r
+            }\r
+            if (shipListPanel.GroupUpdated)\r
+            {\r
+                StoreShipGroupToConfig();\r
+                _config.Save();\r
+                shipListPanel.GroupUpdated = false;\r
             }\r
         }\r
 \r
@@ -168,12 +175,7 @@ namespace KancolleSniffer
             checkBoxShipType.Checked = config.ShipType;\r
             if (config.ShowHpInPercent)\r
                 shipListPanel.ToggleHpPercent();\r
-            for (var i = 0; i < ShipListPanel.GroupCount; i++)\r
-            {\r
-                shipListPanel.GroupSettings[i] = i < config.ShipGroup.Count\r
-                    ? new HashSet<int>(config.ShipGroup[i])\r
-                    : new HashSet<int>();\r
-            }\r
+            LoadShipGroupFromConfig();\r
             comboBoxGroup.SelectedItem = config.Mode ?? "全員";\r
             if (config.Location.X == int.MinValue)\r
                 return;\r
@@ -183,6 +185,13 @@ namespace KancolleSniffer
             Height = bounds.Height;\r
         }\r
 \r
+        private void LoadShipGroupFromConfig()\r
+        {\r
+            var group = _config.ShipList.ShipGroup;\r
+            for (var i = 0; i < ShipListPanel.GroupCount; i++)\r
+                shipListPanel.GroupSettings[i] = i < group.Count ? new HashSet<int>(group[i]) : new HashSet<int>();\r
+        }\r
+\r
         private void ShipListForm_FormClosing(object sender, FormClosingEventArgs e)\r
         {\r
             e.Cancel = true;\r
@@ -190,20 +199,29 @@ namespace KancolleSniffer
                 return;\r
             var config = _config.ShipList;\r
             config.ShowHpInPercent = shipListPanel.ShowHpInPercent;\r
-            var all = _sniffer.ShipList.Select(s => s.Id).ToArray();\r
-            config.ShipGroup.Clear();\r
-            for (var i = 0; i < ShipListPanel.GroupCount; i++)\r
-            {\r
-                if (all.Length > 0)\r
-                    shipListPanel.GroupSettings[i].IntersectWith(all);\r
-                config.ShipGroup.Add(shipListPanel.GroupSettings[i].ToList());\r
-            }\r
+            StoreShipGroupToConfig();\r
             var bounds = WindowState == FormWindowState.Normal ? Bounds : RestoreBounds;\r
             config.Location = bounds.Location;\r
             config.Size = bounds.Size;\r
             config.Mode = (string)comboBoxGroup.SelectedItem;\r
             if (e.CloseReason != CloseReason.FormOwnerClosing)\r
+            {\r
                 Hide();\r
+                _config.Save();\r
+            }\r
+        }\r
+\r
+        private void StoreShipGroupToConfig()\r
+        {\r
+            var all = _sniffer.ShipList.Select(s => s.Id).ToArray();\r
+            var group = _config.ShipList.ShipGroup;\r
+            group.Clear();\r
+            for (var i = 0; i < ShipListPanel.GroupCount; i++)\r
+            {\r
+                if (all.Length > 0)\r
+                    shipListPanel.GroupSettings[i].IntersectWith(all);\r
+                group.Add(shipListPanel.GroupSettings[i].ToList());\r
+            }\r
         }\r
 \r
         public void ShowShip(int id)\r
index 17c3068..e13a0ad 100644 (file)
@@ -386,6 +386,7 @@ namespace KancolleSniffer
         {\r
             if (_configDialog.ShowDialog(this) == DialogResult.OK)\r
             {\r
+                _config.Save();\r
                 ApplyConfig();\r
                 StopRepeatingTimer(_configDialog.RepeatSettingsChanged);\r
             }\r
index 41c2e95..33e7be8 100644 (file)
@@ -40,6 +40,7 @@ namespace KancolleSniffer
 \r
         public const int GroupCount = 4;\r
         public HashSet<int>[] GroupSettings { get; } = new HashSet<int>[GroupCount];\r
+        public bool GroupUpdated { get; set; }\r
 \r
         public ScrollBar ScrollBar { get; }\r
 \r
@@ -293,6 +294,7 @@ namespace KancolleSniffer
             {\r
                 GroupSettings[group].Remove(_shipList[idx + ScrollBar.Value].Id);\r
             }\r
+            GroupUpdated = true;\r
         }\r
 \r
         private void CreateRepairLabels(int i)\r