diff --git a/res/values/custom_strings.xml b/res/values/custom_strings.xml
index ec533d0..afb174f 100644
--- a/res/values/custom_strings.xml
+++ b/res/values/custom_strings.xml
@@ -252,7 +252,8 @@
     <string name="custom_header_provider_title">Header provider</string>
     <string name="custom_header_browse_title">Browse installed headers</string>
     <string name="custom_header_browse_summary">Long press on any image to use for static mode</string>
-    <string name="style_summary">Custom header image is</string>
+    <string name="style_enabled_summary">Custom header image is ON</string>
+    <string name="style_disabled_summary">Custom header image is OFF</string>
 
     <!-- Network traffic -->
     <string name="network_traffic_title">Network traffic</string>
@@ -419,8 +420,10 @@
     <string name="navigation_bar_ime_button_title">Show IME navigation bar button</string>
     <string name="navigation_bar_ime_button_summary">Input switcher in navigation bar</string>
     <!-- Summaries -->
-    <string name="bars_brightness_summary">Brightness control is</string>
-    <string name="bars_dt2s_summary">DT2S is</string>
+    <string name="bars_brightness_enabled_summary">Brightness control is ON</string>
+    <string name="bars_brightness_disabled_summary">Brightness control is OFF</string>
+    <string name="bars_dt2s_enabled_summary">DT2S is ON</string>
+    <string name="bars_dt2s_disabled_summary">DT2S is OFF</string>
 
     <string name="volume_dialog_headers_title">Volume dialog headers</string>
     <string name="volume_dialog_headers_summary">Show stream name headers in volume dialog</string>
diff --git a/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java b/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java
index da38bac..97d624f 100644
--- a/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java
+++ b/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java
@@ -127,10 +127,6 @@
     }
 */
 
-    public static String toStringOnOff(boolean bool) {
-        return toString(bool, "ON", "OFF");
-    }
-
     public static String toString(boolean bool, String trueString, String falseString) {
         return bool ? trueString : falseString;
     }
@@ -152,14 +148,16 @@
         }
 
         private void updateSummary() {
-            final String summary_text;
+            final String summary_text, brightness_summary, dt2s_summary;
             boolean brightnessEnabled = Settings.System.getInt(mContext.getContentResolver(),
                     STATUS_BAR_BRIGHTNESS_CONTROL, 0) == 1;
             boolean dt2sEnabled = Settings.System.getInt(mContext.getContentResolver(),
                     DOUBLE_TAP_SLEEP_GESTURE, 0) == 1;
-            summary_text = String.format("%s%s%s%s%s%s%s", mContext.getString(R.string.bars_brightness_summary)
-                           , " ", toStringOnOff(brightnessEnabled), " / ", mContext.getString(R.string.bars_dt2s_summary)
-                           , " ", toStringOnOff(dt2sEnabled));
+            brightness_summary = brightnessEnabled ? mContext.getString(R.string.bars_brightness_enabled_summary)
+                    : mContext.getString(R.string.bars_brightness_disabled_summary);
+            dt2s_summary = dt2sEnabled ? mContext.getString(R.string.bars_dt2s_enabled_summary)
+                    : mContext.getString(R.string.bars_dt2s_disabled_summary);
+            summary_text = String.format("%s%s%s", brightness_summary, " / ", dt2s_summary);
             mLoader.setSummary(this, summary_text);
         }
     }
diff --git a/src/org/omnirom/omnigears/interfacesettings/StyleSettings.java b/src/org/omnirom/omnigears/interfacesettings/StyleSettings.java
index 3c0cf84..af98834 100644
--- a/src/org/omnirom/omnigears/interfacesettings/StyleSettings.java
+++ b/src/org/omnirom/omnigears/interfacesettings/StyleSettings.java
@@ -229,10 +229,6 @@
         return pm.resolveActivity(browse, 0) != null;
     }
 
-    public static String toStringOnOff(boolean bool) {
-        return toString(bool, "ON", "OFF");
-    }
-
     public static String toString(boolean bool, String trueString, String falseString) {
         return bool ? trueString : falseString;
     }
@@ -257,9 +253,8 @@
             final String summary_text;
             boolean customHeaderEnabled = Settings.System.getInt(mContext.getContentResolver(),
                     STATUS_BAR_CUSTOM_HEADER, 0) == 1;
-            summary_text = String.format("%s%s%s", mContext.getString(R.string.style_summary)
-                           , " ", toStringOnOff(customHeaderEnabled));
-            mLoader.setSummary(this, summary_text);
+            mLoader.setSummary(this, customHeaderEnabled ? mContext.getString(R.string.style_enabled_summary)
+                    : mContext.getString(R.string.style_disabled_summary));
         }
     }
 
