OSDN Git Service

振り分けルールの有効・無効を切り替えるボタンを実装
authorKimura Youichi <kim.upsilon@bucyou.net>
Fri, 1 May 2015 09:06:02 +0000 (18:06 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Sat, 2 May 2015 15:26:14 +0000 (00:26 +0900)
OpenTween/FilterDialog.Designer.cs
OpenTween/FilterDialog.cs
OpenTween/FilterDialog.resx
OpenTween/Properties/Resources.Designer.cs
OpenTween/Properties/Resources.resx

index 2179f1d..ed19473 100644 (file)
@@ -67,6 +67,7 @@
             this.ButtonEdit = new System.Windows.Forms.Button();
             this.ButtonDelete = new System.Windows.Forms.Button();
             this.GroupBox2 = new System.Windows.Forms.GroupBox();
+            this.buttonRuleToggleEnabled = new System.Windows.Forms.Button();
             this.ListFilters = new System.Windows.Forms.ListBox();
             this.EditFilterGroup = new System.Windows.Forms.GroupBox();
             this.Label11 = new System.Windows.Forms.Label();
             // GroupBox2
             // 
             resources.ApplyResources(this.GroupBox2, "GroupBox2");
+            this.GroupBox2.Controls.Add(this.buttonRuleToggleEnabled);
             this.GroupBox2.Controls.Add(this.ButtonRuleMove);
             this.GroupBox2.Controls.Add(this.ButtonRuleCopy);
             this.GroupBox2.Controls.Add(this.ButtonRuleDown);
             this.GroupBox2.Name = "GroupBox2";
             this.GroupBox2.TabStop = false;
             // 
+            // buttonRuleToggleEnabled
+            // 
+            resources.ApplyResources(this.buttonRuleToggleEnabled, "buttonRuleToggleEnabled");
+            this.buttonRuleToggleEnabled.Name = "buttonRuleToggleEnabled";
+            this.buttonRuleToggleEnabled.UseVisualStyleBackColor = true;
+            this.buttonRuleToggleEnabled.Click += new System.EventHandler(this.buttonRuleToggleEnabled_Click);
+            // 
             // ListFilters
             // 
             this.ListFilters.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
         internal System.Windows.Forms.GroupBox GroupBox1;
         internal System.Windows.Forms.CheckBox CheckProtected;
         private System.Windows.Forms.Label labelMuteTab;
+        private System.Windows.Forms.Button buttonRuleToggleEnabled;
     }
 }
\ No newline at end of file
index ba7dc88..3e85d13 100644 (file)
@@ -55,6 +55,28 @@ namespace OpenTween
             None,
         }
 
+        private enum EnableButtonMode
+        {
+            NotSelected,
+            Enable,
+            Disable,
+        }
+
+        private EnableButtonMode RuleEnableButtonMode
+        {
+            get { return this._ruleEnableButtonMode; }
+            set
+            {
+                this._ruleEnableButtonMode = value;
+
+                this.buttonRuleToggleEnabled.Text = value == FilterDialog.EnableButtonMode.Enable
+                    ? Properties.Resources.EnableButtonCaption
+                    : Properties.Resources.DisableButtonCaption;
+                this.buttonRuleToggleEnabled.Enabled = value != EnableButtonMode.NotSelected;
+            }
+        }
+        private EnableButtonMode _ruleEnableButtonMode = FilterDialog.EnableButtonMode.NotSelected;
+
         public FilterDialog()
         {
             InitializeComponent();
@@ -133,6 +155,7 @@ namespace OpenTween
                     ButtonRuleDown.Enabled = false;
                     ButtonRuleCopy.Enabled = false;
                     ButtonRuleMove.Enabled = false;
+                    buttonRuleToggleEnabled.Enabled = false;
                     break;
                 default:
                     ButtonNew.Enabled = true;
@@ -144,6 +167,7 @@ namespace OpenTween
                         ButtonRuleDown.Enabled = true;
                         ButtonRuleCopy.Enabled = true;
                         ButtonRuleMove.Enabled = true;
+                        buttonRuleToggleEnabled.Enabled = true;
                     }
                     else
                     {
@@ -153,6 +177,7 @@ namespace OpenTween
                         ButtonRuleDown.Enabled = false;
                         ButtonRuleCopy.Enabled = false;
                         ButtonRuleMove.Enabled = false;
+                        buttonRuleToggleEnabled.Enabled = false;
                     }
                     break;
             }
