OSDN Git Service

艦娘一覧で表示する艦種を指定可能にする
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Wed, 29 Aug 2018 15:05:44 +0000 (00:05 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Wed, 29 Aug 2018 15:05:44 +0000 (00:05 +0900)
KancolleSniffer/Config.cs
KancolleSniffer/KancolleSniffer.csproj
KancolleSniffer/ListForm.Designer.cs
KancolleSniffer/ListForm.cs
KancolleSniffer/MainForm.Designer.cs
KancolleSniffer/MainForm.resx
KancolleSniffer/Properties/Resources.Designer.cs
KancolleSniffer/Properties/Resources.resx
KancolleSniffer/Resources/arrow virtical.png [new file with mode: 0644]
KancolleSniffer/Resources/arrow.png [new file with mode: 0644]
KancolleSniffer/View/ShipListPanel.cs

index a036bdc..e6030d1 100644 (file)
@@ -38,13 +38,28 @@ namespace KancolleSniffer
         }\r
     }\r
 \r
+    [Flags]\r
+    public enum ShipCategory\r
+    {\r
+        None = 0,\r
+        BattleShip = 1 << 0,\r
+        AircraftCarrier = 1 << 1,\r
+        HeavyCruiser = 1 << 2,\r
+        LightCruiser = 1 << 3,\r
+        Destroyer = 1 << 4,\r
+        Escort = 1 << 5,\r
+        Submarine = 1 << 6,\r
+        Assistant = 1 << 7,\r
+        All = (1 << 8) - 1\r
+    }\r
+\r
     public class ShipListConfig\r
     {\r
         public bool Visible { get; set; }\r
         public Point Location { get; set; }\r
         public Size Size { get; set; }\r
         public string Mode { get; set; }\r
-        public bool ShipType { get; set; }\r
+        public ShipCategory ShipCategories { get; set; } = ShipCategory.All;\r
         public bool ShowHpInPercent { get; set; }\r
         public ListForm.SortOrder SortOrder { get; set; } = ListForm.SortOrder.ExpToNext;\r
         public List<List<int>> ShipGroup { get; set; }\r
index 266041c..7921ee5 100644 (file)
   </ItemGroup>\r
   <ItemGroup>\r
     <Content Include="app.ico" />\r
+    <None Include="Resources\arrow.png" />\r
+    <None Include="Resources\arrow virtical.png" />\r
   </ItemGroup>\r
   <ItemGroup />\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
index f60b875..86ad7f7 100644 (file)
@@ -55,7 +55,6 @@ namespace KancolleSniffer
             this.labelHeaderCond = new System.Windows.Forms.Label();\r
             this.labelHeaderExp = new System.Windows.Forms.Label();\r
             this.label3 = new System.Windows.Forms.Label();\r
-            this.checkBoxShipType = new System.Windows.Forms.CheckBox();\r
             this.panelGroupHeader = new System.Windows.Forms.Panel();\r
             this.label5 = new System.Windows.Forms.Label();\r
             this.label9 = new System.Windows.Forms.Label();\r
@@ -78,18 +77,31 @@ namespace KancolleSniffer
             this.label1Fleet3 = new System.Windows.Forms.Label();\r
             this.labelFleet2 = new System.Windows.Forms.Label();\r
             this.labelFleet1 = new System.Windows.Forms.Label();\r
-            this.airBattleResultPanel = new AirBattleResultPanel();\r
-            this.battleResultPanel = new BattleResultPanel();\r
-            this.antiAirPanel = new AntiAirPanel();\r
-            this.fleetPanel = new FleetPanel();\r
-            this.itemTreeView = new ItemTreeView();\r
-            this.shipListPanel = new ShipListPanel();\r
+            this.panelSType = new System.Windows.Forms.Panel();\r
+            this.checkBoxSTypeAll = new System.Windows.Forms.CheckBox();\r
+            this.checkBoxSTypeAuxiliary = new System.Windows.Forms.CheckBox();\r
+            this.checkBoxSTypeSubmarine = new System.Windows.Forms.CheckBox();\r
+            this.checkBoxSTypeEscort = new System.Windows.Forms.CheckBox();\r
+            this.checkBoxSTypeDestroyer = new System.Windows.Forms.CheckBox();\r
+            this.checkBoxSTypeLightCruiser = new System.Windows.Forms.CheckBox();\r
+            this.checkBoxSTypeHeavyCruiser = new System.Windows.Forms.CheckBox();\r
+            this.checkBoxSTypeAircraftCarrier = new System.Windows.Forms.CheckBox();\r
+            this.checkBoxSTypeBattleShip = new System.Windows.Forms.CheckBox();\r
+            this.labelSTypeButton = new System.Windows.Forms.Label();\r
+            this.airBattleResultPanel = new KancolleSniffer.View.AirBattleResultPanel();\r
+            this.battleResultPanel = new KancolleSniffer.View.BattleResultPanel();\r
+            this.antiAirPanel = new KancolleSniffer.View.AntiAirPanel();\r
+            this.fleetPanel = new KancolleSniffer.View.FleetPanel();\r
+            this.itemTreeView = new KancolleSniffer.View.ItemTreeView();\r
+            this.shipListPanel = new KancolleSniffer.View.ShipListPanel();\r
+            this.labelSType = new System.Windows.Forms.Label();\r
             this.contextMenuStripShipList.SuspendLayout();\r
             this.contextMenuStrip.SuspendLayout();\r
             this.panelGroupHeader.SuspendLayout();\r
             this.panelRepairHeader.SuspendLayout();\r
             this.contextMenuStripFleetData.SuspendLayout();\r
             this.panelFleetHeader.SuspendLayout();\r
+            this.panelSType.SuspendLayout();\r
             this.SuspendLayout();\r
             // \r
             // contextMenuStripShipList\r
@@ -172,17 +184,6 @@ namespace KancolleSniffer
             this.label3.TabIndex = 13;\r
             this.label3.Text = "Lv";\r
             // \r
-            // checkBoxShipType\r
-            // \r
-            this.checkBoxShipType.AutoSize = true;\r
-            this.checkBoxShipType.FlatStyle = System.Windows.Forms.FlatStyle.Flat;\r
-            this.checkBoxShipType.Location = new System.Drawing.Point(58, 6);\r
-            this.checkBoxShipType.Name = "checkBoxShipType";\r
-            this.checkBoxShipType.Size = new System.Drawing.Size(45, 16);\r
-            this.checkBoxShipType.TabIndex = 15;\r
-            this.checkBoxShipType.Text = "艦種";\r
-            this.checkBoxShipType.CheckedChanged += new System.EventHandler(this.checkBoxShipType_CheckedChanged);\r
-            // \r
             // panelGroupHeader\r
             // \r
             this.panelGroupHeader.Controls.Add(this.label5);\r
@@ -406,6 +407,134 @@ namespace KancolleSniffer
             this.labelFleet1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;\r
             this.labelFleet1.Click += new System.EventHandler(this.labelFleet_Click);\r
             // \r
+            // panelSType\r
+            // \r
+            this.panelSType.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\r
+            this.panelSType.Controls.Add(this.checkBoxSTypeAll);\r
+            this.panelSType.Controls.Add(this.checkBoxSTypeAuxiliary);\r
+            this.panelSType.Controls.Add(this.checkBoxSTypeSubmarine);\r
+            this.panelSType.Controls.Add(this.checkBoxSTypeEscort);\r
+            this.panelSType.Controls.Add(this.checkBoxSTypeDestroyer);\r
+            this.panelSType.Controls.Add(this.checkBoxSTypeLightCruiser);\r
+            this.panelSType.Controls.Add(this.checkBoxSTypeHeavyCruiser);\r
+            this.panelSType.Controls.Add(this.checkBoxSTypeAircraftCarrier);\r
+            this.panelSType.Controls.Add(this.checkBoxSTypeBattleShip);\r
+            this.panelSType.Location = new System.Drawing.Point(56, 21);\r
+            this.panelSType.Name = "panelSType";\r
+            this.panelSType.Size = new System.Drawing.Size(188, 64);\r
+            this.panelSType.TabIndex = 17;\r
+            this.panelSType.Visible = false;\r
+            this.panelSType.Click += new System.EventHandler(this.panelSType_Click);\r
+            // \r
+            // checkBoxSTypeAll\r
+            // \r
+            this.checkBoxSTypeAll.AutoSize = true;\r
+            this.checkBoxSTypeAll.Location = new System.Drawing.Point(3, 45);\r
+            this.checkBoxSTypeAll.Name = "checkBoxSTypeAll";\r
+            this.checkBoxSTypeAll.Size = new System.Drawing.Size(48, 16);\r
+            this.checkBoxSTypeAll.TabIndex = 8;\r
+            this.checkBoxSTypeAll.Text = "全部";\r
+            this.checkBoxSTypeAll.UseVisualStyleBackColor = true;\r
+            this.checkBoxSTypeAll.Click += new System.EventHandler(this.checkBoxSTypeAll_Click);\r
+            // \r
+            // checkBoxSTypeAuxiliary\r
+            // \r
+            this.checkBoxSTypeAuxiliary.AutoSize = true;\r
+            this.checkBoxSTypeAuxiliary.Location = new System.Drawing.Point(140, 24);\r
+            this.checkBoxSTypeAuxiliary.Name = "checkBoxSTypeAuxiliary";\r
+            this.checkBoxSTypeAuxiliary.Size = new System.Drawing.Size(48, 16);\r
+            this.checkBoxSTypeAuxiliary.TabIndex = 7;\r
+            this.checkBoxSTypeAuxiliary.Text = "補助";\r
+            this.checkBoxSTypeAuxiliary.UseVisualStyleBackColor = true;\r
+            this.checkBoxSTypeAuxiliary.Click += new System.EventHandler(this.checkBoxSType_Click);\r
+            // \r
+            // checkBoxSTypeSubmarine\r
+            // \r
+            this.checkBoxSTypeSubmarine.AutoSize = true;\r
+            this.checkBoxSTypeSubmarine.Location = new System.Drawing.Point(95, 24);\r
+            this.checkBoxSTypeSubmarine.Name = "checkBoxSTypeSubmarine";\r
+            this.checkBoxSTypeSubmarine.Size = new System.Drawing.Size(48, 16);\r
+            this.checkBoxSTypeSubmarine.TabIndex = 6;\r
+            this.checkBoxSTypeSubmarine.Text = "潜水";\r
+            this.checkBoxSTypeSubmarine.UseVisualStyleBackColor = true;\r
+            this.checkBoxSTypeSubmarine.Click += new System.EventHandler(this.checkBoxSType_Click);\r
+            // \r
+            // checkBoxSTypeEscort\r
+            // \r
+            this.checkBoxSTypeEscort.AutoSize = true;\r
+            this.checkBoxSTypeEscort.Location = new System.Drawing.Point(49, 24);\r
+            this.checkBoxSTypeEscort.Name = "checkBoxSTypeEscort";\r
+            this.checkBoxSTypeEscort.Size = new System.Drawing.Size(48, 16);\r
+            this.checkBoxSTypeEscort.TabIndex = 5;\r
+            this.checkBoxSTypeEscort.Text = "海防";\r
+            this.checkBoxSTypeEscort.UseVisualStyleBackColor = true;\r
+            this.checkBoxSTypeEscort.Click += new System.EventHandler(this.checkBoxSType_Click);\r
+            // \r
+            // checkBoxSTypeDestroyer\r
+            // \r
+            this.checkBoxSTypeDestroyer.AutoSize = true;\r
+            this.checkBoxSTypeDestroyer.Location = new System.Drawing.Point(3, 24);\r
+            this.checkBoxSTypeDestroyer.Name = "checkBoxSTypeDestroyer";\r
+            this.checkBoxSTypeDestroyer.Size = new System.Drawing.Size(48, 16);\r
+            this.checkBoxSTypeDestroyer.TabIndex = 4;\r
+            this.checkBoxSTypeDestroyer.Text = "駆逐";\r
+            this.checkBoxSTypeDestroyer.UseVisualStyleBackColor = true;\r
+            this.checkBoxSTypeDestroyer.Click += new System.EventHandler(this.checkBoxSType_Click);\r
+            // \r
+            // checkBoxSTypeLightCruiser\r
+            // \r
+            this.checkBoxSTypeLightCruiser.AutoSize = true;\r
+            this.checkBoxSTypeLightCruiser.Location = new System.Drawing.Point(141, 3);\r
+            this.checkBoxSTypeLightCruiser.Name = "checkBoxSTypeLightCruiser";\r
+            this.checkBoxSTypeLightCruiser.Size = new System.Drawing.Size(48, 16);\r
+            this.checkBoxSTypeLightCruiser.TabIndex = 3;\r
+            this.checkBoxSTypeLightCruiser.Text = "軽巡";\r
+            this.checkBoxSTypeLightCruiser.UseVisualStyleBackColor = true;\r
+            this.checkBoxSTypeLightCruiser.Click += new System.EventHandler(this.checkBoxSType_Click);\r
+            // \r
+            // checkBoxSTypeHeavyCruiser\r
+            // \r
+            this.checkBoxSTypeHeavyCruiser.AutoSize = true;\r
+            this.checkBoxSTypeHeavyCruiser.Location = new System.Drawing.Point(95, 3);\r
+            this.checkBoxSTypeHeavyCruiser.Name = "checkBoxSTypeHeavyCruiser";\r
+            this.checkBoxSTypeHeavyCruiser.Size = new System.Drawing.Size(48, 16);\r
+            this.checkBoxSTypeHeavyCruiser.TabIndex = 2;\r
+            this.checkBoxSTypeHeavyCruiser.Text = "重巡";\r
+            this.checkBoxSTypeHeavyCruiser.UseVisualStyleBackColor = true;\r
+            this.checkBoxSTypeHeavyCruiser.Click += new System.EventHandler(this.checkBoxSType_Click);\r
+            // \r
+            // checkBoxSTypeAircraftCarrier\r
+            // \r
+            this.checkBoxSTypeAircraftCarrier.AutoSize = true;\r
+            this.checkBoxSTypeAircraftCarrier.Location = new System.Drawing.Point(49, 3);\r
+            this.checkBoxSTypeAircraftCarrier.Name = "checkBoxSTypeAircraftCarrier";\r
+            this.checkBoxSTypeAircraftCarrier.Size = new System.Drawing.Size(48, 16);\r
+            this.checkBoxSTypeAircraftCarrier.TabIndex = 1;\r
+            this.checkBoxSTypeAircraftCarrier.Text = "空母";\r
+            this.checkBoxSTypeAircraftCarrier.UseVisualStyleBackColor = true;\r
+            this.checkBoxSTypeAircraftCarrier.Click += new System.EventHandler(this.checkBoxSType_Click);\r
+            // \r
+            // checkBoxSTypeBattleShip\r
+            // \r
+            this.checkBoxSTypeBattleShip.AutoSize = true;\r
+            this.checkBoxSTypeBattleShip.Location = new System.Drawing.Point(3, 3);\r
+            this.checkBoxSTypeBattleShip.Name = "checkBoxSTypeBattleShip";\r
+            this.checkBoxSTypeBattleShip.Size = new System.Drawing.Size(48, 16);\r
+            this.checkBoxSTypeBattleShip.TabIndex = 0;\r
+            this.checkBoxSTypeBattleShip.Text = "戦艦";\r
+            this.checkBoxSTypeBattleShip.UseVisualStyleBackColor = true;\r
+            this.checkBoxSTypeBattleShip.Click += new System.EventHandler(this.checkBoxSType_Click);\r
+            // \r
+            // labelSTypeButton\r
+            // \r
+            this.labelSTypeButton.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\r
+            this.labelSTypeButton.Image = global::KancolleSniffer.Properties.Resources.arrow_virtical;\r
+            this.labelSTypeButton.Location = new System.Drawing.Point(58, 7);\r
+            this.labelSTypeButton.Name = "labelSTypeButton";\r
+            this.labelSTypeButton.Size = new System.Drawing.Size(14, 14);\r
+            this.labelSTypeButton.TabIndex = 19;\r
+            this.labelSTypeButton.Click += new System.EventHandler(this.labelSTypeButton_Click);\r
+            // \r
             // airBattleResultPanel\r
             // \r
             this.airBattleResultPanel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) \r
