summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2016-05-16 14:56:02 -0700
committerSunny Goyal <sunnygoyal@google.com>2016-05-16 14:58:20 -0700
commit87af0fded6d91b85c7a4bbf066f93d58c241b146 (patch)
tree5c2642da8d0a12e4c2ac7ec27b369e7116ae00ac
parentf48e59268bf801cf4f4d1e6715871e14fea31ce3 (diff)
downloadandroid_packages_apps_Trebuchet-87af0fded6d91b85c7a4bbf066f93d58c241b146.tar.gz
android_packages_apps_Trebuchet-87af0fded6d91b85c7a4bbf066f93d58c241b146.tar.bz2
android_packages_apps_Trebuchet-87af0fded6d91b85c7a4bbf066f93d58c241b146.zip
Removing reference of hostView from LauncherAppWidgetInfo
LauncherAppWidgetInfo is a model item and does not need to reference a view. Removing this dependency will allow cleaning up the item unbinding logic Bug: 28740269 Change-Id: I11fc2e2500b8fe29d157eefe74c70b1decdfd08d
-rw-r--r--src/com/android/launcher3/Launcher.java50
-rw-r--r--src/com/android/launcher3/LauncherAppWidgetInfo.java15
-rw-r--r--src/com/android/launcher3/Workspace.java43
3 files changed, 50 insertions, 58 deletions
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index eacf72aa1..6d5b203c1 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -1567,31 +1567,28 @@ public class Launcher extends Activity
if (!mRestoring) {
if (hostView == null) {
// Perform actual inflation because we're live
- launcherInfo.hostView = mAppWidgetHost.createView(this, appWidgetId,
- appWidgetInfo);
- } else {
- // The AppWidgetHostView has already been inflated and instantiated
- launcherInfo.hostView = hostView;
+ hostView = mAppWidgetHost.createView(this, appWidgetId, appWidgetInfo);
}
- launcherInfo.hostView.setVisibility(View.VISIBLE);
- addAppWidgetToWorkspace(launcherInfo, appWidgetInfo, isWorkspaceLocked());
+ hostView.setVisibility(View.VISIBLE);
+ addAppWidgetToWorkspace(hostView, launcherInfo, appWidgetInfo, isWorkspaceLocked());
}
resetAddInfo();
}
- private void addAppWidgetToWorkspace(LauncherAppWidgetInfo item,
+ private void addAppWidgetToWorkspace(
+ AppWidgetHostView hostView, LauncherAppWidgetInfo item,
LauncherAppWidgetProviderInfo appWidgetInfo, boolean insert) {
- item.hostView.setTag(item);
- item.onBindAppWidget(this);
+ hostView.setTag(item);
+ item.onBindAppWidget(this, hostView);
- item.hostView.setFocusable(true);
- item.hostView.setOnFocusChangeListener(mFocusHandler);
+ hostView.setFocusable(true);
+ hostView.setOnFocusChangeListener(mFocusHandler);
- mWorkspace.addInScreen(item.hostView, item.container, item.screenId,
+ mWorkspace.addInScreen(hostView, item.container, item.screenId,
item.cellX, item.cellY, item.spanX, item.spanY, insert);
if (!item.isCustomWidget()) {
- addWidgetToAutoAdvanceIfNeeded(item.hostView, appWidgetInfo);
+ addWidgetToAutoAdvanceIfNeeded(hostView, appWidgetInfo);
}
}
@@ -2374,8 +2371,7 @@ public class Launcher extends Activity
} else if (itemInfo instanceof LauncherAppWidgetInfo) {
final LauncherAppWidgetInfo widgetInfo = (LauncherAppWidgetInfo) itemInfo;
mWorkspace.removeWorkspaceItem(v);
- removeWidgetToAutoAdvance(widgetInfo.hostView);
- widgetInfo.hostView = null;
+ removeWidgetToAutoAdvance(v);
if (deleteFromDb) {
deleteWidgetInfo(widgetInfo);
}
@@ -3860,10 +3856,9 @@ public class Launcher extends Activity
private void bindSafeModeWidget(LauncherAppWidgetInfo item) {
PendingAppWidgetHostView view = new PendingAppWidgetHostView(this, item, true);
view.updateIcon(mIconCache);
- item.hostView = view;
- item.hostView.updateAppWidget(null);
- item.hostView.setOnClickListener(this);
- addAppWidgetToWorkspace(item, null, false);
+ view.updateAppWidget(null);
+ view.setOnClickListener(this);
+ addAppWidgetToWorkspace(view, item, null, false);
mWorkspace.requestLayout();
}
@@ -3976,18 +3971,17 @@ public class Launcher extends Activity
return;
}
- item.hostView = mAppWidgetHost.createView(this, item.appWidgetId, appWidgetInfo);
item.minSpanX = appWidgetInfo.minSpanX;
item.minSpanY = appWidgetInfo.minSpanY;
- addAppWidgetToWorkspace(item, appWidgetInfo, false);
+ addAppWidgetToWorkspace(
+ mAppWidgetHost.createView(this, item.appWidgetId, appWidgetInfo),
+ item, appWidgetInfo, false);
} else {
- PendingAppWidgetHostView view = new PendingAppWidgetHostView(this, item,
- mIsSafeModeEnabled);
+ PendingAppWidgetHostView view = new PendingAppWidgetHostView(this, item, false);
view.updateIcon(mIconCache);
- item.hostView = view;
- item.hostView.updateAppWidget(null);
- item.hostView.setOnClickListener(this);
- addAppWidgetToWorkspace(item, null, false);
+ view.updateAppWidget(null);
+ view.setOnClickListener(this);
+ addAppWidgetToWorkspace(view, item, null, false);
}
mWorkspace.requestLayout();
diff --git a/src/com/android/launcher3/LauncherAppWidgetInfo.java b/src/com/android/launcher3/LauncherAppWidgetInfo.java
index 55edf45d2..42d646820 100644
--- a/src/com/android/launcher3/LauncherAppWidgetInfo.java
+++ b/src/com/android/launcher3/LauncherAppWidgetInfo.java
@@ -80,12 +80,6 @@ public class LauncherAppWidgetInfo extends ItemInfo {
private boolean mHasNotifiedInitialWidgetSizeChanged;
- /**
- * View that holds this widget after it's been created. This view isn't created
- * until Launcher knows it's needed.
- */
- AppWidgetHostView hostView = null;
-
LauncherAppWidgetInfo(int appWidgetId, ComponentName providerName) {
if (appWidgetId == CUSTOM_WIDGET_ID) {
itemType = LauncherSettings.Favorites.ITEM_TYPE_CUSTOM_APPWIDGET;
@@ -121,25 +115,18 @@ public class LauncherAppWidgetInfo extends ItemInfo {
* When we bind the widget, we should notify the widget that the size has changed if we have not
* done so already (only really for default workspace widgets).
*/
- void onBindAppWidget(Launcher launcher) {
+ void onBindAppWidget(Launcher launcher, AppWidgetHostView hostView) {
if (!mHasNotifiedInitialWidgetSizeChanged) {
AppWidgetResizeFrame.updateWidgetSizeRanges(hostView, launcher, spanX, spanY);
mHasNotifiedInitialWidgetSizeChanged = true;
}
}
-
@Override
public String toString() {
return "AppWidget(id=" + Integer.toString(appWidgetId) + ")";
}
- @Override
- void unbind() {
- super.unbind();
- hostView = null;
- }
-
public final boolean isWidgetIdValid() {
return (restoreStatus & FLAG_ID_NOT_VALID) == 0;
}
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index 88e5251e5..e1f0faf5c 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -1096,10 +1096,11 @@ public class Workspace extends PagedView
for (int j = 0; j < itemCount; j++) {
View v = swc.getChildAt(j);
- if (v != null && v.getTag() instanceof LauncherAppWidgetInfo) {
+ if (v instanceof LauncherAppWidgetHostView
+ && v.getTag() instanceof LauncherAppWidgetInfo) {
LauncherAppWidgetInfo info = (LauncherAppWidgetInfo) v.getTag();
- LauncherAppWidgetHostView lahv = (LauncherAppWidgetHostView) info.hostView;
- if (lahv != null && lahv.isReinflateRequired()) {
+ LauncherAppWidgetHostView lahv = (LauncherAppWidgetHostView) v;
+ if (lahv.isReinflateRequired()) {
// Remove and rebind the current widget (which was inflated in the wrong
// orientation), but don't delete it from the database
mLauncher.removeItem(lahv, info, false /* deleteFromDb */);
@@ -4156,7 +4157,7 @@ public class Workspace extends PagedView
});
}
- public void widgetsRestored(ArrayList<LauncherAppWidgetInfo> changedInfo) {
+ public void widgetsRestored(final ArrayList<LauncherAppWidgetInfo> changedInfo) {
if (!changedInfo.isEmpty()) {
DeferredWidgetRefresh widgetRefresh = new DeferredWidgetRefresh(changedInfo,
mLauncher.getAppWidgetHost());
@@ -4177,12 +4178,18 @@ public class Workspace extends PagedView
} else {
// widgetRefresh will automatically run when the packages are updated.
// For now just update the progress bars
- for (LauncherAppWidgetInfo info : changedInfo) {
- if (info.hostView instanceof PendingAppWidgetHostView) {
- info.installProgress = 100;
- ((PendingAppWidgetHostView) info.hostView).applyState();
+ mapOverItems(MAP_NO_RECURSE, new ItemOperator() {
+ @Override
+ public boolean evaluate(ItemInfo info, View view) {
+ if (view instanceof PendingAppWidgetHostView
+ && changedInfo.contains(info)) {
+ ((LauncherAppWidgetInfo) info).installProgress = 100;
+ ((PendingAppWidgetHostView) view).applyState();
+ }
+ // process all the shortcuts
+ return false;
}
- }
+ });
}
}
}
@@ -4310,14 +4317,18 @@ public class Workspace extends PagedView
mRefreshPending = false;
- for (LauncherAppWidgetInfo info : mInfos) {
- if (info.hostView instanceof PendingAppWidgetHostView) {
- // Remove and rebind the current widget, but don't delete it from the database
- PendingAppWidgetHostView view = (PendingAppWidgetHostView) info.hostView;
- mLauncher.removeItem(view, info, false /* deleteFromDb */);
- mLauncher.bindAppWidget(info);
+ mapOverItems(MAP_NO_RECURSE, new ItemOperator() {
+ @Override
+ public boolean evaluate(ItemInfo info, View view) {
+ if (view instanceof PendingAppWidgetHostView && mInfos.contains(info)) {
+ PendingAppWidgetHostView hostView = (PendingAppWidgetHostView) view;
+ mLauncher.removeItem(view, info, false /* deleteFromDb */);
+ mLauncher.bindAppWidget((LauncherAppWidgetInfo) info);
+ }
+ // process all the shortcuts
+ return false;
}
- }
+ });
}
}
}