@@ -218,6 +243,7 @@ namespace OpenTween
             ButtonRuleDown.Enabled = false;
             ButtonRuleCopy.Enabled = false;
             ButtonRuleMove.Enabled = false;
+            buttonRuleToggleEnabled.Enabled = false;
             ButtonDelete.Enabled = false;
             ButtonClose.Enabled = false;
             EditFilterGroup.Enabled = true;
@@ -277,6 +303,7 @@ namespace OpenTween
             ButtonRuleDown.Enabled = false;
             ButtonRuleCopy.Enabled = false;
             ButtonRuleMove.Enabled = false;
+            buttonRuleToggleEnabled.Enabled = false;
             ButtonDelete.Enabled = false;
             ButtonClose.Enabled = false;
             EditFilterGroup.Enabled = true;
@@ -339,6 +366,7 @@ namespace OpenTween
             ButtonRuleDown.Enabled = false;
             ButtonRuleCopy.Enabled = false;
             ButtonRuleMove.Enabled = false;
+            buttonRuleToggleEnabled.Enabled = false;
             EditFilterGroup.Enabled = true;
             ListTabs.Enabled = false;
             GroupTab.Enabled = false;
@@ -398,6 +426,7 @@ namespace OpenTween
                 ButtonRuleDown.Enabled = true;
                 ButtonRuleCopy.Enabled = true;
                 ButtonRuleMove.Enabled = true;
+                buttonRuleToggleEnabled.Enabled = true;
             }
             else
             {
@@ -407,6 +436,7 @@ namespace OpenTween
                 ButtonRuleDown.Enabled = false;
                 ButtonRuleCopy.Enabled = false;
                 ButtonRuleMove.Enabled = false;
+                buttonRuleToggleEnabled.Enabled = false;
             }
             ButtonClose.Enabled = true;
             if (_directAdd)
@@ -502,6 +532,7 @@ namespace OpenTween
                 ButtonRuleDown.Enabled = true;
                 ButtonRuleCopy.Enabled = true;
                 ButtonRuleMove.Enabled = true;
+                buttonRuleToggleEnabled.Enabled = true;
             }
             else
             {
@@ -544,6 +575,7 @@ namespace OpenTween
                 ButtonRuleDown.Enabled = false;
                 ButtonRuleCopy.Enabled = false;
                 ButtonRuleMove.Enabled = false;
+                buttonRuleToggleEnabled.Enabled = false;
             }
         }
 
@@ -823,8 +855,24 @@ namespace OpenTween
 
         private void ListFilters_SelectedIndexChanged(object sender, EventArgs e)
         {
-            if (!_moveRules)
-                ShowDetail();
+            if (_moveRules)
+                return;
+
+            ShowDetail();
+
+            if (this.RuleEnableButtonMode == EnableButtonMode.NotSelected)
+            {
+                if (this.ListFilters.SelectedIndices.Count != 0)
+                {
+                    var topItem = (PostFilterRule)this.ListFilters.SelectedItem;
+                    this.RuleEnableButtonMode = topItem.Enabled ? EnableButtonMode.Disable : EnableButtonMode.Enable;
+                }
+            }
+            else // this.RuleEnableButtonMode != EnableButtonMode.NotSelected
+            {
+                if (this.ListFilters.SelectedIndices.Count == 0)
+                    this.RuleEnableButtonMode = EnableButtonMode.NotSelected;
+            }
         }
 
         private void ButtonClose_Click(object sender, EventArgs e)
@@ -1162,6 +1210,28 @@ namespace OpenTween
             }
         }
 
