summaryrefslogtreecommitdiff
path: root/go
diff options
context:
space:
mode:
authorShikha Malhotra <shikhamalhotra@google.com>2022-04-11 07:57:18 +0000
committerShikha Malhotra <shikhamalhotra@google.com>2022-04-20 07:22:20 +0000
commite957b600d3359dcad29526046db176e1f170644d (patch)
tree161facc0b1f490d1b9aeb9e227f21ce301de4573 /go
parent80a315e50f80fe769390fe978e0809129612a640 (diff)
downloadLauncher3-e957b600d3359dcad29526046db176e1f170644d.tar.gz
Refactor code to be used in LauncherLily features
Refactor add to workspace code to be used in Lily Launcher. Also utilising code swap feature to swap out functionality of sorting items on workspaces and finding next vacant space. Bug: b/218186705 Test: Manually tested Launcher3 works. Change-Id: I42a44eabeb307e1d23ef333e0a169437f9062bb6
Diffstat (limited to 'go')
-rw-r--r--go/src/com/android/launcher3/util/AbsGridOccupancy.java56
1 files changed, 56 insertions, 0 deletions
diff --git a/go/src/com/android/launcher3/util/AbsGridOccupancy.java b/go/src/com/android/launcher3/util/AbsGridOccupancy.java
new file mode 100644
index 0000000000..4a46bd193f
--- /dev/null
+++ b/go/src/com/android/launcher3/util/AbsGridOccupancy.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.launcher3.util;
+
+/**
+ * Defines method to find the next vacant cell on a grid.
+ * This uses the default top-down, left-right approach and can be over-written through
+ * code swaps in different launchers.
+ */
+public abstract class AbsGridOccupancy {
+
+ /**
+ * Find the first vacant cell, if there is one.
+ *
+ * @param vacantOut Holds the x and y coordinate of the vacant cell
+ * @param spanX Horizontal cell span.
+ * @param spanY Vertical cell span.
+ *
+ * @return true if a vacant cell was found
+ */
+ protected boolean findVacantCell(int[] vacantOut, boolean[][] cells, int countX, int countY,
+ int spanX, int spanY) {
+ for (int y = 0; (y + spanY) <= countY; y++) {
+ for (int x = 0; (x + spanX) <= countX; x++) {
+ boolean available = !cells[x][y];
+ out:
+ for (int i = x; i < x + spanX; i++) {
+ for (int j = y; j < y + spanY; j++) {
+ available = available && !cells[i][j];
+ if (!available) break out;
+ }
+ }
+ if (available) {
+ vacantOut[0] = x;
+ vacantOut[1] = y;
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+}