• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2017 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 package com.android.settings.accessibility;
18 
19 import static android.app.Activity.RESULT_CANCELED;
20 
21 import android.app.settings.SettingsEnums;
22 import android.graphics.drawable.Drawable;
23 import android.os.Bundle;
24 import android.view.LayoutInflater;
25 import android.view.View;
26 import android.view.ViewGroup;
27 
28 import androidx.preference.PreferenceScreen;
29 import androidx.recyclerview.widget.RecyclerView;
30 
31 import com.android.settings.R;
32 
33 import com.google.android.setupcompat.template.FooterBarMixin;
34 import com.google.android.setupdesign.GlifPreferenceLayout;
35 import com.google.android.setupdesign.util.ThemeHelper;
36 
37 public class ToggleSelectToSpeakPreferenceFragmentForSetupWizard
38         extends InvisibleToggleAccessibilityServicePreferenceFragment {
39 
40     private boolean mToggleSwitchWasInitiallyChecked;
41 
42     @Override
onViewCreated(View view, Bundle savedInstanceState)43     public void onViewCreated(View view, Bundle savedInstanceState) {
44         super.onViewCreated(view, savedInstanceState);
45 
46         if (view instanceof GlifPreferenceLayout) {
47             final GlifPreferenceLayout layout = (GlifPreferenceLayout) view;
48             final String title = getArguments().getString(AccessibilitySettings.EXTRA_TITLE);
49             final String description = getContext().getString(R.string.select_to_speak_summary);
50             final Drawable icon = getContext().getDrawable(R.drawable.ic_accessibility_visibility);
51             AccessibilitySetupWizardUtils.updateGlifPreferenceLayout(getContext(), layout, title,
52                     description, icon);
53 
54             final FooterBarMixin mixin = layout.getMixin(FooterBarMixin.class);
55             AccessibilitySetupWizardUtils.setPrimaryButton(getContext(), mixin, R.string.done,
56                     () -> {
57                         setResult(RESULT_CANCELED);
58                         finish();
59                     });
60         }
61 
62         mToggleSwitchWasInitiallyChecked = mToggleServiceSwitchPreference.isChecked();
63         if (mTopIntroPreference != null) {
64             mTopIntroPreference.setVisible(false);
65         }
66     }
67 
68     @Override
onCreateRecyclerView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState)69     public RecyclerView onCreateRecyclerView(LayoutInflater inflater, ViewGroup parent,
70             Bundle savedInstanceState) {
71         if (parent instanceof GlifPreferenceLayout) {
72             final GlifPreferenceLayout layout = (GlifPreferenceLayout) parent;
73             return AccessibilityFragmentUtils.addCollectionInfoToAccessibilityDelegate(
74                     layout.onCreateRecyclerView(inflater, parent, savedInstanceState));
75         }
76         return super.onCreateRecyclerView(inflater, parent, savedInstanceState);
77     }
78 
79     @Override
onCreateAdapter(PreferenceScreen preferenceScreen)80     protected RecyclerView.Adapter onCreateAdapter(PreferenceScreen preferenceScreen) {
81         if (ThemeHelper.shouldApplyGlifExpressiveStyle(getContext())) {
82             return new PreferenceAdapterInSuw(preferenceScreen);
83         }
84         return super.onCreateAdapter(preferenceScreen);
85     }
86 
87     @Override
getMetricsCategory()88     public int getMetricsCategory() {
89         return SettingsEnums.SUW_ACCESSIBILITY_TOGGLE_SELECT_TO_SPEAK;
90     }
91 
92     @Override
getFeedbackCategory()93     public int getFeedbackCategory() {
94         // The feedback options should not be displayed on the setup wizard page.
95         return SettingsEnums.PAGE_UNKNOWN;
96     }
97 
98     @Override
onStop()99     public void onStop() {
100         // Log the final choice in value if it's different from the previous value.
101         if (mToggleServiceSwitchPreference.isChecked() != mToggleSwitchWasInitiallyChecked) {
102             mMetricsFeatureProvider.action(getContext(),
103                     SettingsEnums.SUW_ACCESSIBILITY_TOGGLE_SELECT_TO_SPEAK,
104                     mToggleServiceSwitchPreference.isChecked());
105         }
106 
107         super.onStop();
108     }
109 }
110