@@ -472,16 +601,28 @@ namespace KancolleSniffer
             | System.Windows.Forms.AnchorStyles.Right)));\r
             this.shipListPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\r
             this.shipListPanel.ContextMenuStrip = this.contextMenuStripShipList;\r
+            this.shipListPanel.GroupUpdated = false;\r
             this.shipListPanel.Location = new System.Drawing.Point(6, 23);\r
             this.shipListPanel.Name = "shipListPanel";\r
             this.shipListPanel.Size = new System.Drawing.Size(238, 263);\r
             this.shipListPanel.TabIndex = 0;\r
             // \r
+            // labelSType\r
+            // \r
+            this.labelSType.AutoSize = true;\r
+            this.labelSType.Location = new System.Drawing.Point(74, 8);\r
+            this.labelSType.Name = "labelSType";\r
+            this.labelSType.Size = new System.Drawing.Size(29, 12);\r
+            this.labelSType.TabIndex = 20;\r
+            this.labelSType.Text = "艦種";\r
+            this.labelSType.Click += new System.EventHandler(this.labelSTypeButton_Click);\r
+            // \r
             // ListForm\r
             // \r
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\r
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r
             this.ClientSize = new System.Drawing.Size(250, 292);\r
+            this.Controls.Add(this.panelSType);\r
             this.Controls.Add(this.panelFleetHeader);\r
             this.Controls.Add(this.airBattleResultPanel);\r
             this.Controls.Add(this.battleResultPanel);\r
