From fc5001a5926495182e49408391b84172fb8f7915 Mon Sep 17 00:00:00 2001 From: Jim Miller Date: Sun, 16 Jan 2011 17:45:46 -0800 Subject: [PATCH] Fix 3342063: Correctly update StatusView when battery changes. LockScreen wasn't correctly updating StatusView when the battery status changed. In addition, the messages aren't supposed to "pop" when changed, so changed visibility state from GONE to INVISIBLE when not in use. Change-Id: Icacbf7e2275c77a28e7e0a9d1247abdbebadcd4f --- .../internal/policy/impl/LockScreen.java | 7 ++-- .../policy/impl/PatternUnlockScreen.java | 7 ++-- .../internal/policy/impl/StatusView.java | 33 ++++++++++++------- 3 files changed, 32 insertions(+), 15 deletions(-) diff --git a/policy/src/com/android/internal/policy/impl/LockScreen.java b/policy/src/com/android/internal/policy/impl/LockScreen.java index 79fbe0e79f12a..1b810d5832bbd 100644 --- a/policy/src/com/android/internal/policy/impl/LockScreen.java +++ b/policy/src/com/android/internal/policy/impl/LockScreen.java @@ -311,8 +311,8 @@ class LockScreen extends LinearLayout implements KeyguardScreen, setFocusableInTouchMode(true); setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS); - updateMonitor.registerInfoCallback(this); - updateMonitor.registerSimStateCallback(this); + mUpdateMonitor.registerInfoCallback(this); + mUpdateMonitor.registerSimStateCallback(this); mAudioManager = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE); mSilentMode = isSilentMode(); @@ -414,6 +414,9 @@ class LockScreen extends LinearLayout implements KeyguardScreen, public void onRefreshBatteryInfo(boolean showBatteryInfo, boolean pluggedIn, int batteryLevel) { if (DBG) Log.d(TAG, "onRefreshBatteryInfo(" + showBatteryInfo + ", " + pluggedIn + ")"); + + mStatusView.onRefreshBatteryInfo(showBatteryInfo, pluggedIn, batteryLevel); + mShowingBatteryInfo = showBatteryInfo; mPluggedIn = pluggedIn; mBatteryLevel = batteryLevel; diff --git a/policy/src/com/android/internal/policy/impl/PatternUnlockScreen.java b/policy/src/com/android/internal/policy/impl/PatternUnlockScreen.java index 5d1455e5b9350..6815d5080c21d 100644 --- a/policy/src/com/android/internal/policy/impl/PatternUnlockScreen.java +++ b/policy/src/com/android/internal/policy/impl/PatternUnlockScreen.java @@ -169,6 +169,9 @@ class PatternUnlockScreen extends LinearLayoutWithDefaultTouchRecepient } mStatusView = new StatusView(this, mUpdateMonitor, mLockPatternUtils); + // This shows up when no other information is required on status1 + mStatusView.setHelpMessage(R.string.lockscreen_pattern_instructions, + StatusView.LOCK_ICON); mLockPatternView = (LockPatternView) findViewById(R.id.lockPattern); @@ -216,8 +219,8 @@ class PatternUnlockScreen extends LinearLayoutWithDefaultTouchRecepient // assume normal footer mode for now updateFooter(FooterMode.Normal); - updateMonitor.registerInfoCallback(this); - updateMonitor.registerSimStateCallback(this); + mUpdateMonitor.registerInfoCallback(this); + mUpdateMonitor.registerSimStateCallback(this); setFocusableInTouchMode(true); // until we get an update... diff --git a/policy/src/com/android/internal/policy/impl/StatusView.java b/policy/src/com/android/internal/policy/impl/StatusView.java index 1caf0b7240220..5d32cf48800c6 100644 --- a/policy/src/com/android/internal/policy/impl/StatusView.java +++ b/policy/src/com/android/internal/policy/impl/StatusView.java @@ -19,10 +19,10 @@ import android.view.View; import android.widget.TextView; class StatusView { - private static final int LOCK_ICON = R.drawable.ic_lock_idle_lock; - private static final int ALARM_ICON = R.drawable.ic_lock_idle_alarm; - private static final int CHARGING_ICON = R.drawable.ic_lock_idle_charging; - private static final int BATTERY_LOW_ICON = R.drawable.ic_lock_idle_low_battery; + public static final int LOCK_ICON = R.drawable.ic_lock_idle_lock; + public static final int ALARM_ICON = R.drawable.ic_lock_idle_alarm; + public static final int CHARGING_ICON = R.drawable.ic_lock_idle_charging; + public static final int BATTERY_LOW_ICON = R.drawable.ic_lock_idle_low_battery; private String mDateFormatString; @@ -49,6 +49,8 @@ class StatusView { private TextView mAlarmStatus; private LockPatternUtils mLockPatternUtils; + private int mHelpMessageId; + private int mHelpIconId; private View findViewById(int id) { return mView.findViewById(id); @@ -148,8 +150,8 @@ class StatusView { */ void updateStatusLines(boolean showStatusLines) { if (!showStatusLines) { - mStatus1.setVisibility(showStatusLines ? View.VISIBLE : View.GONE); - mAlarmStatus.setVisibility(showStatusLines ? View.VISIBLE : View.GONE); + mStatus1.setVisibility(showStatusLines ? View.VISIBLE : View.INVISIBLE); + mAlarmStatus.setVisibility(showStatusLines ? View.VISIBLE : View.INVISIBLE); return; } @@ -171,7 +173,7 @@ class StatusView { mAlarmStatus.setText(nextAlarm); mAlarmStatus.setVisibility(View.VISIBLE); } else { - mAlarmStatus.setVisibility(View.GONE); + mAlarmStatus.setVisibility(View.INVISIBLE); } // Update Status1 @@ -199,13 +201,22 @@ class StatusView { } mStatus1.setVisibility(View.VISIBLE); } else { - // nothing specific to show; show general instructions - mStatus1.setText(R.string.lockscreen_pattern_instructions); - mStatus1.setCompoundDrawablesWithIntrinsicBounds(LOCK_ICON, 0,0, 0); - mStatus1.setVisibility(View.VISIBLE); + // nothing specific to show; show help message and icon, if provided + if (mHelpMessageId != 0) { + mStatus1.setText(mHelpMessageId); + mStatus1.setCompoundDrawablesWithIntrinsicBounds(mHelpIconId, 0,0, 0); + mStatus1.setVisibility(View.VISIBLE); + } else { + mStatus1.setVisibility(View.INVISIBLE); + } } } + void setHelpMessage(int messageId, int iconId) { + mHelpMessageId = messageId; + mHelpIconId = iconId; + } + void refreshTimeAndDateDisplay() { if (mHasDate) { mDate.setText(DateFormat.format(mDateFormatString, new Date()));