Convert SpringLoadedDragController to Kotlin
Bug: 379798547
Test: Verified that this works well on device.
Flag: EXEMPT kotlin conversion
Change-Id: Icaf874557e86a8231614ab75e55aedc8c3718703
diff --git a/src/com/android/launcher3/dragndrop/SpringLoadedDragController.java b/src/com/android/launcher3/dragndrop/SpringLoadedDragController.java
deleted file mode 100644
index bebef70..0000000
--- a/src/com/android/launcher3/dragndrop/SpringLoadedDragController.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2010 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.dragndrop;
-
-import com.android.launcher3.Alarm;
-import com.android.launcher3.CellLayout;
-import com.android.launcher3.Launcher;
-import com.android.launcher3.OnAlarmListener;
-import com.android.launcher3.Utilities;
-import com.android.launcher3.Workspace;
-
-public class SpringLoadedDragController implements OnAlarmListener {
- // how long the user must hover over a mini-screen before it unshrinks
- private static final long ENTER_SPRING_LOAD_HOVER_TIME = 500;
- private static final long ENTER_SPRING_LOAD_HOVER_TIME_IN_TEST = 3000;
- private static final long ENTER_SPRING_LOAD_CANCEL_HOVER_TIME = 950;
-
- Alarm mAlarm;
-
- // the screen the user is currently hovering over, if any
- private CellLayout mScreen;
- private Launcher mLauncher;
-
- public SpringLoadedDragController(Launcher launcher) {
- mLauncher = launcher;
- mAlarm = new Alarm();
- mAlarm.setOnAlarmListener(this);
- }
-
- private long getEnterSpringLoadHoverTime() {
- // Some TAPL tests are flaky on Cuttlefish with a low waiting time
- return Utilities.isRunningInTestHarness()
- ? ENTER_SPRING_LOAD_HOVER_TIME_IN_TEST
- : ENTER_SPRING_LOAD_HOVER_TIME;
- }
-
- public void cancel() {
- mAlarm.cancelAlarm();
- }
-
- // Set a new alarm to expire for the screen that we are hovering over now
- public void setAlarm(CellLayout cl) {
- mAlarm.cancelAlarm();
- mAlarm.setAlarm((cl == null) ? ENTER_SPRING_LOAD_CANCEL_HOVER_TIME
- : getEnterSpringLoadHoverTime());
- mScreen = cl;
- }
-
- // this is called when our timer runs out
- public void onAlarm(Alarm alarm) {
- if (mScreen != null) {
- // Snap to the screen that we are hovering over now
- Workspace<?> w = mLauncher.getWorkspace();
- if (!w.isVisible(mScreen)) {
- w.snapToPage(w.indexOfChild(mScreen));
- }
- } else {
- mLauncher.getDragController().cancelDrag();
- }
- }
-}
diff --git a/src/com/android/launcher3/dragndrop/SpringLoadedDragController.kt b/src/com/android/launcher3/dragndrop/SpringLoadedDragController.kt
new file mode 100644
index 0000000..2aeab9d
--- /dev/null
+++ b/src/com/android/launcher3/dragndrop/SpringLoadedDragController.kt
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2010 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.dragndrop
+
+import com.android.launcher3.Alarm
+import com.android.launcher3.CellLayout
+import com.android.launcher3.Launcher
+import com.android.launcher3.OnAlarmListener
+import com.android.launcher3.Utilities
+
+class SpringLoadedDragController(private val launcher: Launcher) : OnAlarmListener {
+ internal val alarm = Alarm().also { it.setOnAlarmListener(this) }
+
+ // the screen the user is currently hovering over, if any
+ private var screen: CellLayout? = null
+
+ fun cancel() = alarm.cancelAlarm()
+
+ // Set a new alarm to expire for the screen that we are hovering over now
+ fun setAlarm(cl: CellLayout?) {
+ cancel()
+ alarm.setAlarm(
+ when {
+ cl == null -> ENTER_SPRING_LOAD_CANCEL_HOVER_TIME
+ // Some TAPL tests are flaky on Cuttlefish with a low waiting time
+ Utilities.isRunningInTestHarness() -> ENTER_SPRING_LOAD_HOVER_TIME_IN_TEST
+ else -> ENTER_SPRING_LOAD_HOVER_TIME
+ }
+ )
+ screen = cl
+ }
+
+ // this is called when our timer runs out
+ override fun onAlarm(alarm: Alarm) {
+ if (screen != null) {
+ // Snap to the screen that we are hovering over now
+ with(launcher.workspace) { if (!isVisible(screen)) snapToPage(indexOfChild(screen)) }
+ } else {
+ launcher.dragController.cancelDrag()
+ }
+ }
+
+ companion object {
+ // how long the user must hover over a mini-screen before it unshrinks
+ private const val ENTER_SPRING_LOAD_HOVER_TIME: Long = 500
+ private const val ENTER_SPRING_LOAD_HOVER_TIME_IN_TEST: Long = 3000
+ private const val ENTER_SPRING_LOAD_CANCEL_HOVER_TIME: Long = 950
+ }
+}