[2/2] OmniGears: Pimp up ActiveDisplay
Base part: https://gerrit.omnirom.org/#/c/2819/
Change-Id: I8abf7a3018e7e0168860861ac240975cd1f8a2b0
diff --git a/res/values/custom_arrays.xml b/res/values/custom_arrays.xml
index af57919..0c28d0b 100644
--- a/res/values/custom_arrays.xml
+++ b/res/values/custom_arrays.xml
@@ -146,6 +146,24 @@
<item>18000000</item>
</string-array>
+ <string-array name="ad_timeout_entries" translatable="false">
+ <item>@string/ad_timeout_3s</item>
+ <item>@string/ad_timeout_5s</item>
+ <item>@string/ad_timeout_8s</item>
+ <item>@string/ad_timeout_10s</item>
+ <item>@string/ad_timeout_15s</item>
+ <item>@string/ad_timeout_25s</item>
+ </string-array>
+
+ <string-array name="ad_timeout_values" translatable="false">
+ <item>3000</item>
+ <item>5000</item>
+ <item>8000</item>
+ <item>10000</item>
+ <item>15000</item>
+ <item>25000</item>
+ </string-array>
+
<string-array name="ad_pocket_mode_entries" translatable="false">
<item>@string/ad_pocket_mode_off</item>
<item>@string/ad_pocket_mode_notifications</item>
diff --git a/res/values/custom_strings.xml b/res/values/custom_strings.xml
index ce949ee..d157acf 100644
--- a/res/values/custom_strings.xml
+++ b/res/values/custom_strings.xml
@@ -215,6 +215,7 @@
<string name="ad_pocket_mode_title">Pocket mode</string>
<string name="ad_pocket_mode_summary">Show active display notifications when you take the device out of your pocket.</string>
<string name="ad_redisplay_title">Redisplay notifications</string>
+ <string name="ad_timeout_title">Display timeout</string>
<string name="ad_brightness_title">Notification brightness</string>
<string name="ad_customizations_title">Customizations</string>
<string name="ad_excluded_apps_title">Excluded applications</string>
@@ -234,6 +235,12 @@
<string name="ad_redisplay_1h">1 hour</string>
<string name="ad_redisplay_2h">2 hours</string>
<string name="ad_redisplay_5h">5 hours</string>
+ <string name="ad_timeout_3s">3 seconds</string>
+ <string name="ad_timeout_5s">5 seconds</string>
+ <string name="ad_timeout_8s">8 seconds</string>
+ <string name="ad_timeout_10s">10 seconds</string>
+ <string name="ad_timeout_15s">15 seconds</string>
+ <string name="ad_timeout_25s">25 seconds</string>
<string name="ad_pocket_mode_off">Off</string>
<string name="ad_pocket_mode_notifications">Notifications only</string>
<string name="ad_pocket_mode_always">Always</string>
diff --git a/res/xml/active_display_settings.xml b/res/xml/active_display_settings.xml
index 2f55c2f..325c84e 100644
--- a/res/xml/active_display_settings.xml
+++ b/res/xml/active_display_settings.xml
@@ -95,6 +95,15 @@
android:summary="@string/ad_show_ampm_summary"
android:dependency="ad_enable"/>
+ <ListPreference
+ android:key="ad_timeout"
+ android:persistent="false"
+ android:dialogTitle="@string/ad_timeout_title"
+ android:title="@string/ad_timeout_title"
+ android:entries="@array/ad_timeout_entries"
+ android:entryValues="@array/ad_timeout_values"
+ android:dependency="ad_enable"/>
+
<org.omnirom.omnigears.chameleonos.SeekBarPreference
android:key="ad_brightness"
android:persistent="false"
@@ -107,4 +116,4 @@
android:defaultValue="100"
android:dependency="ad_enable" />
-</PreferenceScreen>
\ No newline at end of file
+</PreferenceScreen>
diff --git a/src/org/omnirom/omnigears/chameleonos/ActiveDisplaySettings.java b/src/org/omnirom/omnigears/chameleonos/ActiveDisplaySettings.java
index f758881..bf03a9f 100644
--- a/src/org/omnirom/omnigears/chameleonos/ActiveDisplaySettings.java
+++ b/src/org/omnirom/omnigears/chameleonos/ActiveDisplaySettings.java
@@ -52,6 +52,7 @@
private static final String KEY_SHOW_DATE = "ad_show_date";
private static final String KEY_SHOW_AMPM = "ad_show_ampm";
private static final String KEY_BRIGHTNESS = "ad_brightness";
+ private static final String KEY_TIMEOUT = "ad_timeout";
private SwitchPreference mEnabledPref;
private CheckBoxPreference mShowTextPref;
@@ -64,6 +65,7 @@
private CheckBoxPreference mShowDatePref;
private CheckBoxPreference mShowAmPmPref;
private SeekBarPreference mBrightnessLevel;
+ private ListPreference mDisplayTimeout;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -129,6 +131,13 @@
mBrightnessLevel.setValue(Settings.System.getInt(getContentResolver(),
Settings.System.ACTIVE_DISPLAY_BRIGHTNESS, 100));
mBrightnessLevel.setOnPreferenceChangeListener(this);
+
+ mDisplayTimeout = (ListPreference) prefSet.findPreference(KEY_TIMEOUT);
+ mDisplayTimeout.setOnPreferenceChangeListener(this);
+ timeout = Settings.System.getLong(getContentResolver(),
+ Settings.System.ACTIVE_DISPLAY_TIMEOUT, 8000L);
+ mDisplayTimeout.setValue(String.valueOf(timeout));
+ updateTimeoutSummary(timeout);
}
public boolean onPreferenceChange(Preference preference, Object newValue) {
@@ -153,6 +162,10 @@
Settings.System.putInt(getContentResolver(),
Settings.System.ACTIVE_DISPLAY_BRIGHTNESS, brightness);
return true;
+ } else if (preference == mDisplayTimeout) {
+ long timeout = Integer.valueOf((String) newValue);
+ updateTimeoutSummary(timeout);
+ return true;
}
return false;
}
@@ -211,6 +224,15 @@
Settings.System.ACTIVE_DISPLAY_REDISPLAY, value);
}
+ private void updateTimeoutSummary(long value) {
+ try {
+ mDisplayTimeout.setSummary(mDisplayTimeout.getEntries()[mDisplayTimeout.findIndexOfValue("" + value)]);
+ Settings.System.putLong(getContentResolver(),
+ Settings.System.ACTIVE_DISPLAY_TIMEOUT, value);
+ } catch (ArrayIndexOutOfBoundsException e) {
+ }
+ }
+
private boolean hasProximitySensor() {
SensorManager sm = (SensorManager) getActivity().getSystemService(Context.SENSOR_SERVICE);
return sm.getDefaultSensor(TYPE_PROXIMITY) != null;