Improve running services to services managed by the system.
Also a little tweak to the animations preference.
Change-Id: I3183ef21e687a3b120d02c79e7388300084b9202
diff --git a/src/com/android/settings/SoundAndDisplaySettings.java b/src/com/android/settings/SoundAndDisplaySettings.java
index 4417f24..5f4f358 100644
--- a/src/com/android/settings/SoundAndDisplaySettings.java
+++ b/src/com/android/settings/SoundAndDisplaySettings.java
@@ -73,7 +73,7 @@
private CheckBoxPreference mVibrate;
private CheckBoxPreference mDtmfTone;
private CheckBoxPreference mSoundEffects;
- private CheckBoxPreference mAnimations;
+ private ListPreference mAnimations;
private CheckBoxPreference mAccelerometer;
private float[] mAnimationScales;
@@ -118,8 +118,8 @@
mSoundEffects.setPersistent(false);
mSoundEffects.setChecked(Settings.System.getInt(resolver,
Settings.System.SOUND_EFFECTS_ENABLED, 0) != 0);
- mAnimations = (CheckBoxPreference) findPreference(KEY_ANIMATIONS);
- mAnimations.setPersistent(false);
+ mAnimations = (ListPreference) findPreference(KEY_ANIMATIONS);
+ mAnimations.setOnPreferenceChangeListener(this);
mAccelerometer = (CheckBoxPreference) findPreference(KEY_ACCELEROMETER);
mAccelerometer.setPersistent(false);
@@ -187,29 +187,49 @@
R.string.silent_mode_incl_alarm_summary :
R.string.silent_mode_summary);
- boolean animations = true;
+ int animations = 0;
try {
mAnimationScales = mWindowManager.getAnimationScales();
} catch (RemoteException e) {
}
if (mAnimationScales != null) {
- // We will leave the window animations alone (always set),
- // and only use this to change the transition animations.
- for (int i=1; i<mAnimationScales.length; i++) {
- if (mAnimationScales[i] == 0) {
- animations = false;
- break;
- }
+ if (mAnimationScales.length >= 1) {
+ animations = ((int)(mAnimationScales[0]+.5f)) % 10;
+ }
+ if (mAnimationScales.length >= 2) {
+ animations += (((int)(mAnimationScales[1]+.5f)) & 0x7) * 10;
}
}
- if (animations != mAnimations.isChecked() || force) {
- mAnimations.setChecked(animations);
+ int idx = 0;
+ int best = 0;
+ CharSequence[] aents = mAnimations.getEntryValues();
+ for (int i=0; i<aents.length; i++) {
+ int val = Integer.parseInt(aents[i].toString());
+ if (val <= animations && val > best) {
+ best = val;
+ idx = i;
+ }
}
+ mAnimations.setValueIndex(idx);
+ updateAnimationsSummary(mAnimations.getValue());
mAccelerometer.setChecked(Settings.System.getInt(
getContentResolver(),
Settings.System.ACCELEROMETER_ROTATION, 0) != 0);
}
+ private void updateAnimationsSummary(Object value) {
+ CharSequence[] summaries = getResources().getTextArray(R.array.animations_summaries);
+ CharSequence[] values = mAnimations.getEntryValues();
+ for (int i=0; i<values.length; i++) {
+ Log.i("foo", "Comparing entry "+ values[i] + " to current "
+ + mAnimations.getValue());
+ if (values[i].equals(value)) {
+ mAnimations.setSummary(summaries[i]);
+ break;
+ }
+ }
+ }
+
private void setRingerMode(boolean silent, boolean vibrate) {
if (silent) {
mAudioManager.setRingerMode(vibrate ? AudioManager.RINGER_MODE_VIBRATE :
@@ -224,7 +244,6 @@
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
-
if (preference == mSilent || preference == mVibrate) {
setRingerMode(mSilent.isChecked(), mVibrate.isChecked());
if (preference == mSilent) updateState(false);
@@ -246,19 +265,6 @@
Settings.System.putInt(getContentResolver(), Settings.System.SOUND_EFFECTS_ENABLED,
mSoundEffects.isChecked() ? 1 : 0);
- } else if (preference == mAnimations) {
- if (mAnimationScales.length > 0) {
- // Window animations are always on.
- mAnimationScales[0] = 1;
- }
- for (int i=1; i<mAnimationScales.length; i++) {
- mAnimationScales[i] = mAnimations.isChecked() ? 1 : 0;
- }
- try {
- mWindowManager.setAnimationScales(mAnimationScales);
- } catch (RemoteException e) {
- }
-
} else if (preference == mAccelerometer) {
Settings.System.putInt(getContentResolver(),
Settings.System.ACCELEROMETER_ROTATION,
@@ -268,6 +274,25 @@
}
public boolean onPreferenceChange(Preference preference, Object objValue) {
+ if (KEY_ANIMATIONS.equals(preference.getKey())) {
+ try {
+ int value = Integer.parseInt((String) objValue);
+ if (mAnimationScales.length >= 1) {
+ mAnimationScales[0] = value%10;
+ }
+ if (mAnimationScales.length >= 2) {
+ mAnimationScales[1] = (value/10)%10;
+ }
+ try {
+ mWindowManager.setAnimationScales(mAnimationScales);
+ } catch (RemoteException e) {
+ }
+ updateAnimationsSummary(objValue);
+ } catch (NumberFormatException e) {
+ Log.e(TAG, "could not persist animation setting", e);
+ }
+
+ }
if (KEY_SCREEN_TIMEOUT.equals(preference.getKey())) {
int value = Integer.parseInt((String) objValue);
try {