Loading res/layout/fragment_clock_settings.xml +22 −10 Original line number Diff line number Diff line Loading @@ -24,25 +24,37 @@ android:id="@+id/section_header_container" android:layout_width="match_parent" android:layout_height="wrap_content"> <include layout="@layout/section_header" /> </FrameLayout> <com.android.wallpaper.picker.DisplayAspectRatioFrameLayout <FrameLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:paddingTop="36dp" android:paddingBottom="40dp"> <com.android.wallpaper.picker.DisplayAspectRatioFrameLayout android:layout_width="match_parent" android:layout_height="match_parent"> <include android:id="@+id/preview" android:id="@+id/lock_preview" layout="@layout/wallpaper_preview_card" android:layout_width="0dp" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" /> </com.android.wallpaper.picker.DisplayAspectRatioFrameLayout> <com.android.customization.picker.clock.ui.view.ClockCarouselView android:id="@+id/clock_carousel_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:visibility="gone" /> </FrameLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" Loading src/com/android/customization/picker/clock/ui/fragment/ClockSettingsFragment.kt +51 −22 Original line number Diff line number Diff line Loading @@ -19,20 +19,24 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.cardview.widget.CardView import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.get import androidx.lifecycle.lifecycleScope import com.android.customization.module.ThemePickerInjector import com.android.customization.picker.clock.ui.binder.ClockSettingsBinder import com.android.customization.picker.clock.ui.viewmodel.ClockSettingsViewModel import com.android.customization.picker.quickaffordance.ui.binder.KeyguardQuickAffordancePreviewBinder import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQuickAffordancePickerViewModel import com.android.wallpaper.R import com.android.wallpaper.model.WallpaperColorsViewModel import com.android.wallpaper.module.InjectorProvider import com.android.wallpaper.picker.AppbarFragment import com.android.wallpaper.picker.customization.ui.binder.ScreenPreviewBinder import com.android.wallpaper.picker.customization.ui.viewmodel.ScreenPreviewViewModel import com.android.wallpaper.util.PreviewUtils import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.launch import kotlinx.coroutines.suspendCancellableCoroutine import kotlinx.coroutines.withContext @OptIn(ExperimentalCoroutinesApi::class) Loading @@ -58,34 +62,59 @@ class ClockSettingsFragment : AppbarFragment() { false, ) setUpToolbar(view) val context = requireContext() val activity = requireActivity() val injector = InjectorProvider.getInjector() as ThemePickerInjector // TODO(b/262924055): Modify to render the lockscreen properly val viewModel: KeyguardQuickAffordancePickerViewModel = ViewModelProvider( requireActivity(), injector.getKeyguardQuickAffordancePickerViewModelFactory(requireContext()), val lockScreenView: CardView = view.requireViewById(R.id.lock_preview) val colorViewModel = ViewModelProvider(activity)[WallpaperColorsViewModel::class.java] val displayUtils = injector.getDisplayUtils(context) ScreenPreviewBinder.bind( activity = activity, previewView = lockScreenView, viewModel = ScreenPreviewViewModel( previewUtils = PreviewUtils( context = context, authority = resources.getString( R.string.lock_screen_preview_provider_authority, ), ), wallpaperInfoProvider = { suspendCancellableCoroutine { continuation -> injector .getCurrentWallpaperInfoFactory(context) .createCurrentWallpaperInfos( { homeWallpaper, lockWallpaper, _ -> continuation.resume( homeWallpaper ?: lockWallpaper, null, ) }, /* forceRefresh= */ true, ) .get() KeyguardQuickAffordancePreviewBinder.bind( activity = requireActivity(), previewView = view.requireViewById(R.id.preview), viewModel = viewModel, } }, onWallpaperColorChanged = { colors -> colorViewModel.setLockWallpaperColors(colors) }, ), lifecycleOwner = this, offsetToStart = injector.getDisplayUtils(requireActivity()).isOnWallpaperDisplay(requireActivity()) offsetToStart = displayUtils.isOnWallpaperDisplay(activity), ) .show() lifecycleScope.launch { val clockRegistry = withContext(Dispatchers.IO) { injector.getClockRegistryProvider(requireContext()).get() } withContext(Dispatchers.IO) { injector.getClockRegistryProvider(context).get() } ClockSettingsBinder.bind( view, ClockSettingsViewModel( requireContext(), injector.getClockPickerInteractor(requireContext(), clockRegistry) context, injector.getClockPickerInteractor(context, clockRegistry) ), this@ClockSettingsFragment, ) Loading Loading
res/layout/fragment_clock_settings.xml +22 −10 Original line number Diff line number Diff line Loading @@ -24,25 +24,37 @@ android:id="@+id/section_header_container" android:layout_width="match_parent" android:layout_height="wrap_content"> <include layout="@layout/section_header" /> </FrameLayout> <com.android.wallpaper.picker.DisplayAspectRatioFrameLayout <FrameLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:paddingTop="36dp" android:paddingBottom="40dp"> <com.android.wallpaper.picker.DisplayAspectRatioFrameLayout android:layout_width="match_parent" android:layout_height="match_parent"> <include android:id="@+id/preview" android:id="@+id/lock_preview" layout="@layout/wallpaper_preview_card" android:layout_width="0dp" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" /> </com.android.wallpaper.picker.DisplayAspectRatioFrameLayout> <com.android.customization.picker.clock.ui.view.ClockCarouselView android:id="@+id/clock_carousel_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:visibility="gone" /> </FrameLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" Loading
src/com/android/customization/picker/clock/ui/fragment/ClockSettingsFragment.kt +51 −22 Original line number Diff line number Diff line Loading @@ -19,20 +19,24 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.cardview.widget.CardView import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.get import androidx.lifecycle.lifecycleScope import com.android.customization.module.ThemePickerInjector import com.android.customization.picker.clock.ui.binder.ClockSettingsBinder import com.android.customization.picker.clock.ui.viewmodel.ClockSettingsViewModel import com.android.customization.picker.quickaffordance.ui.binder.KeyguardQuickAffordancePreviewBinder import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQuickAffordancePickerViewModel import com.android.wallpaper.R import com.android.wallpaper.model.WallpaperColorsViewModel import com.android.wallpaper.module.InjectorProvider import com.android.wallpaper.picker.AppbarFragment import com.android.wallpaper.picker.customization.ui.binder.ScreenPreviewBinder import com.android.wallpaper.picker.customization.ui.viewmodel.ScreenPreviewViewModel import com.android.wallpaper.util.PreviewUtils import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.launch import kotlinx.coroutines.suspendCancellableCoroutine import kotlinx.coroutines.withContext @OptIn(ExperimentalCoroutinesApi::class) Loading @@ -58,34 +62,59 @@ class ClockSettingsFragment : AppbarFragment() { false, ) setUpToolbar(view) val context = requireContext() val activity = requireActivity() val injector = InjectorProvider.getInjector() as ThemePickerInjector // TODO(b/262924055): Modify to render the lockscreen properly val viewModel: KeyguardQuickAffordancePickerViewModel = ViewModelProvider( requireActivity(), injector.getKeyguardQuickAffordancePickerViewModelFactory(requireContext()), val lockScreenView: CardView = view.requireViewById(R.id.lock_preview) val colorViewModel = ViewModelProvider(activity)[WallpaperColorsViewModel::class.java] val displayUtils = injector.getDisplayUtils(context) ScreenPreviewBinder.bind( activity = activity, previewView = lockScreenView, viewModel = ScreenPreviewViewModel( previewUtils = PreviewUtils( context = context, authority = resources.getString( R.string.lock_screen_preview_provider_authority, ), ), wallpaperInfoProvider = { suspendCancellableCoroutine { continuation -> injector .getCurrentWallpaperInfoFactory(context) .createCurrentWallpaperInfos( { homeWallpaper, lockWallpaper, _ -> continuation.resume( homeWallpaper ?: lockWallpaper, null, ) }, /* forceRefresh= */ true, ) .get() KeyguardQuickAffordancePreviewBinder.bind( activity = requireActivity(), previewView = view.requireViewById(R.id.preview), viewModel = viewModel, } }, onWallpaperColorChanged = { colors -> colorViewModel.setLockWallpaperColors(colors) }, ), lifecycleOwner = this, offsetToStart = injector.getDisplayUtils(requireActivity()).isOnWallpaperDisplay(requireActivity()) offsetToStart = displayUtils.isOnWallpaperDisplay(activity), ) .show() lifecycleScope.launch { val clockRegistry = withContext(Dispatchers.IO) { injector.getClockRegistryProvider(requireContext()).get() } withContext(Dispatchers.IO) { injector.getClockRegistryProvider(context).get() } ClockSettingsBinder.bind( view, ClockSettingsViewModel( requireContext(), injector.getClockPickerInteractor(requireContext(), clockRegistry) context, injector.getClockPickerInteractor(context, clockRegistry) ), this@ClockSettingsFragment, ) Loading