@@ -489,7 +630,8 @@ namespace KancolleSniffer
             this.Controls.Add(this.panelItemHeader);\r
             this.Controls.Add(this.panelRepairHeader);\r
             this.Controls.Add(this.panelGroupHeader);\r
-            this.Controls.Add(this.checkBoxShipType);\r
+            this.Controls.Add(this.labelSType);\r
+            this.Controls.Add(this.labelSTypeButton);\r
             this.Controls.Add(this.labelHeaderExp);\r
             this.Controls.Add(this.labelHeaderCond);\r
             this.Controls.Add(this.label3);\r
@@ -516,6 +658,8 @@ namespace KancolleSniffer
             this.panelRepairHeader.PerformLayout();\r
             this.contextMenuStripFleetData.ResumeLayout(false);\r
             this.panelFleetHeader.ResumeLayout(false);\r
+            this.panelSType.ResumeLayout(false);\r
+            this.panelSType.PerformLayout();\r
             this.ResumeLayout(false);\r
             this.PerformLayout();\r
 \r
@@ -528,7 +672,6 @@ namespace KancolleSniffer
         private System.Windows.Forms.Label labelHeaderCond;\r
         private System.Windows.Forms.Label labelHeaderExp;\r
         private System.Windows.Forms.Label label3;\r
-        private System.Windows.Forms.CheckBox checkBoxShipType;\r
         private System.Windows.Forms.Panel panelGroupHeader;\r
         private System.Windows.Forms.Label label6;\r
         private System.Windows.Forms.Label label9;\r
@@ -561,5 +704,17 @@ namespace KancolleSniffer
         private AntiAirPanel antiAirPanel;\r
         private AirBattleResultPanel airBattleResultPanel;\r
         private BattleResultPanel battleResultPanel;\r
+        private System.Windows.Forms.Panel panelSType;\r
+        private System.Windows.Forms.CheckBox checkBoxSTypeAll;\r
+        private System.Windows.Forms.CheckBox checkBoxSTypeAuxiliary;\r
+        private System.Windows.Forms.CheckBox checkBoxSTypeSubmarine;\r
+        private System.Windows.Forms.CheckBox checkBoxSTypeEscort;\r
+        private System.Windows.Forms.CheckBox checkBoxSTypeDestroyer;\r
+        private System.Windows.Forms.CheckBox checkBoxSTypeLightCruiser;\r
+        private System.Windows.Forms.CheckBox checkBoxSTypeHeavyCruiser;\r
+        private System.Windows.Forms.CheckBox checkBoxSTypeAircraftCarrier;\r
+        private System.Windows.Forms.CheckBox checkBoxSTypeBattleShip;\r
+        private System.Windows.Forms.Label labelSTypeButton;\r
+        private System.Windows.Forms.Label labelSType;\r
     }\r
 }
\ No newline at end of file
index bf0c52e..48a79a4 100644 (file)
@@ -26,6 +26,7 @@ namespace KancolleSniffer
     {\r
         private readonly Sniffer _sniffer;\r
         private readonly Config _config;\r
+        private readonly CheckBox[] _shipTypeCheckBoxes;\r
         public const int PanelWidth = 217;\r
 \r
         public enum SortOrder\r
@@ -45,6 +46,17 @@ namespace KancolleSniffer
             InitializeComponent();\r
             _sniffer = sniffer;\r
             _config = config;\r
+            _shipTypeCheckBoxes = new[]\r
+            {\r
+                checkBoxSTypeBattleShip,\r
+                checkBoxSTypeAircraftCarrier,\r
+                checkBoxSTypeHeavyCruiser,\r
+                checkBoxSTypeLightCruiser,\r
+                checkBoxSTypeDestroyer,\r
+                checkBoxSTypeEscort,\r
+                checkBoxSTypeSubmarine,\r
+                checkBoxSTypeAuxiliary\r
+            };\r
             battleResultPanel.HpLabelClick += ToggleHpPercent;\r
             shipListPanel.HpLabelClick += ToggleHpPercent;\r
             var swipe = new SwipeScrollify();\r
@@ -99,8 +111,7 @@ namespace KancolleSniffer
             else\r
             {\r
                 SetHeaderSortOrder();\r
-                shipListPanel.Update(_sniffer, comboBoxGroup.Text, _config.ShipList.SortOrder,\r
-                    _config.ShipList.ShipType);\r
+                shipListPanel.Update(_sniffer, comboBoxGroup.Text, _config.ShipList);\r
             }\r
             if (shipListPanel.GroupUpdated)\r
             {\r
@@ -180,7 +191,6 @@ namespace KancolleSniffer
             MinimumSize = new Size(Width, 0);\r
             MaximumSize = new Size(Width, int.MaxValue);\r
             var config = _config.ShipList;\r
-            checkBoxShipType.Checked = config.ShipType;\r
             if (config.ShowHpInPercent)\r
             {\r
                 shipListPanel.ToggleHpPercent();\r
@@ -188,6 +198,7 @@ namespace KancolleSniffer
             }\r
             LoadShipGroupFromConfig();\r
             comboBoxGroup.SelectedItem = config.Mode ?? "全艦";\r
+            SetCheckBoxSTypeSate();\r
             if (config.Location.X == int.MinValue)\r
                 return;\r
             var bounds = new Rectangle(config.Location, config.Size);\r
@@ -203,6 +214,13 @@ namespace KancolleSniffer
                 shipListPanel.GroupSettings[i] = i < group.Count ? new HashSet<int>(group[i]) : new HashSet<int>();\r
         }\r
 \r
+        private void SetCheckBoxSTypeSate()\r
+        {\r
+            for (var type = 0; type < _shipTypeCheckBoxes.Length; type++)\r
+                _shipTypeCheckBoxes[type].Checked = ((int)_config.ShipList.ShipCategories & (1 << type)) != 0;\r
+            checkBoxSTypeAll.Checked = _config.ShipList.ShipCategories == ShipCategory.All;\r
+        }\r
+\r
         private void ShipListForm_FormClosing(object sender, FormClosingEventArgs e)\r
         {\r
             e.Cancel = true;\r
@@ -250,13 +268,6 @@ namespace KancolleSniffer
             }\r
         }\r
 \r
