summaryrefslogtreecommitdiffstats
path: root/packages/Keyguard
diff options
context:
space:
mode:
authorJim Miller <jaggies@google.com>2013-11-06 13:19:27 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2013-11-06 13:19:27 -0800
commit78244c83fb633895c95f3c93ab874be979cf42e3 (patch)
tree2055d841ee4f55086e1d97e0f84eb83e9ca26805 /packages/Keyguard
parentce89135a53b1f5c0e7f34dbae12794f4421d9390 (diff)
parent322934699433d703fa35505d72028abbcf8ce45f (diff)
downloadframeworks_base-78244c83fb633895c95f3c93ab874be979cf42e3.zip
frameworks_base-78244c83fb633895c95f3c93ab874be979cf42e3.tar.gz
frameworks_base-78244c83fb633895c95f3c93ab874be979cf42e3.tar.bz2
am 32293469: Merge "Fix issue where transport control shows up off-screen on tablets" into klp-dev
* commit '322934699433d703fa35505d72028abbcf8ce45f': Fix issue where transport control shows up off-screen on tablets
Diffstat (limited to 'packages/Keyguard')
-rw-r--r--packages/Keyguard/src/com/android/keyguard/KeyguardHostView.java31
1 files changed, 22 insertions, 9 deletions
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardHostView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardHostView.java
index fdc06a6..1bae9b8 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardHostView.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardHostView.java
@@ -218,7 +218,7 @@ public class KeyguardHostView extends KeyguardViewBase {
mTransportState = (dcs.clearing ? TRANSPORT_GONE :
(isMusicPlaying(dcs.playbackState) ? TRANSPORT_VISIBLE : TRANSPORT_INVISIBLE));
- if (DEBUG) Log.v(TAG, "Initial transport state: "
+ if (DEBUGXPORT) Log.v(TAG, "Initial transport state: "
+ mTransportState + ", pbstate=" + dcs.playbackState);
}
@@ -1369,7 +1369,7 @@ public class KeyguardHostView extends KeyguardViewBase {
}
}
- Runnable mSwitchPageRunnable = new Runnable() {
+ private final Runnable mSwitchPageRunnable = new Runnable() {
@Override
public void run() {
showAppropriateWidgetPage();
@@ -1438,7 +1438,7 @@ public class KeyguardHostView extends KeyguardViewBase {
mAppWidgetToShow = ss.appWidgetToShow;
setInsets(ss.insets);
if (DEBUG) Log.d(TAG, "onRestoreInstanceState, transport=" + mTransportState);
- post(mSwitchPageRunnable);
+ mSwitchPageRunnable.run();
}
@Override
@@ -1472,10 +1472,21 @@ public class KeyguardHostView extends KeyguardViewBase {
}
private void showAppropriateWidgetPage() {
- int state = mTransportState;
- ensureTransportPresentOrRemoved(state);
- int pageToShow = getAppropriateWidgetPage(state);
- mAppWidgetContainer.setCurrentPage(pageToShow);
+ final int state = mTransportState;
+ final boolean transportAdded = ensureTransportPresentOrRemoved(state);
+ final int pageToShow = getAppropriateWidgetPage(state);
+ if (!transportAdded) {
+ mAppWidgetContainer.setCurrentPage(pageToShow);
+ } else if (state == TRANSPORT_VISIBLE) {
+ // If the transport was just added, we need to wait for layout to happen before
+ // we can set the current page.
+ post(new Runnable() {
+ @Override
+ public void run() {
+ mAppWidgetContainer.setCurrentPage(pageToShow);
+ }
+ });
+ }
}
/**
@@ -1499,12 +1510,11 @@ public class KeyguardHostView extends KeyguardViewBase {
*
* @param state
*/
- private void ensureTransportPresentOrRemoved(int state) {
+ private boolean ensureTransportPresentOrRemoved(int state) {
final boolean showing = getWidgetPosition(R.id.keyguard_transport_control) != -1;
final boolean visible = state == TRANSPORT_VISIBLE;
final boolean shouldBeVisible = state == TRANSPORT_INVISIBLE && isMusicPlaying(state);
if (!showing && (visible || shouldBeVisible)) {
- if (DEBUGXPORT) Log.v(TAG, "add transport");
// insert to left of camera if it exists, otherwise after right-most widget
int lastWidget = mAppWidgetContainer.getChildCount() - 1;
int position = 0; // handle no widget case
@@ -1512,13 +1522,16 @@ public class KeyguardHostView extends KeyguardViewBase {
position = mAppWidgetContainer.isCameraPage(lastWidget) ?
lastWidget : lastWidget + 1;
}
+ if (DEBUGXPORT) Log.v(TAG, "add transport at " + position);
mAppWidgetContainer.addWidget(getOrCreateTransportControl(), position);
+ return true;
} else if (showing && state == TRANSPORT_GONE) {
if (DEBUGXPORT) Log.v(TAG, "remove transport");
mAppWidgetContainer.removeWidget(getOrCreateTransportControl());
mTransportControl = null;
KeyguardUpdateMonitor.getInstance(getContext()).dispatchSetBackground(null);
}
+ return false;
}
private CameraWidgetFrame findCameraPage() {