summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--packages/Keyguard/src/com/android/keyguard/KeyguardViewBase.java16
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java28
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java2
5 files changed, 46 insertions, 17 deletions
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardViewBase.java b/packages/Keyguard/src/com/android/keyguard/KeyguardViewBase.java
index 2ea8f85..bc0f364 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardViewBase.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardViewBase.java
@@ -107,7 +107,6 @@ public abstract class KeyguardViewBase extends FrameLayout implements SecurityCa
mSecurityContainer.setSecurityCallback(this);
mSecurityContainer.showPrimarySecurityScreen(false);
// mSecurityContainer.updateSecurityViews(false /* not bouncing */);
- setBackButtonEnabled(false);
}
/**
@@ -127,12 +126,6 @@ public abstract class KeyguardViewBase extends FrameLayout implements SecurityCa
return dismiss(false);
}
- private void setBackButtonEnabled(boolean enabled) {
- setSystemUiVisibility(enabled ?
- getSystemUiVisibility() & ~View.STATUS_BAR_DISABLE_BACK :
- getSystemUiVisibility() | View.STATUS_BAR_DISABLE_BACK);
- }
-
protected void showBouncer(boolean show) {
CharSequence what = getContext().getResources().getText(
show ? R.string.keyguard_accessibility_show_bouncer
@@ -143,8 +136,7 @@ public abstract class KeyguardViewBase extends FrameLayout implements SecurityCa
public boolean handleBackKey() {
if (mSecurityContainer.getCurrentSecuritySelection() == SecurityMode.Account) {
- // go back to primary screen and re-disable back
- setBackButtonEnabled(false);
+ // go back to primary screen
mSecurityContainer.showPrimarySecurityScreen(false /*turningOff*/);
return true;
}
@@ -207,12 +199,6 @@ public abstract class KeyguardViewBase extends FrameLayout implements SecurityCa
@Override
public void onSecurityModeChanged(SecurityMode securityMode, boolean needsInput) {
- // Enable or disable the back button based on security mode
- if (securityMode == SecurityMode.Account && !mLockPatternUtils.isPermanentlyLocked()) {
- // we're showing account as a backup, provide a way to get back to primary
- setBackButtonEnabled(true);
- }
-
if (mViewMediatorCallback != null) {
mViewMediatorCallback.setNeedsInput(needsInput);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java
index 11ccf2e..7cbde36 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java
@@ -105,6 +105,10 @@ public class KeyguardBouncer {
return KeyguardViewMediator.AWAKE_INTERVAL_DEFAULT_MS;
}
+ public boolean isShowing() {
+ return mRoot != null && mRoot.getVisibility() == View.VISIBLE;
+ }
+
private void ensureView() {
if (mRoot == null) {
inflateView();
@@ -128,4 +132,8 @@ public class KeyguardBouncer {
mRoot = null;
}
}
+
+ public boolean onBackPressed() {
+ return mKeyguardView != null && mKeyguardView.handleBackKey();
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index a8b86a8..05d723a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -2857,6 +2857,15 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode {
}
}
+ public boolean onBackPressed() {
+ if (mOnKeyguard) {
+ return mStatusBarKeyguardViewManager.onBackPressed();
+ } else {
+ animateCollapsePanels();
+ return true;
+ }
+ }
+
private void showBouncer() {
if (mOnKeyguard) {
mStatusBarKeyguardViewManager.dismiss();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
index 73fc466..b8592c3 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
@@ -62,7 +62,6 @@ public class StatusBarKeyguardViewManager {
mContext = context;
mViewMediatorCallback = callback;
mLockPatternUtils = lockPatternUtils;
-
}
public void registerStatusBar(PhoneStatusBar phoneStatusBar,
@@ -83,10 +82,12 @@ public class StatusBarKeyguardViewManager {
mStatusBarWindowManager.setKeyguardShowing(true);
mPhoneStatusBar.showKeyguard();
mBouncer.prepare();
+ updateBackButtonState();
}
public void showBouncer() {
mBouncer.show();
+ updateBackButtonState();
}
/**
@@ -95,6 +96,7 @@ public class StatusBarKeyguardViewManager {
public void reset() {
mBouncer.reset();
mPhoneStatusBar.showKeyguard();
+ updateBackButtonState();
}
public void onScreenTurnedOff() {
@@ -165,4 +167,28 @@ public class StatusBarKeyguardViewManager {
public boolean isShowing() {
return mShowing;
}
+
+ /**
+ * Notifies this manager that the back button has been pressed.
+ *
+ * @return whether the back press has been handled
+ */
+ public boolean onBackPressed() {
+ if (mBouncer.isShowing()) {
+ mBouncer.hide();
+ mPhoneStatusBar.showKeyguard();
+ updateBackButtonState();
+ return true;
+ }
+ return false;
+ }
+
+ private void updateBackButtonState() {
+ int vis = mContainer.getSystemUiVisibility();
+ if (mBouncer.isShowing()) {
+ mContainer.setSystemUiVisibility(vis & ~View.STATUS_BAR_DISABLE_BACK);
+ } else {
+ mContainer.setSystemUiVisibility(vis | View.STATUS_BAR_DISABLE_BACK);
+ }
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java
index ea3f899..dd89f47 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java
@@ -79,7 +79,7 @@ public class StatusBarWindowView extends FrameLayout
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_BACK:
if (!down) {
- mService.animateCollapsePanels();
+ mService.onBackPressed();
}
return true;
}