-        private void checkBoxShipType_CheckedChanged(object sender, EventArgs e)\r
-        {\r
-            _config.ShipList.ShipType = checkBoxShipType.Checked;\r
-            UpdateList();\r
-            SetActiveControl();\r
-        }\r
-\r
         private void comboBoxGroup_DropDownClosed(object sender, EventArgs e)\r
         {\r
             SetActiveControl();\r
@@ -267,6 +278,8 @@ namespace KancolleSniffer
             UpdateList();\r
             SetActiveControl();\r
             copyToolStripMenuItem.Enabled = InShipStatus | InItemList;\r
+            if (!(InShipStatus || InGroupConfig || InRepairList))\r
+                SetPanelSTypeState(false);\r
         }\r
 \r
         private void ShipListForm_KeyPress(object sender, KeyPressEventArgs e)\r
@@ -379,5 +392,38 @@ namespace KancolleSniffer
             shipListPanel.ToggleHpPercent();\r
             battleResultPanel.ToggleHpPercent();\r
         }\r
+\r
+        private void labelSTypeButton_Click(object sender, EventArgs e)\r
+        {\r
+            SetPanelSTypeState(!panelSType.Visible);\r
+        }\r
+\r
+        private void checkBoxSType_Click(object sender, EventArgs e)\r
+        {\r
+            _config.ShipList.ShipCategories = SelectedShipTypes;\r
+            UpdateList();\r
+            SetActiveControl();\r
+        }\r
+\r
+        private ShipCategory SelectedShipTypes =>\r
+            (ShipCategory)_shipTypeCheckBoxes.Select((cb, type) => cb.Checked ? 1 << type : 0).Sum();\r
+\r
+        private void checkBoxSTypeAll_Click(object sender, EventArgs e)\r
+        {\r
+            foreach (var checkBox in _shipTypeCheckBoxes)\r
+                checkBox.Checked = checkBoxSTypeAll.Checked;\r
+            checkBoxSType_Click(sender, e);\r
+        }\r
+\r
+        private void panelSType_Click(object sender, EventArgs e)\r
+        {\r
+            SetPanelSTypeState(false);\r
+        }\r
+\r
+        private void SetPanelSTypeState(bool visible)\r
+        {\r
+            panelSType.Visible = visible;\r
+            labelSTypeButton.BackColor = visible ? CustomColors.ActiveButtonColor : DefaultBackColor;\r
+        }\r
     }\r
 }
\ No newline at end of file
index 1df1f70..0dfdf22 100644 (file)
@@ -49,7 +49,6 @@ namespace KancolleSniffer
             this.panelHeadquarters = new System.Windows.Forms.Panel();\r
             this.labelPlayLog = new System.Windows.Forms.Label();\r
             this.labelLogin = new System.Windows.Forms.Label();\r
-            this.labelBucketHistoryButton = new System.Windows.Forms.Label();\r
             this.labelAchievement = new System.Windows.Forms.Label();\r
             this.label28 = new System.Windows.Forms.Label();\r
             this.labelNumOfBuckets = new System.Windows.Forms.Label();\r
@@ -149,32 +148,32 @@ namespace KancolleSniffer
             this.ConfigToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
             this.ExitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
             this.labelFleet1 = new System.Windows.Forms.Label();\r
-            this.labelCheckFleet1 = new System.Windows.Forms.Label();\r
-            this.imageListMisc = new System.Windows.Forms.ImageList(this.components);\r
-            this.labelCheckFleet4 = new System.Windows.Forms.Label();\r
             this.labelFleet4 = new System.Windows.Forms.Label();\r
-            this.labelCheckFleet3 = new System.Windows.Forms.Label();\r
             this.labelFleet3 = new System.Windows.Forms.Label();\r
-            this.labelCheckFleet2 = new System.Windows.Forms.Label();\r
             this.labelFleet2 = new System.Windows.Forms.Label();\r
             this.labelBucketHistory = new System.Windows.Forms.Label();\r
             this.label36 = new System.Windows.Forms.Label();\r
-            this.labelMaterialHistoryButton = new System.Windows.Forms.Label();\r
-            this.labelRepairListButton = new System.Windows.Forms.Label();\r
             this.label31 = new System.Windows.Forms.Label();\r
             this.imageListFuelSq = new System.Windows.Forms.ImageList(this.components);\r
-            this.labelFuelSq1 = new System.Windows.Forms.Label();\r
             this.imageListBullSq = new System.Windows.Forms.ImageList(this.components);\r
-            this.labelBullSq1 = new System.Windows.Forms.Label();\r
-            this.labelBullSq2 = new System.Windows.Forms.Label();\r
-            this.labelFuelSq2 = new System.Windows.Forms.Label();\r
-            this.labelBullSq3 = new System.Windows.Forms.Label();\r
-            this.labelFuelSq3 = new System.Windows.Forms.Label();\r
-            this.labelBullSq4 = new System.Windows.Forms.Label();\r
-            this.labelFuelSq4 = new System.Windows.Forms.Label();\r
             this.labelAkashiRepair = new System.Windows.Forms.Label();\r
             this.labelClearQuest = new System.Windows.Forms.Label();\r
             this.panelRepairList = new KancolleSniffer.View.RepairListForMain();\r
+            this.labelBullSq4 = new System.Windows.Forms.Label();\r
+            this.labelFuelSq4 = new System.Windows.Forms.Label();\r
+            this.labelBullSq3 = new System.Windows.Forms.Label();\r
+            this.labelFuelSq3 = new System.Windows.Forms.Label();\r
+            this.labelBullSq2 = new System.Windows.Forms.Label();\r
+            this.labelFuelSq2 = new System.Windows.Forms.Label();\r
+            this.labelBullSq1 = new System.Windows.Forms.Label();\r
+            this.labelFuelSq1 = new System.Windows.Forms.Label();\r
+            this.labelRepairListButton = new System.Windows.Forms.Label();\r
+            this.labelMaterialHistoryButton = new System.Windows.Forms.Label();\r
+            this.labelCheckFleet2 = new System.Windows.Forms.Label();\r
+            this.labelCheckFleet3 = new System.Windows.Forms.Label();\r
+            this.labelCheckFleet4 = new System.Windows.Forms.Label();\r
+            this.labelCheckFleet1 = new System.Windows.Forms.Label();\r
+            this.labelBucketHistoryButton = new System.Windows.Forms.Label();\r
             this.panelHeadquarters.SuspendLayout();\r
             this.panelShipInfo.SuspendLayout();\r
             this.panelBattleInfo.SuspendLayout();\r
@@ -226,16 +225,6 @@ namespace KancolleSniffer
             this.labelLogin.Text = "艦これにログインしてください。\r\nログイン中ならログインし直してください。";\r
             this.labelLogin.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;\r
             // \r
-            // labelBucketHistoryButton\r
-            // \r
-            this.labelBucketHistoryButton.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\r
-            this.labelBucketHistoryButton.Image = ((System.Drawing.Image)(resources.GetObject("labelBucketHistoryButton.Image")));\r
-            this.labelBucketHistoryButton.Location = new System.Drawing.Point(146, 15);\r
-            this.labelBucketHistoryButton.Name = "labelBucketHistoryButton";\r
-            this.labelBucketHistoryButton.Size = new System.Drawing.Size(14, 14);\r
-            this.labelBucketHistoryButton.TabIndex = 9;\r
-            this.labelBucketHistoryButton.Click += new System.EventHandler(this.labelBucketHistoryButton_Click);\r
-            // \r
             // labelAchievement\r
             // \r
             this.labelAchievement.Location = new System.Drawing.Point(166, 18);\r
