1 /* 2 * Copyright (C) 2023 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.picker.preview.ui.binder 17 18 import android.content.Context 19 import android.view.View 20 import androidx.lifecycle.LifecycleOwner 21 import androidx.transition.Transition 22 import com.android.wallpaper.picker.preview.ui.view.DualPreviewViewPager 23 import com.android.wallpaper.picker.preview.ui.view.PreviewTabs 24 import com.android.wallpaper.picker.preview.ui.viewmodel.FullPreviewConfigViewModel 25 import com.android.wallpaper.picker.preview.ui.viewmodel.WallpaperPreviewViewModel 26 import com.android.wallpaper.util.wallpaperconnection.WallpaperConnectionUtils 27 import kotlinx.coroutines.CompletableDeferred 28 import kotlinx.coroutines.CoroutineScope 29 30 /** 31 * This binder binds the data and view models for the dual preview collection on the small preview 32 * screen. 33 */ 34 object DualPreviewSelectorBinder { 35 bindnull36 fun bind( 37 tabs: PreviewTabs?, 38 dualPreviewView: DualPreviewViewPager, 39 wallpaperPreviewViewModel: WallpaperPreviewViewModel, 40 applicationContext: Context, 41 mainScope: CoroutineScope, 42 viewLifecycleOwner: LifecycleOwner, 43 transition: Transition?, 44 transitionConfig: FullPreviewConfigViewModel?, 45 wallpaperConnectionUtils: WallpaperConnectionUtils, 46 isFirstBindingDeferred: CompletableDeferred<Boolean>, 47 navigate: (View) -> Unit, 48 ) { 49 DualPreviewPagerBinder.bind( 50 dualPreviewView, 51 wallpaperPreviewViewModel, 52 applicationContext, 53 mainScope, 54 viewLifecycleOwner, 55 transition, 56 transitionConfig, 57 wallpaperConnectionUtils, 58 isFirstBindingDeferred, 59 navigate, 60 ) 61 62 tabs?.let { TabsBinder.bind(it, wallpaperPreviewViewModel, viewLifecycleOwner) } 63 } 64 } 65