summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJoe Onorato <joeo@android.com>2009-11-06 16:25:04 -0500
committerJoe Onorato <joeo@android.com>2009-11-06 16:25:43 -0500
commitad72e1705c32da463a552f2283ae467dc15a4a34 (patch)
treeb7cacbabbff5e9aa18ef34fc8773abf93fd286f3 /src
parent497c89387a3f9730a637b2f506dcd447266992e2 (diff)
downloadandroid_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.
Diffstat (limited to 'src')
-rw-r--r--src/com/android/launcher2/Launcher.java4
-rw-r--r--src/com/android/launcher2/LauncherModel.java26
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() {