Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java +47 −20 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.systemui.statusbar.phone; import android.app.ActivityManager; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothAdapter.BluetoothStateChangeCallback; import android.content.BroadcastReceiver; Loading @@ -42,6 +43,7 @@ import com.android.internal.view.RotationPolicy; import com.android.systemui.R; import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback; import com.android.systemui.statusbar.policy.BrightnessController.BrightnessStateChangeCallback; import com.android.systemui.statusbar.policy.CurrentUserTracker; import com.android.systemui.statusbar.policy.LocationController.LocationGpsStateChangeCallback; import com.android.systemui.statusbar.policy.NetworkController.NetworkSignalChangedCallback; Loading Loading @@ -98,16 +100,6 @@ class QuickSettingsModel implements BluetoothStateChangeCallback, } }; /** Broadcast receiver to act on user switches to update visuals of per-user state */ private BroadcastReceiver mUserSwitchedReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (Intent.ACTION_USER_SWITCHED.equals(intent.getAction())) { onUserSwitched(intent); } } }; /** ContentObserver to determine the next alarm */ private class NextAlarmObserver extends ContentObserver { public NextAlarmObserver(Handler handler) { Loading Loading @@ -141,10 +133,36 @@ class QuickSettingsModel implements BluetoothStateChangeCallback, Settings.Secure.getUriFor(Settings.Secure.BUGREPORT_IN_POWER_MENU), false, this); } } private Context mContext; private Handler mHandler; private NextAlarmObserver mNextAlarmObserver; private BugreportObserver mBugreportObserver; /** ContentObserver to watch brightness **/ private class BrightnessObserver extends ContentObserver { public BrightnessObserver(Handler handler) { super(handler); } @Override public void onChange(boolean selfChange) { onBrightnessLevelChanged(); } public void startObserving() { final ContentResolver cr = mContext.getContentResolver(); cr.unregisterContentObserver(this); cr.registerContentObserver( Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS_MODE), false, this, mUserTracker.getCurrentUserId()); cr.registerContentObserver( Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS), false, this, mUserTracker.getCurrentUserId()); } } private final Context mContext; private final Handler mHandler; private final CurrentUserTracker mUserTracker; private final NextAlarmObserver mNextAlarmObserver; private final BugreportObserver mBugreportObserver; private final BrightnessObserver mBrightnessObserver; private QuickSettingsTileView mUserTile; private RefreshCallback mUserCallback; Loading Loading @@ -209,17 +227,24 @@ class QuickSettingsModel implements BluetoothStateChangeCallback, public QuickSettingsModel(Context context) { mContext = context; mHandler = new Handler(); mUserTracker = new CurrentUserTracker(mContext) { @Override public void onReceive(Context context, Intent intent) { super.onReceive(context, intent); onUserSwitched(); } }; mNextAlarmObserver = new NextAlarmObserver(mHandler); mNextAlarmObserver.startObserving(); mBugreportObserver = new BugreportObserver(mHandler); mBugreportObserver.startObserving(); mBrightnessObserver = new BrightnessObserver(mHandler); mBrightnessObserver.startObserving(); IntentFilter alarmIntentFilter = new IntentFilter(); alarmIntentFilter.addAction(Intent.ACTION_ALARM_CHANGED); context.registerReceiver(mAlarmIntentReceiver, alarmIntentFilter); IntentFilter userSwitchedFilter = new IntentFilter(Intent.ACTION_USER_SWITCHED); context.registerReceiver(mUserSwitchedReceiver, userSwitchedFilter); } void updateResources() { Loading Loading @@ -627,9 +652,10 @@ class QuickSettingsModel implements BluetoothStateChangeCallback, @Override public void onBrightnessLevelChanged() { Resources r = mContext.getResources(); int mode = Settings.System.getInt(mContext.getContentResolver(), int mode = Settings.System.getIntForUser(mContext.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL); Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL, mUserTracker.getCurrentUserId()); mBrightnessState.autoBrightness = (mode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC); mBrightnessState.iconId = mBrightnessState.autoBrightness Loading @@ -643,7 +669,8 @@ class QuickSettingsModel implements BluetoothStateChangeCallback, } // User switch: need to update visuals of all tiles known to have per-user state void onUserSwitched(Intent intent) { void onUserSwitched() { mBrightnessObserver.startObserving(); onRotationLockChanged(); onBrightnessLevelChanged(); onNextAlarmChanged(); Loading packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessController.java +29 −19 Original line number Diff line number Diff line Loading @@ -39,9 +39,11 @@ public class BrightnessController implements ToggleSlider.Listener { private final int mMinimumBacklight; private final int mMaximumBacklight; private Context mContext; private ToggleSlider mControl; private IPowerManager mPower; private final Context mContext; private final ToggleSlider mControl; private final boolean mAutomaticAvailable; private final IPowerManager mPower; private final CurrentUserTracker mUserTracker; private ArrayList<BrightnessStateChangeCallback> mChangeCallbacks = new ArrayList<BrightnessStateChangeCallback>(); Loading @@ -53,20 +55,31 @@ public class BrightnessController implements ToggleSlider.Listener { public BrightnessController(Context context, ToggleSlider control) { mContext = context; mControl = control; mUserTracker = new CurrentUserTracker(mContext); PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE); mMinimumBacklight = pm.getMinimumScreenBrightnessSetting(); mMaximumBacklight = pm.getMaximumScreenBrightnessSetting(); boolean automaticAvailable = context.getResources().getBoolean( mAutomaticAvailable = context.getResources().getBoolean( com.android.internal.R.bool.config_automatic_brightness_available); mPower = IPowerManager.Stub.asInterface(ServiceManager.getService("power")); if (automaticAvailable) { control.setOnChangedListener(this); } public void addStateChangedCallback(BrightnessStateChangeCallback cb) { mChangeCallbacks.add(cb); } @Override public void onInit(ToggleSlider control) { if (mAutomaticAvailable) { int automatic; try { automatic = Settings.System.getInt(mContext.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE); automatic = Settings.System.getIntForUser(mContext.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, mUserTracker.getCurrentUserId()); } catch (SettingNotFoundException snfe) { automatic = 0; } Loading @@ -78,20 +91,15 @@ public class BrightnessController implements ToggleSlider.Listener { int value; try { value = Settings.System.getInt(mContext.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS); value = Settings.System.getIntForUser(mContext.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, mUserTracker.getCurrentUserId()); } catch (SettingNotFoundException ex) { value = mMaximumBacklight; } control.setMax(mMaximumBacklight - mMinimumBacklight); control.setValue(value - mMinimumBacklight); control.setOnChangedListener(this); } public void addStateChangedCallback(BrightnessStateChangeCallback cb) { mChangeCallbacks.add(cb); } public void onChanged(ToggleSlider view, boolean tracking, boolean automatic, int value) { Loading @@ -103,8 +111,9 @@ public class BrightnessController implements ToggleSlider.Listener { if (!tracking) { AsyncTask.execute(new Runnable() { public void run() { Settings.System.putInt(mContext.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, val); Settings.System.putIntForUser(mContext.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, val, mUserTracker.getCurrentUserId()); } }); } Loading @@ -116,8 +125,9 @@ public class BrightnessController implements ToggleSlider.Listener { } private void setMode(int mode) { Settings.System.putInt(mContext.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, mode); Settings.System.putIntForUser(mContext.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, mode, mUserTracker.getCurrentUserId()); } private void setBrightness(int brightness) { Loading packages/SystemUI/src/com/android/systemui/statusbar/policy/CurrentUserTracker.java 0 → 100644 +29 −0 Original line number Diff line number Diff line package com.android.systemui.statusbar.policy; import android.app.ActivityManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; public class CurrentUserTracker extends BroadcastReceiver { private int mCurrentUserId; public CurrentUserTracker(Context context) { IntentFilter filter = new IntentFilter(Intent.ACTION_USER_SWITCHED); context.registerReceiver(this, filter); mCurrentUserId = ActivityManager.getCurrentUser(); } public int getCurrentUserId() { return mCurrentUserId; } @Override public void onReceive(Context context, Intent intent) { if (Intent.ACTION_USER_SWITCHED.equals(intent.getAction())) { mCurrentUserId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0); } } } packages/SystemUI/src/com/android/systemui/statusbar/policy/ToggleSlider.java +9 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ public class ToggleSlider extends RelativeLayout private static final String TAG = "StatusBar.ToggleSlider"; public interface Listener { public void onInit(ToggleSlider v); public void onChanged(ToggleSlider v, boolean tracking, boolean checked, int value); } Loading Loading @@ -75,6 +76,14 @@ public class ToggleSlider extends RelativeLayout a.recycle(); } @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); if (mListener != null) { mListener.onInit(this); } } public void onCheckedChanged(CompoundButton toggle, boolean checked) { Drawable thumb; Drawable slider; Loading packages/SystemUI/src/com/android/systemui/statusbar/policy/VolumeController.java +6 −2 Original line number Diff line number Diff line Loading @@ -51,11 +51,15 @@ public class VolumeController implements ToggleSlider.Listener { mMute = mAudioManager.getRingerMode() != AudioManager.RINGER_MODE_NORMAL; mVolume = mAudioManager.getStreamVolume(STREAM); control.setOnChangedListener(this); } @Override public void onInit(ToggleSlider control) { control.setMax(mAudioManager.getStreamMaxVolume(STREAM)); control.setValue(mVolume); control.setChecked(mMute); control.setOnChangedListener(this); } public void onChanged(ToggleSlider view, boolean tracking, boolean mute, int level) { Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java +47 −20 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.systemui.statusbar.phone; import android.app.ActivityManager; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothAdapter.BluetoothStateChangeCallback; import android.content.BroadcastReceiver; Loading @@ -42,6 +43,7 @@ import com.android.internal.view.RotationPolicy; import com.android.systemui.R; import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback; import com.android.systemui.statusbar.policy.BrightnessController.BrightnessStateChangeCallback; import com.android.systemui.statusbar.policy.CurrentUserTracker; import com.android.systemui.statusbar.policy.LocationController.LocationGpsStateChangeCallback; import com.android.systemui.statusbar.policy.NetworkController.NetworkSignalChangedCallback; Loading Loading @@ -98,16 +100,6 @@ class QuickSettingsModel implements BluetoothStateChangeCallback, } }; /** Broadcast receiver to act on user switches to update visuals of per-user state */ private BroadcastReceiver mUserSwitchedReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (Intent.ACTION_USER_SWITCHED.equals(intent.getAction())) { onUserSwitched(intent); } } }; /** ContentObserver to determine the next alarm */ private class NextAlarmObserver extends ContentObserver { public NextAlarmObserver(Handler handler) { Loading Loading @@ -141,10 +133,36 @@ class QuickSettingsModel implements BluetoothStateChangeCallback, Settings.Secure.getUriFor(Settings.Secure.BUGREPORT_IN_POWER_MENU), false, this); } } private Context mContext; private Handler mHandler; private NextAlarmObserver mNextAlarmObserver; private BugreportObserver mBugreportObserver; /** ContentObserver to watch brightness **/ private class BrightnessObserver extends ContentObserver { public BrightnessObserver(Handler handler) { super(handler); } @Override public void onChange(boolean selfChange) { onBrightnessLevelChanged(); } public void startObserving() { final ContentResolver cr = mContext.getContentResolver(); cr.unregisterContentObserver(this); cr.registerContentObserver( Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS_MODE), false, this, mUserTracker.getCurrentUserId()); cr.registerContentObserver( Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS), false, this, mUserTracker.getCurrentUserId()); } } private final Context mContext; private final Handler mHandler; private final CurrentUserTracker mUserTracker; private final NextAlarmObserver mNextAlarmObserver; private final BugreportObserver mBugreportObserver; private final BrightnessObserver mBrightnessObserver; private QuickSettingsTileView mUserTile; private RefreshCallback mUserCallback; Loading Loading @@ -209,17 +227,24 @@ class QuickSettingsModel implements BluetoothStateChangeCallback, public QuickSettingsModel(Context context) { mContext = context; mHandler = new Handler(); mUserTracker = new CurrentUserTracker(mContext) { @Override public void onReceive(Context context, Intent intent) { super.onReceive(context, intent); onUserSwitched(); } }; mNextAlarmObserver = new NextAlarmObserver(mHandler); mNextAlarmObserver.startObserving(); mBugreportObserver = new BugreportObserver(mHandler); mBugreportObserver.startObserving(); mBrightnessObserver = new BrightnessObserver(mHandler); mBrightnessObserver.startObserving(); IntentFilter alarmIntentFilter = new IntentFilter(); alarmIntentFilter.addAction(Intent.ACTION_ALARM_CHANGED); context.registerReceiver(mAlarmIntentReceiver, alarmIntentFilter); IntentFilter userSwitchedFilter = new IntentFilter(Intent.ACTION_USER_SWITCHED); context.registerReceiver(mUserSwitchedReceiver, userSwitchedFilter); } void updateResources() { Loading Loading @@ -627,9 +652,10 @@ class QuickSettingsModel implements BluetoothStateChangeCallback, @Override public void onBrightnessLevelChanged() { Resources r = mContext.getResources(); int mode = Settings.System.getInt(mContext.getContentResolver(), int mode = Settings.System.getIntForUser(mContext.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL); Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL, mUserTracker.getCurrentUserId()); mBrightnessState.autoBrightness = (mode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC); mBrightnessState.iconId = mBrightnessState.autoBrightness Loading @@ -643,7 +669,8 @@ class QuickSettingsModel implements BluetoothStateChangeCallback, } // User switch: need to update visuals of all tiles known to have per-user state void onUserSwitched(Intent intent) { void onUserSwitched() { mBrightnessObserver.startObserving(); onRotationLockChanged(); onBrightnessLevelChanged(); onNextAlarmChanged(); Loading
packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessController.java +29 −19 Original line number Diff line number Diff line Loading @@ -39,9 +39,11 @@ public class BrightnessController implements ToggleSlider.Listener { private final int mMinimumBacklight; private final int mMaximumBacklight; private Context mContext; private ToggleSlider mControl; private IPowerManager mPower; private final Context mContext; private final ToggleSlider mControl; private final boolean mAutomaticAvailable; private final IPowerManager mPower; private final CurrentUserTracker mUserTracker; private ArrayList<BrightnessStateChangeCallback> mChangeCallbacks = new ArrayList<BrightnessStateChangeCallback>(); Loading @@ -53,20 +55,31 @@ public class BrightnessController implements ToggleSlider.Listener { public BrightnessController(Context context, ToggleSlider control) { mContext = context; mControl = control; mUserTracker = new CurrentUserTracker(mContext); PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE); mMinimumBacklight = pm.getMinimumScreenBrightnessSetting(); mMaximumBacklight = pm.getMaximumScreenBrightnessSetting(); boolean automaticAvailable = context.getResources().getBoolean( mAutomaticAvailable = context.getResources().getBoolean( com.android.internal.R.bool.config_automatic_brightness_available); mPower = IPowerManager.Stub.asInterface(ServiceManager.getService("power")); if (automaticAvailable) { control.setOnChangedListener(this); } public void addStateChangedCallback(BrightnessStateChangeCallback cb) { mChangeCallbacks.add(cb); } @Override public void onInit(ToggleSlider control) { if (mAutomaticAvailable) { int automatic; try { automatic = Settings.System.getInt(mContext.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE); automatic = Settings.System.getIntForUser(mContext.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, mUserTracker.getCurrentUserId()); } catch (SettingNotFoundException snfe) { automatic = 0; } Loading @@ -78,20 +91,15 @@ public class BrightnessController implements ToggleSlider.Listener { int value; try { value = Settings.System.getInt(mContext.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS); value = Settings.System.getIntForUser(mContext.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, mUserTracker.getCurrentUserId()); } catch (SettingNotFoundException ex) { value = mMaximumBacklight; } control.setMax(mMaximumBacklight - mMinimumBacklight); control.setValue(value - mMinimumBacklight); control.setOnChangedListener(this); } public void addStateChangedCallback(BrightnessStateChangeCallback cb) { mChangeCallbacks.add(cb); } public void onChanged(ToggleSlider view, boolean tracking, boolean automatic, int value) { Loading @@ -103,8 +111,9 @@ public class BrightnessController implements ToggleSlider.Listener { if (!tracking) { AsyncTask.execute(new Runnable() { public void run() { Settings.System.putInt(mContext.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, val); Settings.System.putIntForUser(mContext.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, val, mUserTracker.getCurrentUserId()); } }); } Loading @@ -116,8 +125,9 @@ public class BrightnessController implements ToggleSlider.Listener { } private void setMode(int mode) { Settings.System.putInt(mContext.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, mode); Settings.System.putIntForUser(mContext.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, mode, mUserTracker.getCurrentUserId()); } private void setBrightness(int brightness) { Loading
packages/SystemUI/src/com/android/systemui/statusbar/policy/CurrentUserTracker.java 0 → 100644 +29 −0 Original line number Diff line number Diff line package com.android.systemui.statusbar.policy; import android.app.ActivityManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; public class CurrentUserTracker extends BroadcastReceiver { private int mCurrentUserId; public CurrentUserTracker(Context context) { IntentFilter filter = new IntentFilter(Intent.ACTION_USER_SWITCHED); context.registerReceiver(this, filter); mCurrentUserId = ActivityManager.getCurrentUser(); } public int getCurrentUserId() { return mCurrentUserId; } @Override public void onReceive(Context context, Intent intent) { if (Intent.ACTION_USER_SWITCHED.equals(intent.getAction())) { mCurrentUserId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0); } } }
packages/SystemUI/src/com/android/systemui/statusbar/policy/ToggleSlider.java +9 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ public class ToggleSlider extends RelativeLayout private static final String TAG = "StatusBar.ToggleSlider"; public interface Listener { public void onInit(ToggleSlider v); public void onChanged(ToggleSlider v, boolean tracking, boolean checked, int value); } Loading Loading @@ -75,6 +76,14 @@ public class ToggleSlider extends RelativeLayout a.recycle(); } @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); if (mListener != null) { mListener.onInit(this); } } public void onCheckedChanged(CompoundButton toggle, boolean checked) { Drawable thumb; Drawable slider; Loading
packages/SystemUI/src/com/android/systemui/statusbar/policy/VolumeController.java +6 −2 Original line number Diff line number Diff line Loading @@ -51,11 +51,15 @@ public class VolumeController implements ToggleSlider.Listener { mMute = mAudioManager.getRingerMode() != AudioManager.RINGER_MODE_NORMAL; mVolume = mAudioManager.getStreamVolume(STREAM); control.setOnChangedListener(this); } @Override public void onInit(ToggleSlider control) { control.setMax(mAudioManager.getStreamMaxVolume(STREAM)); control.setValue(mVolume); control.setChecked(mMute); control.setOnChangedListener(this); } public void onChanged(ToggleSlider view, boolean tracking, boolean mute, int level) { Loading