[1/2] OmniGears: Active Display add shake event
PS11: Fix strings
- correct dependency option
- added option to bypass Quiet Hours (default now is not , that is 'privacy is first' decision)
- added option to configure time between shakes
- added option to set disable timeout
- added option to run like "PA PEEK"
PS12:
-disable default event with the other shake settings
-simplify titles
Change-Id: Ibdf35b1e323fa15bf2e5da9ca8225533cd4c42c4
diff --git a/res/values/custom_strings.xml b/res/values/custom_strings.xml
index 10948ca..f56e144 100644
--- a/res/values/custom_strings.xml
+++ b/res/values/custom_strings.xml
@@ -239,7 +239,7 @@
<string name="ad_enable_summary_on">Active display enabled</string>
<string name="ad_enable_summary_off">Active display disabled</string>
<string name="ad_bypass_title">Bypass mode</string>
- <string name="ad_bypass_summary">Pocket mode will launch the lockscreen when no notifications exist</string>
+ <string name="ad_bypass_summary">Pocket mode will launch the lockscreen when no notifications exist and lockscreen secure enabled</string>
<string name="ad_text_title">Notification text</string>
<string name="ad_text_summary">Show the notification text around the ring</string>
<string name="ad_content_title">Custom notification view</string>
@@ -248,6 +248,19 @@
<string name="ad_annoying_summary">Limit the notification to once per time period</string>
<string name="ad_double_tap_title">Double tap to sleep</string>
<string name="ad_double_tap_summary">Turn screen off with double tap</string>
+ <string name="ad_shake_event_settings_title">Shake settings</string>
+ <string name="ad_shake_event_title">Shake to redisplay</string>
+ <string name="ad_shake_event_summary">Shake device to redisplay notifications</string>
+ <string name="ad_shake_force_title">Default event</string>
+ <string name="ad_shake_force_summary">After receive a notification won\'t run active display until user shakes</string>
+ <string name="ad_shake_threshold_title">Intensity</string>
+ <string name="ad_shake_threshold_summary">Intensity of shake needed to display notifications</string>
+ <string name="ad_shake_timeout_title">Timeout</string>
+ <string name="ad_shake_timeout_summary">Seconds that shake is active after receiving a notification, 0 means always active.</string>
+ <string name="ad_shake_quiet_hours_title">Bypass Quiet Hours</string>
+ <string name="ad_shake_quiet_hours_summary">Allow shake during Quiet Hours</string>
+ <string name="ad_shake_long_threshold_title">Interval</string>
+ <string name="ad_shake_long_threshold_summary">Minimum time between consecutive shakes</string>
<string name="ad_all_notifications_title">Show ongoing</string>
<string name="ad_all_notifications_summary">Show non-clearable notifications</string>
<string name="ad_hide_low_priority_title">Hide low priority</string>
diff --git a/res/xml/active_display_settings.xml b/res/xml/active_display_settings.xml
index 3b615cc..9a0f588 100644
--- a/res/xml/active_display_settings.xml
+++ b/res/xml/active_display_settings.xml
@@ -31,6 +31,13 @@
android:summary="@string/ad_content_summary"
android:dependency="ad_enable"/>
+ <CheckBoxPreference
+ android:key="ad_bypass"
+ android:persistent="false"
+ android:title="@string/ad_bypass_title"
+ android:summary="@string/ad_bypass_summary"
+ android:dependency="ad_enable"/>
+
<org.omnirom.omnigears.preference.SystemCheckBoxPreference
android:key="active_display_text"
android:title="@string/ad_text_title"
@@ -59,13 +66,6 @@
android:dependency="ad_enable"/>
<CheckBoxPreference
- android:key="ad_bypass"
- android:persistent="false"
- android:title="@string/ad_bypass_title"
- android:summary="@string/ad_bypass_summary"
- android:dependency="ad_enable"/>
-
- <CheckBoxPreference
android:key="ad_sunlight_mode"
android:persistent="false"
android:title="@string/ad_sunlight_mode_title"
@@ -94,6 +94,64 @@
android:dependency="ad_enable" />
<PreferenceCategory
+ android:key="ad_shake_event"
+ android:title="@string/ad_shake_event_settings_title" />
+
+ <org.omnirom.omnigears.preference.SystemCheckBoxPreference
+ android:key="active_display_shake_event"
+ android:title="@string/ad_shake_event_title"
+ android:summary="@string/ad_shake_event_summary"
+ android:dependency="ad_enable"/>
+
+ <org.omnirom.omnigears.preference.SystemCheckBoxPreference
+ android:key="active_display_shake_force"
+ android:title="@string/ad_shake_force_title"
+ android:summary="@string/ad_shake_force_summary"
+ android:dependency="active_display_shake_event"/>
+
+ <org.omnirom.omnigears.chameleonos.SeekBarPreference
+ android:key="ad_shake_threshold"
+ android:persistent="false"
+ android:title="@string/ad_shake_threshold_title"
+ android:summary="@string/ad_shake_threshold_summary"
+ android:max="20"
+ settings:min="5"
+ settings:interval="1"
+ settings:unitsLeft=""
+ settings:unitsRight=""
+ android:dependency="active_display_shake_event" />
+
+ <org.omnirom.omnigears.chameleonos.SeekBarPreference
+ android:key="ad_shake_long_threshold"
+ android:persistent="false"
+ android:title="@string/ad_shake_long_threshold_title"
+ android:summary="@string/ad_shake_long_threshold_summary"
+ android:max="5"
+ settings:min="1"
+ settings:interval="1"
+ settings:unitsLeft=""
+ settings:unitsRight="s"
+ android:dependency="active_display_shake_event" />
+
+ <org.omnirom.omnigears.chameleonos.SeekBarPreference
+ android:key="ad_shake_timeout"
+ android:persistent="false"
+ android:title="@string/ad_shake_timeout_title"
+ android:summary="@string/ad_shake_timeout_summary"
+ android:max="120"
+ settings:min="0"
+ settings:interval="1"
+ settings:unitsLeft=""
+ settings:unitsRight="s"
+ android:dependency="active_display_shake_event" />
+
+ <org.omnirom.omnigears.preference.SystemCheckBoxPreference
+ android:key="active_display_shake_quiet_hours"
+ android:title="@string/ad_shake_quiet_hours_title"
+ android:summary="@string/ad_shake_quiet_hours_summary"
+ android:dependency="active_display_shake_event"/>
+
+ <PreferenceCategory
android:key="ad_customizations"
android:title="@string/ad_customizations_title" />
diff --git a/src/org/omnirom/omnigears/chameleonos/ActiveDisplaySettings.java b/src/org/omnirom/omnigears/chameleonos/ActiveDisplaySettings.java
index 2002c64..5de3a49 100644
--- a/src/org/omnirom/omnigears/chameleonos/ActiveDisplaySettings.java
+++ b/src/org/omnirom/omnigears/chameleonos/ActiveDisplaySettings.java
@@ -40,8 +40,6 @@
import java.util.HashSet;
import java.util.Set;
-import android.util.Log;
-
public class ActiveDisplaySettings extends SettingsPreferenceFragment implements
OnPreferenceChangeListener {
private static final String TAG = "ActiveDisplaySettings";
@@ -59,6 +57,9 @@
private static final String KEY_TIMEOUT = "ad_timeout";
private static final String KEY_THRESHOLD = "ad_threshold";
private static final String KEY_TURNOFF_MODE = "ad_turnoff_mode";
+ private static final String KEY_SHAKE_THRESHOLD = "ad_shake_threshold";
+ private static final String KEY_SHAKE_LONGTHRESHOLD = "ad_shake_long_threshold";
+ private static final String KEY_SHAKE_TIMEOUT = "ad_shake_timeout";
private ContentResolver mResolver;
private Context mContext;
@@ -72,6 +73,9 @@
private CheckBoxPreference mTurnOffModePref;
private SeekBarPreference mBrightnessLevel;
private SeekBarPreference mAnnoyingNotification;
+ private SeekBarPreference mShakeThreshold;
+ private SeekBarPreference mShakeLongThreshold;
+ private SeekBarPreference mShakeTimeout;
private ListPreference mDisplayTimeout;
private ListPreference mPocketModePref;
private ListPreference mProximityThreshold;
@@ -79,7 +83,6 @@
private int mMinimumBacklight;
private int mMaximumBacklight;
-
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -146,6 +149,21 @@
Settings.System.ACTIVE_DISPLAY_ANNOYING, 0));
mAnnoyingNotification.setOnPreferenceChangeListener(this);
+ mShakeThreshold = (SeekBarPreference) prefSet.findPreference(KEY_SHAKE_THRESHOLD);
+ mShakeThreshold.setValue(Settings.System.getInt(mResolver,
+ Settings.System.ACTIVE_DISPLAY_SHAKE_THRESHOLD, 10));
+ mShakeThreshold.setOnPreferenceChangeListener(this);
+
+ mShakeLongThreshold = (SeekBarPreference) prefSet.findPreference(KEY_SHAKE_LONGTHRESHOLD);
+ mShakeLongThreshold.setValue(Settings.System.getInt(mResolver,
+ Settings.System.ACTIVE_DISPLAY_SHAKE_LONGTHRESHOLD, 2));
+ mShakeLongThreshold.setOnPreferenceChangeListener(this);
+
+ mShakeTimeout = (SeekBarPreference) prefSet.findPreference(KEY_SHAKE_TIMEOUT);
+ mShakeTimeout.setValue(Settings.System.getInt(mResolver,
+ Settings.System.ACTIVE_DISPLAY_SHAKE_TIMEOUT, 10));
+ mShakeTimeout.setOnPreferenceChangeListener(this);
+
mExcludedAppsPref = (AppMultiSelectListPreference) prefSet.findPreference(KEY_EXCLUDED_APPS);
Set<String> excludedApps = getExcludedApps();
if (excludedApps != null) {
@@ -163,6 +181,7 @@
mShowAmPmPref = (CheckBoxPreference) prefSet.findPreference(KEY_SHOW_AMPM);
mShowAmPmPref.setChecked((Settings.System.getInt(mResolver,
Settings.System.ACTIVE_DISPLAY_SHOW_AMPM, 0) == 1));
+ mShowAmPmPref.setEnabled(!is24Hour());
PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
mMinimumBacklight = pm.getMinimumScreenBrightnessSetting();
@@ -173,7 +192,16 @@
Settings.System.ACTIVE_DISPLAY_BRIGHTNESS, mMaximumBacklight);
int realBrightness = Math.round(((float)brightness / (float)mMaximumBacklight) * 100);
mBrightnessLevel.setValue(realBrightness);
- mBrightnessLevel.setOnPreferenceChangeListener(this);
+ mBrightnessLevel.setOnPreferenceChangeListener(this);
+
+ try {
+ if (Settings.System.getInt(mResolver,
+ Settings.System.SCREEN_BRIGHTNESS_MODE) == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) {
+ mBrightnessLevel.setEnabled(false);
+ mBrightnessLevel.setSummary(R.string.status_bar_toggle_info);
+ }
+ } catch (SettingNotFoundException e) {
+ }
mDisplayTimeout = (ListPreference) prefSet.findPreference(KEY_TIMEOUT);
timeout = Settings.System.getLong(mResolver,
@@ -215,6 +243,21 @@
Settings.System.putInt(mResolver,
Settings.System.ACTIVE_DISPLAY_ANNOYING, annoying);
return true;
+ } else if (preference == mShakeThreshold) {
+ int threshold = ((Integer)newValue).intValue();
+ Settings.System.putInt(mResolver,
+ Settings.System.ACTIVE_DISPLAY_SHAKE_THRESHOLD, threshold);
+ return true;
+ } else if (preference == mShakeLongThreshold) {
+ int longThreshold = ((Integer)newValue).intValue();
+ Settings.System.putInt(mResolver,
+ Settings.System.ACTIVE_DISPLAY_SHAKE_LONGTHRESHOLD, longThreshold);
+ return true;
+ } else if (preference == mShakeTimeout) {
+ int timeout = ((Integer)newValue).intValue();
+ Settings.System.putInt(mResolver,
+ Settings.System.ACTIVE_DISPLAY_SHAKE_TIMEOUT, timeout);
+ return true;
} else if (preference == mBrightnessLevel) {
int brightness = ((Integer)newValue).intValue();
int realBrightness = Math.max(mMinimumBacklight, Math.round(((float)brightness / (float)100) * mMaximumBacklight));