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