• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2021 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 package com.android.wallpaper.model
17 
18 import android.app.WallpaperColors
19 import androidx.lifecycle.LiveData
20 import androidx.lifecycle.MutableLiveData
21 import kotlinx.coroutines.flow.MutableStateFlow
22 import kotlinx.coroutines.flow.StateFlow
23 import kotlinx.coroutines.flow.asStateFlow
24 
25 /**
26  * ViewModel class to keep track of WallpaperColors for the current wallpaper
27  *
28  * TODO (b/269451870): Rename to WallpaperColorsRepository
29  */
30 class WallpaperColorsViewModel {
31 
32     /**
33      * WallpaperColors exposed as live data to allow Java integration
34      *
35      * TODO (b/262924584): Remove after ColorSectionController2 & ColorCustomizationManager refactor
36      */
<lambda>null37     private val _homeWallpaperColorsLiveData: MutableLiveData<WallpaperColors> by lazy {
38         MutableLiveData<WallpaperColors>()
39     }
40     val homeWallpaperColorsLiveData: LiveData<WallpaperColors> = _homeWallpaperColorsLiveData
<lambda>null41     private val _lockWallpaperColorsLiveData: MutableLiveData<WallpaperColors> by lazy {
42         MutableLiveData<WallpaperColors>()
43     }
44     val lockWallpaperColorsLiveData: LiveData<WallpaperColors> = _lockWallpaperColorsLiveData
45 
46     private val _homeWallpaperColors = MutableStateFlow<WallpaperColors?>(null)
47     /** WallpaperColors for the currently set home wallpaper */
48     val homeWallpaperColors: StateFlow<WallpaperColors?> = _homeWallpaperColors.asStateFlow()
49 
50     private val _lockWallpaperColors = MutableStateFlow<WallpaperColors?>(null)
51     /** WallpaperColors for the currently set lock wallpaper */
52     val lockWallpaperColors: StateFlow<WallpaperColors?> = _lockWallpaperColors.asStateFlow()
53 
setHomeWallpaperColorsnull54     fun setHomeWallpaperColors(colors: WallpaperColors?) {
55         _homeWallpaperColors.value = colors
56         if (colors != _homeWallpaperColorsLiveData.value) {
57             _homeWallpaperColorsLiveData.value = colors
58         }
59     }
60 
setLockWallpaperColorsnull61     fun setLockWallpaperColors(colors: WallpaperColors?) {
62         _lockWallpaperColors.value = colors
63         if (colors != _lockWallpaperColorsLiveData.value) {
64             _lockWallpaperColorsLiveData.value = colors
65         }
66     }
67 }
68