Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d5859e80 authored by Alex Chau's avatar Alex Chau
Browse files

Change grid migration to start from top to bottom

Fix: 222236363
Test: GridSizeMigrationTaskV2Test
Test: 4x4 -> 4x5/5x5 migration, 5x5 -> 4x5/4x4 migration
Change-Id: Id5d87b5d0bf9d7cc9154de81dd5edfb0ca9fa633
parent deae9343
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -395,7 +395,8 @@ public class GridSizeMigrationTaskV2 {
            mTrgX = trgX;
            mTrgY = trgY;
            mNextStartX = 0;
            mNextStartY = mTrgY - 1;
            mNextStartY = mScreenId == 0 && FeatureFlags.QSB_ON_FIRST_SCREEN
                    ? 1 /* smartspace */ : 0;
            List<DbEntry> existedEntries = mDestReader.mWorkspaceEntriesByScreenId.get(screenId);
            if (existedEntries != null) {
                for (DbEntry entry : existedEntries) {
@@ -430,7 +431,7 @@ public class GridSizeMigrationTaskV2 {
         * to speed up the search.
         */
        private boolean findPlacement(DbEntry entry) {
            for (int y = mNextStartY; y >= (mScreenId == 0 ? 1 /* smartspace */ : 0); y--) {
            for (int y = mNextStartY; y <  mTrgY; y++) {
                for (int x = mNextStartX; x < mTrgX; x++) {
                    boolean fits = mOccupied.isRegionVacant(x, y, entry.spanX, entry.spanY);
                    boolean minFits = mOccupied.isRegionVacant(x, y, entry.minSpanX,
@@ -753,7 +754,7 @@ public class GridSizeMigrationTaskV2 {
                return Integer.compare(screenId, another.screenId);
            }
            if (cellY != another.cellY) {
                return -Integer.compare(cellY, another.cellY);
                return Integer.compare(cellY, another.cellY);
            }
            return Integer.compare(cellX, another.cellX);
        }
+22 −12
Original line number Diff line number Diff line
@@ -101,16 +101,21 @@ class GridSizeMigrationTaskV2Test {
        modelHelper.addItem(SHORTCUT, 3, HOTSEAT, 0, 0, testPackage3, 3, TMP_CONTENT_URI)
        modelHelper.addItem(APP_ICON, 4, HOTSEAT, 0, 0, testPackage4, 4, TMP_CONTENT_URI)
        // Src grid icons
        modelHelper.addItem(APP_ICON, 0, DESKTOP, 2, 2, testPackage5, 5, TMP_CONTENT_URI)
        modelHelper.addItem(APP_ICON, 0, DESKTOP, 2, 3, testPackage6, 6, TMP_CONTENT_URI)
        modelHelper.addItem(APP_ICON, 0, DESKTOP, 4, 1, testPackage8, 8, TMP_CONTENT_URI)
        modelHelper.addItem(APP_ICON, 0, DESKTOP, 4, 2, testPackage9, 9, TMP_CONTENT_URI)
        modelHelper.addItem(APP_ICON, 0, DESKTOP, 4, 3, testPackage10, 10, TMP_CONTENT_URI)
        // _ _ _ _ _
        // _ _ _ _ 5
        // _ _ 6 _ 7
        // _ _ 8 _ 9
        // _ _ _ _ _
        modelHelper.addItem(APP_ICON, 0, DESKTOP, 4, 1, testPackage5, 5, TMP_CONTENT_URI)
        modelHelper.addItem(APP_ICON, 0, DESKTOP, 2, 2, testPackage6, 6, TMP_CONTENT_URI)
        modelHelper.addItem(APP_ICON, 0, DESKTOP, 4, 2, testPackage7, 7, TMP_CONTENT_URI)
        modelHelper.addItem(APP_ICON, 0, DESKTOP, 2, 3, testPackage8, 8, TMP_CONTENT_URI)
        modelHelper.addItem(APP_ICON, 0, DESKTOP, 4, 3, testPackage9, 9, TMP_CONTENT_URI)

        // Dest hotseat icons
        modelHelper.addItem(SHORTCUT, 1, HOTSEAT, 0, 0, testPackage2)
        // Dest grid icons
        modelHelper.addItem(APP_ICON, 0, DESKTOP, 2, 2, testPackage7)
        modelHelper.addItem(APP_ICON, 0, DESKTOP, 2, 2, testPackage10)

        idp.numDatabaseHotseatIcons = 4
        idp.numColumns = 4
@@ -174,13 +179,18 @@ class GridSizeMigrationTaskV2Test {
                Point(c.getInt(cellXIndex), c.getInt(cellYIndex))
        }
        c.close()
        // Expected dest grid icons
        // _ _ _ _
        // 5 6 7 8
        // 9 _ 10_
        // _ _ _ _
        assertThat(locMap.size.toLong()).isEqualTo(6)
        assertThat(locMap[testPackage8]).isEqualTo(Point(0, 2))
        assertThat(locMap[testPackage6]).isEqualTo(Point(0, 3))
        assertThat(locMap[testPackage10]).isEqualTo(Point(1, 3))
        assertThat(locMap[testPackage7]).isEqualTo(Point(2, 2))
        assertThat(locMap[testPackage5]).isEqualTo(Point(2, 3))
        assertThat(locMap[testPackage9]).isEqualTo(Point(3, 3))
        assertThat(locMap[testPackage5]).isEqualTo(Point(0, 1))
        assertThat(locMap[testPackage6]).isEqualTo(Point(1, 1))
        assertThat(locMap[testPackage7]).isEqualTo(Point(2, 1))
        assertThat(locMap[testPackage8]).isEqualTo(Point(3, 1))
        assertThat(locMap[testPackage9]).isEqualTo(Point(0, 2))
        assertThat(locMap[testPackage10]).isEqualTo(Point(2, 2))
    }

    @Test