diff options
author | Michael Jurka <mikejurka@google.com> | 2012-11-08 00:32:29 -0800 |
---|---|---|
committer | Michael Jurka <mikejurka@google.com> | 2012-11-08 02:06:38 -0800 |
commit | eb963f046dadd1304379db0b14c17e47c89913f4 (patch) | |
tree | b76bc55afdf9c6454c62c4685723ebb66402b5f0 /policy/src | |
parent | c8ed8d32603d21e1af9a682cc5f1655d2388cfba (diff) | |
download | frameworks_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.java | 34 | ||||
-rw-r--r-- | policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetPager.java | 4 |
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() { |