+        private void buttonRuleToggleEnabled_Click(object sender, EventArgs e)
+        {
+            if (this.RuleEnableButtonMode == EnableButtonMode.NotSelected)
+                return;
+
+            var enabled = this.RuleEnableButtonMode == EnableButtonMode.Enable;
+
+            foreach (var idx in this.ListFilters.SelectedIndices.Cast<int>())
+            {
+                var filter = (PostFilterRule)this.ListFilters.Items[idx];
+                if (filter.Enabled != enabled)
+                {
+                    filter.Enabled = enabled;
+
+                    var itemRect = this.ListFilters.GetItemRectangle(idx);
+                    this.ListFilters.Invalidate(itemRect);
+                }
+            }
+
+            this.RuleEnableButtonMode = enabled ? EnableButtonMode.Disable : EnableButtonMode.Enable;
+        }
+
         private void ButtonRuleCopy_Click(object sender, EventArgs e)
         {
             if (ListTabs.SelectedIndex > -1 && ListFilters.SelectedItem != null)
index 44248c4..bef28ed 100644 (file)
     <value>0</value>
   </data>
   <data name="ButtonRuleMove.Location" type="System.Drawing.Point, System.Drawing">
-    <value>342, 209</value>
+    <value>450, 209</value>
   </data>
   <data name="ButtonRuleMove.Size" type="System.Drawing.Size, System.Drawing">
     <value>75, 23</value>
   </data>
   <data name="ButtonRuleMove.TabIndex" type="System.Int32, mscorlib">
-    <value>6</value>
+    <value>7</value>
   </data>
   <data name="ButtonRuleMove.Text" xml:space="preserve">
     <value>移動</value>
     <value>GroupBox2</value>
   </data>
   <data name="&gt;&gt;ButtonRuleMove.ZOrder" xml:space="preserve">
-    <value>0</value>
+    <value>1</value>
   </data>
   <data name="CheckRetweet.AutoSize" type="System.Boolean, mscorlib">
     <value>True</value>
     <value>3</value>
   </data>
   <data name="ButtonRuleCopy.Location" type="System.Drawing.Point, System.Drawing">
-    <value>261, 209</value>
+    <value>369, 209</value>
   </data>
   <data name="ButtonRuleCopy.Size" type="System.Drawing.Size, System.Drawing">
     <value>75, 23</value>
   </data>
   <data name="ButtonRuleCopy.TabIndex" type="System.Int32, mscorlib">
-    <value>5</value>
+    <value>6</value>
   </data>
   <data name="ButtonRuleCopy.Text" xml:space="preserve">
     <value>コピー</value>
     <value>GroupBox2</value>
   </data>
   <data name="&gt;&gt;ButtonRuleCopy.ZOrder" xml:space="preserve">
-    <value>1</value>
+    <value>2</value>
   </data>
   <data name="TextSource.Location" type="System.Drawing.Point, System.Drawing">
     <value>89, 93</value>
     <value>GroupBox2</value>
   </data>
   <data name="&gt;&gt;ButtonRuleDown.ZOrder" xml:space="preserve">
-    <value>2</value>
+    <value>3</value>
   </data>
   <data name="CheckLambda.AutoSize" type="System.Boolean, mscorlib">
     <value>True</value>
     <value>GroupBox2</value>
   </data>
   <data name="&gt;&gt;ButtonRuleUp.ZOrder" xml:space="preserve">
-    <value>3</value>
+    <value>4</value>
   </data>
   <data name="CheckCaseSensitive.AutoSize" type="System.Boolean, mscorlib">
     <value>True</value>
     <value>GroupBox2</value>
   </data>
   <data name="&gt;&gt;ButtonNew.ZOrder" xml:space="preserve">
-    <value>7</value>
+    <value>8</value>
   </data>
   <data name="ButtonUp.Font" type="System.Drawing.Font, System.Drawing">
     <value>Marlett, 9pt, style=Bold</value>
     <value>GroupBox2</value>
   </data>
   <data name="&gt;&gt;ButtonEdit.ZOrder" xml:space="preserve">
-    <value>5</value>
+    <value>6</value>
   </data>
   <data name="ButtonDelete.Location" type="System.Drawing.Point, System.Drawing">
-    <value>531, 210</value>
+    <value>531, 209</value>
   </data>
   <data name="ButtonDelete.Size" type="System.Drawing.Size, System.Drawing">
     <value>75, 23</value>
   </data>
   <data name="ButtonDelete.TabIndex" type="System.Int32, mscorlib">
-    <value>7</value>
+    <value>8</value>
   </data>
   <data name="ButtonDelete.Text" xml:space="preserve">
     <value>削除(&amp;D)</value>
     <value>GroupBox2</value>
   </data>
   <data name="&gt;&gt;ButtonDelete.ZOrder" xml:space="preserve">
-    <value>6</value>
+    <value>7</value>
   </data>
   <data name="GroupBox2.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
     <value>Top, Bottom, Left, Right</value>
   </data>
+  <data name="buttonRuleToggleEnabled.Enabled" type="System.Boolean, mscorlib">
+    <value>False</value>
+  </data>
+  <data name="buttonRuleToggleEnabled.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="buttonRuleToggleEnabled.Location" type="System.Drawing.Point, System.Drawing">
+    <value>254, 209</value>
+  </data>
+  <data name="buttonRuleToggleEnabled.Size" type="System.Drawing.Size, System.Drawing">
+    <value>75, 23</value>
+  </data>
+  <data name="buttonRuleToggleEnabled.TabIndex" type="System.Int32, mscorlib">
+    <value>5</value>
+  </data>
+  <data name="buttonRuleToggleEnabled.Text" xml:space="preserve">
+    <value>無効化</value>
+  </data>
+  <data name="&gt;&gt;buttonRuleToggleEnabled.Name" xml:space="preserve">
+    <value>buttonRuleToggleEnabled</value>
+  </data>
+  <data name="&gt;&gt;buttonRuleToggleEnabled.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;buttonRuleToggleEnabled.Parent" xml:space="preserve">
+    <value>GroupBox2</value>
+  </data>
+  <data name="&gt;&gt;buttonRuleToggleEnabled.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
   <data name="ListFilters.HorizontalScrollbar" type="System.Boolean, mscorlib">
     <value>True</value>
   </data>
     <value>GroupBox2</value>
   </data>
   <data name="&gt;&gt;ListFilters.ZOrder" xml:space="preserve">
-    <value>4</value>
+    <value>5</value>
   </data>
   <data name="EditFilterGroup.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
     <value>Top, Bottom, Left, Right</value>
     <value>600, 293</value>
   </data>
   <data name="EditFilterGroup.TabIndex" type="System.Int32, mscorlib">
-    <value>8</value>
+    <value>9</value>
   </data>
   <data name="EditFilterGroup.Text" xml:space="preserve">
     <value>ルール編集</value>
     <value>GroupBox2</value>
   </data>
   <data name="&gt;&gt;EditFilterGroup.ZOrder" xml:space="preserve">
-    <value>8</value>
+    <value>9</value>
   </data>
   <data name="GroupBox2.Location" type="System.Drawing.Point, System.Drawing">
     <value>142, 9</value>
index e2c46b4..f4b7d7a 100644 (file)
@@ -910,6 +910,15 @@ namespace OpenTween.Properties {
         }
         
         /// <summary>
+        ///   無効化 に類似しているローカライズされた文字列を検索します。
+        /// </summary>
+        internal static string DisableButtonCaption {
+            get {
+                return ResourceManager.GetString("DisableButtonCaption", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   更新間隔には数値(0または15~6000)を指定してください。 に類似しているローカライズされた文字列を検索します。
         /// </summary>
         internal static string DMPeriod_ValidatingText1 {
@@ -973,6 +982,15 @@ namespace OpenTween.Properties {
         }
         
         /// <summary>
+        ///   有効化 に類似しているローカライズされた文字列を検索します。
+        /// </summary>
+        internal static string EnableButtonCaption {
+            get {
+                return ResourceManager.GetString("EnableButtonCaption", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   選択された発言をFavoritesに追加します。よろしいですか? に類似しているローカライズされた文字列を検索します。
         /// </summary>
         internal static string FavAddToolStripMenuItem_ClickText1 {
index 931024d..4b87f79 100644 (file)
   <data name="MuteTabName" xml:space="preserve">
     <value>(ミュート)</value>
   </data>
+  <data name="DisableButtonCaption" xml:space="preserve">
+    <value>無効化</value>
+  </data>
+  <data name="EnableButtonCaption" xml:space="preserve">
+    <value>有効化</value>
+  </data>
 </root>
\ No newline at end of file