diff options
author | Danesh M <daneshm90@gmail.com> | 2013-12-04 21:37:46 -0800 |
---|---|---|
committer | Michael Bestas <mikeioannina@gmail.com> | 2014-01-30 08:13:46 +0200 |
commit | b54b34edd5c87e6d0702793b423b14dc24fb1076 (patch) | |
tree | 569cbfc176703f0a10bb105e394197a531d65a4c /src/com/android/launcher3/LauncherModel.java | |
parent | cebd8d4ed0486127dc997e1b2ca25a173df3e4d1 (diff) | |
download | android_packages_apps_Trebuchet-b54b34edd5c87e6d0702793b423b14dc24fb1076.tar.gz android_packages_apps_Trebuchet-b54b34edd5c87e6d0702793b423b14dc24fb1076.tar.bz2 android_packages_apps_Trebuchet-b54b34edd5c87e6d0702793b423b14dc24fb1076.zip |
Trebuchet : Default workspace improvements
Ported from cm-10.2
Adds support for fallback in default_workspace
Change-Id: I2590ae2d5e3c1b6124061581b9ffa206d611c608
Diffstat (limited to 'src/com/android/launcher3/LauncherModel.java')
-rw-r--r-- | src/com/android/launcher3/LauncherModel.java | 126 |
1 files changed, 63 insertions, 63 deletions
diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java index 70b6d55b1..5b2ba588c 100644 --- a/src/com/android/launcher3/LauncherModel.java +++ b/src/com/android/launcher3/LauncherModel.java @@ -1303,6 +1303,69 @@ public class LauncherModel extends BroadcastReceiver { return false; } + // check & update map of what's occupied; used to discard overlapping/invalid items + public boolean checkItemPlacement(HashMap<Long, ItemInfo[][]> occupied, ItemInfo item, + AtomicBoolean deleteOnItemOverlap) { + LauncherAppState app = LauncherAppState.getInstance(); + DeviceProfile grid = app.getDynamicGrid().getDeviceProfile(); + int countX = (int) grid.numColumns; + int countY = (int) grid.numRows; + + long containerIndex = item.screenId; + if (item.container == LauncherSettings.Favorites.CONTAINER_HOTSEAT) { + if (occupied.containsKey(LauncherSettings.Favorites.CONTAINER_HOTSEAT)) { + if (occupied.get(LauncherSettings.Favorites.CONTAINER_HOTSEAT) + [(int) item.screenId][0] != null) { + Log.e(TAG, "Error loading shortcut into hotseat " + item + + " into position (" + item.screenId + ":" + item.cellX + "," + + item.cellY + ") occupied by " + + occupied.get(LauncherSettings.Favorites.CONTAINER_HOTSEAT) + [(int) item.screenId][0]); + if (occupied.get(LauncherSettings.Favorites.CONTAINER_HOTSEAT) + [(int) item.screenId][0].itemType == LauncherSettings.Favorites.ITEM_TYPE_ALLAPPS) { + deleteOnItemOverlap.set(true); + } + return false; + } + } else { + ItemInfo[][] items = new ItemInfo[countX + 1][countY + 1]; + items[(int) item.screenId][0] = item; + occupied.put((long) LauncherSettings.Favorites.CONTAINER_HOTSEAT, items); + return true; + } + } else if (item.container != LauncherSettings.Favorites.CONTAINER_DESKTOP) { + // Skip further checking if it is not the hotseat or workspace container + return true; + } + + if (!occupied.containsKey(item.screenId)) { + ItemInfo[][] items = new ItemInfo[countX + 1][countY + 1]; + occupied.put(item.screenId, items); + } + + ItemInfo[][] screens = occupied.get(item.screenId); + // Check if any workspace icons overlap with each other + for (int x = item.cellX; x < (item.cellX+item.spanX); x++) { + for (int y = item.cellY; y < (item.cellY+item.spanY); y++) { + if (screens[x][y] != null) { + Log.e(TAG, "Error loading shortcut " + item + + " into cell (" + containerIndex + "-" + item.screenId + ":" + + x + "," + y + + ") occupied by " + + screens[x][y]); + return false; + } + } + } + for (int x = item.cellX; x < (item.cellX+item.spanX); x++) { + for (int y = item.cellY; y < (item.cellY+item.spanY); y++) { + screens[x][y] = item; + } + } + + return true; + } + /** * Runnable for the thread that loads the contents of the launcher: * - workspace icons @@ -1571,69 +1634,6 @@ public class LauncherModel extends BroadcastReceiver { (info.cellY + info.spanY) > (int) grid.numRows; } - // check & update map of what's occupied; used to discard overlapping/invalid items - private boolean checkItemPlacement(HashMap<Long, ItemInfo[][]> occupied, ItemInfo item, - AtomicBoolean deleteOnItemOverlap) { - LauncherAppState app = LauncherAppState.getInstance(); - DeviceProfile grid = app.getDynamicGrid().getDeviceProfile(); - int countX = (int) grid.numColumns; - int countY = (int) grid.numRows; - - long containerIndex = item.screenId; - if (item.container == LauncherSettings.Favorites.CONTAINER_HOTSEAT) { - if (occupied.containsKey(LauncherSettings.Favorites.CONTAINER_HOTSEAT)) { - if (occupied.get(LauncherSettings.Favorites.CONTAINER_HOTSEAT) - [(int) item.screenId][0] != null) { - Log.e(TAG, "Error loading shortcut into hotseat " + item - + " into position (" + item.screenId + ":" + item.cellX + "," - + item.cellY + ") occupied by " - + occupied.get(LauncherSettings.Favorites.CONTAINER_HOTSEAT) - [(int) item.screenId][0]); - if (occupied.get(LauncherSettings.Favorites.CONTAINER_HOTSEAT) - [(int) item.screenId][0].itemType == LauncherSettings.Favorites.ITEM_TYPE_ALLAPPS) { - deleteOnItemOverlap.set(true); - } - return false; - } - } else { - ItemInfo[][] items = new ItemInfo[countX + 1][countY + 1]; - items[(int) item.screenId][0] = item; - occupied.put((long) LauncherSettings.Favorites.CONTAINER_HOTSEAT, items); - return true; - } - } else if (item.container != LauncherSettings.Favorites.CONTAINER_DESKTOP) { - // Skip further checking if it is not the hotseat or workspace container - return true; - } - - if (!occupied.containsKey(item.screenId)) { - ItemInfo[][] items = new ItemInfo[countX + 1][countY + 1]; - occupied.put(item.screenId, items); - } - - ItemInfo[][] screens = occupied.get(item.screenId); - // Check if any workspace icons overlap with each other - for (int x = item.cellX; x < (item.cellX+item.spanX); x++) { - for (int y = item.cellY; y < (item.cellY+item.spanY); y++) { - if (screens[x][y] != null) { - Log.e(TAG, "Error loading shortcut " + item - + " into cell (" + containerIndex + "-" + item.screenId + ":" - + x + "," + y - + ") occupied by " - + screens[x][y]); - return false; - } - } - } - for (int x = item.cellX; x < (item.cellX+item.spanX); x++) { - for (int y = item.cellY; y < (item.cellY+item.spanY); y++) { - screens[x][y] = item; - } - } - - return true; - } - /** Clears all the sBg data structures */ private void clearSBgDataStructures() { synchronized (sBgLock) { |