@@ -1161,31 +1150,6 @@ namespace KancolleSniffer
             this.labelFleet1.MouseLeave += new System.EventHandler(this.labelFleet1_MouseLeave);\r
             this.labelFleet1.MouseHover += new System.EventHandler(this.labelFleet1_MouseHover);\r
             // \r
-            // labelCheckFleet1\r
-            // \r
-            this.labelCheckFleet1.ImageIndex = 0;\r
-            this.labelCheckFleet1.ImageList = this.imageListMisc;\r
-            this.labelCheckFleet1.Location = new System.Drawing.Point(7, 42);\r
-            this.labelCheckFleet1.Name = "labelCheckFleet1";\r
-            this.labelCheckFleet1.Size = new System.Drawing.Size(5, 14);\r
-            this.labelCheckFleet1.TabIndex = 16;\r
-            // \r
-            // imageListMisc\r
-            // \r
-            this.imageListMisc.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageListMisc.ImageStream")));\r
-            this.imageListMisc.TransparentColor = System.Drawing.Color.Transparent;\r
-            this.imageListMisc.Images.SetKeyName(0, "arrow.png");\r
-            // \r
-            // labelCheckFleet4\r
-            // \r
-            this.labelCheckFleet4.ImageIndex = 0;\r
-            this.labelCheckFleet4.ImageList = this.imageListMisc;\r
-            this.labelCheckFleet4.Location = new System.Drawing.Point(172, 42);\r
-            this.labelCheckFleet4.Name = "labelCheckFleet4";\r
-            this.labelCheckFleet4.Size = new System.Drawing.Size(5, 14);\r
-            this.labelCheckFleet4.TabIndex = 18;\r
-            this.labelCheckFleet4.Visible = false;\r
-            // \r
             // labelFleet4\r
             // \r
             this.labelFleet4.Location = new System.Drawing.Point(177, 43);\r
@@ -1194,16 +1158,6 @@ namespace KancolleSniffer
             this.labelFleet4.TabIndex = 17;\r
             this.labelFleet4.Text = "第四";\r
             // \r
-            // labelCheckFleet3\r
-            // \r
-            this.labelCheckFleet3.ImageIndex = 0;\r
-            this.labelCheckFleet3.ImageList = this.imageListMisc;\r
-            this.labelCheckFleet3.Location = new System.Drawing.Point(117, 42);\r
-            this.labelCheckFleet3.Name = "labelCheckFleet3";\r
-            this.labelCheckFleet3.Size = new System.Drawing.Size(5, 14);\r
-            this.labelCheckFleet3.TabIndex = 20;\r
-            this.labelCheckFleet3.Visible = false;\r
-            // \r
             // labelFleet3\r
             // \r
             this.labelFleet3.Location = new System.Drawing.Point(122, 43);\r
@@ -1212,16 +1166,6 @@ namespace KancolleSniffer
             this.labelFleet3.TabIndex = 19;\r
             this.labelFleet3.Text = "第三";\r
             // \r
-            // labelCheckFleet2\r
-            // \r
-            this.labelCheckFleet2.ImageIndex = 0;\r
-            this.labelCheckFleet2.ImageList = this.imageListMisc;\r
-            this.labelCheckFleet2.Location = new System.Drawing.Point(62, 42);\r
-            this.labelCheckFleet2.Name = "labelCheckFleet2";\r
-            this.labelCheckFleet2.Size = new System.Drawing.Size(5, 14);\r
-            this.labelCheckFleet2.TabIndex = 22;\r
-            this.labelCheckFleet2.Visible = false;\r
-            // \r
             // labelFleet2\r
             // \r
             this.labelFleet2.Location = new System.Drawing.Point(67, 43);\r
@@ -1252,26 +1196,6 @@ namespace KancolleSniffer
             this.label36.Text = "資材";\r
             this.label36.Click += new System.EventHandler(this.labelMaterialHistoryButton_Click);\r
             // \r
-            // labelMaterialHistoryButton\r
-            // \r
-            this.labelMaterialHistoryButton.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\r
-            this.labelMaterialHistoryButton.Image = ((System.Drawing.Image)(resources.GetObject("labelMaterialHistoryButton.Image")));\r
-            this.labelMaterialHistoryButton.Location = new System.Drawing.Point(211, 340);\r
-            this.labelMaterialHistoryButton.Name = "labelMaterialHistoryButton";\r
-            this.labelMaterialHistoryButton.Size = new System.Drawing.Size(14, 14);\r
-            this.labelMaterialHistoryButton.TabIndex = 10;\r
-            this.labelMaterialHistoryButton.Click += new System.EventHandler(this.labelMaterialHistoryButton_Click);\r
-            // \r
-            // labelRepairListButton\r
-            // \r
-            this.labelRepairListButton.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\r
-            this.labelRepairListButton.Image = ((System.Drawing.Image)(resources.GetObject("labelRepairListButton.Image")));\r
-            this.labelRepairListButton.Location = new System.Drawing.Point(121, 193);\r
-            this.labelRepairListButton.Name = "labelRepairListButton";\r
-            this.labelRepairListButton.Size = new System.Drawing.Size(14, 14);\r
-            this.labelRepairListButton.TabIndex = 45;\r
-            this.labelRepairListButton.Click += new System.EventHandler(this.labelRepairListButton_Click);\r
-            // \r
             // label31\r
             // \r
             this.label31.AutoSize = true;\r
@@ -1297,15 +1221,6 @@ namespace KancolleSniffer
             this.imageListFuelSq.Images.SetKeyName(8, "燃料薄赤sq.png");\r
             this.imageListFuelSq.Images.SetKeyName(9, "燃料薄灰sq.png");\r
             // \r
-            // labelFuelSq1\r
-            // \r
-            this.labelFuelSq1.ImageIndex = 0;\r
-            this.labelFuelSq1.ImageList = this.imageListFuelSq;\r
-            this.labelFuelSq1.Location = new System.Drawing.Point(40, 42);\r
-            this.labelFuelSq1.Name = "labelFuelSq1";\r
-            this.labelFuelSq1.Size = new System.Drawing.Size(8, 13);\r
-            this.labelFuelSq1.TabIndex = 43;\r
-            // \r
             // imageListBullSq\r
             // \r
             this.imageListBullSq.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageListBullSq.ImageStream")));\r
@@ -1321,32 +1236,55 @@ namespace KancolleSniffer
             this.imageListBullSq.Images.SetKeyName(8, "弾薬薄赤sq.png");\r
             this.imageListBullSq.Images.SetKeyName(9, "弾薬薄灰sq.png");\r
             // \r
-            // labelBullSq1\r
+            // labelAkashiRepair\r
             // \r
-            this.labelBullSq1.ImageIndex = 0;\r
-            this.labelBullSq1.ImageList = this.imageListBullSq;\r
-            this.labelBullSq1.Location = new System.Drawing.Point(49, 42);\r
-            this.labelBullSq1.Name = "labelBullSq1";\r
-            this.labelBullSq1.Size = new System.Drawing.Size(8, 13);\r
-            this.labelBullSq1.TabIndex = 47;\r
+            this.labelAkashiRepair.AutoSize = true;\r
+            this.labelAkashiRepair.Location = new System.Drawing.Point(151, 276);\r
+            this.labelAkashiRepair.Name = "labelAkashiRepair";\r
+            this.labelAkashiRepair.Size = new System.Drawing.Size(29, 12);\r
+            this.labelAkashiRepair.TabIndex = 54;\r
+            this.labelAkashiRepair.Text = "修理";\r
             // \r
-            // labelBullSq2\r
+            // labelClearQuest\r
             // \r
