Merge "[WPPG] Get and set clock size in settings" into tm-qpr-dev
diff --git a/res/values/strings.xml b/res/values/strings.xml
index faba65c..c1bdc54 100755
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -33,7 +33,7 @@
<!-- The content description of clock entry. [CHAR LIMIT=NONE] -->
<string name="clock_picker_entry_content_description">Change a custom clock</string>
- <!-- Title of a section of the customization picker where the user can configure Clock face. [CHAR LIMIT=15] -->
+ <!-- Title of a section of the customization picker where the user can configure Clock face. [CHAR LIMIT=19] -->
<string name="clock_settings_title">Clock Settings</string>
<!-- Title of a tab to change the clock color. [CHAR LIMIT=15] -->
diff --git a/src/com/android/customization/picker/HorizontalTouchMovementAwareNestedScrollView.kt b/src/com/android/customization/picker/HorizontalTouchMovementAwareNestedScrollView.kt
new file mode 100644
index 0000000..06cf753
--- /dev/null
+++ b/src/com/android/customization/picker/HorizontalTouchMovementAwareNestedScrollView.kt
@@ -0,0 +1,64 @@
+/*
+ * 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.customization.picker
+
+import android.content.Context
+import android.util.AttributeSet
+import android.view.MotionEvent
+import android.view.ViewConfiguration
+import androidx.core.widget.NestedScrollView
+import kotlin.math.abs
+
+/**
+ * This nested scroll view will detect horizontal touch movements and stop vertical scrolls when a
+ * horizontal touch movement is detected.
+ */
+class HorizontalTouchMovementAwareNestedScrollView(context: Context, attrs: AttributeSet?) :
+ NestedScrollView(context, attrs) {
+
+ private var startXPosition = 0f
+ private var startYPosition = 0f
+ private var isHorizontalTouchMovement = false
+
+ override fun onInterceptTouchEvent(event: MotionEvent): Boolean {
+ when (event.action) {
+ MotionEvent.ACTION_DOWN -> {
+ startXPosition = event.x
+ startYPosition = event.y
+ isHorizontalTouchMovement = false
+ }
+ MotionEvent.ACTION_MOVE -> {
+ val xMoveDistance = abs(event.x - startXPosition)
+ val yMoveDistance = abs(event.y - startYPosition)
+ if (
+ !isHorizontalTouchMovement &&
+ xMoveDistance > yMoveDistance &&
+ xMoveDistance > ViewConfiguration.get(context).scaledTouchSlop
+ ) {
+ isHorizontalTouchMovement = true
+ }
+ }
+ else -> {}
+ }
+ return if (isHorizontalTouchMovement) {
+ // We only want to intercept the touch event when the touch moves more vertically than
+ // horizontally. So we return false.
+ false
+ } else {
+ super.onInterceptTouchEvent(event)
+ }
+ }
+}
diff --git a/src/com/android/customization/picker/clock/data/repository/ClockPickerRepositoryImpl.kt b/src/com/android/customization/picker/clock/data/repository/ClockPickerRepositoryImpl.kt
index e24b875..6c845f9 100644
--- a/src/com/android/customization/picker/clock/data/repository/ClockPickerRepositoryImpl.kt
+++ b/src/com/android/customization/picker/clock/data/repository/ClockPickerRepositoryImpl.kt
@@ -71,7 +71,12 @@
trySend(model)
}
- val listener = ClockRegistry.ClockChangeListener { scope.launch { send() } }
+ val listener =
+ object : ClockRegistry.ClockChangeListener {
+ override fun onCurrentClockChanged() {
+ scope.launch { send() }
+ }
+ }
registry.registerClockChangeListener(listener)
send()
awaitClose { registry.unregisterClockChangeListener(listener) }