summaryrefslogtreecommitdiff
path: root/src/com/android/customization/picker/clock
diff options
context:
space:
mode:
authorGeorge Lin <giolin@google.com>2023-02-13 21:36:57 +0000
committerGeorge Lin <giolin@google.com>2023-02-14 02:04:53 +0000
commita15ab7f8a8d87f4cbd3aed3eb92ae7e9e4cc9b44 (patch)
treeb8f966877dbeeba1ca6efbbeb3b41af3785f8774 /src/com/android/customization/picker/clock
parent0fefd5e5ec08deff6f81d9bce30680f2d531d0f4 (diff)
downloadThemePicker-a15ab7f8a8d87f4cbd3aed3eb92ae7e9e4cc9b44.tar.gz
[WPPG] Get and set clock size in settings
Get and set the clock size in the settings. Test: Manually test that changing the clock size corresponds to the lockscreen clock size change Bug: 262924055 Change-Id: I3e4243207e215c0148c6c6db1880f15f95aa7982
Diffstat (limited to 'src/com/android/customization/picker/clock')
-rw-r--r--src/com/android/customization/picker/clock/data/repository/ClockPickerRepository.kt2
-rw-r--r--src/com/android/customization/picker/clock/data/repository/ClockPickerRepositoryImpl.kt33
-rw-r--r--src/com/android/customization/picker/clock/domain/interactor/ClockPickerInteractor.kt2
-rw-r--r--src/com/android/customization/picker/clock/shared/ClockSize.kt2
-rw-r--r--src/com/android/customization/picker/clock/ui/binder/ClockSettingsBinder.kt6
-rw-r--r--src/com/android/customization/picker/clock/ui/view/ClockSizeRadioButtonGroup.kt8
-rw-r--r--src/com/android/customization/picker/clock/ui/viewmodel/ClockSettingsViewModel.kt3
7 files changed, 38 insertions, 18 deletions
diff --git a/src/com/android/customization/picker/clock/data/repository/ClockPickerRepository.kt b/src/com/android/customization/picker/clock/data/repository/ClockPickerRepository.kt
index 19041978..690b6497 100644
--- a/src/com/android/customization/picker/clock/data/repository/ClockPickerRepository.kt
+++ b/src/com/android/customization/picker/clock/data/repository/ClockPickerRepository.kt
@@ -35,5 +35,5 @@ interface ClockPickerRepository {
fun setClockColor(color: Int?)
- fun setClockSize(size: ClockSize)
+ suspend fun setClockSize(size: ClockSize)
}
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 9e140aa4..e24b8759 100644
--- a/src/com/android/customization/picker/clock/data/repository/ClockPickerRepositoryImpl.kt
+++ b/src/com/android/customization/picker/clock/data/repository/ClockPickerRepositoryImpl.kt
@@ -16,24 +16,29 @@
*/
package com.android.customization.picker.clock.data.repository
+import android.provider.Settings
import android.util.Log
import com.android.customization.picker.clock.shared.ClockSize
import com.android.customization.picker.clock.shared.model.ClockMetadataModel
import com.android.systemui.plugins.ClockMetadata
import com.android.systemui.shared.clocks.ClockRegistry
+import com.android.wallpaper.settings.data.repository.SecureSettingsRepository
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.MutableStateFlow
-import kotlinx.coroutines.flow.asStateFlow
+import kotlinx.coroutines.flow.SharedFlow
+import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.callbackFlow
+import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.mapNotNull
+import kotlinx.coroutines.flow.shareIn
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
/** Implementation of [ClockPickerRepository], using [ClockRegistry]. */
class ClockPickerRepositoryImpl(
+ private val secureSettingsRepository: SecureSettingsRepository,
private val registry: ClockRegistry,
private val scope: CoroutineScope,
private val backgroundDispatcher: CoroutineDispatcher,
@@ -81,12 +86,26 @@ class ClockPickerRepositoryImpl(
registry.seedColor = color
}
- // TODO(b/262924055): Use the shared system UI component to query the clock size
- private val _selectedClockSize = MutableStateFlow(ClockSize.DYNAMIC)
- override val selectedClockSize: Flow<ClockSize> = _selectedClockSize.asStateFlow()
+ override val selectedClockSize: SharedFlow<ClockSize> =
+ secureSettingsRepository
+ .intSetting(
+ name = Settings.Secure.LOCKSCREEN_USE_DOUBLE_LINE_CLOCK,
+ )
+ .map { setting -> setting == 1 }
+ .map { isDynamic -> if (isDynamic) ClockSize.DYNAMIC else ClockSize.SMALL }
+ .shareIn(
+ scope = scope,
+ started = SharingStarted.WhileSubscribed(),
+ replay = 1,
+ )
- override fun setClockSize(size: ClockSize) {
- _selectedClockSize.value = size
+ override suspend fun setClockSize(size: ClockSize) {
+ withContext(backgroundDispatcher) {
+ secureSettingsRepository.set(
+ name = Settings.Secure.LOCKSCREEN_USE_DOUBLE_LINE_CLOCK,
+ value = if (size == ClockSize.DYNAMIC) 1 else 0,
+ )
+ }
}
private fun ClockMetadata.toModel(color: Int?): ClockMetadataModel {
diff --git a/src/com/android/customization/picker/clock/domain/interactor/ClockPickerInteractor.kt b/src/com/android/customization/picker/clock/domain/interactor/ClockPickerInteractor.kt
index 846ea21a..c12778b1 100644
--- a/src/com/android/customization/picker/clock/domain/interactor/ClockPickerInteractor.kt
+++ b/src/com/android/customization/picker/clock/domain/interactor/ClockPickerInteractor.kt
@@ -44,7 +44,7 @@ class ClockPickerInteractor(private val repository: ClockPickerRepository) {
repository.setClockColor(color)
}
- fun setClockSize(size: ClockSize) {
+ suspend fun setClockSize(size: ClockSize) {
repository.setClockSize(size)
}
}
diff --git a/src/com/android/customization/picker/clock/shared/ClockSize.kt b/src/com/android/customization/picker/clock/shared/ClockSize.kt
index 91c5cd41..279ee54b 100644
--- a/src/com/android/customization/picker/clock/shared/ClockSize.kt
+++ b/src/com/android/customization/picker/clock/shared/ClockSize.kt
@@ -18,5 +18,5 @@ package com.android.customization.picker.clock.shared
enum class ClockSize {
DYNAMIC,
- LARGE,
+ SMALL,
}
diff --git a/src/com/android/customization/picker/clock/ui/binder/ClockSettingsBinder.kt b/src/com/android/customization/picker/clock/ui/binder/ClockSettingsBinder.kt
index e785ebd0..ecbb9018 100644
--- a/src/com/android/customization/picker/clock/ui/binder/ClockSettingsBinder.kt
+++ b/src/com/android/customization/picker/clock/ui/binder/ClockSettingsBinder.kt
@@ -108,11 +108,11 @@ object ClockSettingsBinder {
when (size) {
ClockSize.DYNAMIC -> {
sizeOptions.radioButtonDynamic.isChecked = true
- sizeOptions.radioButtonLarge.isChecked = false
+ sizeOptions.radioButtonSmall.isChecked = false
}
- ClockSize.LARGE -> {
+ ClockSize.SMALL -> {
sizeOptions.radioButtonDynamic.isChecked = false
- sizeOptions.radioButtonLarge.isChecked = true
+ sizeOptions.radioButtonSmall.isChecked = true
}
}
}
diff --git a/src/com/android/customization/picker/clock/ui/view/ClockSizeRadioButtonGroup.kt b/src/com/android/customization/picker/clock/ui/view/ClockSizeRadioButtonGroup.kt
index fcf89049..909491a3 100644
--- a/src/com/android/customization/picker/clock/ui/view/ClockSizeRadioButtonGroup.kt
+++ b/src/com/android/customization/picker/clock/ui/view/ClockSizeRadioButtonGroup.kt
@@ -35,7 +35,7 @@ class ClockSizeRadioButtonGroup(
}
val radioButtonDynamic: RadioButton
- val radioButtonLarge: RadioButton
+ val radioButtonSmall: RadioButton
var onRadioButtonClickListener: OnRadioButtonClickListener? = null
init {
@@ -43,8 +43,8 @@ class ClockSizeRadioButtonGroup(
radioButtonDynamic = requireViewById(R.id.radio_button_dynamic)
val buttonDynamic = requireViewById<View>(R.id.button_container_dynamic)
buttonDynamic.setOnClickListener { onRadioButtonClickListener?.onClick(ClockSize.DYNAMIC) }
- radioButtonLarge = requireViewById(R.id.radio_button_large)
- val buttonLarge = requireViewById<View>(R.id.button_container_large)
- buttonLarge.setOnClickListener { onRadioButtonClickListener?.onClick(ClockSize.LARGE) }
+ radioButtonSmall = requireViewById(R.id.radio_button_large)
+ val buttonLarge = requireViewById<View>(R.id.button_container_small)
+ buttonLarge.setOnClickListener { onRadioButtonClickListener?.onClick(ClockSize.SMALL) }
}
}
diff --git a/src/com/android/customization/picker/clock/ui/viewmodel/ClockSettingsViewModel.kt b/src/com/android/customization/picker/clock/ui/viewmodel/ClockSettingsViewModel.kt
index 54aaec33..1ffb7b82 100644
--- a/src/com/android/customization/picker/clock/ui/viewmodel/ClockSettingsViewModel.kt
+++ b/src/com/android/customization/picker/clock/ui/viewmodel/ClockSettingsViewModel.kt
@@ -38,6 +38,7 @@ import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.mapLatest
import kotlinx.coroutines.flow.shareIn
import kotlinx.coroutines.flow.stateIn
+import kotlinx.coroutines.launch
/** View model for the clock settings screen. */
class ClockSettingsViewModel
@@ -189,7 +190,7 @@ private constructor(context: Context, private val interactor: ClockPickerInterac
val selectedClockSize: Flow<ClockSize> = interactor.selectedClockSize
fun setClockSize(size: ClockSize) {
- interactor.setClockSize(size)
+ viewModelScope.launch { interactor.setClockSize(size) }
}
private val _selectedTabPosition = MutableStateFlow(Tab.COLOR)