-            this.labelBullSq2.ImageIndex = 0;\r
-            this.labelBullSq2.ImageList = this.imageListBullSq;\r
-            this.labelBullSq2.Location = new System.Drawing.Point(104, 42);\r
-            this.labelBullSq2.Name = "labelBullSq2";\r
-            this.labelBullSq2.Size = new System.Drawing.Size(8, 13);\r
-            this.labelBullSq2.TabIndex = 49;\r
+            this.labelClearQuest.AutoSize = true;\r
+            this.labelClearQuest.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\r
+            this.labelClearQuest.Location = new System.Drawing.Point(37, 340);\r
+            this.labelClearQuest.Name = "labelClearQuest";\r
+            this.labelClearQuest.Size = new System.Drawing.Size(15, 14);\r
+            this.labelClearQuest.TabIndex = 55;\r
+            this.labelClearQuest.Text = "↺";\r
+            this.labelClearQuest.Click += new System.EventHandler(this.labelClearQuest_Click);\r
+            this.labelClearQuest.MouseDown += new System.Windows.Forms.MouseEventHandler(this.labelClearQuest_MouseDown);\r
+            this.labelClearQuest.MouseUp += new System.Windows.Forms.MouseEventHandler(this.labelClearQuest_MouseUp);\r
             // \r
-            // labelFuelSq2\r
+            // panelRepairList\r
             // \r
-            this.labelFuelSq2.ImageIndex = 0;\r
-            this.labelFuelSq2.ImageList = this.imageListFuelSq;\r
-            this.labelFuelSq2.Location = new System.Drawing.Point(95, 42);\r
-            this.labelFuelSq2.Name = "labelFuelSq2";\r
-            this.labelFuelSq2.Size = new System.Drawing.Size(8, 13);\r
-            this.labelFuelSq2.TabIndex = 48;\r
+            this.panelRepairList.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\r
+            this.panelRepairList.Location = new System.Drawing.Point(6, 207);\r
+            this.panelRepairList.Name = "panelRepairList";\r
+            this.panelRepairList.Size = new System.Drawing.Size(129, 21);\r
+            this.panelRepairList.TabIndex = 4;\r
+            this.panelRepairList.Visible = false;\r
+            this.panelRepairList.Click += new System.EventHandler(this.panelRepairList_Click);\r
+            // \r
+            // labelBullSq4\r
+            // \r
+            this.labelBullSq4.ImageIndex = 0;\r
+            this.labelBullSq4.ImageList = this.imageListBullSq;\r
+            this.labelBullSq4.Location = new System.Drawing.Point(214, 42);\r
+            this.labelBullSq4.Name = "labelBullSq4";\r
+            this.labelBullSq4.Size = new System.Drawing.Size(8, 13);\r
+            this.labelBullSq4.TabIndex = 53;\r
+            // \r
+            // labelFuelSq4\r
+            // \r
+            this.labelFuelSq4.ImageIndex = 0;\r
+            this.labelFuelSq4.ImageList = this.imageListFuelSq;\r
+            this.labelFuelSq4.Location = new System.Drawing.Point(205, 42);\r
+            this.labelFuelSq4.Name = "labelFuelSq4";\r
+            this.labelFuelSq4.Size = new System.Drawing.Size(8, 13);\r
+            this.labelFuelSq4.TabIndex = 52;\r
             // \r
             // labelBullSq3\r
             // \r
@@ -1366,55 +1304,106 @@ namespace KancolleSniffer
             this.labelFuelSq3.Size = new System.Drawing.Size(8, 13);\r
             this.labelFuelSq3.TabIndex = 50;\r
             // \r
-            // labelBullSq4\r
+            // labelBullSq2\r
             // \r
-            this.labelBullSq4.ImageIndex = 0;\r
-            this.labelBullSq4.ImageList = this.imageListBullSq;\r
-            this.labelBullSq4.Location = new System.Drawing.Point(214, 42);\r
-            this.labelBullSq4.Name = "labelBullSq4";\r
-            this.labelBullSq4.Size = new System.Drawing.Size(8, 13);\r
-            this.labelBullSq4.TabIndex = 53;\r
+            this.labelBullSq2.ImageIndex = 0;\r
+            this.labelBullSq2.ImageList = this.imageListBullSq;\r
+            this.labelBullSq2.Location = new System.Drawing.Point(104, 42);\r
+            this.labelBullSq2.Name = "labelBullSq2";\r
+            this.labelBullSq2.Size = new System.Drawing.Size(8, 13);\r
+            this.labelBullSq2.TabIndex = 49;\r
             // \r
-            // labelFuelSq4\r
+            // labelFuelSq2\r
             // \r
-            this.labelFuelSq4.ImageIndex = 0;\r
-            this.labelFuelSq4.ImageList = this.imageListFuelSq;\r
-            this.labelFuelSq4.Location = new System.Drawing.Point(205, 42);\r
-            this.labelFuelSq4.Name = "labelFuelSq4";\r
-            this.labelFuelSq4.Size = new System.Drawing.Size(8, 13);\r
-            this.labelFuelSq4.TabIndex = 52;\r
+            this.labelFuelSq2.ImageIndex = 0;\r
+            this.labelFuelSq2.ImageList = this.imageListFuelSq;\r
+            this.labelFuelSq2.Location = new System.Drawing.Point(95, 42);\r
+            this.labelFuelSq2.Name = "labelFuelSq2";\r
+            this.labelFuelSq2.Size = new System.Drawing.Size(8, 13);\r
+            this.labelFuelSq2.TabIndex = 48;\r
             // \r
-            // labelAkashiRepair\r
+            // labelBullSq1\r
             // \r
-            this.labelAkashiRepair.AutoSize = true;\r
-            this.labelAkashiRepair.Location = new System.Drawing.Point(151, 276);\r
-            this.labelAkashiRepair.Name = "labelAkashiRepair";\r
-            this.labelAkashiRepair.Size = new System.Drawing.Size(29, 12);\r
-            this.labelAkashiRepair.TabIndex = 54;\r
-            this.labelAkashiRepair.Text = "修理";\r
+            this.labelBullSq1.ImageIndex = 0;\r
+            this.labelBullSq1.ImageList = this.imageListBullSq;\r
+            this.labelBullSq1.Location = new System.Drawing.Point(49, 42);\r
+            this.labelBullSq1.Name = "labelBullSq1";\r
+            this.labelBullSq1.Size = new System.Drawing.Size(8, 13);\r
+            this.labelBullSq1.TabIndex = 47;\r
             // \r
-            // labelClearQuest\r
+            // labelFuelSq1\r
             // \r
-            this.labelClearQuest.AutoSize = true;\r
-            this.labelClearQuest.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\r
-            this.labelClearQuest.Location = new System.Drawing.Point(37, 340);\r
-            this.labelClearQuest.Name = "labelClearQuest";\r
-            this.labelClearQuest.Size = new System.Drawing.Size(15, 14);\r
-            this.labelClearQuest.TabIndex = 55;\r
-            this.labelClearQuest.Text = "↺";\r
-            this.labelClearQuest.Click += new System.EventHandler(this.labelClearQuest_Click);\r
-            this.labelClearQuest.MouseDown += new System.Windows.Forms.MouseEventHandler(this.labelClearQuest_MouseDown);\r
-            this.labelClearQuest.MouseUp += new System.Windows.Forms.MouseEventHandler(this.labelClearQuest_MouseUp);\r
+            this.labelFuelSq1.ImageIndex = 0;\r
+            this.labelFuelSq1.ImageList = this.imageListFuelSq;\r
+            this.labelFuelSq1.Location = new System.Drawing.Point(40, 42);\r
+            this.labelFuelSq1.Name = "labelFuelSq1";\r
+            this.labelFuelSq1.Size = new System.Drawing.Size(8, 13);\r
+            this.labelFuelSq1.TabIndex = 43;\r
             // \r
