summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/BrightnessPreference.java
diff options
context:
space:
mode:
authorAmith Yamasani <yamasani@google.com>2011-02-28 17:24:31 -0800
committerAmith Yamasani <yamasani@google.com>2011-02-28 17:27:04 -0800
commit26a1f898e04ca68dc8d1a58d15e9f901b09c90e2 (patch)
tree45d36c7fbc8747890cdc735d995020569b8f42be /src/com/android/settings/BrightnessPreference.java
parente18897bc2242110782fca135e9e47fcdb5839d64 (diff)
downloadpackages_apps_Settings-26a1f898e04ca68dc8d1a58d15e9f901b09c90e2.zip
packages_apps_Settings-26a1f898e04ca68dc8d1a58d15e9f901b09c90e2.tar.gz
packages_apps_Settings-26a1f898e04ca68dc8d1a58d15e9f901b09c90e2.tar.bz2
Track changes to brightness and orientation lock in Settings.
Bug: 3491814 Bug: 3482859 Bug: 3497535 Since the system bar can now change brightness and orientation lock, Settings needs to listen to changes to those settings and reflect in the UI. Also fix a problem with restoring state on cancel when the brightness dialog is invoked a second time. Change-Id: I3ada6e77df9a6b013a16061877fcb6b55c94a903
Diffstat (limited to 'src/com/android/settings/BrightnessPreference.java')
-rw-r--r--src/com/android/settings/BrightnessPreference.java89
1 files changed, 71 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() {