diff --git a/src/com/android/launcher3/LauncherProvider.java b/src/com/android/launcher3/LauncherProvider.java index b952729bd0..a080dd8ca9 100644 --- a/src/com/android/launcher3/LauncherProvider.java +++ b/src/com/android/launcher3/LauncherProvider.java @@ -50,6 +50,7 @@ import android.provider.Settings; import android.text.TextUtils; import android.util.AttributeSet; import android.util.Log; +import android.util.SparseArray; import android.util.Xml; import com.android.launcher3.LauncherSettings.Favorites; @@ -1578,6 +1579,7 @@ public class LauncherProvider extends ContentProvider { final ArrayList shortcuts = new ArrayList(); final ArrayList folders = new ArrayList(); + final SparseArray hotseat = new SparseArray(); while (c.moveToNext()) { final int itemType = c.getInt(itemTypeIndex); @@ -1593,7 +1595,11 @@ public class LauncherProvider extends ContentProvider { int container = c.getInt(containerIndex); final String intentStr = c.getString(intentIndex); Launcher.addDumpLog(TAG, "migrating \"" - + c.getString(titleIndex) + "\": " + intentStr, true); + + c.getString(titleIndex) + "\" (" + + cellX + "," + cellY + "@" + + LauncherSettings.Favorites.containerToString(container) + + "/" + screen + + "): " + intentStr, true); if (itemType != Favorites.ITEM_TYPE_FOLDER) { @@ -1654,11 +1660,8 @@ public class LauncherProvider extends ContentProvider { values.put(LauncherSettings.Favorites.DISPLAY_MODE, c.getInt(displayModeIndex)); - if (container == LauncherSettings.Favorites.CONTAINER_HOTSEAT - && (screen >= hotseatWidth || - screen == grid.hotseatAllAppsRank)) { - // no room for you in the hotseat? it's off to the desktop with you - container = Favorites.CONTAINER_DESKTOP; + if (container == LauncherSettings.Favorites.CONTAINER_HOTSEAT) { + hotseat.put(screen, values); } if (container != LauncherSettings.Favorites.CONTAINER_DESKTOP) { @@ -1680,6 +1683,31 @@ public class LauncherProvider extends ContentProvider { } } + // Now that we have all the hotseat icons, let's go through them left-right + // and assign valid locations for them in the new hotseat + final int N = hotseat.size(); + for (int idx=0; idx= hotseatWidth) { + // no room for you in the hotseat? it's off to the desktop with you + values.put(LauncherSettings.Favorites.CONTAINER, + Favorites.CONTAINER_DESKTOP); + } + } + final ArrayList allItems = new ArrayList(); // Folders first allItems.addAll(folders); diff --git a/src/com/android/launcher3/LauncherSettings.java b/src/com/android/launcher3/LauncherSettings.java index f4ee3007d3..2a768a278f 100644 --- a/src/com/android/launcher3/LauncherSettings.java +++ b/src/com/android/launcher3/LauncherSettings.java @@ -171,6 +171,14 @@ class LauncherSettings { static final int CONTAINER_DESKTOP = -100; static final int CONTAINER_HOTSEAT = -101; + static final String containerToString(int container) { + switch (container) { + case CONTAINER_DESKTOP: return "desktop"; + case CONTAINER_HOTSEAT: return "hotseat"; + default: return String.valueOf(container); + } + } + /** * The screen holding the favorite (if container is CONTAINER_DESKTOP) *

Type: INTEGER