Cleaning up grid size specification in Launcher

This commit eliminates the notion of in-place rotations and a bunch of
associated complexities (including the notion of canonical coordinates).
Further, the number of x and y cells per workspace screen is now being stored
in a single location in the XML definition of Workspace. This fixes a couple
bugs where incorrect values were being used. Finally, eliminated the notion of
"shortAxis" and "longAxis" in terms of padding and cell count. These have been
translated to corresponding x and y axis values.

Change-Id: I30cfed66f82d739355b3f01730b28b6c0437989c
diff --git a/src/com/android/launcher2/LauncherModel.java b/src/com/android/launcher2/LauncherModel.java
index 45cef43..6c3ddd2 100644
--- a/src/com/android/launcher2/LauncherModel.java
+++ b/src/com/android/launcher2/LauncherModel.java
@@ -90,7 +90,8 @@
 
     private Bitmap mDefaultIcon;
 
-    private static LauncherModelOrientationHelper mModelOrientationHelper;
+    private static int mCellCountX;
+    private static int mCellCountY;
 
     public interface Callbacks {
         public int getCurrentWorkspaceScreen();
@@ -110,7 +111,6 @@
         mApp = app;
         mAllAppsList = new AllAppsList(iconCache);
         mIconCache = iconCache;
-        mModelOrientationHelper = new LauncherModelOrientationHelper(mApp);
 
         mDefaultIcon = Utilities.createIconBitmap(
                 app.getPackageManager().getDefaultActivityIcon(), app);
@@ -143,14 +143,6 @@
         }
     }
 
-    static int getCurrentOrientation() {
-        return mModelOrientationHelper.getCurrentOrientation();
-    }
-
-    static int getPreviousOrientationRelativeToCurrent() {
-        return mModelOrientationHelper.getPreviousOrientationRelativeToCurrent();
-    }
-
     /**
      * Move an item in the DB to a new <container, screen, cellX, cellY>
      */
@@ -164,11 +156,10 @@
 
         final ContentValues values = new ContentValues();
         final ContentResolver cr = context.getContentResolver();
-        final LauncherModelOrientationHelper.Coordinates coord = mModelOrientationHelper.getCanonicalCoordinates(item);
 
         values.put(LauncherSettings.Favorites.CONTAINER, item.container);
-        values.put(LauncherSettings.Favorites.CELLX, coord.x);
-        values.put(LauncherSettings.Favorites.CELLY, coord.y);
+        values.put(LauncherSettings.Favorites.CELLX, cellX);
+        values.put(LauncherSettings.Favorites.CELLY, cellY);
         values.put(LauncherSettings.Favorites.SCREEN, item.screen);
 
         cr.update(LauncherSettings.Favorites.getContentUri(item.id, false), values, null, null);
@@ -264,13 +255,12 @@
                         break;
                 }
 
-                final LauncherModelOrientationHelper.Coordinates coord = mModelOrientationHelper.getLocalCoordinates(c.getInt(cellXIndex), c.getInt(cellYIndex), 1, 1);
                 folderInfo.title = c.getString(titleIndex);
                 folderInfo.id = id;
                 folderInfo.container = c.getInt(containerIndex);
                 folderInfo.screen = c.getInt(screenIndex);
-                folderInfo.cellX = coord.x;
-                folderInfo.cellY = coord.y;
+                folderInfo.cellX = c.getInt(cellXIndex);
+                folderInfo.cellY = c.getInt(cellYIndex);
 
                 return folderInfo;
             }
@@ -296,9 +286,7 @@
         final ContentResolver cr = context.getContentResolver();
         item.onAddToDatabase(values);
 
-        // update the values to be written with their canonical counterparts
-        final LauncherModelOrientationHelper.Coordinates coord = mModelOrientationHelper.getCanonicalCoordinates(item);
-        item.updateValuesWithCoordinates(values, coord.x, coord.y);
+        item.updateValuesWithCoordinates(values, cellX, cellY);
 
         Uri result = cr.insert(notify ? LauncherSettings.Favorites.CONTENT_URI :
                 LauncherSettings.Favorites.CONTENT_URI_NO_NOTIFICATION, values);
@@ -311,31 +299,16 @@
     /**
      * Creates a new unique child id, for a given cell span across all layouts.
      */
