1 /* <lambda>null2 * Copyright (C) 2022 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 18 package com.android.customization.picker.quickaffordance.ui.fragment 19 20 import android.os.Bundle 21 import android.view.LayoutInflater 22 import android.view.View 23 import android.view.ViewGroup 24 import android.view.ViewGroup.MarginLayoutParams 25 import androidx.core.content.ContextCompat 26 import androidx.core.view.ViewCompat 27 import androidx.core.view.WindowInsetsCompat 28 import androidx.core.view.isVisible 29 import androidx.core.view.updateLayoutParams 30 import androidx.lifecycle.ViewModelProvider 31 import androidx.lifecycle.get 32 import androidx.transition.Transition 33 import androidx.transition.doOnStart 34 import com.android.customization.module.ThemePickerInjector 35 import com.android.customization.picker.quickaffordance.ui.binder.KeyguardQuickAffordancePickerBinder 36 import com.android.customization.picker.quickaffordance.ui.binder.KeyguardQuickAffordancePreviewBinder 37 import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQuickAffordancePickerViewModel 38 import com.android.themepicker.R 39 import com.android.wallpaper.module.InjectorProvider 40 import com.android.wallpaper.picker.AppbarFragment 41 42 class KeyguardQuickAffordancePickerFragment : AppbarFragment() { 43 companion object { 44 const val DESTINATION_ID = "quick_affordances" 45 46 @JvmStatic 47 fun newInstance(): KeyguardQuickAffordancePickerFragment { 48 return KeyguardQuickAffordancePickerFragment() 49 } 50 } 51 52 override fun onCreateView( 53 inflater: LayoutInflater, 54 container: ViewGroup?, 55 savedInstanceState: Bundle? 56 ): View { 57 val view = 58 inflater.inflate( 59 R.layout.fragment_lock_screen_quick_affordances, 60 container, 61 false, 62 ) 63 ViewCompat.setOnApplyWindowInsetsListener(view) { v, windowInsets -> 64 val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) 65 v.updateLayoutParams<MarginLayoutParams> { 66 topMargin = insets.top 67 bottomMargin = insets.bottom 68 } 69 WindowInsetsCompat.CONSUMED 70 } 71 setUpToolbar(view) 72 73 val injector = InjectorProvider.getInjector() as ThemePickerInjector 74 val viewModel: KeyguardQuickAffordancePickerViewModel = 75 ViewModelProvider( 76 requireActivity(), 77 injector.getKeyguardQuickAffordancePickerViewModelFactory(requireContext()), 78 ) 79 .get() 80 81 KeyguardQuickAffordancePreviewBinder.bind( 82 activity = requireActivity(), 83 previewView = view.requireViewById(R.id.preview), 84 viewModel = viewModel, 85 lifecycleOwner = this, 86 offsetToStart = 87 requireActivity().let { 88 injector.getDisplayUtils(it).isSingleDisplayOrUnfoldedHorizontalHinge(it) 89 } 90 ) 91 KeyguardQuickAffordancePickerBinder.bind( 92 view = view, 93 viewModel = viewModel, 94 lifecycleOwner = this, 95 ) 96 postponeEnterTransition() 97 view.post { startPostponedEnterTransition() } 98 (returnTransition as? Transition)?.doOnStart { 99 // Hide preview during exit transition animation 100 view?.findViewById<View>(R.id.preview)?.isVisible = false 101 } 102 return view 103 } 104 105 override fun getDefaultTitle(): CharSequence { 106 return requireContext().getString(R.string.keyguard_quick_affordance_title) 107 } 108 109 override fun getToolbarTextColor(): Int { 110 return ContextCompat.getColor( 111 requireContext(), 112 com.android.wallpaper.R.color.system_on_surface 113 ) 114 } 115 } 116