[2/2] OmniGears: Change of default stream type controlled by volume rocker
PS10: handling of different values to use as default within settings
NOTE: tablets need an overlay at the device tree of custom_arrays.xml
without ringer value included (doesn't break anything if not present though)
Base: https://gerrit.omnirom.org/#/c/2340
Change-Id: I9e2113a6366ab767ad3f41215f6e083fef7dd35f
diff --git a/res/values/custom_arrays.xml b/res/values/custom_arrays.xml
index 0c28d0b..ffad247 100644
--- a/res/values/custom_arrays.xml
+++ b/res/values/custom_arrays.xml
@@ -190,4 +190,16 @@
<item>3</item>
</string-array>
+ <string-array name="button_volume_default_entries" translatbale="false">
+ <item>@string/button_volume_default_none</item>
+ <item>@string/button_volume_default_media</item>
+ <item>@string/button_volume_default_ringer</item>
+ </string-array>
+
+ <string-array name="button_volume_default_values" translatable="false">
+ <item>-1</item>
+ <item>3</item>
+ <item>2</item>
+ </string-array>
+
</resources>
diff --git a/res/values/custom_strings.xml b/res/values/custom_strings.xml
index c6027fb..70343d4 100644
--- a/res/values/custom_strings.xml
+++ b/res/values/custom_strings.xml
@@ -265,8 +265,16 @@
<string name="recent_clear_all_button_location_bottom_left">Bottom left</string>
<string name="recent_clear_all_button_location_bottom_right">Bottom right</string>
+ <!-- Contextual Notification Panel Header -->
<string name="notification_drawer_category_title">Notification drawer</string>
<string name="custom_statusbar_header_title">Contextual notification panel header</string>
<string name="custom_statusbar_header_summary">Sets the background of the notification panel header to an image based on the current date and time</string>
+ <!-- Volume default -->
+ <string name="button_volume_default_none">None</string>
+ <string name="button_volume_default_ringer">Ringer</string>
+ <string name="button_volume_default_media">Media</string>
+ <string name="button_volume_default_title">Volume default</string>
+ <string name="button_volume_default_summary">Choose which volume gets changed by default</string>
+
</resources>
diff --git a/res/xml/button_settings.xml b/res/xml/button_settings.xml
index c6fd472..38ea732 100644
--- a/res/xml/button_settings.xml
+++ b/res/xml/button_settings.xml
@@ -41,6 +41,14 @@
android:summary="@string/button_volume_wake_summary"
android:defaultValue="false" />
+ <ListPreference
+ android:key="button_volume_default_screen"
+ android:title="@string/button_volume_default_title"
+ android:summary="@string/button_volume_default_summary"
+ android:entries="@array/button_volume_default_entries"
+ android:entryValues="@array/button_volume_default_values"
+ android:defaultValue="0" />
+
</PreferenceCategory>
<PreferenceCategory
diff --git a/src/org/omnirom/omnigears/ButtonSettings.java b/src/org/omnirom/omnigears/ButtonSettings.java
index e014f8a..4102c4a 100644
--- a/src/org/omnirom/omnigears/ButtonSettings.java
+++ b/src/org/omnirom/omnigears/ButtonSettings.java
@@ -32,10 +32,13 @@
*/
package org.omnirom.omnigears;
+import java.util.prefs.PreferenceChangeListener;
+
import android.content.ContentResolver;
import android.content.res.Resources;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
+import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceCategory;
@@ -66,6 +69,7 @@
private static final String CATEGORY_APPSWITCH = "button_keys_appSwitch";
private static final String BUTTON_VOLUME_WAKE = "button_volume_wake_screen";
+ private static final String BUTTON_VOLUME_DEFAULT = "button_volume_default_screen";
private static final String KEYS_CATEGORY_BINDINGS = "keys_bindings";
private static final String KEYS_ENABLE_CUSTOM = "keys_enable_custom";
@@ -115,6 +119,7 @@
private ListPreference mAppSwitchPressAction;
private ListPreference mAppSwitchLongPressAction;
private Map<String, Integer> mKeySettings = new HashMap<String, Integer>();
+ private ListPreference mVolumeDefault;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -130,13 +135,21 @@
(PreferenceCategory) prefScreen.findPreference(CATEGORY_VOLUME);
if (hasVolumeRocker()) {
+ mVolumeWake = (CheckBoxPreference) findPreference(BUTTON_VOLUME_WAKE);
+ mVolumeDefault = (ListPreference) findPreference(BUTTON_VOLUME_DEFAULT);
if (!res.getBoolean(R.bool.config_show_volumeRockerWake)) {
- prefScreen.removePreference(volumeCategory);
+ prefScreen.removePreference(mVolumeWake);
} else {
- mVolumeWake = (CheckBoxPreference) findPreference(BUTTON_VOLUME_WAKE);
mVolumeWake.setChecked(Settings.System.getInt(resolver,
- Settings.System.VOLUME_WAKE_SCREEN, 0) != 0);
+ Settings.System.VOLUME_WAKE_SCREEN, 0) != 0);
}
+ String currentDefault = Settings.System.getString(resolver, Settings.System.VOLUME_KEYS_DEFAULT);
+
+ if (currentDefault == null) {
+ currentDefault = mVolumeDefault.getEntryValues()[mVolumeDefault.getEntryValues().length - 1].toString();
+ }
+ mVolumeDefault.setValue(currentDefault);
+ mVolumeDefault.setOnPreferenceChangeListener(this);
} else {
prefScreen.removePreference(volumeCategory);
}
@@ -348,7 +361,6 @@
boolean checked = ((CheckBoxPreference)preference).isChecked();
Settings.System.putInt(getActivity().getContentResolver(),
Settings.System.VOLUME_WAKE_SCREEN, checked ? 1:0);
-
return true;
}
return super.onPreferenceTreeClick(preferenceScreen, preference);
@@ -470,6 +482,10 @@
mKeySettings.put(Settings.System.KEY_APP_SWITCH_LONG_PRESS_ACTION, value);
checkForHomeKey();
return true;
+ } else if (preference == mVolumeDefault) {
+ String value = (String)newValue;
+ Settings.System.putString(getActivity().getContentResolver(), Settings.System.VOLUME_KEYS_DEFAULT, value);
+ return true;
}
return false;
}