Update gesture related settings in Display.

1. Remove "Press power button twice for camera. Toggle is now available
in Settings->Gestures.
2. Remove toggle from "Ambient Display" and make it point to
Settings->Gestures->Quick screen check.

Bug: 28565958
Change-Id: I32fd2253a40be76ac9843a627df153eb4f1307d8
diff --git a/res/values/strings.xml b/res/values/strings.xml
index a5142e6..0958720 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -5847,6 +5847,7 @@
     <string name="keywords_lockscreen">slide to unlock, password, pattern, PIN</string>
     <string name="keywords_profile_challenge">work challenge, work, profile</string>
     <string name="keywords_unification">work profile, managed profile, unify, unification, work, profile</string>
+    <string name="keywords_gesture">gesture</string>
 
     <!-- NFC Wi-Fi pairing/setup strings-->
 
diff --git a/res/xml/display_settings.xml b/res/xml/display_settings.xml
index 6b5bda6..cb1fac5 100644
--- a/res/xml/display_settings.xml
+++ b/res/xml/display_settings.xml
@@ -63,11 +63,6 @@
                 android:title="@string/camera_gesture_title"
                 android:summary="@string/camera_gesture_desc" />
 
-        <SwitchPreference
-                android:key="camera_double_tap_power_gesture"
-                android:title="@string/camera_double_tap_power_gesture_title"
-                android:summary="@string/camera_double_tap_power_gesture_desc" />
-
         <PreferenceScreen
                 android:key="screensaver"
                 android:title="@string/screensaver_settings_title"
@@ -77,10 +72,14 @@
                 android:key="lift_to_wake"
                 android:title="@string/lift_to_wake_title" />
 
-        <SwitchPreference
+        <PreferenceScreen
                 android:key="doze"
                 android:title="@string/doze_title"
-                android:summary="@string/doze_summary" />
+                android:summary="@string/doze_summary"
+                android:fragment="com.android.settings.gestures.GestureSettings" >
+                <extra android:name=":settings:fragment_args_key"
+                       android:value="gesture_pick_up_and_nudge" />
+        </PreferenceScreen>
 
         <SwitchPreference
                 android:key="tap_to_wake"
diff --git a/res/xml/gesture_settings.xml b/res/xml/gesture_settings.xml
index e68d8f5..5adc311 100644
--- a/res/xml/gesture_settings.xml
+++ b/res/xml/gesture_settings.xml
@@ -16,7 +16,8 @@
 
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:settings="http://schemas.android.com/apk/res-auto"
-    android:title="@string/gesture_preference_title">
+    android:title="@string/gesture_preference_title"
+    settings:keywords="@string/keywords_gesture">
 
     <com.android.settings.gestures.GesturePreference
         android:key="gesture_double_tap_power"
diff --git a/src/com/android/settings/DisplaySettings.java b/src/com/android/settings/DisplaySettings.java
index 8e389a9..bb10570 100644
--- a/src/com/android/settings/DisplaySettings.java
+++ b/src/com/android/settings/DisplaySettings.java
@@ -57,7 +57,6 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import static android.provider.Settings.Secure.CAMERA_DOUBLE_TAP_POWER_GESTURE_DISABLED;
 import static android.provider.Settings.Secure.CAMERA_GESTURE_DISABLED;
 import static android.provider.Settings.Secure.DOUBLE_TAP_TO_WAKE;
 import static android.provider.Settings.Secure.DOZE_ENABLED;
@@ -86,8 +85,6 @@
     private static final String KEY_AUTO_ROTATE = "auto_rotate";
     private static final String KEY_NIGHT_MODE = "night_mode";
     private static final String KEY_CAMERA_GESTURE = "camera_gesture";
-    private static final String KEY_CAMERA_DOUBLE_TAP_POWER_GESTURE
-            = "camera_double_tap_power_gesture";
     private static final String KEY_WALLPAPER = "wallpaper";
     private static final String KEY_VR_DISPLAY_PREF = "vr_display_pref";
 
