am ad72e170: Fix launcher2 crash. We weren\'t initializing the list of folders. Bug 2210545.

Merge commit 'ad72e1705c32da463a552f2283ae467dc15a4a34' into eclair-mr2

* commit 'ad72e1705c32da463a552f2283ae467dc15a4a34':
  Fix launcher2 crash.  We weren't initializing the list of folders.  Bug 2210545.
This commit is contained in:
Joe Onorato
2009-11-06 13:37:09 -08:00
committed by Android Git Automerger
2 changed files with 23 additions and 7 deletions
+3 -1
View File
@@ -66,6 +66,7 @@ import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProviderInfo; import android.appwidget.AppWidgetProviderInfo;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Map.Entry;
import java.util.HashMap; import java.util.HashMap;
import java.io.DataOutputStream; import java.io.DataOutputStream;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
@@ -1841,7 +1842,8 @@ public final class Launcher extends Activity
/** /**
* Implementation of the method from LauncherModel.Callbacks. * 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); mFolders.putAll(folders);
} }
+20 -6
View File
@@ -66,6 +66,7 @@ public class LauncherModel extends BroadcastReceiver {
public int getCurrentWorkspaceScreen(); public int getCurrentWorkspaceScreen();
public void startBinding(); public void startBinding();
public void bindItems(ArrayList<ItemInfo> shortcuts, int start, int end); public void bindItems(ArrayList<ItemInfo> shortcuts, int start, int end);
public void bindFolders(HashMap<Long,FolderInfo> folders);
public void finishBindingItems(); public void finishBindingItems();
public void bindAppWidget(LauncherAppWidgetInfo info); public void bindAppWidget(LauncherAppWidgetInfo info);
public void bindAllApplications(ArrayList<ApplicationInfo> apps); public void bindAllApplications(ArrayList<ApplicationInfo> apps);
@@ -378,7 +379,7 @@ public class LauncherModel extends BroadcastReceiver {
final ArrayList<ItemInfo> mItems = new ArrayList<ItemInfo>(); final ArrayList<ItemInfo> mItems = new ArrayList<ItemInfo>();
final ArrayList<LauncherAppWidgetInfo> mAppWidgets = new ArrayList<LauncherAppWidgetInfo>(); 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. * 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: default:
// Item is in a user folder // Item is in a user folder
UserFolderInfo folderInfo = UserFolderInfo folderInfo =
findOrMakeUserFolder(folders, container); findOrMakeUserFolder(mFolders, container);
folderInfo.add(info); folderInfo.add(info);
break; break;
} }
} }
break; break;
case LauncherSettings.Favorites.ITEM_TYPE_USER_FOLDER:
case LauncherSettings.Favorites.ITEM_TYPE_USER_FOLDER:
id = c.getLong(idIndex); id = c.getLong(idIndex);
UserFolderInfo folderInfo = findOrMakeUserFolder(folders, id); UserFolderInfo folderInfo = findOrMakeUserFolder(mFolders, id);
folderInfo.title = c.getString(titleIndex); folderInfo.title = c.getString(titleIndex);
@@ -720,11 +721,14 @@ public class LauncherModel extends BroadcastReceiver {
mItems.add(folderInfo); mItems.add(folderInfo);
break; break;
} }
mFolders.put(folderInfo.id, folderInfo);
break; break;
case LauncherSettings.Favorites.ITEM_TYPE_LIVE_FOLDER: case LauncherSettings.Favorites.ITEM_TYPE_LIVE_FOLDER:
id = c.getLong(idIndex); id = c.getLong(idIndex);
LiveFolderInfo liveFolderInfo = findOrMakeLiveFolder(folders, id); LiveFolderInfo liveFolderInfo = findOrMakeLiveFolder(mFolders, id);
intentDescription = c.getString(intentIndex); intentDescription = c.getString(intentIndex);
intent = null; intent = null;
@@ -755,7 +759,9 @@ public class LauncherModel extends BroadcastReceiver {
mItems.add(liveFolderInfo); mItems.add(liveFolderInfo);
break; break;
} }
mFolders.put(liveFolderInfo.id, liveFolderInfo);
break; break;
case LauncherSettings.Favorites.ITEM_TYPE_WIDGET_SEARCH: case LauncherSettings.Favorites.ITEM_TYPE_WIDGET_SEARCH:
widgetInfo = Widget.makeSearch(); widgetInfo = Widget.makeSearch();
@@ -774,6 +780,7 @@ public class LauncherModel extends BroadcastReceiver {
mItems.add(widgetInfo); mItems.add(widgetInfo);
break; break;
case LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET: case LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET:
// Read all Launcher-specific widget details // Read all Launcher-specific widget details
int appWidgetId = c.getInt(appWidgetIdIndex); 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. // Wait until the queue goes empty.
mHandler.postIdle(new Runnable() { mHandler.postIdle(new Runnable() {
public void run() { public void run() {
@@ -886,7 +901,6 @@ public class LauncherModel extends BroadcastReceiver {
}); });
} }
} }
// TODO: Bind the folders
// Tell the workspace that we're done. // Tell the workspace that we're done.
mHandler.post(new Runnable() { mHandler.post(new Runnable() {
public void run() { public void run() {