From: Paul Keith Date: Thu, 22 Feb 2018 00:55:15 +0000 (+0100) Subject: samsung: doze: Rename to avoid conflicts with AdvancedDisplay X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=7acbd6f73553aef997ff9918cd4f811dfc4867ee;p=GitHub%2FLineageOS%2Fandroid_hardware_samsung.git samsung: doze: Rename to avoid conflicts with AdvancedDisplay Change-Id: I669835f3563b9eea4fce6db45552c0e3a0888911 --- diff --git a/doze/AndroidManifest.xml b/doze/AndroidManifest.xml index 060ad2c..f493b33 100644 --- a/doze/AndroidManifest.xml +++ b/doze/AndroidManifest.xml @@ -1,6 +1,6 @@ diff --git a/doze/proguard.flags b/doze/proguard.flags index ca04a21..37c5c91 100644 --- a/doze/proguard.flags +++ b/doze/proguard.flags @@ -1,4 +1,4 @@ --keep class org.lineageos.settings.device.* { +-keep class org.lineageos.settings.doze.* { *; } diff --git a/doze/src/org/lineageos/settings/device/BootCompletedReceiver.java b/doze/src/org/lineageos/settings/device/BootCompletedReceiver.java deleted file mode 100644 index fa8de8e..0000000 --- a/doze/src/org/lineageos/settings/device/BootCompletedReceiver.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 2015 The CyanogenMod Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.lineageos.settings.device; - -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.util.Log; - -public class BootCompletedReceiver extends BroadcastReceiver { - - private static final boolean DEBUG = false; - private static final String TAG = "SamsungDoze"; - - @Override - public void onReceive(final Context context, Intent intent) { - if (DEBUG) Log.d(TAG, "Starting service"); - context.startService(new Intent(context, SamsungDozeService.class)); - } - -} diff --git a/doze/src/org/lineageos/settings/device/SamsungDozeActivity.java b/doze/src/org/lineageos/settings/device/SamsungDozeActivity.java deleted file mode 100644 index 571f34a..0000000 --- a/doze/src/org/lineageos/settings/device/SamsungDozeActivity.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2016 The CyanogenMod Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.lineageos.settings.device; - -import android.os.Bundle; -import android.preference.PreferenceActivity; - -public class SamsungDozeActivity extends PreferenceActivity { - - private static final String TAG = "samsung_doze"; - - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - getFragmentManager().beginTransaction().replace(android.R.id.content, - new TouchscreenGestureSettings(), TAG).commit(); - } -} diff --git a/doze/src/org/lineageos/settings/device/SamsungDozeService.java b/doze/src/org/lineageos/settings/device/SamsungDozeService.java deleted file mode 100644 index fc3f2d0..0000000 --- a/doze/src/org/lineageos/settings/device/SamsungDozeService.java +++ /dev/null @@ -1,201 +0,0 @@ -/* - * Copyright (c) 2015 The CyanogenMod Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.lineageos.settings.device; - -import android.app.Service; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.content.SharedPreferences; -import android.hardware.Sensor; -import android.hardware.SensorEvent; -import android.hardware.SensorEventListener; -import android.hardware.SensorManager; -import android.os.IBinder; -import android.os.PowerManager; -import android.os.UserHandle; -import android.preference.PreferenceManager; -import android.provider.Settings; -import android.util.Log; - -import java.lang.System; -import java.util.ArrayList; -import java.util.concurrent.TimeUnit; -import java.util.List; - -public class SamsungDozeService extends Service { - private static final String TAG = "SamsungDozeService"; - private static final boolean DEBUG = false; - - private static final String DOZE_INTENT = "com.android.systemui.doze.pulse"; - - private static final String GESTURE_HAND_WAVE_KEY = "gesture_hand_wave"; - private static final String GESTURE_POCKET_KEY = "gesture_pocket"; - private static final String PROXIMITY_WAKE_KEY = "proximity_wake_enable"; - - private static final int POCKET_DELTA_NS = 1000 * 1000 * 1000; - - private Context mContext; - private SamsungProximitySensor mSensor; - private PowerManager mPowerManager; - - private boolean mHandwaveGestureEnabled = false; - private boolean mPocketGestureEnabled = false; - private boolean mProximityWakeEnabled = false; - - class SamsungProximitySensor implements SensorEventListener { - private SensorManager mSensorManager; - private Sensor mSensor; - - private boolean mSawNear = false; - private long mInPocketTime = 0; - - public SamsungProximitySensor(Context context) { - mSensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE); - mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); - } - - @Override - public void onSensorChanged(SensorEvent event) { - boolean isNear = event.values[0] < mSensor.getMaximumRange(); - if (mSawNear && !isNear) { - if (shouldPulse(event.timestamp)) { - launchDozePulse(); - } - } else { - mInPocketTime = event.timestamp; - } - mSawNear = isNear; - } - - @Override - public void onAccuracyChanged(Sensor sensor, int accuracy) { - /* Empty */ - } - - private boolean shouldPulse(long timestamp) { - long delta = timestamp - mInPocketTime; - - if (mHandwaveGestureEnabled && mPocketGestureEnabled) { - return true; - } else if (mProximityWakeEnabled && (delta < POCKET_DELTA_NS)) { - mPowerManager.wakeUp(TimeUnit.NANOSECONDS.toMillis(System.nanoTime())); - return false; - } else if (mHandwaveGestureEnabled && !mPocketGestureEnabled) { - return delta < POCKET_DELTA_NS; - } else if (!mHandwaveGestureEnabled && mPocketGestureEnabled) { - return delta >= POCKET_DELTA_NS; - } - return false; - } - - public void testAndEnable() { - if ((isDozeEnabled() && (mHandwaveGestureEnabled || mPocketGestureEnabled)) || - mProximityWakeEnabled) { - mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_NORMAL); - } - } - - public void disable() { - mSensorManager.unregisterListener(this, mSensor); - } - } - - @Override - public void onCreate() { - if (DEBUG) Log.d(TAG, "SamsungDozeService Started"); - mContext = this; - mPowerManager = (PowerManager)getSystemService(Context.POWER_SERVICE); - mSensor = new SamsungProximitySensor(mContext); - SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(mContext); - loadPreferences(sharedPrefs); - sharedPrefs.registerOnSharedPreferenceChangeListener(mPrefListener); - if (!isInteractive()) { - mSensor.testAndEnable(); - } - } - - @Override - public int onStartCommand(Intent intent, int flags, int startId) { - if (DEBUG) Log.d(TAG, "Starting service"); - IntentFilter screenStateFilter = new IntentFilter(Intent.ACTION_SCREEN_ON); - screenStateFilter.addAction(Intent.ACTION_SCREEN_OFF); - mContext.registerReceiver(mScreenStateReceiver, screenStateFilter); - return START_STICKY; - } - - @Override - public IBinder onBind(Intent intent) { - return null; - } - - private void launchDozePulse() { - mContext.sendBroadcastAsUser(new Intent(DOZE_INTENT), - new UserHandle(UserHandle.USER_CURRENT)); - } - - private boolean isInteractive() { - return mPowerManager.isInteractive(); - } - - private boolean isDozeEnabled() { - return Settings.Secure.getInt(mContext.getContentResolver(), - Settings.Secure.DOZE_ENABLED, 1) != 0; - } - - private void onDisplayOn() { - if (DEBUG) Log.d(TAG, "Display on"); - mSensor.disable(); - } - - private void onDisplayOff() { - if (DEBUG) Log.d(TAG, "Display off"); - mSensor.testAndEnable(); - } - - private void loadPreferences(SharedPreferences sharedPreferences) { - mHandwaveGestureEnabled = sharedPreferences.getBoolean(GESTURE_HAND_WAVE_KEY, false); - mPocketGestureEnabled = sharedPreferences.getBoolean(GESTURE_POCKET_KEY, false); - mProximityWakeEnabled = sharedPreferences.getBoolean(PROXIMITY_WAKE_KEY, false); - } - - private BroadcastReceiver mScreenStateReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { - onDisplayOff(); - } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { - onDisplayOn(); - } - } - }; - - private SharedPreferences.OnSharedPreferenceChangeListener mPrefListener = - new SharedPreferences.OnSharedPreferenceChangeListener() { - @Override - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { - if (GESTURE_HAND_WAVE_KEY.equals(key)) { - mHandwaveGestureEnabled = sharedPreferences.getBoolean(GESTURE_HAND_WAVE_KEY, false); - } else if (GESTURE_POCKET_KEY.equals(key)) { - mPocketGestureEnabled = sharedPreferences.getBoolean(GESTURE_POCKET_KEY, false); - } else if (PROXIMITY_WAKE_KEY.equals(key)) { - mProximityWakeEnabled = sharedPreferences.getBoolean(PROXIMITY_WAKE_KEY, false); - } - } - }; -} diff --git a/doze/src/org/lineageos/settings/device/TouchscreenGestureSettings.java b/doze/src/org/lineageos/settings/device/TouchscreenGestureSettings.java deleted file mode 100644 index 44c9b94..0000000 --- a/doze/src/org/lineageos/settings/device/TouchscreenGestureSettings.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (C) 2015 The CyanogenMod Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.lineageos.settings.device; - -import android.app.ActionBar; -import android.os.Bundle; -import android.support.v14.preference.PreferenceFragment; -import android.support.v14.preference.SwitchPreference; -import android.support.v7.preference.Preference; -import android.provider.Settings; -import android.view.MenuItem; - -import org.lineageos.internal.util.ScreenType; - -public class TouchscreenGestureSettings extends PreferenceFragment { - - private static final String KEY_HAND_WAVE = "gesture_hand_wave"; - private static final String KEY_PROXIMITY_WAKE = "proximity_wake_enable"; - - private SwitchPreference mHandwavePreference; - private SwitchPreference mProximityWakePreference; - - @Override - public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { - addPreferencesFromResource(R.xml.gesture_panel); - final ActionBar actionBar = getActivity().getActionBar(); - actionBar.setDisplayHomeAsUpEnabled(true); - - mHandwavePreference = - (SwitchPreference) findPreference(KEY_HAND_WAVE); - mHandwavePreference.setOnPreferenceChangeListener(mProximityListener); - mProximityWakePreference = - (SwitchPreference) findPreference(KEY_PROXIMITY_WAKE); - mProximityWakePreference.setOnPreferenceChangeListener(mProximityListener); - } - - @Override - public void onResume() { - super.onResume(); - - // If running on a phone, remove padding around the listview - if (!ScreenType.isTablet(getContext())) { - getListView().setPadding(0, 0, 0, 0); - } - } - - private Preference.OnPreferenceChangeListener mProximityListener = - new Preference.OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(Preference preference, Object newValue) { - if ((boolean) newValue) { - if (preference.getKey().equals(KEY_HAND_WAVE)) { - mProximityWakePreference.setChecked(false); - } else if (preference.getKey().equals(KEY_PROXIMITY_WAKE)) { - mHandwavePreference.setChecked(false); - } - } - return true; - } - }; - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == android.R.id.home) { - getActivity().onBackPressed(); - return true; - } - return false; - } -} diff --git a/doze/src/org/lineageos/settings/doze/BootCompletedReceiver.java b/doze/src/org/lineageos/settings/doze/BootCompletedReceiver.java new file mode 100644 index 0000000..8640134 --- /dev/null +++ b/doze/src/org/lineageos/settings/doze/BootCompletedReceiver.java @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2015 The CyanogenMod Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.lineageos.settings.doze; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.util.Log; + +public class BootCompletedReceiver extends BroadcastReceiver { + + private static final boolean DEBUG = false; + private static final String TAG = "SamsungDoze"; + + @Override + public void onReceive(final Context context, Intent intent) { + if (DEBUG) Log.d(TAG, "Starting service"); + context.startService(new Intent(context, SamsungDozeService.class)); + } + +} diff --git a/doze/src/org/lineageos/settings/doze/SamsungDozeActivity.java b/doze/src/org/lineageos/settings/doze/SamsungDozeActivity.java new file mode 100644 index 0000000..70856b6 --- /dev/null +++ b/doze/src/org/lineageos/settings/doze/SamsungDozeActivity.java @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2016 The CyanogenMod Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.lineageos.settings.doze; + +import android.os.Bundle; +import android.preference.PreferenceActivity; + +public class SamsungDozeActivity extends PreferenceActivity { + + private static final String TAG = "samsung_doze"; + + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + getFragmentManager().beginTransaction().replace(android.R.id.content, + new TouchscreenGestureSettings(), TAG).commit(); + } +} diff --git a/doze/src/org/lineageos/settings/doze/SamsungDozeService.java b/doze/src/org/lineageos/settings/doze/SamsungDozeService.java new file mode 100644 index 0000000..063b121 --- /dev/null +++ b/doze/src/org/lineageos/settings/doze/SamsungDozeService.java @@ -0,0 +1,201 @@ +/* + * Copyright (c) 2015 The CyanogenMod Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.lineageos.settings.doze; + +import android.app.Service; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.content.SharedPreferences; +import android.hardware.Sensor; +import android.hardware.SensorEvent; +import android.hardware.SensorEventListener; +import android.hardware.SensorManager; +import android.os.IBinder; +import android.os.PowerManager; +import android.os.UserHandle; +import android.preference.PreferenceManager; +import android.provider.Settings; +import android.util.Log; + +import java.lang.System; +import java.util.ArrayList; +import java.util.concurrent.TimeUnit; +import java.util.List; + +public class SamsungDozeService extends Service { + private static final String TAG = "SamsungDozeService"; + private static final boolean DEBUG = false; + + private static final String DOZE_INTENT = "com.android.systemui.doze.pulse"; + + private static final String GESTURE_HAND_WAVE_KEY = "gesture_hand_wave"; + private static final String GESTURE_POCKET_KEY = "gesture_pocket"; + private static final String PROXIMITY_WAKE_KEY = "proximity_wake_enable"; + + private static final int POCKET_DELTA_NS = 1000 * 1000 * 1000; + + private Context mContext; + private SamsungProximitySensor mSensor; + private PowerManager mPowerManager; + + private boolean mHandwaveGestureEnabled = false; + private boolean mPocketGestureEnabled = false; + private boolean mProximityWakeEnabled = false; + + class SamsungProximitySensor implements SensorEventListener { + private SensorManager mSensorManager; + private Sensor mSensor; + + private boolean mSawNear = false; + private long mInPocketTime = 0; + + public SamsungProximitySensor(Context context) { + mSensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE); + mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); + } + + @Override + public void onSensorChanged(SensorEvent event) { + boolean isNear = event.values[0] < mSensor.getMaximumRange(); + if (mSawNear && !isNear) { + if (shouldPulse(event.timestamp)) { + launchDozePulse(); + } + } else { + mInPocketTime = event.timestamp; + } + mSawNear = isNear; + } + + @Override + public void onAccuracyChanged(Sensor sensor, int accuracy) { + /* Empty */ + } + + private boolean shouldPulse(long timestamp) { + long delta = timestamp - mInPocketTime; + + if (mHandwaveGestureEnabled && mPocketGestureEnabled) { + return true; + } else if (mProximityWakeEnabled && (delta < POCKET_DELTA_NS)) { + mPowerManager.wakeUp(TimeUnit.NANOSECONDS.toMillis(System.nanoTime())); + return false; + } else if (mHandwaveGestureEnabled && !mPocketGestureEnabled) { + return delta < POCKET_DELTA_NS; + } else if (!mHandwaveGestureEnabled && mPocketGestureEnabled) { + return delta >= POCKET_DELTA_NS; + } + return false; + } + + public void testAndEnable() { + if ((isDozeEnabled() && (mHandwaveGestureEnabled || mPocketGestureEnabled)) || + mProximityWakeEnabled) { + mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_NORMAL); + } + } + + public void disable() { + mSensorManager.unregisterListener(this, mSensor); + } + } + + @Override + public void onCreate() { + if (DEBUG) Log.d(TAG, "SamsungDozeService Started"); + mContext = this; + mPowerManager = (PowerManager)getSystemService(Context.POWER_SERVICE); + mSensor = new SamsungProximitySensor(mContext); + SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(mContext); + loadPreferences(sharedPrefs); + sharedPrefs.registerOnSharedPreferenceChangeListener(mPrefListener); + if (!isInteractive()) { + mSensor.testAndEnable(); + } + } + + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + if (DEBUG) Log.d(TAG, "Starting service"); + IntentFilter screenStateFilter = new IntentFilter(Intent.ACTION_SCREEN_ON); + screenStateFilter.addAction(Intent.ACTION_SCREEN_OFF); + mContext.registerReceiver(mScreenStateReceiver, screenStateFilter); + return START_STICKY; + } + + @Override + public IBinder onBind(Intent intent) { + return null; + } + + private void launchDozePulse() { + mContext.sendBroadcastAsUser(new Intent(DOZE_INTENT), + new UserHandle(UserHandle.USER_CURRENT)); + } + + private boolean isInteractive() { + return mPowerManager.isInteractive(); + } + + private boolean isDozeEnabled() { + return Settings.Secure.getInt(mContext.getContentResolver(), + Settings.Secure.DOZE_ENABLED, 1) != 0; + } + + private void onDisplayOn() { + if (DEBUG) Log.d(TAG, "Display on"); + mSensor.disable(); + } + + private void onDisplayOff() { + if (DEBUG) Log.d(TAG, "Display off"); + mSensor.testAndEnable(); + } + + private void loadPreferences(SharedPreferences sharedPreferences) { + mHandwaveGestureEnabled = sharedPreferences.getBoolean(GESTURE_HAND_WAVE_KEY, false); + mPocketGestureEnabled = sharedPreferences.getBoolean(GESTURE_POCKET_KEY, false); + mProximityWakeEnabled = sharedPreferences.getBoolean(PROXIMITY_WAKE_KEY, false); + } + + private BroadcastReceiver mScreenStateReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { + onDisplayOff(); + } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { + onDisplayOn(); + } + } + }; + + private SharedPreferences.OnSharedPreferenceChangeListener mPrefListener = + new SharedPreferences.OnSharedPreferenceChangeListener() { + @Override + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + if (GESTURE_HAND_WAVE_KEY.equals(key)) { + mHandwaveGestureEnabled = sharedPreferences.getBoolean(GESTURE_HAND_WAVE_KEY, false); + } else if (GESTURE_POCKET_KEY.equals(key)) { + mPocketGestureEnabled = sharedPreferences.getBoolean(GESTURE_POCKET_KEY, false); + } else if (PROXIMITY_WAKE_KEY.equals(key)) { + mProximityWakeEnabled = sharedPreferences.getBoolean(PROXIMITY_WAKE_KEY, false); + } + } + }; +} diff --git a/doze/src/org/lineageos/settings/doze/TouchscreenGestureSettings.java b/doze/src/org/lineageos/settings/doze/TouchscreenGestureSettings.java new file mode 100644 index 0000000..142f845 --- /dev/null +++ b/doze/src/org/lineageos/settings/doze/TouchscreenGestureSettings.java @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2015 The CyanogenMod Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.lineageos.settings.doze; + +import android.app.ActionBar; +import android.os.Bundle; +import android.support.v14.preference.PreferenceFragment; +import android.support.v14.preference.SwitchPreference; +import android.support.v7.preference.Preference; +import android.provider.Settings; +import android.view.MenuItem; + +import org.lineageos.internal.util.ScreenType; + +public class TouchscreenGestureSettings extends PreferenceFragment { + + private static final String KEY_HAND_WAVE = "gesture_hand_wave"; + private static final String KEY_PROXIMITY_WAKE = "proximity_wake_enable"; + + private SwitchPreference mHandwavePreference; + private SwitchPreference mProximityWakePreference; + + @Override + public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { + addPreferencesFromResource(R.xml.gesture_panel); + final ActionBar actionBar = getActivity().getActionBar(); + actionBar.setDisplayHomeAsUpEnabled(true); + + mHandwavePreference = + (SwitchPreference) findPreference(KEY_HAND_WAVE); + mHandwavePreference.setOnPreferenceChangeListener(mProximityListener); + mProximityWakePreference = + (SwitchPreference) findPreference(KEY_PROXIMITY_WAKE); + mProximityWakePreference.setOnPreferenceChangeListener(mProximityListener); + } + + @Override + public void onResume() { + super.onResume(); + + // If running on a phone, remove padding around the listview + if (!ScreenType.isTablet(getContext())) { + getListView().setPadding(0, 0, 0, 0); + } + } + + private Preference.OnPreferenceChangeListener mProximityListener = + new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + if ((boolean) newValue) { + if (preference.getKey().equals(KEY_HAND_WAVE)) { + mProximityWakePreference.setChecked(false); + } else if (preference.getKey().equals(KEY_PROXIMITY_WAKE)) { + mHandwavePreference.setChecked(false); + } + } + return true; + } + }; + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + if (item.getItemId() == android.R.id.home) { + getActivity().onBackPressed(); + return true; + } + return false; + } +}