OSDN Git Service

設定ファイルをこまめに保存する
[kancollesniffer/KancolleSniffer.git] / KancolleSniffer / ListForm.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