• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * 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 package com.android.settings.inputmethod;
18 
19 import static android.app.admin.DevicePolicyResources.Strings.Settings.PERSONAL_DICTIONARY_FOR_WORK;
20 import static android.app.admin.DevicePolicyResources.Strings.Settings.SPELL_CHECKER_FOR_WORK;
21 import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_KEYBOARDS_AND_TOOLS;
22 
23 import android.app.settings.SettingsEnums;
24 import android.content.Context;
25 import android.os.Bundle;
26 import android.util.FeatureFlagUtils;
27 
28 import androidx.annotation.NonNull;
29 import androidx.annotation.Nullable;
30 
31 import com.android.settings.R;
32 import com.android.settings.dashboard.DashboardFragment;
33 import com.android.settings.language.PointerSpeedController;
34 import com.android.settings.search.BaseSearchIndexProvider;
35 import com.android.settings.widget.PreferenceCategoryController;
36 import com.android.settingslib.core.AbstractPreferenceController;
37 import com.android.settingslib.core.lifecycle.Lifecycle;
38 import com.android.settingslib.search.SearchIndexable;
39 
40 import java.util.ArrayList;
41 import java.util.Arrays;
42 import java.util.List;
43 
44 @SearchIndexable
45 public class KeyboardSettings extends DashboardFragment {
46 
47     private static final String TAG = "KeyboardSettings";
48 
49     private static final String KEY_KEYBOARDS_CATEGORY = "keyboards_category";
50     private static final String KEY_POINTER_CATEGORY = "pointer_category";
51 
52     @Override
getMetricsCategory()53     public int getMetricsCategory() {
54         return SettingsEnums.SETTINGS_KEYBOARDS_CATEGORY;
55     }
56 
57     @Override
getLogTag()58     protected String getLogTag() {
59         return TAG;
60     }
61 
62     @Override
onCreate(Bundle icicle)63     public void onCreate(Bundle icicle) {
64         super.onCreate(icicle);
65         replaceEnterpriseStringTitle("language_and_input_for_work_category",
66                 WORK_PROFILE_KEYBOARDS_AND_TOOLS,
67                 R.string.language_and_input_for_work_category_title);
68         replaceEnterpriseStringTitle("spellcheckers_settings_for_work_pref",
69                 SPELL_CHECKER_FOR_WORK,
70                 R.string.spellcheckers_settings_for_work_title);
71         replaceEnterpriseStringTitle("user_dictionary_settings_for_work_pref",
72                 PERSONAL_DICTIONARY_FOR_WORK,
73                 R.string.user_dict_settings_for_work_title);
74     }
75 
76     @Override
getPreferenceScreenResId()77     protected int getPreferenceScreenResId() {
78         return R.xml.keyboard_settings;
79     }
80 
81     @Override
createPreferenceControllers(Context context)82     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
83         return buildPreferenceControllers(context, getSettingsLifecycle());
84     }
85 
buildPreferenceControllers( @onNull Context context, @Nullable Lifecycle lifecycle)86     private static List<AbstractPreferenceController> buildPreferenceControllers(
87             @NonNull Context context, @Nullable Lifecycle lifecycle) {
88         final List<AbstractPreferenceController> controllers = new ArrayList<>();
89         // Input
90         final VirtualKeyboardPreferenceController virtualKeyboardPreferenceController =
91                 new VirtualKeyboardPreferenceController(context);
92         final PhysicalKeyboardPreferenceController physicalKeyboardPreferenceController =
93                 new PhysicalKeyboardPreferenceController(context, lifecycle);
94         controllers.add(virtualKeyboardPreferenceController);
95         controllers.add(physicalKeyboardPreferenceController);
96         controllers.add(new PreferenceCategoryController(context,
97                 KEY_KEYBOARDS_CATEGORY).setChildren(
98                 Arrays.asList(virtualKeyboardPreferenceController,
99                         physicalKeyboardPreferenceController)));
100 
101         // Pointer
102         final PointerSpeedController pointerController = new PointerSpeedController(context);
103         controllers.add(pointerController);
104         controllers.add(new PreferenceCategoryController(context,
105                 KEY_POINTER_CATEGORY).setChildren(Arrays.asList(pointerController)));
106 
107         // Input Assistance
108         controllers.add(new SpellCheckerPreferenceController(context));
109 
110         return controllers;
111     }
112 
113     public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
114             new BaseSearchIndexProvider(R.xml.keyboard_settings) {
115                 @Override
116                 protected boolean isPageSearchEnabled(Context context) {
117                     return FeatureFlagUtils
118                             .isEnabled(context, FeatureFlagUtils.SETTINGS_NEW_KEYBOARD_UI);
119                 }
120             };
121 }