-            // panelRepairList\r
+            // labelRepairListButton\r
             // \r
-            this.panelRepairList.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\r
-            this.panelRepairList.Location = new System.Drawing.Point(6, 207);\r
-            this.panelRepairList.Name = "panelRepairList";\r
-            this.panelRepairList.Size = new System.Drawing.Size(129, 21);\r
-            this.panelRepairList.TabIndex = 4;\r
-            this.panelRepairList.Visible = false;\r
-            this.panelRepairList.Click += new System.EventHandler(this.panelRepairList_Click);\r
+            this.labelRepairListButton.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\r
+            this.labelRepairListButton.Image = global::KancolleSniffer.Properties.Resources.arrow_virtical;\r
+            this.labelRepairListButton.Location = new System.Drawing.Point(121, 193);\r
+            this.labelRepairListButton.Name = "labelRepairListButton";\r
+            this.labelRepairListButton.Size = new System.Drawing.Size(14, 14);\r
+            this.labelRepairListButton.TabIndex = 45;\r
+            this.labelRepairListButton.Click += new System.EventHandler(this.labelRepairListButton_Click);\r
+            // \r
+            // labelMaterialHistoryButton\r
+            // \r
+            this.labelMaterialHistoryButton.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\r
+            this.labelMaterialHistoryButton.Image = global::KancolleSniffer.Properties.Resources.arrow_virtical;\r
+            this.labelMaterialHistoryButton.Location = new System.Drawing.Point(211, 340);\r
+            this.labelMaterialHistoryButton.Name = "labelMaterialHistoryButton";\r
+            this.labelMaterialHistoryButton.Size = new System.Drawing.Size(14, 14);\r
+            this.labelMaterialHistoryButton.TabIndex = 10;\r
+            this.labelMaterialHistoryButton.Click += new System.EventHandler(this.labelMaterialHistoryButton_Click);\r
+            // \r
+            // labelCheckFleet2\r
+            // \r
+            this.labelCheckFleet2.Image = global::KancolleSniffer.Properties.Resources.arrow;\r
+            this.labelCheckFleet2.Location = new System.Drawing.Point(62, 42);\r
+            this.labelCheckFleet2.Name = "labelCheckFleet2";\r
+            this.labelCheckFleet2.Size = new System.Drawing.Size(5, 14);\r
+            this.labelCheckFleet2.TabIndex = 22;\r
+            this.labelCheckFleet2.Visible = false;\r
+            // \r
+            // labelCheckFleet3\r
+            // \r
+            this.labelCheckFleet3.Image = global::KancolleSniffer.Properties.Resources.arrow;\r
+            this.labelCheckFleet3.Location = new System.Drawing.Point(117, 42);\r
+            this.labelCheckFleet3.Name = "labelCheckFleet3";\r
+            this.labelCheckFleet3.Size = new System.Drawing.Size(5, 14);\r
+            this.labelCheckFleet3.TabIndex = 20;\r
+            this.labelCheckFleet3.Visible = false;\r
+            // \r
+            // labelCheckFleet4\r
+            // \r
+            this.labelCheckFleet4.Image = global::KancolleSniffer.Properties.Resources.arrow;\r
+            this.labelCheckFleet4.Location = new System.Drawing.Point(172, 42);\r
+            this.labelCheckFleet4.Name = "labelCheckFleet4";\r
+            this.labelCheckFleet4.Size = new System.Drawing.Size(5, 14);\r
+            this.labelCheckFleet4.TabIndex = 18;\r
+            this.labelCheckFleet4.Visible = false;\r
+            // \r
+            // labelCheckFleet1\r
+            // \r
+            this.labelCheckFleet1.Image = global::KancolleSniffer.Properties.Resources.arrow;\r
+            this.labelCheckFleet1.Location = new System.Drawing.Point(7, 42);\r
+            this.labelCheckFleet1.Name = "labelCheckFleet1";\r
+            this.labelCheckFleet1.Size = new System.Drawing.Size(5, 14);\r
+            this.labelCheckFleet1.TabIndex = 16;\r
+            // \r
+            // labelBucketHistoryButton\r
+            // \r
+            this.labelBucketHistoryButton.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\r
+            this.labelBucketHistoryButton.Image = ((System.Drawing.Image)(resources.GetObject("labelBucketHistoryButton.Image")));\r
+            this.labelBucketHistoryButton.Location = new System.Drawing.Point(146, 15);\r
+            this.labelBucketHistoryButton.Name = "labelBucketHistoryButton";\r
+            this.labelBucketHistoryButton.Size = new System.Drawing.Size(14, 14);\r
+            this.labelBucketHistoryButton.TabIndex = 9;\r
+            this.labelBucketHistoryButton.Click += new System.EventHandler(this.labelBucketHistoryButton_Click);\r
             // \r
             // MainForm\r
             // \r
@@ -1548,7 +1537,6 @@ namespace KancolleSniffer
         private System.Windows.Forms.ToolStripMenuItem ExitToolStripMenuItem;\r
         private System.Windows.Forms.Label labelFleet1;\r
         private System.Windows.Forms.Label labelCheckFleet1;\r
-        private System.Windows.Forms.ImageList imageListMisc;\r
         private System.Windows.Forms.Label labelCheckFleet4;\r
         private System.Windows.Forms.Label labelFleet4;\r
         private System.Windows.Forms.Label labelCheckFleet3;\r
index af40494..26128dc 100644 (file)
   <metadata name="contextMenuStripMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">\r
     <value>269, 17</value>\r
   </metadata>\r
-  <metadata name="imageListMisc.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">\r
-    <value>449, 23</value>\r
-  </metadata>\r
-  <data name="imageListMisc.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">\r
-    <value>\r
-        AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w\r
-        LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0\r
-        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABI\r
-        BwAAAk1TRnQBSQFMAwEBAAFEAQEBRAEBAQUBAAENAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA\r
-        ARQDAAENAwABAQEAAQgFAAEEAQEYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA\r
-        AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5\r
-        AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA\r
-        AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm\r
-        AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM\r
-        AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA\r
-        ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz\r
-        AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ\r
-        AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM\r
-        AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA\r
-        AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA\r
-        AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ\r
-        AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/\r
-        AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA\r
-        AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm\r
-        ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ\r
-        Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz\r
-        AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA\r
-        AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM\r
-        AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM\r
-        ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM\r
-        Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA\r
-        AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM\r
-        AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ\r
-        AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz\r
-        AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm\r
-        AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw\r
-        AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/wEAAfATAAEOAfMTAAEV\r
-        Af8TAAHsFAABBxQAAfITAAESEwAB8hIAAQcSAAHsEgABFQH/EQABDgHzEgAB8BMAAUIBTQE+BwABPgMA\r
-        ASgDAAEUAwABDQMAAQEBAAEBBQABNBcAA/8BAAF4AwABOAMAARgDAAEYAwABCA8AAQgDAAEYAwABGAMA\r
-        ATgDAAF4AwAL\r
-</value>\r
-  </data>\r
   <data name="labelMaterialHistoryButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">\r
     <value>\r
         iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAX\r
index ddbdf60..15fb24b 100644 (file)
@@ -47,7 +47,7 @@ namespace KancolleSniffer.Properties {
         }\r
         \r
         /// <summary>\r
-        ///   厳密に型指定されたこのリソース クラスを使用して、すべての検索リソースに対し、\r
+        ///   すべてについて、現在のスレッドの CurrentUICulture プロパティをオーバーライドします\r
         ///   現在のスレッドの CurrentUICulture プロパティをオーバーライドします。\r
         /// </summary>\r
         [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\r
@@ -59,5 +59,25 @@ namespace KancolleSniffer.Properties {
                 resourceCulture = value;\r
             }\r
         }\r
