summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jim Miller <jaggies@google.com> 2012-10-03 02:23:52 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2012-10-03 02:23:52 -0700
commitc2a28163165fdd8e2a3173a577ba07cc88ec61fd (patch)
tree16520775a93c6818317f7047e58645428ca9be34
parentfd28053d5eef6971ac05bd5cd4b71656e9266145 (diff)
parent5d2da713ed8338c0d73779d842e6958f86fbc2ee (diff)
Merge "Update keyguard to send userActivity events" into jb-mr1-dev
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java11
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetFrame.java21
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetRegion.java20
3 files changed, 46 insertions, 6 deletions
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java
index 117877d2085a..3df9bb2998da 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java
@@ -724,6 +724,7 @@ public class KeyguardHostView extends KeyguardViewBase {
inflateAndAddUserSelectorWidgetIfNecessary();
// Add status widget
+ View statusView = null;
int statusWidgetId = mLockPatternUtils.getStatusWidget();
if (statusWidgetId != -1) {
addWidget(statusWidgetId);
@@ -737,6 +738,16 @@ public class KeyguardHostView extends KeyguardViewBase {
mAppWidgetContainer.removeView(newStatusWidget);
newStatusWidget.setId(R.id.keyguard_status_view);
mAppWidgetContainer.addView(newStatusWidget, oldStatusWidgetPosition);
+ statusView = newStatusWidget;
+ } else {
+ statusView = findViewById(R.id.keyguard_status_view);
+ }
+
+ // Disable all user interaction on status view. This is done to prevent falsing in the
+ // pocket from triggering useractivity and prevents 3rd party replacement widgets
+ // from responding to user interaction while in this position.
+ if (statusView instanceof KeyguardWidgetFrame) {
+ ((KeyguardWidgetFrame) statusView).setDisableUserInteraction(true);
}
// Add user-selected widget
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetFrame.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetFrame.java
index c942cedebe7c..fe1005f964ab 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetFrame.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetFrame.java
@@ -26,7 +26,10 @@ import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.Shader;
+import android.os.PowerManager;
+import android.os.SystemClock;
import android.util.AttributeSet;
+import android.view.MotionEvent;
import android.widget.FrameLayout;
import com.android.internal.R;
@@ -45,6 +48,8 @@ public class KeyguardWidgetFrame extends FrameLayout {
private float mOverScrollAmount = 0f;
private final Rect mForegroundRect = new Rect();
private int mForegroundAlpha = 0;
+ private PowerManager mPowerManager;
+ private boolean mDisableInteraction;
public KeyguardWidgetFrame(Context context) {
this(context, null, 0);
@@ -56,6 +61,9 @@ public class KeyguardWidgetFrame extends FrameLayout {
public KeyguardWidgetFrame(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
+
+ mPowerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
+
Resources res = context.getResources();
int hPadding = res.getDimensionPixelSize(R.dimen.kg_widget_pager_horizontal_padding);
int topPadding = res.getDimensionPixelSize(R.dimen.kg_widget_pager_top_padding);
@@ -65,6 +73,19 @@ public class KeyguardWidgetFrame extends FrameLayout {
mGradientPaint.setXfermode(sAddBlendMode);
}
+ public void setDisableUserInteraction(boolean disabled) {
+ mDisableInteraction = disabled;
+ }
+
+ @Override
+ public boolean onInterceptTouchEvent(MotionEvent ev) {
+ if (!mDisableInteraction) {
+ mPowerManager.userActivity(SystemClock.uptimeMillis(), false);
+ return super.onInterceptTouchEvent(ev);
+ }
+ return true;
+ }
+
@Override
protected void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas);
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetRegion.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetRegion.java
index f7f23c714528..e9ea2c37b22b 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetRegion.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetRegion.java
@@ -16,6 +16,8 @@
package com.android.internal.policy.impl.keyguard;
import android.content.Context;
+import android.os.PowerManager;
+import android.os.SystemClock;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
@@ -29,6 +31,7 @@ public class KeyguardWidgetRegion extends LinearLayout implements PageSwitchList
KeyguardGlowStripView mRightStrip;
KeyguardWidgetPager mPager;
private int mPage = 0;
+ private PowerManager mPowerManager;
public KeyguardWidgetRegion(Context context) {
this(context, null, 0);
@@ -40,6 +43,7 @@ public class KeyguardWidgetRegion extends LinearLayout implements PageSwitchList
public KeyguardWidgetRegion(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
+ mPowerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
}
@Override
@@ -70,21 +74,25 @@ public class KeyguardWidgetRegion extends LinearLayout implements PageSwitchList
@Override
public void onPageSwitch(View newPage, int newPageIndex) {
- mPage = newPageIndex;
-
- // If we're showing the default system status widget, then we want to hide the clock
- boolean hideClock = false;
+ boolean showingStatusWidget = false;
if ((newPage instanceof ViewGroup)) {
ViewGroup vg = (ViewGroup) newPage;
if (vg.getChildAt(0) instanceof KeyguardStatusView) {
- hideClock = true;
+ showingStatusWidget = true;
}
}
- if (hideClock) {
+ // Disable the status bar clock if we're showing the default status widget
+ if (showingStatusWidget) {
setSystemUiVisibility(getSystemUiVisibility() | View.STATUS_BAR_DISABLE_CLOCK);
} else {
setSystemUiVisibility(getSystemUiVisibility() & ~View.STATUS_BAR_DISABLE_CLOCK);
}
+
+ // Extend the display timeout if the user switches pages
+ if (mPage != newPageIndex) {
+ mPowerManager.userActivity(SystemClock.uptimeMillis(), false);
+ mPage = newPageIndex;
+ }
}
}