@@ -97,11 +94,9 @@
     private ListPreference mNightModePreference;
     private Preference mScreenSaverPreference;
     private SwitchPreference mLiftToWakePreference;
-    private SwitchPreference mDozePreference;
     private SwitchPreference mTapToWakePreference;
     private SwitchPreference mAutoBrightnessPreference;
     private SwitchPreference mCameraGesturePreference;
-    private SwitchPreference mCameraDoubleTapPowerGesturePreference;
 
     @Override
     protected int getMetricsCategory() {
@@ -141,10 +136,7 @@
             removePreference(KEY_LIFT_TO_WAKE);
         }
 
-        if (isDozeAvailable(activity)) {
-            mDozePreference = (SwitchPreference) findPreference(KEY_DOZE);
-            mDozePreference.setOnPreferenceChangeListener(this);
-        } else {
+        if (!isDozeAvailable(activity)) {
             removePreference(KEY_DOZE);
         }
 
@@ -162,14 +154,6 @@
             removePreference(KEY_CAMERA_GESTURE);
         }
 
-        if (isCameraDoubleTapPowerGestureAvailable(getResources())) {
-            mCameraDoubleTapPowerGesturePreference
-                    = (SwitchPreference) findPreference(KEY_CAMERA_DOUBLE_TAP_POWER_GESTURE);
-            mCameraDoubleTapPowerGesturePreference.setOnPreferenceChangeListener(this);
-        } else {
-            removePreference(KEY_CAMERA_DOUBLE_TAP_POWER_GESTURE);
-        }
-
         if (RotationPolicy.isRotationLockToggleVisible(activity)) {
             DropDownPreference rotatePreference =
                     (DropDownPreference) findPreference(KEY_AUTO_ROTATE);
@@ -288,11 +272,6 @@
                 !SystemProperties.getBoolean("gesture.disable_camera_launch", false);
     }
 
-    private static boolean isCameraDoubleTapPowerGestureAvailable(Resources res) {
-        return res.getBoolean(
-                com.android.internal.R.bool.config_cameraDoubleTapPowerGestureEnabled);
-    }
-
     private static boolean isVrDisplayModeAvailable(Context context) {
         PackageManager pm = context.getPackageManager();
         return pm.hasSystemFeature(PackageManager.FEATURE_VR_MODE_HIGH_PERFORMANCE);
@@ -365,12 +344,6 @@
             mLiftToWakePreference.setChecked(value != 0);
         }
 
-        // Update doze if it is available.
-        if (mDozePreference != null) {
-            int value = Settings.Secure.getInt(getContentResolver(), DOZE_ENABLED, 1);
-            mDozePreference.setChecked(value != 0);
-        }
-
         // Update tap to wake if it is available.
         if (mTapToWakePreference != null) {
             int value = Settings.Secure.getInt(getContentResolver(), DOUBLE_TAP_TO_WAKE, 0);
@@ -382,13 +355,6 @@
             int value = Settings.Secure.getInt(getContentResolver(), CAMERA_GESTURE_DISABLED, 0);
             mCameraGesturePreference.setChecked(value == 0);
         }
-
-        // Update camera gesture #2 if it is available.
-        if (mCameraDoubleTapPowerGesturePreference != null) {
-            int value = Settings.Secure.getInt(
-                    getContentResolver(), CAMERA_DOUBLE_TAP_POWER_GESTURE_DISABLED, 0);
-            mCameraDoubleTapPowerGesturePreference.setChecked(value == 0);
-        }
     }
 
     private void updateScreenSaverSummary() {
@@ -431,10 +397,6 @@
             boolean value = (Boolean) objValue;
             Settings.Secure.putInt(getContentResolver(), WAKE_GESTURE_ENABLED, value ? 1 : 0);
         }
