Skip to content

Commit 08ee7fa

Browse files
Adam CohenAndroid (Google) Code Review
authored andcommitted
Merge "Fixing emergency dialer flicker on lock screen (issue 5314293)" into ics-factoryrom
2 parents 31b638d + ebcd6bb commit 08ee7fa

9 files changed

Lines changed: 23 additions & 32 deletions

File tree

core/java/com/android/internal/widget/LockPatternUtils.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -936,9 +936,11 @@ public boolean isSecure() {
936936
*
937937
* If there's currently a call in progress, the button will take them to the call
938938
* @param button the button to update
939+
* @param showIfCapable indicates whether the button should be shown if emergency calls are
940+
* possible on the device
939941
*/
940-
public void updateEmergencyCallButtonState(Button button) {
941-
if (isEmergencyCallCapable()) {
942+
public void updateEmergencyCallButtonState(Button button, boolean showIfCapable) {
943+
if (isEmergencyCallCapable() && showIfCapable) {
942944
button.setVisibility(View.VISIBLE);
943945
} else {
944946
button.setVisibility(View.GONE);

core/res/res/layout-sw600dp/keyguard_screen_tab_unlock_land.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,8 @@
8080
android:layout_alignParentBottom="true"
8181
android:drawableLeft="@drawable/ic_emergency"
8282
style="@style/Widget.Button.Transparent"
83-
android:drawablePadding="8dip"/>
83+
android:drawablePadding="8dip"
84+
android:visibility="gone"/>
8485

8586
</RelativeLayout>>
8687

policy/src/com/android/internal/policy/impl/AccountUnlockScreen.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ public AccountUnlockScreen(Context context, Configuration configuration,
112112
mUpdateMonitor = updateMonitor;
113113

114114
mKeyguardStatusViewManager = new KeyguardStatusViewManager(this, updateMonitor,
115-
lockPatternUtils, callback);
115+
lockPatternUtils, callback, true);
116116
}
117117

118118
public void afterTextChanged(Editable s) {

policy/src/com/android/internal/policy/impl/KeyguardStatusViewManager.java

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ class KeyguardStatusViewManager implements OnClickListener {
8787
private LockPatternUtils mLockPatternUtils;
8888
private KeyguardUpdateMonitor mUpdateMonitor;
8989
private Button mEmergencyCallButton;
90-
private boolean mShouldEnableUnlock;
90+
private boolean mUnlockDisabledDueToSimState;
9191

9292
// Shadowed text values
9393
private CharSequence mCarrierText;
@@ -97,7 +97,7 @@ class KeyguardStatusViewManager implements OnClickListener {
9797
private CharSequence mOwnerInfoText;
9898
private boolean mShowingStatus;
9999
private KeyguardScreenCallback mCallback;
100-
private boolean mHideEmergencyCallButton = false;
100+
private final boolean mShowEmergencyButtonByDefault;
101101

102102
private class TransientTextManager {
103103
private TextView mTextView;
@@ -149,7 +149,8 @@ public void run() {
149149
};
150150

151151
public KeyguardStatusViewManager(View view, KeyguardUpdateMonitor updateMonitor,
152-
LockPatternUtils lockPatternUtils, KeyguardScreenCallback callback) {
152+
LockPatternUtils lockPatternUtils, KeyguardScreenCallback callback,
153+
boolean showEmergencyButtonByDefault) {
153154
mContainer = view;
154155
mDateFormatString = getContext().getString(R.string.full_wday_month_day_no_year);
155156
mLockPatternUtils = lockPatternUtils;
@@ -163,6 +164,7 @@ public KeyguardStatusViewManager(View view, KeyguardUpdateMonitor updateMonitor,
163164
mOwnerInfoView = (TextView) findViewById(R.id.propertyOf);
164165
mTransportView = (TransportControlView) findViewById(R.id.transport);
165166
mEmergencyCallButton = (Button) findViewById(R.id.emergencyCallButton);
167+
mShowEmergencyButtonByDefault = showEmergencyButtonByDefault;
166168
if (mEmergencyCallButton != null) {
167169
mEmergencyCallButton.setText(R.string.lockscreen_emergency_call);
168170
mEmergencyCallButton.setOnClickListener(this);
@@ -393,10 +395,6 @@ void refreshDate() {
393395
}
394396
}
395397

396-
boolean shouldEnableUnlock() {
397-
return mShouldEnableUnlock;
398-
}
399-
400398
/**
401399
* Determine the current status of the lock screen given the sim state and other stuff.
402400
*/
@@ -443,9 +441,8 @@ private void updateWithSimStatus(State simState) {
443441

444442
CharSequence carrierText = null;
445443
int carrierHelpTextId = 0;
446-
mShouldEnableUnlock = true;
444+
mUnlockDisabledDueToSimState = false;
447445
mStatus = getStatusForIccState(simState);
448-
449446
switch (mStatus) {
450447
case Normal:
451448
carrierText = LockPatternUtils.getCarrierString(mUpdateMonitor.getTelephonyPlmn(),
@@ -466,13 +463,14 @@ private void updateWithSimStatus(State simState) {
466463
case SimPermDisabled:
467464
carrierText = getContext().getText(R.string.lockscreen_missing_sim_message_short);
468465
carrierHelpTextId = R.string.lockscreen_permanent_disabled_sim_instructions;
466+
mUnlockDisabledDueToSimState = true;
469467
break;
470468

471469
case SimMissingLocked:
472470
carrierText = LockPatternUtils.getCarrierString(mUpdateMonitor.getTelephonyPlmn(),
473471
getContext().getText(R.string.lockscreen_missing_sim_message_short));
474472
carrierHelpTextId = R.string.lockscreen_missing_sim_instructions;
475-
mShouldEnableUnlock = false;
473+
mUnlockDisabledDueToSimState = true;
476474
break;
477475

478476
case SimLocked:
@@ -484,7 +482,7 @@ private void updateWithSimStatus(State simState) {
484482
carrierText = LockPatternUtils.getCarrierString(mUpdateMonitor.getTelephonyPlmn(),
485483
getContext().getText(R.string.lockscreen_sim_puk_locked_message));
486484
if (!mLockPatternUtils.isPukUnlockScreenEnable()) {
487-
mShouldEnableUnlock = false;
485+
mUnlockDisabledDueToSimState = true;
488486
}
489487
break;
490488
}
@@ -556,10 +554,8 @@ public boolean shouldShowStatusLines() {
556554

557555
private void updateEmergencyCallButtonState() {
558556
if (mEmergencyCallButton != null) {
559-
mLockPatternUtils.updateEmergencyCallButtonState(mEmergencyCallButton);
560-
if (mHideEmergencyCallButton) {
561-
mEmergencyCallButton.setVisibility(View.GONE);
562-
}
557+
boolean showIfCapable = mShowEmergencyButtonByDefault || mUnlockDisabledDueToSimState;
558+
mLockPatternUtils.updateEmergencyCallButtonState(mEmergencyCallButton, showIfCapable);
563559
}
564560
}
565561

@@ -608,9 +604,4 @@ public void onClick(View v) {
608604
mCallback.takeEmergencyCallAction();
609605
}
610606
}
611-
612-
public void hideEmergencyCallButton() {
613-
mHideEmergencyCallButton = true;
614-
}
615-
616607
}

policy/src/com/android/internal/policy/impl/LockScreen.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -336,10 +336,7 @@ private boolean shouldEnableMenuKey() {
336336
}
337337

338338
mStatusViewManager = new KeyguardStatusViewManager(this, mUpdateMonitor, mLockPatternUtils,
339-
mCallback);
340-
341-
// LockScreen doesn't show the emergency call button by default
342-
mStatusViewManager.hideEmergencyCallButton();
339+
mCallback, false);
343340

344341
setFocusable(true);
345342
setFocusableInTouchMode(true);

policy/src/com/android/internal/policy/impl/PasswordUnlockScreen.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ public PasswordUnlockScreen(Context context, Configuration configuration,
9898
}
9999

100100
mStatusViewManager = new KeyguardStatusViewManager(this, mUpdateMonitor, mLockPatternUtils,
101-
mCallback);
101+
mCallback, true);
102102

103103
final int quality = lockPatternUtils.getKeyguardStoredPasswordQuality();
104104
mIsAlpha = DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC == quality

policy/src/com/android/internal/policy/impl/PatternUnlockScreen.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ private void updateFooter(FooterMode mode) {
171171
}
172172

173173
mKeyguardStatusViewManager = new KeyguardStatusViewManager(this, mUpdateMonitor,
174-
mLockPatternUtils, mCallback);
174+
mLockPatternUtils, mCallback, true);
175175

176176
mLockPatternView = (LockPatternView) findViewById(R.id.lockPattern);
177177

policy/src/com/android/internal/policy/impl/SimPukUnlockScreen.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ public void onClick(View v) {
117117
requestFocus(mPukText);
118118

119119
mKeyguardStatusViewManager = new KeyguardStatusViewManager(this, updateMonitor,
120-
lockpatternutils, callback);
120+
lockpatternutils, callback, true);
121121

122122
setFocusableInTouchMode(true);
123123
}

policy/src/com/android/internal/policy/impl/SimUnlockScreen.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ public SimUnlockScreen(Context context, Configuration configuration,
100100
mOkButton.setOnClickListener(this);
101101

102102
mKeyguardStatusViewManager = new KeyguardStatusViewManager(this, updateMonitor,
103-
lockpatternutils, callback);
103+
lockpatternutils, callback, true);
104104

105105
setFocusableInTouchMode(true);
106106
}

0 commit comments

Comments
 (0)