1 /*
2  * Copyright (C) 2024 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.wallpaper.customization.ui.viewmodel
18 
19 import com.android.wallpaper.customization.ui.util.ThemePickerCustomizationOptionUtil
20 import com.android.wallpaper.picker.customization.ui.viewmodel.CustomizationOptionsViewModel
21 import com.android.wallpaper.picker.customization.ui.viewmodel.DefaultCustomizationOptionsViewModel
22 import dagger.hilt.android.scopes.ViewModelScoped
23 import javax.inject.Inject
24 import kotlinx.coroutines.flow.Flow
25 import kotlinx.coroutines.flow.map
26 
27 @ViewModelScoped
28 class ThemePickerCustomizationOptionsViewModel
29 @Inject
30 constructor(
31     private val defaultCustomizationOptionsViewModel: DefaultCustomizationOptionsViewModel
32 ) : CustomizationOptionsViewModel {
33 
34     override val selectedOption = defaultCustomizationOptionsViewModel.selectedOption
35 
deselectOptionnull36     override fun deselectOption(): Boolean = defaultCustomizationOptionsViewModel.deselectOption()
37 
38     val onCustomizeClockClicked: Flow<(() -> Unit)?> =
39         selectedOption.map {
40             if (it == null) {
41                 {
42                     defaultCustomizationOptionsViewModel.selectOption(
43                         ThemePickerCustomizationOptionUtil.ThemePickerLockCustomizationOption.CLOCK
44                     )
45                 }
46             } else {
47                 null
48             }
49         }
50 
51     val onCustomizeShortcutClicked: Flow<(() -> Unit)?> =
<lambda>null52         selectedOption.map {
53             if (it == null) {
54                 {
55                     defaultCustomizationOptionsViewModel.selectOption(
56                         ThemePickerCustomizationOptionUtil.ThemePickerLockCustomizationOption
57                             .SHORTCUTS
58                     )
59                 }
60             } else {
61                 null
62             }
63         }
64 }
65