-        if (preference == mDozePreference) {
-            boolean value = (Boolean) objValue;
-            Settings.Secure.putInt(getContentResolver(), DOZE_ENABLED, value ? 1 : 0);
-        }
         if (preference == mTapToWakePreference) {
             boolean value = (Boolean) objValue;
             Settings.Secure.putInt(getContentResolver(), DOUBLE_TAP_TO_WAKE, value ? 1 : 0);
@@ -444,11 +406,6 @@
             Settings.Secure.putInt(getContentResolver(), CAMERA_GESTURE_DISABLED,
                     value ? 0 : 1 /* Backwards because setting is for disabling */);
         }
-        if (preference == mCameraDoubleTapPowerGesturePreference) {
-            boolean value = (Boolean) objValue;
-            Settings.Secure.putInt(getContentResolver(), CAMERA_DOUBLE_TAP_POWER_GESTURE_DISABLED,
-                    value ? 0 : 1 /* Backwards because setting is for disabling */);
-        }
         if (preference == mNightModePreference) {
             try {
                 final int value = Integer.parseInt((String) objValue);
@@ -554,9 +511,6 @@
                     if (!isCameraGestureAvailable(context.getResources())) {
                         result.add(KEY_CAMERA_GESTURE);
                     }
-                    if (!isCameraDoubleTapPowerGestureAvailable(context.getResources())) {
-                        result.add(KEY_CAMERA_DOUBLE_TAP_POWER_GESTURE);
-                    }
                     if (!isVrDisplayModeAvailable(context)) {
                         result.add(KEY_VR_DISPLAY_PREF);
                     }
diff --git a/src/com/android/settings/gestures/GestureSettings.java b/src/com/android/settings/gestures/GestureSettings.java
index 56f4184..0889e2a 100644
--- a/src/com/android/settings/gestures/GestureSettings.java
+++ b/src/com/android/settings/gestures/GestureSettings.java
@@ -16,51 +16,81 @@
 
 package com.android.settings.gestures;
 
+import android.content.Context;
+import android.content.res.Resources;
+import android.os.Build;
 import android.os.Bundle;
-import android.support.v7.preference.PreferenceScreen;
-import android.provider.Settings;
+import android.os.SystemProperties;
+import android.provider.SearchIndexableResource;
+import android.provider.Settings.Secure;
 import android.support.v7.preference.Preference;
+import android.text.TextUtils;
 import android.util.Log;
 
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.R;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settings.search.Indexable;
 import com.android.settings.SettingsPreferenceFragment;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * Top level fragment for gesture settings.
  * This will create individual switch preference for each gesture and handle updates when each
  * preference is updated
  */
 public class GestureSettings extends SettingsPreferenceFragment implements
-        Preference.OnPreferenceChangeListener {
+        Preference.OnPreferenceChangeListener, Indexable {
 
     private static final String TAG = "GestureSettings";
     private static final String PREF_KEY_DOUBLE_TAP_POWER = "gesture_double_tap_power";
     private static final String PREF_KEY_DOUBLE_TWIST = "gesture_double_twist";
     private static final String PREF_KEY_PICK_UP_AND_NUDGE = "gesture_pick_up_and_nudge";
     private static final String PREF_KEY_SWIPE_DOWN_FINGERPRINT = "gesture_swipe_down_fingerprint";
+    private static final String DEBUG_DOZE_COMPONENT = "debug.doze.component";
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         addPreferencesFromResource(R.xml.gesture_settings);
+        Context context = getActivity();
 
-        // Double tap power for camera
-        int cameraDisabled = Settings.Secure.getInt(getActivity().getContentResolver(),
-                Settings.Secure.CAMERA_DOUBLE_TAP_POWER_GESTURE_DISABLED, 1);
-        GesturePreference preference =
-            (GesturePreference) findPreference(PREF_KEY_DOUBLE_TAP_POWER);
-        preference.setChecked(cameraDisabled == 0);
-        preference.setOnPreferenceChangeListener(this);
+         // Double tap power for camera
+        if (isCameraDoubleTapPowerGestureAvailable(getResources())) {
+            int cameraDisabled = Secure.getInt(
+                    getContentResolver(), Secure.CAMERA_DOUBLE_TAP_POWER_GESTURE_DISABLED, 1);
+            GesturePreference preference =
+                    (GesturePreference) findPreference(PREF_KEY_DOUBLE_TAP_POWER);
+            preference.setChecked(cameraDisabled == 0);
+            preference.setOnPreferenceChangeListener(this);
+        } else {
+            removePreference(PREF_KEY_DOUBLE_TAP_POWER);
+        }
+
+        // Ambient Display
+        if (isDozeAvailable(context)) {
+            GesturePreference preference =
+                    (GesturePreference) findPreference(PREF_KEY_PICK_UP_AND_NUDGE);
+            int dozeEnabled = Secure.getInt(getContentResolver(), Secure.DOZE_ENABLED, 0);
+            preference.setChecked(dozeEnabled != 0);
+            preference.setOnPreferenceChangeListener(this);
+        } else {
+            removePreference(PREF_KEY_PICK_UP_AND_NUDGE);
+        }
 
     }
 
     @Override
     public boolean onPreferenceChange(Preference preference, Object newValue) {
         boolean enabled = (boolean) newValue;
-        if (PREF_KEY_DOUBLE_TAP_POWER.equals(preference.getKey())) {
-            Settings.Secure.putInt(getActivity().getContentResolver(),
-                    Settings.Secure.CAMERA_DOUBLE_TAP_POWER_GESTURE_DISABLED, enabled ? 0 : 1);
+        String key = preference.getKey();
+        if (PREF_KEY_DOUBLE_TAP_POWER.equals(key)) {
+            Secure.putInt(getActivity().getContentResolver(),
+                    Secure.CAMERA_DOUBLE_TAP_POWER_GESTURE_DISABLED, enabled ? 0 : 1);
+        } else if (PREF_KEY_PICK_UP_AND_NUDGE.equals(key)) {
+            Secure.putInt(getActivity().getContentResolver(), Secure.DOZE_ENABLED, enabled ? 1 : 0);
         }
         return true;
     }
@@ -70,4 +100,46 @@
         return MetricsEvent.SETTINGS_GESTURES;
     }
 
+    private static boolean isCameraDoubleTapPowerGestureAvailable(Resources res) {
+        return res.getBoolean(
+                com.android.internal.R.bool.config_cameraDoubleTapPowerGestureEnabled);
+    }
+
+    private static boolean isDozeAvailable(Context context) {
+        String name = Build.IS_DEBUGGABLE ? SystemProperties.get(DEBUG_DOZE_COMPONENT) : null;
+        if (TextUtils.isEmpty(name)) {
+            name = context.getResources().getString(
+                    com.android.internal.R.string.config_dozeComponent);
+        }
+        return !TextUtils.isEmpty(name);
+    }
+
+    public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+        new BaseSearchIndexProvider() {
+            @Override
+            public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
+                     boolean enabled) {
+                ArrayList<SearchIndexableResource> result =
+                        new ArrayList<SearchIndexableResource>();
+
+                SearchIndexableResource sir = new SearchIndexableResource(context);
+                sir.xmlResId = R.xml.gesture_settings;
+                result.add(sir);
+
+                return result;
+            }
+
+            @Override
+            public List<String> getNonIndexableKeys(Context context) {
+                ArrayList<String> result = new ArrayList<String>();
+                if (!isCameraDoubleTapPowerGestureAvailable(context.getResources())) {
+                    result.add(PREF_KEY_DOUBLE_TAP_POWER);
+                }
+                if (!isDozeAvailable(context)) {
+                    result.add(PREF_KEY_PICK_UP_AND_NUDGE);
+                }
+                return result;
+            }
+        };
+
 }
\ No newline at end of file