OSDN Git Service

Settingsクラスを廃止する
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Wed, 16 Sep 2020 05:03:12 +0000 (14:03 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Wed, 16 Sep 2020 09:06:13 +0000 (18:06 +0900)
KancolleSniffer/Forms/ListForm.cs
KancolleSniffer/Forms/ListFormGroup.cs
KancolleSniffer/View/ShipListPanel/ShipListPanel.cs

index c62e8fb..b10062a 100644 (file)
@@ -33,47 +33,17 @@ namespace KancolleSniffer.Forms
         private readonly MainWindow.TimeOutChecker _suppressActivate;\r
         private readonly CheckBox[] _shipTypeCheckBoxes;\r
         private bool _isMaster;\r
-        private Settings _settings;\r
+        private ShipListConfig _listConfig;\r
         private FormWindowState _windowState = FormWindowState.Minimized;\r
         public const int PanelWidth = 215;\r
 \r
-        public class Settings\r
-        {\r
-            public string Mode { get; set; }\r
-            public ShipCategory ShipCategories { get; set; }\r
-            public bool ShipType { get; set; }\r
-            public bool ShowHpInPercent { get; set; }\r
-            public SortOrder SortOrder { get; set; }\r
-\r
-            public static Settings FromShipListConfig(ShipListConfig config)\r
-            {\r
-                return new Settings\r
-                {\r
-                    Mode = config.Mode ?? "全艦",\r
-                    ShipCategories = config.ShipCategories,\r
-                    ShipType = config.ShipType,\r
-                    ShowHpInPercent = config.ShowHpInPercent,\r
-                    SortOrder = config.SortOrder\r
-                };\r
-            }\r
-\r
-            public void SetToShipListConfig(ShipListConfig config)\r
-            {\r
-                config.Mode = Mode;\r
-                config.ShipCategories = ShipCategories;\r
-                config.ShipType = ShipType;\r
-                config.ShowHpInPercent = ShowHpInPercent;\r
-                config.SortOrder = SortOrder;\r
-            }\r
-        }\r
-\r
         private object[] PanelNames => new object[] {"全艦", "A", "B", "C", "D", "分類", "修復", "装備", "艦隊", "対空", "戦況", "情報"}\r
             .Where(n => IsMaster || (string)n != "分類").ToArray();\r
 \r
         private char[] PanelKeys => new[] {'Z', 'A', 'B', 'C', 'D', 'G', 'R', 'W', 'X', 'Y', 'S', 'I'}\r
             .Where(key => IsMaster || key != 'G').ToArray();\r
 \r
-        public bool IsMaster\r
+        private bool IsMaster\r
         {\r
             get => _isMaster;\r
             set\r
@@ -97,10 +67,10 @@ namespace KancolleSniffer.Forms
             Repair\r
         }\r
 \r
-        public ListForm(MainWindow main)\r
+        public ListForm(MainWindow main, bool isMaster = false)\r
         {\r
             InitializeComponent();\r
-            IsMaster = false;\r
+            IsMaster = isMaster;\r
             _form = main.Form;\r
             _sniffer = main.Sniffer;\r
             _config = main.Config;\r
@@ -122,6 +92,18 @@ namespace KancolleSniffer.Forms
             swipe.AddShipListPanel(shipListPanel);\r
             swipe.AddTreeView(itemTreeView);\r
             swipe.AddPanel(fleetPanel);\r
+            SetupSettings();\r
+        }\r
+\r
+        private void SetupSettings()\r
+        {\r
+            _listConfig = GetConfig();\r
+            if (_listConfig.ShowHpInPercent)\r
+            {\r
+                shipListPanel.ToggleHpPercent();\r
+                battleResultPanel.ToggleHpPercent();\r
+            }\r
+            LoadShipGroupFromConfig();\r
         }\r
 \r
         public void UpdateList()\r
@@ -149,7 +131,7 @@ namespace KancolleSniffer.Forms
             else if (InShipStatus || InGroupConfig || InRepairList)\r
             {\r
                 SetHeaderSortOrder();\r
-                shipListPanel.Update(_sniffer, comboBoxGroup.Text, _settings);\r
+                shipListPanel.Update(_sniffer, comboBoxGroup.Text, _listConfig);\r
             }\r
             if (shipListPanel.GroupUpdated)\r
             {\r
@@ -235,7 +217,7 @@ namespace KancolleSniffer.Forms
 \r
         private void SetHeaderSortOrder()\r
         {\r
-            switch (_settings.SortOrder)\r
+            switch (_listConfig.SortOrder)\r
             {\r
                 case SortOrder.None:\r
                     labelHeaderCond.Text = "cond";\r
@@ -260,39 +242,31 @@ namespace KancolleSniffer.Forms
             }\r
         }\r
 \r
-        private bool InShipStatus => Array.Exists(new[] {"全艦", "A", "B", "C", "D"}, x => _settings.Mode == x);\r
+        private bool InShipStatus => Array.Exists(new[] {"全艦", "A", "B", "C", "D"}, x => _listConfig.Mode == x);\r
 \r
-        private bool InGroupConfig => _settings.Mode == "分類";\r
+        private bool InGroupConfig => _listConfig.Mode == "分類";\r
 \r
-        private bool InRepairList => _settings.Mode == "修復";\r
+        private bool InRepairList => _listConfig.Mode == "修復";\r
 \r
-        private bool InItemList => _settings.Mode == "装備";\r
+        private bool InItemList => _listConfig.Mode == "装備";\r
 \r
-        private bool InFleetInfo => _settings.Mode == "艦隊";\r
+        private bool InFleetInfo => _listConfig.Mode == "艦隊";\r
 \r
-        private bool InAntiAir => _settings.Mode == "対空";\r
+        private bool InAntiAir => _listConfig.Mode == "対空";\r
 \r
-        private bool InBattleResult => _settings.Mode == "戦況";\r
+        private bool InBattleResult => _listConfig.Mode == "戦況";\r
 \r
-        private bool InMiscText => _settings.Mode == "情報";\r
+        private bool InMiscText => _listConfig.Mode == "情報";\r
 \r
         private void ListForm_Load(object sender, EventArgs e)\r
         {\r
             AdjustHeader();\r
             SetMinimumSize();\r
-            var config = GetConfig();\r
-            _settings = Settings.FromShipListConfig(config);\r
-            if (_settings.ShowHpInPercent)\r
-            {\r
-                shipListPanel.ToggleHpPercent();\r
-                battleResultPanel.ToggleHpPercent();\r
-            }\r
-            LoadShipGroupFromConfig();\r
-            comboBoxGroup.SelectedItem = _settings.Mode;\r
+            comboBoxGroup.SelectedItem = _listConfig.Mode;\r
             SetCheckBoxSTypeState();\r
-            if (config.Location.X == int.MinValue)\r
+            if (_listConfig.Location.X == int.MinValue)\r
                 return;\r
-            var bounds = new Rectangle(config.Location, config.Size);\r
+            var bounds = new Rectangle(_listConfig.Location, _listConfig.Size);\r
             if (MainWindow.IsTitleBarOnAnyScreen(bounds.Location))\r
                 Location = bounds.Location;\r
             Size = bounds.Size;\r
@@ -318,11 +292,29 @@ namespace KancolleSniffer.Forms
 \r
         private ShipListConfig GetConfig()\r
         {\r
-            if (_isMaster || _config.ListFormGroup.Count == 0)\r
+            if (_isMaster)\r
                 return _config.ShipList;\r
+            if (_config.ListFormGroup.Count == 0)\r
+                return CreateSecondaryConfig();\r
             var config = _config.ListFormGroup[0];\r
             _config.ListFormGroup.RemoveAt(0);\r
-            if (config.Mode == "分類")\r
+            return config;\r
+        }\r
+\r
+        private ShipListConfig CreateSecondaryConfig()\r
+        {\r
+            var src = _config.ShipList;\r
+            var config = new ShipListConfig\r
+            {\r
+                Mode = src.Mode,\r
+                ShipCategories = src.ShipCategories,\r
+                ShipType = src.ShipType,\r
+                ShowHpInPercent = src.ShowHpInPercent,\r
+                SortOrder = src.SortOrder,\r
+                Location = src.Location,\r
+                Size = src.Size\r
+            };\r
+            if (config.Mode == "分類" || string.IsNullOrEmpty(config.Mode))\r
                 config.Mode = "全艦";\r
             return config;\r
         }\r
@@ -337,9 +329,9 @@ namespace KancolleSniffer.Forms
         private void SetCheckBoxSTypeState()\r
         {\r
             for (var type = 0; type < _shipTypeCheckBoxes.Length; type++)\r
-                _shipTypeCheckBoxes[type].Checked = ((int)_settings.ShipCategories & (1 << type)) != 0;\r
-            checkBoxSTypeAll.Checked = _settings.ShipCategories == ShipCategory.All;\r
-            checkBoxSTypeDetails.Checked = _settings.ShipType;\r
+                _shipTypeCheckBoxes[type].Checked = ((int)_listConfig.ShipCategories & (1 << type)) != 0;\r
+            checkBoxSTypeAll.Checked = _listConfig.ShipCategories == ShipCategory.All;\r
+            checkBoxSTypeDetails.Checked = _listConfig.ShipType;\r
         }\r
 \r
         private void ListForm_FormClosing(object sender, FormClosingEventArgs e)\r
@@ -350,8 +342,6 @@ namespace KancolleSniffer.Forms
 \r
         public void SaveConfig()\r
         {\r
-            if (_settings == null)\r
-                return;\r
             if (_isMaster)\r
             {\r
                 SaveMasterState();\r
@@ -365,10 +355,8 @@ namespace KancolleSniffer.Forms
         private void SaveMasterState()\r
         {\r
             StoreShipGroupToConfig();\r
-            var config = _config.ShipList;\r
-            config.Visible = Visible && WindowState == FormWindowState.Normal;\r
-            _settings.SetToShipListConfig(config);\r
-            SaveBounds(config); // 最小化時は以前のサイズを記録する\r
+            _listConfig.Visible = Visible && WindowState == FormWindowState.Normal;\r
+            SaveBounds(_listConfig); // 最小化時は以前のサイズを記録する\r
         }\r
 \r
         private void SaveSlaveState()\r
@@ -377,10 +365,9 @@ namespace KancolleSniffer.Forms
                 return;\r
             if (WindowState != FormWindowState.Normal) // 最小化時は次回復旧しない\r
                 return;\r
-            var config = new ShipListConfig {Visible = true};\r
-            _settings.SetToShipListConfig(config);\r
-            _config.ListFormGroup.Add(config);\r
-            SaveBounds(config);\r
+            _listConfig.Visible = true;\r
+            _config.ListFormGroup.Add(_listConfig);\r
+            SaveBounds(_listConfig);\r
         }\r
 \r
         private void SaveBounds(ShipListConfig config)\r
@@ -470,9 +457,7 @@ namespace KancolleSniffer.Forms
 \r
         private void comboBoxGroup_SelectedIndexChanged(object sender, EventArgs e)\r
         {\r
-            if (_settings == null)\r
-                return;\r
-            _settings.Mode = comboBoxGroup.Text;\r
+            _listConfig.Mode = comboBoxGroup.Text;\r
             UpdateList();\r
             SetActiveControl();\r
             if (!(InShipStatus || InGroupConfig || InRepairList))\r
@@ -531,16 +516,16 @@ namespace KancolleSniffer.Forms
 \r
         private void labelHeaderCond_Click(object sender, EventArgs e)\r
         {\r
-            switch (_settings.SortOrder)\r
+            switch (_listConfig.SortOrder)\r
             {\r
                 case SortOrder.CondAscend:\r
-                    _settings.SortOrder = SortOrder.CondDescend;\r
+                    _listConfig.SortOrder = SortOrder.CondDescend;\r
                     break;\r
                 case SortOrder.CondDescend:\r
-                    _settings.SortOrder = SortOrder.None;\r
+                    _listConfig.SortOrder = SortOrder.None;\r
                     break;\r
                 default:\r
-                    _settings.SortOrder = SortOrder.CondAscend;\r
+                    _listConfig.SortOrder = SortOrder.CondAscend;\r
                     break;\r
             }\r
             UpdateList();\r
@@ -548,16 +533,16 @@ namespace KancolleSniffer.Forms
 \r
         private void labelHeaderExp_Click(object sender, EventArgs e)\r
         {\r
-            switch (_settings.SortOrder)\r
+            switch (_listConfig.SortOrder)\r
             {\r
                 case SortOrder.ExpToNextAscend:\r
-                    _settings.SortOrder = SortOrder.ExpToNextDescend;\r
+                    _listConfig.SortOrder = SortOrder.ExpToNextDescend;\r
                     break;\r
                 case SortOrder.ExpToNextDescend:\r
-                    _settings.SortOrder = SortOrder.None;\r
+                    _listConfig.SortOrder = SortOrder.None;\r
                     break;\r
                 default:\r
-                    _settings.SortOrder = SortOrder.ExpToNextAscend;\r
+                    _listConfig.SortOrder = SortOrder.ExpToNextAscend;\r
                     break;\r
             }\r
             UpdateList();\r
@@ -585,7 +570,7 @@ namespace KancolleSniffer.Forms
 \r
         private void ToggleHpPercent()\r
         {\r
-            _settings.ShowHpInPercent = !_settings.ShowHpInPercent;\r
+            _listConfig.ShowHpInPercent = !_listConfig.ShowHpInPercent;\r
             shipListPanel.ToggleHpPercent();\r
             battleResultPanel.ToggleHpPercent();\r
         }\r
@@ -605,7 +590,7 @@ namespace KancolleSniffer.Forms
 \r
         private void checkBoxSType_Click(object sender, EventArgs e)\r
         {\r
-            _settings.ShipCategories = SelectedShipTypes;\r
+            _listConfig.ShipCategories = SelectedShipTypes;\r
             UpdateList();\r
             SetActiveControl();\r
         }\r
@@ -635,7 +620,7 @@ namespace KancolleSniffer.Forms
 \r
         private void checkBoxSTypeDetails_Click(object sender, EventArgs e)\r
         {\r
-            _settings.ShipType = checkBoxSTypeDetails.Checked;\r
+            _listConfig.ShipType = checkBoxSTypeDetails.Checked;\r
             UpdateList();\r
             SetActiveControl();\r
         }\r
index 4c6b040..c11a5b6 100644 (file)
@@ -30,7 +30,7 @@ namespace KancolleSniffer.Forms
         public ListFormGroup(MainWindow main)\r
         {\r
             _mainWindow = main;\r
-            _listForms.Add(new ListForm(main) {IsMaster = true});\r
+            _listForms.Add(new ListForm(main, true));\r
             for (var i = 0; i < main.Config.ListFormGroup.Count; i++)\r
                 _listForms.Add(new ListForm(main) {Owner = Main});\r
         }\r
index c3ad995..bf590c4 100644 (file)
@@ -88,7 +88,7 @@ namespace KancolleSniffer.View.ShipListPanel
                 ScrollBar.Value - e.Delta * SystemInformation.MouseWheelScrollLines / 120));\r
         }\r
 \r
-        public void Update(Sniffer sniffer, string mode, ListForm.Settings settings)\r
+        public void Update(Sniffer sniffer, string mode, ShipListConfig settings)\r
         {\r
             _mode = mode;\r
             CreateShipList(sniffer, settings);\r
@@ -115,7 +115,7 @@ namespace KancolleSniffer.View.ShipListPanel
             Refresh();\r
         }\r
 \r
-        private void CreateShipList(Sniffer sniffer, ListForm.Settings settings)\r
+        private void CreateShipList(Sniffer sniffer, ShipListConfig settings)\r
         {\r
             var ships = FilterByShipTypes(\r
                 _mode == "修復" ? sniffer.RepairList : _groupConfigLabels.FilterByGroup(sniffer.ShipList, _mode),\r