Merge "Add a "show touches" option for demos and presentations. Bug: 4569045"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 87be0e6..39c36c2 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -3398,6 +3398,11 @@
     <!-- UI debug setting: show pointer location summary [CHAR LIMIT=50] -->
     <string name="pointer_location_summary">Screen overlay showing current touch data</string>
 
+    <!-- UI debug setting: show touches? [CHAR LIMIT=25] -->
+    <string name="show_touches">Show touches</string>
+    <!-- UI debug setting: show touches location summary [CHAR LIMIT=50] -->
+    <string name="show_touches_summary">Show visual feedback for touches</string>
+
     <!-- UI debug setting: show where screen updates happen? [CHAR LIMIT=25] -->
     <string name="show_screen_updates">Show screen updates</string>
     <!-- UI debug setting: show screen updates summary [CHAR LIMIT=50] -->
diff --git a/res/xml/development_prefs.xml b/res/xml/development_prefs.xml
index 0f8dfbc..b65c2e5 100644
--- a/res/xml/development_prefs.xml
+++ b/res/xml/development_prefs.xml
@@ -64,6 +64,11 @@
             android:summary="@string/pointer_location_summary"/>
 
         <CheckBoxPreference
+            android:key="show_touches"
+            android:title="@string/show_touches"
+            android:summary="@string/show_touches_summary"/>
+
+        <CheckBoxPreference
             android:key="show_screen_updates"
             android:title="@string/show_screen_updates"
             android:summary="@string/show_screen_updates_summary"/>
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index d93c333..bdbec97 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -59,6 +59,7 @@
 
     private static final String STRICT_MODE_KEY = "strict_mode";
     private static final String POINTER_LOCATION_KEY = "pointer_location";
+    private static final String SHOW_TOUCHES_KEY = "show_touches";
     private static final String SHOW_SCREEN_UPDATES_KEY = "show_screen_updates";
     private static final String SHOW_CPU_USAGE_KEY = "show_cpu_usage";
     private static final String WINDOW_ANIMATION_SCALE_KEY = "window_animation_scale";
@@ -80,6 +81,7 @@
 
     private CheckBoxPreference mStrictMode;
     private CheckBoxPreference mPointerLocation;
+    private CheckBoxPreference mShowTouches;
     private CheckBoxPreference mShowScreenUpdates;
     private CheckBoxPreference mShowCpuUsage;
     private ListPreference mWindowAnimationScale;
@@ -112,6 +114,7 @@
 
         mStrictMode = (CheckBoxPreference) findPreference(STRICT_MODE_KEY);
         mPointerLocation = (CheckBoxPreference) findPreference(POINTER_LOCATION_KEY);
+        mShowTouches = (CheckBoxPreference) findPreference(SHOW_TOUCHES_KEY);
         mShowScreenUpdates = (CheckBoxPreference) findPreference(SHOW_SCREEN_UPDATES_KEY);
         mShowCpuUsage = (CheckBoxPreference) findPreference(SHOW_CPU_USAGE_KEY);
         mWindowAnimationScale = (ListPreference) findPreference(WINDOW_ANIMATION_SCALE_KEY);
@@ -155,6 +158,7 @@
         updatePasswordSummary();
         updateStrictModeVisualOptions();
         updatePointerLocationOptions();
+        updateShowTouchesOptions();
         updateFlingerOptions();
         updateCpuUsageOptions();
         updateAnimationScaleOptions();
@@ -229,6 +233,16 @@
                 Settings.System.POINTER_LOCATION, 0) != 0);
     }
 
+    private void writeShowTouchesOptions() {
+        Settings.System.putInt(getActivity().getContentResolver(),
+                Settings.System.SHOW_TOUCHES, mShowTouches.isChecked() ? 1 : 0);
+    }
+
+    private void updateShowTouchesOptions() {
+        mShowTouches.setChecked(Settings.System.getInt(getActivity().getContentResolver(),
+                Settings.System.SHOW_TOUCHES, 0) != 0);
+    }
+
     private void updateFlingerOptions() {
         // magic communication with surface flinger.
         try {
@@ -406,6 +420,8 @@
             writeStrictModeVisualOptions();
         } else if (preference == mPointerLocation) {
             writePointerLocationOptions();
+        } else if (preference == mShowTouches) {
+            writeShowTouchesOptions();
         } else if (preference == mShowScreenUpdates) {
             writeFlingerOptions();
         } else if (preference == mShowCpuUsage) {