-    static int getCanonicalCellLayoutChildId(int cellId, int screen, int localCellX, int localCellY, int spanX, int spanY) {
-        if (LauncherApplication.isInPlaceRotationEnabled()) {
-            LauncherModelOrientationHelper.Coordinates coord = mModelOrientationHelper.getCanonicalCoordinates(localCellX, localCellY, spanX, spanY);
-            return ((screen & 0xFF) << 16) | (coord.x & 0xFF) << 8 | (coord.y & 0xFF);
-        } else {
-            return ((cellId & 0xFF) << 16) | (localCellX & 0xFF) << 8 | (localCellY & 0xFF);
-        }
+    static int getCellLayoutChildId(int cellId, int screen, int localCellX, int localCellY, int spanX, int spanY) {
+        return ((cellId & 0xFF) << 16) | (localCellX & 0xFF) << 8 | (localCellY & 0xFF);
     }
 
-    /*
-     * Convenience functions to help return the local device width and height.
-     */
-    static int getLocalDeviceWidth() {
-        return mModelOrientationHelper.getLocalDeviceWidth();
+    static int getCellCountX() {
+        return mCellCountX;
     }
 
-    static int getLocalDeviceHeight() {
-        return mModelOrientationHelper.getLocalDeviceHeight();
-    }
-
-    /**
-     * Return the new local coordinates given the local coordinates from the previous orientation.
-     */
-    static LauncherModelOrientationHelper.Coordinates getLocalCoordinatesFromPreviousLocalCoordinates(CellLayout.LayoutParams lp) {
-        return mModelOrientationHelper.getLocalCoordinatesFromPreviousLocalCoordinates(lp.cellX, lp.cellY, lp.cellHSpan, lp.cellVSpan);
+    static int getCellCountY() {
+        return mCellCountY;
     }
 
     /**
@@ -343,7 +316,8 @@
      * when performing local/canonical coordinate transformations.
      */
     static void updateWorkspaceLayoutCells(int shortAxisCellCount, int longAxisCellCount) {
-        mModelOrientationHelper.updateDeviceDimensions(shortAxisCellCount, longAxisCellCount);
+        mCellCountX = shortAxisCellCount;
+        mCellCountY = longAxisCellCount;
     }
 
     /**
@@ -354,10 +328,7 @@
         final ContentResolver cr = context.getContentResolver();
 
         item.onAddToDatabase(values);
-
-        // update the values to be written with their canonical counterparts
-        final LauncherModelOrientationHelper.Coordinates coord = mModelOrientationHelper.getCanonicalCoordinates(item);
-        item.updateValuesWithCoordinates(values, coord.x, coord.y);
+        item.updateValuesWithCoordinates(values, item.cellX, item.cellY);
 
         cr.update(LauncherSettings.Favorites.getContentUri(item.id, false), values, null, null);
     }
@@ -393,11 +364,6 @@
         }
     }
 
-    public void updateOrientation() {
-        // we update the LauncherModelOrientationHelper orientation whenever we re-initialize
-        mModelOrientationHelper.updateOrientation(mApp);
-    }
-
     /**
      * Call from the handler for ACTION_PACKAGE_ADDED, ACTION_PACKAGE_REMOVED and
      * ACTION_PACKAGE_CHANGED.
@@ -712,7 +678,8 @@
             final Cursor c = contentResolver.query(
                     LauncherSettings.Favorites.CONTENT_URI, null, null, null, null);
 
-            final ItemInfo occupied[][][] = new ItemInfo[Launcher.SCREEN_COUNT][Launcher.NUMBER_CELLS_X][Launcher.NUMBER_CELLS_Y];
+            final ItemInfo occupied[][][] =
+                    new ItemInfo[Launcher.SCREEN_COUNT][mCellCountX][mCellCountY];
 
             try {
                 final int idIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites._ID);
@@ -747,11 +714,6 @@
                 final int displayModeIndex = c.getColumnIndexOrThrow(
                         LauncherSettings.Favorites.DISPLAY_MODE);
 
-
-                LauncherModelOrientationHelper.Coordinates localCoords;
-                int cellX;
-                int cellY;
-
                 ShortcutInfo info;
                 String intentDescription;
                 LauncherAppWidgetInfo appWidgetInfo;
@@ -785,17 +747,13 @@
                             if (info != null) {
                                 updateSavedIcon(context, info, c, iconIndex);
 
-                                cellX = c.getInt(cellXIndex);
-                                cellY = c.getInt(cellYIndex);
-                                localCoords = mModelOrientationHelper.getLocalCoordinates(cellX, cellY, 1, 1);
-
                                 info.intent = intent;
                                 info.id = c.getLong(idIndex);
                                 container = c.getInt(containerIndex);
                                 info.container = container;
                                 info.screen = c.getInt(screenIndex);
-                                info.cellX = localCoords.x;
-                                info.cellY = localCoords.y;
+                                info.cellX = c.getInt(cellXIndex);
+                                info.cellY = c.getInt(cellYIndex);
 
                                 // check & update map of what's occupied
                                 if (!checkItemPlacement(occupied, info)) {
@@ -829,17 +787,13 @@
                             id = c.getLong(idIndex);
                             UserFolderInfo folderInfo = findOrMakeUserFolder(mFolders, id);
 
-                            cellX = c.getInt(cellXIndex);
-                            cellY = c.getInt(cellYIndex);
-                            localCoords = mModelOrientationHelper.getLocalCoordinates(cellX, cellY, 1, 1);
-
                             folderInfo.title = c.getString(titleIndex);
                             folderInfo.id = id;
                             container = c.getInt(containerIndex);
                             folderInfo.container = container;
                             folderInfo.screen = c.getInt(screenIndex);
-                            folderInfo.cellX = localCoords.x;
-                            folderInfo.cellY = localCoords.y;
+                            folderInfo.cellX = c.getInt(cellXIndex);
+                            folderInfo.cellY = c.getInt(cellYIndex);
 
                             // check & update map of what's occupied
                             if (!checkItemPlacement(occupied, folderInfo)) {
@@ -877,18 +831,14 @@
                                     }
                                 }
 
-                                cellX = c.getInt(cellXIndex);
-                                cellY = c.getInt(cellYIndex);
-                                localCoords = mModelOrientationHelper.getLocalCoordinates(cellX, cellY, 1, 1);
-
                                 liveFolderInfo.title = c.getString(titleIndex);
                                 liveFolderInfo.id = id;
                                 liveFolderInfo.uri = uri;
                                 container = c.getInt(containerIndex);
                                 liveFolderInfo.container = container;
                                 liveFolderInfo.screen = c.getInt(screenIndex);
-                                liveFolderInfo.cellX = localCoords.x;
-                                liveFolderInfo.cellY = localCoords.y;
+                                liveFolderInfo.cellX = c.getInt(cellXIndex);
+                                liveFolderInfo.cellY = c.getInt(cellYIndex);
                                 liveFolderInfo.baseIntent = intent;
                                 liveFolderInfo.displayMode = c.getInt(displayModeIndex);
 
@@ -923,19 +873,13 @@
                                         + id + " appWidgetId=" + appWidgetId);
                                 itemsToRemove.add(id);
                             } else {
-                                cellX = c.getInt(cellXIndex);
-                                cellY = c.getInt(cellYIndex);
-                                int spanX = c.getInt(spanXIndex);
-                                int spanY = c.getInt(spanYIndex);
-                                localCoords = mModelOrientationHelper.getLocalCoordinates(cellX, cellY, spanX, spanY);
-
                                 appWidgetInfo = new LauncherAppWidgetInfo(appWidgetId);
                                 appWidgetInfo.id = id;
                                 appWidgetInfo.screen = c.getInt(screenIndex);
-                                appWidgetInfo.cellX = localCoords.x;
-                                appWidgetInfo.cellY = localCoords.y;
-                                appWidgetInfo.spanX = spanX;
-                                appWidgetInfo.spanY = spanY;
+                                appWidgetInfo.cellX = c.getInt(cellXIndex);
+                                appWidgetInfo.cellY = c.getInt(cellYIndex);
+                                appWidgetInfo.spanX = c.getInt(spanXIndex);
+                                appWidgetInfo.spanY = c.getInt(spanYIndex);
 
                                 container = c.getInt(containerIndex);
                                 if (container != LauncherSettings.Favorites.CONTAINER_DESKTOP) {
@@ -983,13 +927,13 @@
             if (DEBUG_LOADERS) {
                 Log.d(TAG, "loaded workspace in " + (SystemClock.uptimeMillis()-t) + "ms");
                 Log.d(TAG, "workspace layout: ");
-                for (int y = 0; y < Launcher.NUMBER_CELLS_Y; y++) {
+                for (int y = 0; y < mCellCountY; y++) {
                     String line = "";
                     for (int s = 0; s < Launcher.SCREEN_COUNT; s++) {
                         if (s > 0) {
                             line += " | ";
                         }
-                        for (int x = 0; x < Launcher.NUMBER_CELLS_X; x++) {
+                        for (int x = 0; x < mCellCountX; x++) {
                             line += ((occupied[s][x][y] != null) ? "#" : ".");
                         }
                     }