mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-20 03:08:19 +00:00
This is a no-op change ensure this we have ReorderAlgorithmUnitTest. Flag: NA Bug: 229292911 Test: ReorderAlgorithmUnitTest Change-Id: I6ffe2a1260f869a4686a9f1e652dd1ab6d406269
62 lines
1.9 KiB
Kotlin
62 lines
1.9 KiB
Kotlin
/*
|
|
* Copyright (C) 2023 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.celllayout
|
|
|
|
import android.graphics.Rect
|
|
import android.util.ArrayMap
|
|
import android.view.View
|
|
import com.android.launcher3.util.CellAndSpan
|
|
|
|
/** Represents the solution to a reorder of items in the Workspace. */
|
|
class ItemConfiguration : CellAndSpan() {
|
|
@JvmField val map = ArrayMap<View, CellAndSpan>()
|
|
private val savedMap = ArrayMap<View, CellAndSpan>()
|
|
|
|
@JvmField val sortedViews = ArrayList<View>()
|
|
|
|
@JvmField var intersectingViews: ArrayList<View> = ArrayList()
|
|
|
|
@JvmField var isSolution = false
|
|
fun save() {
|
|
// Copy current state into savedMap
|
|
map.forEach { (k, v) -> savedMap[k]?.copyFrom(v) }
|
|
}
|
|
|
|
fun restore() {
|
|
// Restore current state from savedMap
|
|
savedMap.forEach { (k, v) -> map[k]?.copyFrom(v) }
|
|
}
|
|
|
|
fun add(v: View, cs: CellAndSpan) {
|
|
map[v] = cs
|
|
savedMap[v] = CellAndSpan()
|
|
sortedViews.add(v)
|
|
}
|
|
|
|
fun area(): Int {
|
|
return spanX * spanY
|
|
}
|
|
|
|
fun getBoundingRectForViews(views: ArrayList<View>, outRect: Rect) {
|
|
views
|
|
.mapNotNull { v -> map[v] }
|
|
.forEachIndexed { i, c ->
|
|
if (i == 0) outRect.set(c.cellX, c.cellY, c.cellX + c.spanX, c.cellY + c.spanY)
|
|
else outRect.union(c.cellX, c.cellY, c.cellX + c.spanX, c.cellY + c.spanY)
|
|
}
|
|
}
|
|
}
|