diff options
author | Joe Onorato <joeo@android.com> | 2009-11-06 16:25:04 -0500 |
---|---|---|
committer | Joe Onorato <joeo@android.com> | 2009-11-06 16:25:43 -0500 |
commit | ad72e1705c32da463a552f2283ae467dc15a4a34 (patch) | |
tree | b7cacbabbff5e9aa18ef34fc8773abf93fd286f3 | |
parent | 497c89387a3f9730a637b2f506dcd447266992e2 (diff) | |
download | android_packages_apps_Trebuchet-ad72e1705c32da463a552f2283ae467dc15a4a34.tar.gz android_packages_apps_Trebuchet-ad72e1705c32da463a552f2283ae467dc15a4a34.tar.bz2 android_packages_apps_Trebuchet-ad72e1705c32da463a552f2283ae467dc15a4a34.zip |
Fix launcher2 crash. We weren't initializing the list of folders. Bug 2210545.
-rw-r--r-- | src/com/android/launcher2/Launcher.java | 4 | ||||
-rw-r--r-- | src/com/android/launcher2/LauncherModel.java | 26 |
2 files changed, 23 insertions, 7 deletions
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java index 36d7da16e..6cccb77f2 100644 --- a/src/com/android/launcher2/Launcher.java +++ b/src/com/android/launcher2/Launcher.java @@ -66,6 +66,7 @@ import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProviderInfo; import java.util.ArrayList; +import java.util.Map.Entry; import java.util.HashMap; import java.io.DataOutputStream; import java.io.FileNotFoundException; @@ -1841,7 +1842,8 @@ public final class Launcher extends Activity /** * Implementation of the method from LauncherModel.Callbacks. */ - void bindFolders(HashMap<Long, FolderInfo> folders) { + public void bindFolders(HashMap<Long, FolderInfo> folders) { + mFolders.clear(); mFolders.putAll(folders); } diff --git a/src/com/android/launcher2/LauncherModel.java b/src/com/android/launcher2/LauncherModel.java index de4f35b53..7b53cd709 100644 --- a/src/com/android/launcher2/LauncherModel.java +++ b/src/com/android/launcher2/LauncherModel.java @@ -66,6 +66,7 @@ public class LauncherModel extends BroadcastReceiver { public int getCurrentWorkspaceScreen(); public void startBinding(); public void bindItems(ArrayList<ItemInfo> shortcuts, int start, int end); + public void bindFolders(HashMap<Long,FolderInfo> folders); public void finishBindingItems(); public void bindAppWidget(LauncherAppWidgetInfo info); public void bindAllApplications(ArrayList<ApplicationInfo> apps); @@ -378,7 +379,7 @@ public class LauncherModel extends BroadcastReceiver { final ArrayList<ItemInfo> mItems = new ArrayList<ItemInfo>(); final ArrayList<LauncherAppWidgetInfo> mAppWidgets = new ArrayList<LauncherAppWidgetInfo>(); - final HashMap<Long, FolderInfo> folders = new HashMap<Long, FolderInfo>(); + final HashMap<Long, FolderInfo> mFolders = new HashMap<Long, FolderInfo>(); /** * Call this from the ui thread so the handler is initialized on the correct thread. @@ -695,16 +696,16 @@ public class LauncherModel extends BroadcastReceiver { default: // Item is in a user folder UserFolderInfo folderInfo = - findOrMakeUserFolder(folders, container); + findOrMakeUserFolder(mFolders, container); folderInfo.add(info); break; } } break; - case LauncherSettings.Favorites.ITEM_TYPE_USER_FOLDER: + case LauncherSettings.Favorites.ITEM_TYPE_USER_FOLDER: id = c.getLong(idIndex); - UserFolderInfo folderInfo = findOrMakeUserFolder(folders, id); + UserFolderInfo folderInfo = findOrMakeUserFolder(mFolders, id); folderInfo.title = c.getString(titleIndex); @@ -720,11 +721,14 @@ public class LauncherModel extends BroadcastReceiver { mItems.add(folderInfo); break; } + + mFolders.put(folderInfo.id, folderInfo); break; + case LauncherSettings.Favorites.ITEM_TYPE_LIVE_FOLDER: id = c.getLong(idIndex); - LiveFolderInfo liveFolderInfo = findOrMakeLiveFolder(folders, id); + LiveFolderInfo liveFolderInfo = findOrMakeLiveFolder(mFolders, id); intentDescription = c.getString(intentIndex); intent = null; @@ -755,7 +759,9 @@ public class LauncherModel extends BroadcastReceiver { mItems.add(liveFolderInfo); break; } + mFolders.put(liveFolderInfo.id, liveFolderInfo); break; + case LauncherSettings.Favorites.ITEM_TYPE_WIDGET_SEARCH: widgetInfo = Widget.makeSearch(); @@ -774,6 +780,7 @@ public class LauncherModel extends BroadcastReceiver { mItems.add(widgetInfo); break; + case LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET: // Read all Launcher-specific widget details int appWidgetId = c.getInt(appWidgetIdIndex); @@ -845,6 +852,14 @@ public class LauncherModel extends BroadcastReceiver { } }); } + mHandler.post(new Runnable() { + public void run() { + Callbacks callbacks = tryGetCallbacks(); + if (callbacks != null) { + callbacks.bindFolders(mFolders); + } + } + }); // Wait until the queue goes empty. mHandler.postIdle(new Runnable() { public void run() { @@ -886,7 +901,6 @@ public class LauncherModel extends BroadcastReceiver { }); } } - // TODO: Bind the folders // Tell the workspace that we're done. mHandler.post(new Runnable() { public void run() { |