diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/settings/BrightnessPreference.java | 89 | ||||
-rw-r--r-- | src/com/android/settings/DisplaySettings.java | 23 |
2 files changed, 94 insertions, 18 deletions
diff --git a/src/com/android/settings/BrightnessPreference.java b/src/com/android/settings/BrightnessPreference.java index 00f5deb..9bbb66a 100644 --- a/src/com/android/settings/BrightnessPreference.java +++ b/src/com/android/settings/BrightnessPreference.java @@ -16,25 +16,25 @@ package com.android.settings; +import android.content.ContentResolver; import android.content.Context; +import android.database.ContentObserver; +import android.os.Bundle; +import android.os.Handler; +import android.os.IPowerManager; import android.os.Parcel; import android.os.Parcelable; import android.os.RemoteException; -import android.os.IPowerManager; import android.os.ServiceManager; import android.preference.SeekBarPreference; -import android.preference.Preference.BaseSavedState; import android.provider.Settings; import android.provider.Settings.SettingNotFoundException; import android.util.AttributeSet; -import android.util.Log; import android.view.View; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.SeekBar; -import java.util.Map; - public class BrightnessPreference extends SeekBarPreference implements SeekBar.OnSeekBarChangeListener, CheckBox.OnCheckedChangeListener { @@ -53,6 +53,20 @@ public class BrightnessPreference extends SeekBarPreference implements private static final int MINIMUM_BACKLIGHT = android.os.Power.BRIGHTNESS_DIM + 10; private static final int MAXIMUM_BACKLIGHT = android.os.Power.BRIGHTNESS_ON; + private ContentObserver mBrightnessObserver = new ContentObserver(new Handler()) { + @Override + public void onChange(boolean selfChange) { + onBrightnessChanged(); + } + }; + + private ContentObserver mBrightnessModeObserver = new ContentObserver(new Handler()) { + @Override + public void onChange(boolean selfChange) { + onBrightnessModeChanged(); + } + }; + public BrightnessPreference(Context context, AttributeSet attrs) { super(context, attrs); @@ -64,28 +78,32 @@ public class BrightnessPreference extends SeekBarPreference implements } @Override + protected void showDialog(Bundle state) { + super.showDialog(state); + + getContext().getContentResolver().registerContentObserver( + Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS), true, + mBrightnessObserver); + + getContext().getContentResolver().registerContentObserver( + Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS_MODE), true, + mBrightnessModeObserver); + mRestoredOldState = false; + } + + @Override protected void onBindDialogView(View view) { super.onBindDialogView(view); mSeekBar = getSeekBar(view); mSeekBar.setMax(MAXIMUM_BACKLIGHT - MINIMUM_BACKLIGHT); - try { - mOldBrightness = Settings.System.getInt(getContext().getContentResolver(), - Settings.System.SCREEN_BRIGHTNESS); - } catch (SettingNotFoundException snfe) { - mOldBrightness = MAXIMUM_BACKLIGHT; - } + mOldBrightness = getBrightness(0); mSeekBar.setProgress(mOldBrightness - MINIMUM_BACKLIGHT); mCheckBox = (CheckBox)view.findViewById(R.id.automatic_mode); if (mAutomaticAvailable) { mCheckBox.setOnCheckedChangeListener(this); - try { - mOldAutomatic = Settings.System.getInt(getContext().getContentResolver(), - Settings.System.SCREEN_BRIGHTNESS_MODE); - } catch (SettingNotFoundException snfe) { - mOldAutomatic = 0; - } + mOldAutomatic = getBrightnessMode(0); mCheckBox.setChecked(mOldAutomatic != 0); } else { mCheckBox.setVisibility(View.GONE); @@ -114,17 +132,52 @@ public class BrightnessPreference extends SeekBarPreference implements } } + private int getBrightness(int defaultValue) { + int brightness = defaultValue; + try { + brightness = Settings.System.getInt(getContext().getContentResolver(), + Settings.System.SCREEN_BRIGHTNESS); + } catch (SettingNotFoundException snfe) { + } + return brightness; + } + + private int getBrightnessMode(int defaultValue) { + int brightnessMode = defaultValue; + try { + brightnessMode = Settings.System.getInt(getContext().getContentResolver(), + Settings.System.SCREEN_BRIGHTNESS_MODE); + } catch (SettingNotFoundException snfe) { + } + return brightnessMode; + } + + private void onBrightnessChanged() { + int brightness = getBrightness(MAXIMUM_BACKLIGHT); + mSeekBar.setProgress(brightness - MINIMUM_BACKLIGHT); + } + + private void onBrightnessModeChanged() { + boolean checked = getBrightnessMode(0) != 0; + mCheckBox.setChecked(checked); + } + @Override protected void onDialogClosed(boolean positiveResult) { super.onDialogClosed(positiveResult); + final ContentResolver resolver = getContext().getContentResolver(); + if (positiveResult) { - Settings.System.putInt(getContext().getContentResolver(), + Settings.System.putInt(resolver, Settings.System.SCREEN_BRIGHTNESS, mSeekBar.getProgress() + MINIMUM_BACKLIGHT); } else { restoreOldState(); } + + resolver.unregisterContentObserver(mBrightnessObserver); + resolver.unregisterContentObserver(mBrightnessModeObserver); } private void restoreOldState() { diff --git a/src/com/android/settings/DisplaySettings.java b/src/com/android/settings/DisplaySettings.java index 0e17810..cdb0147 100644 --- a/src/com/android/settings/DisplaySettings.java +++ b/src/com/android/settings/DisplaySettings.java @@ -21,7 +21,9 @@ import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT; import android.app.admin.DevicePolicyManager; import android.content.ContentResolver; import android.content.Context; +import android.database.ContentObserver; import android.os.Bundle; +import android.os.Handler; import android.os.RemoteException; import android.os.ServiceManager; import android.preference.CheckBoxPreference; @@ -53,6 +55,13 @@ public class DisplaySettings extends SettingsPreferenceFragment implements private ListPreference mScreenTimeoutPreference; + private ContentObserver mAccelerometerRotationObserver = new ContentObserver(new Handler()) { + @Override + public void onChange(boolean selfChange) { + updateAccelerometerRotationCheckbox(); + } + }; + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -131,6 +140,16 @@ public class DisplaySettings extends SettingsPreferenceFragment implements super.onResume(); updateState(true); + getContentResolver().registerContentObserver( + Settings.System.getUriFor(Settings.System.ACCELEROMETER_ROTATION), true, + mAccelerometerRotationObserver); + } + + @Override + public void onPause() { + super.onPause(); + + getContentResolver().unregisterContentObserver(mAccelerometerRotationObserver); } private void updateState(boolean force) { @@ -159,6 +178,10 @@ public class DisplaySettings extends SettingsPreferenceFragment implements } mAnimations.setValueIndex(idx); updateAnimationsSummary(mAnimations.getValue()); + updateAccelerometerRotationCheckbox(); + } + + private void updateAccelerometerRotationCheckbox() { mAccelerometer.setChecked(Settings.System.getInt( getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 0) != 0); |