Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6b1a2a8c authored by Doris Ling's avatar Doris Ling
Browse files

Add handling for gesture settings for double twist for camera flip.

Add handling for updating the secure settings for camera double twist
when user updates the on/off toggle, and move
SYSTEM_NAVIGATION_KEYS_ENABLED from Global to Secure.

Bug: 29869445
Change-Id: Iebb937509a661b012688a3eb36efe08d2292ff26
parent 1b41dd7f
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -46,5 +46,10 @@
    <string name="config_wallpaper_picker_class" translatable="false">com.android.settings.Settings$WallpaperSettingsActivity</string>

    <!-- Backup settings to launch -->
    <string name="config_backup_settings_intent"></string>
    <string name="config_backup_settings_intent" translatable="false"></string>

    <!-- Double twist sensor name and vendor used by gesture setting -->
    <string name="gesture_double_twist_sensor_name" translatable="false"></string>
    <string name="gesture_double_twist_sensor_vendor" translatable="false"></string>

</resources>
+36 −4
Original line number Diff line number Diff line
@@ -18,11 +18,12 @@ package com.android.settings.gestures;

import android.content.Context;
import android.content.res.Resources;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.os.Build;
import android.os.Bundle;
import android.os.SystemProperties;
import android.provider.SearchIndexableResource;
import android.provider.Settings.Global;
import android.provider.Settings.Secure;
import android.support.v7.preference.Preference;
import android.support.v7.widget.RecyclerView;
@@ -98,6 +99,18 @@ public class GestureSettings extends SettingsPreferenceFragment implements
            removePreference(PREF_KEY_SWIPE_DOWN_FINGERPRINT);
        }

        // Double twist for camera mode
        if (isDoubleTwistAvailable(context)) {
            int doubleTwistEnabled = Secure.getInt(
                    getContentResolver(), Secure.CAMERA_DOUBLE_TWIST_TO_FLIP_ENABLED, 1);
            GesturePreference preference =
                    (GesturePreference) findPreference(PREF_KEY_DOUBLE_TWIST);
            preference.setChecked(doubleTwistEnabled != 0);
            preference.setOnPreferenceChangeListener(this);
        } else {
            removePreference(PREF_KEY_DOUBLE_TWIST);
        }

        if (savedInstanceState == null) {
            final Bundle args = getArguments();
            if (args != null && args.containsKey(ARG_SCROLL_TO_PREFERENCE)) {
@@ -131,8 +144,11 @@ public class GestureSettings extends SettingsPreferenceFragment implements
        } else if (PREF_KEY_PICK_UP_AND_NUDGE.equals(key)) {
            Secure.putInt(getContentResolver(), Secure.DOZE_ENABLED, enabled ? 1 : 0);
        } else if (PREF_KEY_SWIPE_DOWN_FINGERPRINT.equals(key)) {
            Global.putInt(getContentResolver(),
                    Global.SYSTEM_NAVIGATION_KEYS_ENABLED, enabled ? 1 : 0);
            Secure.putInt(getContentResolver(),
                    Secure.SYSTEM_NAVIGATION_KEYS_ENABLED, enabled ? 1 : 0);
        } else if (PREF_KEY_DOUBLE_TWIST.equals(key)) {
            Secure.putInt(getContentResolver(),
                    Secure.CAMERA_DOUBLE_TWIST_TO_FLIP_ENABLED, enabled ? 1 : 0);
        }
        return true;
    }
@@ -167,10 +183,26 @@ public class GestureSettings extends SettingsPreferenceFragment implements
    }

    private static boolean isSystemUINavigationEnabled(Context context) {
        return Global.getInt(context.getContentResolver(), Global.SYSTEM_NAVIGATION_KEYS_ENABLED, 1)
        return Secure.getInt(context.getContentResolver(), Secure.SYSTEM_NAVIGATION_KEYS_ENABLED, 1)
                == 1;
    }

    private static boolean isDoubleTwistAvailable(Context context) {
        Resources resources = context.getResources();
        String name = resources.getString(R.string.gesture_double_twist_sensor_name);
        String vendor = resources.getString(R.string.gesture_double_twist_sensor_vendor);
        if (!TextUtils.isEmpty(name) && !TextUtils.isEmpty(vendor)) {
            SensorManager sensorManager =
                    (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
            for (Sensor s : sensorManager.getSensorList(Sensor.TYPE_ALL)) {
                if (name.equals(s.getName()) && vendor.equals(s.getVendor())) {
                    return true;
                }
            }
        }
        return false;
    }

    public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
        new BaseSearchIndexProvider() {
            @Override