summaryrefslogtreecommitdiffstats
path: root/policy/src
diff options
context:
space:
mode:
authorMichael Jurka <mikejurka@google.com>2012-11-08 00:32:29 -0800
committerMichael Jurka <mikejurka@google.com>2012-11-08 02:06:38 -0800
commiteb963f046dadd1304379db0b14c17e47c89913f4 (patch)
treeb76bc55afdf9c6454c62c4685723ebb66402b5f0 /policy/src
parentc8ed8d32603d21e1af9a682cc5f1655d2388cfba (diff)
downloadframeworks_base-eb963f046dadd1304379db0b14c17e47c89913f4.zip
frameworks_base-eb963f046dadd1304379db0b14c17e47c89913f4.tar.gz
frameworks_base-eb963f046dadd1304379db0b14c17e47c89913f4.tar.bz2
Enforce max number of 5 lockscreen widgets
Change-Id: I7b7fca18174736c8f1aa0018f7399982c80b1cb0
Diffstat (limited to 'policy/src')
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java34
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetPager.java4
2 files changed, 37 insertions, 1 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 8487f02..5b9eb86 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java
@@ -69,6 +69,8 @@ public class KeyguardHostView extends KeyguardViewBase {
// Found in KeyguardAppWidgetPickActivity.java
static final int APPWIDGET_HOST_ID = 0x4B455947;
+ private final int MAX_WIDGETS = 5;
+
private AppWidgetHost mAppWidgetHost;
private AppWidgetManager mAppWidgetManager;
private KeyguardWidgetPager mAppWidgetContainer;
@@ -225,6 +227,9 @@ public class KeyguardHostView extends KeyguardViewBase {
addDefaultWidgets();
addWidgetsFromSettings();
+ if (numWidgets() >= MAX_WIDGETS) {
+ setAddWidgetEnabled(false);
+ }
checkAppWidgetConsistency();
mSwitchPageRunnable.run();
// This needs to be called after the pages are all added.
@@ -313,6 +318,13 @@ public class KeyguardHostView extends KeyguardViewBase {
public void onUserActivityTimeoutChanged() {
KeyguardHostView.this.onUserActivityTimeoutChanged();
}
+
+ @Override
+ public void onRemoveView(View v) {
+ if (numWidgets() < MAX_WIDGETS) {
+ setAddWidgetEnabled(true);
+ }
+ }
};
public void userActivity() {
@@ -975,13 +987,33 @@ public class KeyguardHostView extends KeyguardViewBase {
}
};
+ private int numWidgets() {
+ final int childCount = mAppWidgetContainer.getChildCount();
+ int widgetCount = 0;
+ for (int i = 0; i < childCount; i++) {
+ if (mAppWidgetContainer.isWidgetPage(i)) {
+ widgetCount++;
+ }
+ }
+ return widgetCount;
+ }
+
+
+ private void setAddWidgetEnabled(boolean clickable) {
+ View addWidget = mAppWidgetContainer.findViewById(R.id.keyguard_add_widget);
+ if (addWidget != null) {
+ View addWidgetButton = addWidget.findViewById(R.id.keyguard_add_widget_view);
+ addWidgetButton.setEnabled(clickable);
+ }
+ }
+
private void addDefaultWidgets() {
LayoutInflater inflater = LayoutInflater.from(mContext);
inflater.inflate(R.layout.keyguard_transport_control_view, this, true);
if (!mSafeModeEnabled && !widgetsDisabledByDpm()) {
View addWidget = inflater.inflate(R.layout.keyguard_add_widget, this, false);
- mAppWidgetContainer.addWidget(addWidget);
+ mAppWidgetContainer.addWidget(addWidget, 0);
View addWidgetButton = addWidget.findViewById(R.id.keyguard_add_widget_view);
addWidgetButton.setOnClickListener(new OnClickListener() {
@Override
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetPager.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetPager.java
index c21e04f..24eebff 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetPager.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetPager.java
@@ -236,6 +236,7 @@ public class KeyguardWidgetPager extends PagedView implements PagedView.PageSwit
public interface Callbacks {
public void userActivity();
public void onUserActivityTimeoutChanged();
+ public void onRemoveView(View v);
}
public void addWidget(View widget) {
@@ -245,6 +246,9 @@ public class KeyguardWidgetPager extends PagedView implements PagedView.PageSwit
public void onRemoveView(View v) {
final int appWidgetId = ((KeyguardWidgetFrame) v).getContentAppWidgetId();
+ if (mCallbacks != null) {
+ mCallbacks.onRemoveView(v);
+ }
mBackgroundWorkerHandler.post(new Runnable() {
@Override
public void run() {