resolved conflicts for merge of 578e73da to honeycomb-plus-aosp
Change-Id: I334ae5382220a84881521885b6e3c3991fd8bbb0
This commit is contained in:
@@ -34,6 +34,7 @@ import android.view.View;
|
|||||||
import android.widget.RelativeLayout;
|
import android.widget.RelativeLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import java.lang.ref.WeakReference;
|
||||||
import java.text.DateFormatSymbols;
|
import java.text.DateFormatSymbols;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
|
|
||||||
@@ -54,26 +55,41 @@ public class DigitalClock extends RelativeLayout {
|
|||||||
private TextView mTimeDisplayForeground;
|
private TextView mTimeDisplayForeground;
|
||||||
private AmPm mAmPm;
|
private AmPm mAmPm;
|
||||||
private ContentObserver mFormatChangeObserver;
|
private ContentObserver mFormatChangeObserver;
|
||||||
private boolean mLive = true;
|
private int mAttached = 0; // for debugging - tells us whether attach/detach is unbalanced
|
||||||
private boolean mAttached;
|
|
||||||
|
|
||||||
/* called by system on minute ticks */
|
/* called by system on minute ticks */
|
||||||
private final Handler mHandler = new Handler();
|
private final Handler mHandler = new Handler();
|
||||||
private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
|
private BroadcastReceiver mIntentReceiver;
|
||||||
@Override
|
|
||||||
public void onReceive(Context context, Intent intent) {
|
private static class TimeChangedReceiver extends BroadcastReceiver {
|
||||||
if (mLive && intent.getAction().equals(
|
private WeakReference<DigitalClock> mClock;
|
||||||
Intent.ACTION_TIMEZONE_CHANGED)) {
|
private Context mContext;
|
||||||
mCalendar = Calendar.getInstance();
|
|
||||||
}
|
public TimeChangedReceiver(DigitalClock clock) {
|
||||||
// Post a runnable to avoid blocking the broadcast.
|
mClock = new WeakReference<DigitalClock>(clock);
|
||||||
mHandler.post(new Runnable() {
|
mContext = clock.getContext();
|
||||||
public void run() {
|
}
|
||||||
updateTime();
|
|
||||||
|
@Override
|
||||||
|
public void onReceive(Context context, Intent intent) {
|
||||||
|
// Post a runnable to avoid blocking the broadcast.
|
||||||
|
final boolean timezoneChanged =
|
||||||
|
intent.getAction().equals(Intent.ACTION_TIMEZONE_CHANGED);
|
||||||
|
final DigitalClock clock = mClock.get();
|
||||||
|
if (clock != null) {
|
||||||
|
clock.mHandler.post(new Runnable() {
|
||||||
|
public void run() {
|
||||||
|
if (timezoneChanged) {
|
||||||
|
clock.mCalendar = Calendar.getInstance();
|
||||||
}
|
}
|
||||||
|
clock.updateTime();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
mContext.unregisterReceiver(this);
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
};
|
||||||
|
|
||||||
static class AmPm {
|
static class AmPm {
|
||||||
private TextView mAmPm;
|
private TextView mAmPm;
|
||||||
@@ -99,14 +115,23 @@ public class DigitalClock extends RelativeLayout {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class FormatChangeObserver extends ContentObserver {
|
private static class FormatChangeObserver extends ContentObserver {
|
||||||
public FormatChangeObserver() {
|
private WeakReference<DigitalClock> mClock;
|
||||||
|
private Context mContext;
|
||||||
|
public FormatChangeObserver(DigitalClock clock) {
|
||||||
super(new Handler());
|
super(new Handler());
|
||||||
|
mClock = new WeakReference<DigitalClock>(clock);
|
||||||
|
mContext = clock.getContext();
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void onChange(boolean selfChange) {
|
public void onChange(boolean selfChange) {
|
||||||
setDateFormat();
|
DigitalClock digitalClock = mClock.get();
|
||||||
updateTime();
|
if (digitalClock != null) {
|
||||||
|
digitalClock.setDateFormat();
|
||||||
|
digitalClock.updateTime();
|
||||||
|
} else {
|
||||||
|
mContext.getContentResolver().unregisterContentObserver(this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -139,11 +164,11 @@ public class DigitalClock extends RelativeLayout {
|
|||||||
protected void onAttachedToWindow() {
|
protected void onAttachedToWindow() {
|
||||||
super.onAttachedToWindow();
|
super.onAttachedToWindow();
|
||||||
|
|
||||||
if (mAttached) return;
|
mAttached++;
|
||||||
mAttached = true;
|
|
||||||
|
|
||||||
if (mLive) {
|
/* monitor time ticks, time changed, timezone */
|
||||||
/* monitor time ticks, time changed, timezone */
|
if (mIntentReceiver == null) {
|
||||||
|
mIntentReceiver = new TimeChangedReceiver(this);
|
||||||
IntentFilter filter = new IntentFilter();
|
IntentFilter filter = new IntentFilter();
|
||||||
filter.addAction(Intent.ACTION_TIME_TICK);
|
filter.addAction(Intent.ACTION_TIME_TICK);
|
||||||
filter.addAction(Intent.ACTION_TIME_CHANGED);
|
filter.addAction(Intent.ACTION_TIME_CHANGED);
|
||||||
@@ -152,9 +177,11 @@ public class DigitalClock extends RelativeLayout {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* monitor 12/24-hour display preference */
|
/* monitor 12/24-hour display preference */
|
||||||
mFormatChangeObserver = new FormatChangeObserver();
|
if (mFormatChangeObserver == null) {
|
||||||
mContext.getContentResolver().registerContentObserver(
|
mFormatChangeObserver = new FormatChangeObserver(this);
|
||||||
Settings.System.CONTENT_URI, true, mFormatChangeObserver);
|
mContext.getContentResolver().registerContentObserver(
|
||||||
|
Settings.System.CONTENT_URI, true, mFormatChangeObserver);
|
||||||
|
}
|
||||||
|
|
||||||
updateTime();
|
updateTime();
|
||||||
}
|
}
|
||||||
@@ -163,16 +190,19 @@ public class DigitalClock extends RelativeLayout {
|
|||||||
protected void onDetachedFromWindow() {
|
protected void onDetachedFromWindow() {
|
||||||
super.onDetachedFromWindow();
|
super.onDetachedFromWindow();
|
||||||
|
|
||||||
if (!mAttached) return;
|
mAttached--;
|
||||||
mAttached = false;
|
|
||||||
|
|
||||||
if (mLive) {
|
if (mIntentReceiver != null) {
|
||||||
mContext.unregisterReceiver(mIntentReceiver);
|
mContext.unregisterReceiver(mIntentReceiver);
|
||||||
}
|
}
|
||||||
mContext.getContentResolver().unregisterContentObserver(
|
if (mFormatChangeObserver != null) {
|
||||||
mFormatChangeObserver);
|
mContext.getContentResolver().unregisterContentObserver(
|
||||||
}
|
mFormatChangeObserver);
|
||||||
|
}
|
||||||
|
|
||||||
|
mFormatChangeObserver = null;
|
||||||
|
mIntentReceiver = null;
|
||||||
|
}
|
||||||
|
|
||||||
void updateTime(Calendar c) {
|
void updateTime(Calendar c) {
|
||||||
mCalendar = c;
|
mCalendar = c;
|
||||||
@@ -180,9 +210,7 @@ public class DigitalClock extends RelativeLayout {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateTime() {
|
private void updateTime() {
|
||||||
if (mLive) {
|
mCalendar.setTimeInMillis(System.currentTimeMillis());
|
||||||
mCalendar.setTimeInMillis(System.currentTimeMillis());
|
|
||||||
}
|
|
||||||
|
|
||||||
CharSequence newTime = DateFormat.format(mFormat, mCalendar);
|
CharSequence newTime = DateFormat.format(mFormat, mCalendar);
|
||||||
mTimeDisplayBackground.setText(newTime);
|
mTimeDisplayBackground.setText(newTime);
|
||||||
@@ -195,8 +223,4 @@ public class DigitalClock extends RelativeLayout {
|
|||||||
? M24 : M12;
|
? M24 : M12;
|
||||||
mAmPm.setShowAmPm(mFormat.equals(M12));
|
mAmPm.setShowAmPm(mFormat.equals(M12));
|
||||||
}
|
}
|
||||||
|
|
||||||
void setLive(boolean live) {
|
|
||||||
mLive = live;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,8 +62,8 @@ public class AccountUnlockScreen extends RelativeLayout implements KeyguardScree
|
|||||||
*/
|
*/
|
||||||
private static final int AWAKE_POKE_MILLIS = 30000;
|
private static final int AWAKE_POKE_MILLIS = 30000;
|
||||||
|
|
||||||
private final KeyguardScreenCallback mCallback;
|
private KeyguardScreenCallback mCallback;
|
||||||
private final LockPatternUtils mLockPatternUtils;
|
private LockPatternUtils mLockPatternUtils;
|
||||||
private KeyguardUpdateMonitor mUpdateMonitor;
|
private KeyguardUpdateMonitor mUpdateMonitor;
|
||||||
|
|
||||||
private TextView mTopHeader;
|
private TextView mTopHeader;
|
||||||
@@ -159,7 +159,10 @@ public class AccountUnlockScreen extends RelativeLayout implements KeyguardScree
|
|||||||
if (mCheckingDialog != null) {
|
if (mCheckingDialog != null) {
|
||||||
mCheckingDialog.hide();
|
mCheckingDialog.hide();
|
||||||
}
|
}
|
||||||
mUpdateMonitor.removeCallback(this);
|
mUpdateMonitor.removeCallback(this); // this must be first
|
||||||
|
mCallback = null;
|
||||||
|
mLockPatternUtils = null;
|
||||||
|
mUpdateMonitor = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** {@inheritDoc} */
|
/** {@inheritDoc} */
|
||||||
|
|||||||
@@ -231,8 +231,8 @@ public class KeyguardViewManager implements KeyguardWindowController {
|
|||||||
mKeyguardHost.postDelayed(new Runnable() {
|
mKeyguardHost.postDelayed(new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
synchronized (KeyguardViewManager.this) {
|
synchronized (KeyguardViewManager.this) {
|
||||||
mKeyguardHost.removeView(lastView);
|
|
||||||
lastView.cleanUp();
|
lastView.cleanUp();
|
||||||
|
mKeyguardHost.removeView(lastView);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, 500);
|
}, 500);
|
||||||
|
|||||||
@@ -495,8 +495,10 @@ public class LockPatternKeyguardView extends KeyguardViewBase {
|
|||||||
public void cleanUp() {
|
public void cleanUp() {
|
||||||
((KeyguardScreen) mLockScreen).onPause();
|
((KeyguardScreen) mLockScreen).onPause();
|
||||||
((KeyguardScreen) mLockScreen).cleanUp();
|
((KeyguardScreen) mLockScreen).cleanUp();
|
||||||
|
this.removeView(mLockScreen);
|
||||||
((KeyguardScreen) mUnlockScreen).onPause();
|
((KeyguardScreen) mUnlockScreen).onPause();
|
||||||
((KeyguardScreen) mUnlockScreen).cleanUp();
|
((KeyguardScreen) mUnlockScreen).cleanUp();
|
||||||
|
this.removeView(mUnlockScreen);
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isSecure() {
|
private boolean isSecure() {
|
||||||
|
|||||||
@@ -59,9 +59,9 @@ class LockScreen extends LinearLayout implements KeyguardScreen,
|
|||||||
|
|
||||||
private Status mStatus = Status.Normal;
|
private Status mStatus = Status.Normal;
|
||||||
|
|
||||||
private final LockPatternUtils mLockPatternUtils;
|
private LockPatternUtils mLockPatternUtils;
|
||||||
private final KeyguardUpdateMonitor mUpdateMonitor;
|
private KeyguardUpdateMonitor mUpdateMonitor;
|
||||||
private final KeyguardScreenCallback mCallback;
|
private KeyguardScreenCallback mCallback;
|
||||||
|
|
||||||
private SlidingTab mSlidingTab;
|
private SlidingTab mSlidingTab;
|
||||||
private TextView mScreenLocked;
|
private TextView mScreenLocked;
|
||||||
@@ -311,8 +311,8 @@ class LockScreen extends LinearLayout implements KeyguardScreen,
|
|||||||
setFocusableInTouchMode(true);
|
setFocusableInTouchMode(true);
|
||||||
setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
|
setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
|
||||||
|
|
||||||
updateMonitor.registerInfoCallback(this);
|
mUpdateMonitor.registerInfoCallback(this);
|
||||||
updateMonitor.registerSimStateCallback(this);
|
mUpdateMonitor.registerSimStateCallback(this);
|
||||||
|
|
||||||
mAudioManager = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE);
|
mAudioManager = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE);
|
||||||
mSilentMode = isSilentMode();
|
mSilentMode = isSilentMode();
|
||||||
@@ -656,7 +656,10 @@ class LockScreen extends LinearLayout implements KeyguardScreen,
|
|||||||
|
|
||||||
/** {@inheritDoc} */
|
/** {@inheritDoc} */
|
||||||
public void cleanUp() {
|
public void cleanUp() {
|
||||||
mUpdateMonitor.removeCallback(this);
|
mUpdateMonitor.removeCallback(this); // this must be first
|
||||||
|
mLockPatternUtils = null;
|
||||||
|
mUpdateMonitor = null;
|
||||||
|
mCallback = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** {@inheritDoc} */
|
/** {@inheritDoc} */
|
||||||
|
|||||||
@@ -62,9 +62,9 @@ class PatternUnlockScreen extends LinearLayoutWithDefaultTouchRecepient
|
|||||||
private int mTotalFailedPatternAttempts = 0;
|
private int mTotalFailedPatternAttempts = 0;
|
||||||
private CountDownTimer mCountdownTimer = null;
|
private CountDownTimer mCountdownTimer = null;
|
||||||
|
|
||||||
private final LockPatternUtils mLockPatternUtils;
|
private LockPatternUtils mLockPatternUtils;
|
||||||
private final KeyguardUpdateMonitor mUpdateMonitor;
|
private KeyguardUpdateMonitor mUpdateMonitor;
|
||||||
private final KeyguardScreenCallback mCallback;
|
private KeyguardScreenCallback mCallback;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* whether there is a fallback option available when the pattern is forgotten.
|
* whether there is a fallback option available when the pattern is forgotten.
|
||||||
@@ -359,6 +359,9 @@ class PatternUnlockScreen extends LinearLayoutWithDefaultTouchRecepient
|
|||||||
/** {@inheritDoc} */
|
/** {@inheritDoc} */
|
||||||
public void cleanUp() {
|
public void cleanUp() {
|
||||||
mUpdateMonitor.removeCallback(this);
|
mUpdateMonitor.removeCallback(this);
|
||||||
|
mLockPatternUtils = null;
|
||||||
|
mUpdateMonitor = null;
|
||||||
|
mCallback = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user