+        \r
+        /// <summary>\r
+        ///   型 System.Drawing.Bitmap のローカライズされたリソースを検索します。\r
+        /// </summary>\r
+        internal static System.Drawing.Bitmap arrow {\r
+            get {\r
+                object obj = ResourceManager.GetObject("arrow", resourceCulture);\r
+                return ((System.Drawing.Bitmap)(obj));\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   型 System.Drawing.Bitmap のローカライズされたリソースを検索します。\r
+        /// </summary>\r
+        internal static System.Drawing.Bitmap arrow_virtical {\r
+            get {\r
+                object obj = ResourceManager.GetObject("arrow virtical", resourceCulture);\r
+                return ((System.Drawing.Bitmap)(obj));\r
+            }\r
+        }\r
     }\r
 }\r
index ffecec8..9f3a3b0 100644 (file)
@@ -46,7 +46,7 @@
     \r
     mimetype: application/x-microsoft.net.object.binary.base64\r
     value   : The object must be serialized with \r
-            : System.Serialization.Formatters.Binary.BinaryFormatter\r
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r
             : and then encoded with base64 encoding.\r
     \r
     mimetype: application/x-microsoft.net.object.soap.base64\r
@@ -60,6 +60,7 @@
             : and then encoded with base64 encoding.\r
     -->\r
   <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">\r
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />\r
     <xsd:element name="root" msdata:IsDataSet="true">\r
       <xsd:complexType>\r
         <xsd:choice maxOccurs="unbounded">\r
               <xsd:sequence>\r
                 <xsd:element name="value" type="xsd:string" minOccurs="0" />\r
               </xsd:sequence>\r
-              <xsd:attribute name="name" type="xsd:string" />\r
+              <xsd:attribute name="name" use="required" type="xsd:string" />\r
               <xsd:attribute name="type" type="xsd:string" />\r
               <xsd:attribute name="mimetype" type="xsd:string" />\r
+              <xsd:attribute ref="xml:space" />\r
             </xsd:complexType>\r
           </xsd:element>\r
           <xsd:element name="assembly">\r
                 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />\r
                 <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />\r
               </xsd:sequence>\r
-              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />\r
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />\r
               <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />\r
               <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />\r
+              <xsd:attribute ref="xml:space" />\r
             </xsd:complexType>\r
           </xsd:element>\r
           <xsd:element name="resheader">\r
     <value>2.0</value>\r
   </resheader>\r
   <resheader name="reader">\r
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </resheader>\r
   <resheader name="writer">\r
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </resheader>\r
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />\r
+  <data name="arrow virtical" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\Resources\arrow virtical.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  </data>\r
+  <data name="arrow" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\Resources\arrow.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  </data>\r
 </root>
\ No newline at end of file
diff --git a/KancolleSniffer/Resources/arrow virtical.png b/KancolleSniffer/Resources/arrow virtical.png
new file mode 100644 (file)
index 0000000..d1d9840
Binary files /dev/null and b/KancolleSniffer/Resources/arrow virtical.png differ
diff --git a/KancolleSniffer/Resources/arrow.png b/KancolleSniffer/Resources/arrow.png
new file mode 100644 (file)
index 0000000..f679bb5
Binary files /dev/null and b/KancolleSniffer/Resources/arrow.png differ
index 08af5fc..541cc20 100644 (file)
@@ -78,10 +78,10 @@ namespace KancolleSniffer.View
                 ScrollBar.Value - e.Delta * SystemInformation.MouseWheelScrollLines / 120));\r
         }\r
 \r
-        public void Update(Sniffer sniffer, string mode, ListForm.SortOrder sortOrder, bool byShipType)\r
+        public void Update(Sniffer sniffer, string mode, ShipListConfig config)\r
         {\r
             _mode = mode;\r
-            CreateShipList(sniffer, sortOrder, byShipType);\r
+            CreateShipList(sniffer, config);\r
             SuspendDrawing();\r
             SetupLabels();\r
             SetShipLabels();\r
@@ -104,27 +104,13 @@ namespace KancolleSniffer.View
             Refresh();\r
         }\r
 \r
-        private void CreateShipList(Sniffer sniffer, ListForm.SortOrder sortOrder, bool byShipType)\r
+        private void CreateShipList(Sniffer sniffer, ShipListConfig config)\r
         {\r
-            var ships = _mode == "修復" ? sniffer.RepairList : FilterByGroup(sniffer.ShipList, _mode).ToArray();\r
-            var order = _mode == "修復" ? ListForm.SortOrder.Repair : sortOrder;\r
-            if (!byShipType)\r
-            {\r
-                _shipList = ships.OrderBy(s => s, new CompareShip(false, order)).ToArray();\r
-                return;\r
-            }\r
-            var types = ships.Select(s => new {Id = s.Spec.ShipType, Name = s.Spec.ShipTypeName})\r
-                .Distinct()\r
-                // ReSharper disable once IdentifierTypo\r
-                .Select(stype =>\r
-                    new ShipStatus\r
-                    {\r
-                        Spec = new ShipSpec {Name = stype.Name, ShipType = stype.Id},\r
-                        Level = 1000,\r
-                        NowHp = -1000,\r
-                        Cond = -1000\r
-                    });\r
-            _shipList = ships.Concat(types).OrderBy(s => s, new CompareShip(true, order)).ToArray();\r
+            var ships = FilterByShipTypes(\r
+                _mode == "修復" ? sniffer.RepairList : FilterByGroup(sniffer.ShipList, _mode),\r
+                config.ShipCategories);\r
+            var order = _mode == "修復" ? ListForm.SortOrder.Repair : config.SortOrder;\r
+            _shipList = ships.OrderBy(s => s, new CompareShip(false, order)).ToArray();\r
         }\r
 \r
         private IEnumerable<ShipStatus> FilterByGroup(IEnumerable<ShipStatus> ships, string group)\r
@@ -135,6 +121,62 @@ namespace KancolleSniffer.View
             return from s in ships where GroupSettings[g].Contains(s.Id) select s;\r
         }\r
 \r
+        private readonly int[][] _shipTypeIds =\r
+        {\r
+            new[] // 戦艦\r
+            {\r
+                10, // 航空戦艦\r
+                9, // 戦艦\r
+                8 // 巡洋戦艦\r
+            },\r
+            new[] // 空母\r
+            {\r
+                18, // 装甲空母\r
+                11, // 正規空母\r
+                7 // 軽空母\r
+            },\r
+            new[] // 重巡\r
+            {\r
+                6, // 航空巡洋艦\r
+                5 // 重巡洋艦\r
+            },\r
+            new[] // 軽巡\r
+            {\r
+                21, // 練習巡洋艦\r
+                4, // 重雷装巡洋艦\r
+                3 // 軽巡洋艦\r
+            },\r
+            new[] // 駆逐\r
+            {\r
+                2 // 駆逐艦\r
+            },\r
+            new[] // 海防\r
+            {\r
+                1 // 海防艦\r
+            },\r
+            new[] // 潜水\r
+            {\r
+                14, // 潜水空母\r
+                13 // 潜水艦\r
+            },\r
+            new[] // 補助\r
+            {\r
+                22, // 補給艦\r
+                20, // 潜水母艦\r
+                19, // 工作艦\r
+                17, // 揚陸艦\r
+                16 // 水上機母艦\r
+            }\r
+        };\r
+\r
+        private IEnumerable<ShipStatus> FilterByShipTypes(IEnumerable<ShipStatus> ships, ShipCategory shipTypes)\r
+        {\r
+            var ids = Enumerable.Range(0, _shipTypeIds.Length)\r
+                .Where(type => ((int)shipTypes & (1 << type)) != 0)\r
+                .SelectMany(type => _shipTypeIds[type]).ToArray();\r
+            return ships.Where(ship => ids.Contains(ship.Spec.ShipType));\r
+        }\r
+\r
         public IEnumerable<ShipStatus> CurrentShipList => _shipList.Where(ship => ship.Level != 1000);\r
 \r
         private class CompareShip : IComparer<ShipStatus>\r