blob: 2a060c066137e57113aa4c18fbf0baa40c378764 [file] [log] [blame]
Amith Yamasani992f1022010-01-25 09:17:53 -08001/*
2 * Copyright (C) 2010 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
17package com.android.settings;
18
Jason Monkd3232da2014-08-20 13:29:20 -040019import android.app.Activity;
Amith Yamasani992f1022010-01-25 09:17:53 -080020import android.content.Context;
Adrian Roos8ab09542014-06-02 20:33:56 +020021import android.provider.SearchIndexableResource;
Amith Yamasani992f1022010-01-25 09:17:53 -080022import android.provider.Settings;
Jason Monk1230ac82015-12-11 20:14:43 -050023
Tamas Berghammer265d3c22016-06-22 15:34:45 +010024import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
Fan Zhang66b573a2016-10-06 16:33:13 -070025import com.android.settings.core.PreferenceController;
26import com.android.settings.dashboard.DashboardFragment;
Jason Monk30695812015-11-17 09:01:08 -050027import com.android.settings.dashboard.SummaryLoader;
Fan Zhang66b573a2016-10-06 16:33:13 -070028import com.android.settings.display.AutoBrightnessPreferenceController;
29import com.android.settings.display.AutoRotatePreferenceController;
30import com.android.settings.display.CameraGesturePreferenceController;
31import com.android.settings.display.DozePreferenceController;
32import com.android.settings.display.FontSizePreferenceController;
33import com.android.settings.display.LiftToWakePreferenceController;
34import com.android.settings.display.NightDisplayPreferenceController;
35import com.android.settings.display.NightModePreferenceController;
36import com.android.settings.display.ScreenSaverPreferenceController;
37import com.android.settings.display.TapToWakePreferenceController;
38import com.android.settings.display.TimeoutPreferenceController;
39import com.android.settings.display.VrDisplayPreferenceController;
40import com.android.settings.display.WallpaperPreferenceController;
Fan Zhang99abc022016-10-11 14:23:13 -070041import com.android.settings.overlay.FeatureFactory;
Jason Monk49b61032015-08-12 11:31:29 -040042import com.android.settings.search.BaseSearchIndexProvider;
43import com.android.settings.search.Indexable;
Fan Zhang66b573a2016-10-06 16:33:13 -070044import com.android.settingslib.drawer.CategoryKey;
Jason Monk49b61032015-08-12 11:31:29 -040045
Amith Yamasanid7993472010-08-18 13:59:28 -070046import java.util.ArrayList;
Adrian Roos8ab09542014-06-02 20:33:56 +020047import java.util.List;
Amith Yamasanid7993472010-08-18 13:59:28 -070048
Jason Monk39b46742015-09-10 15:52:51 -040049import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT;
Sudheer Shanka550d0682016-01-13 15:16:55 +000050
Fan Zhang66b573a2016-10-06 16:33:13 -070051public class DisplaySettings extends DashboardFragment {
Amith Yamasani992f1022010-01-25 09:17:53 -080052 private static final String TAG = "DisplaySettings";
53
Amith Yamasani992f1022010-01-25 09:17:53 -080054 @Override
Fan Zhang65076132016-08-08 10:25:13 -070055 public int getMetricsCategory() {
Chris Wren9d1bfd12016-01-26 18:04:01 -050056 return MetricsEvent.DISPLAY;
Chris Wren8a963ba2015-03-20 10:29:14 -040057 }
58
59 @Override
Fan Zhang66b573a2016-10-06 16:33:13 -070060 protected String getLogTag() {
61 return TAG;
Stephen Chen2b98ffa2016-09-20 13:15:11 -070062 }
63
Amith Yamasani992f1022010-01-25 09:17:53 -080064 @Override
Fan Zhangd916dae2017-01-06 16:10:28 -080065 public void onAttach(Context context) {
66 super.onAttach(context);
67 mProgressiveDisclosureMixin.setTileLimit(4);
68 }
69
70 @Override
Fan Zhang66b573a2016-10-06 16:33:13 -070071 protected String getCategoryKey() {
72 return CategoryKey.CATEGORY_DISPLAY;
Dianne Hackborn6677e562011-03-04 17:30:54 -080073 }
Amith Yamasani883d8502011-09-20 14:41:03 -070074
Amith Yamasani992f1022010-01-25 09:17:53 -080075 @Override
Fan Zhang66b573a2016-10-06 16:33:13 -070076 protected int getPreferenceScreenResId() {
Fan Zhang99abc022016-10-11 14:23:13 -070077 if (mDashboardFeatureProvider.isEnabled()) {
78 return R.xml.ia_display_settings;
79 } else {
80 return R.xml.display_settings;
81 }
Amith Yamasani992f1022010-01-25 09:17:53 -080082 }
Jeff Brown9e143f52012-09-19 20:46:07 -070083
Amith Yamasani9627a8e2012-09-23 12:54:14 -070084 @Override
Fan Zhang66b573a2016-10-06 16:33:13 -070085 protected List<PreferenceController> getPreferenceControllers(Context context) {
86 final List<PreferenceController> controllers = new ArrayList<>();
87 controllers.add(new AutoBrightnessPreferenceController(context));
88 controllers.add(new AutoRotatePreferenceController(context));
89 controllers.add(new CameraGesturePreferenceController(context));
90 controllers.add(new DozePreferenceController(context));
91 controllers.add(new FontSizePreferenceController(context));
92 controllers.add(new LiftToWakePreferenceController(context));
93 controllers.add(new NightDisplayPreferenceController(context));
94 controllers.add(new NightModePreferenceController(context));
95 controllers.add(new ScreenSaverPreferenceController(context));
96 controllers.add(new TapToWakePreferenceController(context));
97 controllers.add(new TimeoutPreferenceController(context));
98 controllers.add(new VrDisplayPreferenceController(context));
99 controllers.add(new WallpaperPreferenceController(context));
100 return controllers;
Doris Lingb727e9c2016-08-01 14:56:26 -0700101 }
102
103 @Override
Jason Monk23acc2b2015-04-14 15:06:39 -0400104 protected int getHelpResource() {
105 return R.string.help_uri_display;
106 }
107
Jason Monk30695812015-11-17 09:01:08 -0500108 private static class SummaryProvider implements SummaryLoader.SummaryProvider {
109 private final Context mContext;
110 private final SummaryLoader mLoader;
111
112 private SummaryProvider(Context context, SummaryLoader loader) {
113 mContext = context;
114 mLoader = loader;
115 }
116
117 @Override
118 public void setListening(boolean listening) {
119 if (listening) {
120 updateSummary();
121 }
122 }
123
124 private void updateSummary() {
Stephen Chen2b98ffa2016-09-20 13:15:11 -0700125 final long currentTimeout = Settings.System.getLong(mContext.getContentResolver(),
Fan Zhang66b573a2016-10-06 16:33:13 -0700126 SCREEN_OFF_TIMEOUT, TimeoutPreferenceController.FALLBACK_SCREEN_TIMEOUT_VALUE);
Stephen Chen2b98ffa2016-09-20 13:15:11 -0700127 final CharSequence[] entries =
128 mContext.getResources().getTextArray(R.array.screen_timeout_entries);
129 final CharSequence[] values =
130 mContext.getResources().getTextArray(R.array.screen_timeout_values);
Fan Zhang66b573a2016-10-06 16:33:13 -0700131 final CharSequence timeoutDescription = TimeoutPreferenceController
132 .getTimeoutDescription(currentTimeout, entries, values);
Stephen Chen2b98ffa2016-09-20 13:15:11 -0700133 final String summary = timeoutDescription == null ? ""
134 : mContext.getString(R.string.display_summary, timeoutDescription);
135 mLoader.setSummary(this, summary);
Jason Monk30695812015-11-17 09:01:08 -0500136 }
137 }
138
139 public static final SummaryLoader.SummaryProviderFactory SUMMARY_PROVIDER_FACTORY
140 = new SummaryLoader.SummaryProviderFactory() {
141 @Override
142 public SummaryLoader.SummaryProvider createSummaryProvider(Activity activity,
Fan Zhang66b573a2016-10-06 16:33:13 -0700143 SummaryLoader summaryLoader) {
Jason Monk30695812015-11-17 09:01:08 -0500144 return new SummaryProvider(activity, summaryLoader);
145 }
146 };
147
Adrian Roos8ab09542014-06-02 20:33:56 +0200148 public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
149 new BaseSearchIndexProvider() {
150 @Override
151 public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
152 boolean enabled) {
Fan Zhang99abc022016-10-11 14:23:13 -0700153 final ArrayList<SearchIndexableResource> result = new ArrayList<>();
Adrian Roos8ab09542014-06-02 20:33:56 +0200154
Fan Zhang99abc022016-10-11 14:23:13 -0700155 final SearchIndexableResource sir = new SearchIndexableResource(context);
156 final boolean useNewIA = FeatureFactory.getFactory(context)
157 .getDashboardFeatureProvider(context)
158 .isEnabled();
159 if (useNewIA) {
160 sir.xmlResId = R.xml.ia_display_settings;
161 } else {
162 sir.xmlResId = R.xml.display_settings;
163 }
Adrian Roos8ab09542014-06-02 20:33:56 +0200164 result.add(sir);
Adrian Roos8ab09542014-06-02 20:33:56 +0200165 return result;
166 }
167
168 @Override
169 public List<String> getNonIndexableKeys(Context context) {
Fan Zhang66b573a2016-10-06 16:33:13 -0700170 ArrayList<String> result = new ArrayList<>();
171
172 new AutoBrightnessPreferenceController(context).updateNonIndexableKeys(result);
173 new AutoRotatePreferenceController(context).updateNonIndexableKeys(result);
174 new CameraGesturePreferenceController(context).updateNonIndexableKeys(result);
175 new DozePreferenceController(context).updateNonIndexableKeys(result);
176 new FontSizePreferenceController(context).updateNonIndexableKeys(result);
177 new LiftToWakePreferenceController(context).updateNonIndexableKeys(result);
178 new NightDisplayPreferenceController(context).updateNonIndexableKeys(result);
179 new NightModePreferenceController(context).updateNonIndexableKeys(result);
180 new ScreenSaverPreferenceController(context).updateNonIndexableKeys(result);
181 new TapToWakePreferenceController(context).updateNonIndexableKeys(result);
182 new TimeoutPreferenceController(context).updateNonIndexableKeys(result);
183 new VrDisplayPreferenceController(context).updateNonIndexableKeys(result);
184 new WallpaperPreferenceController(context).updateNonIndexableKeys(result);
185
Fabrice Di Megliod407f2a2014-06-09 10:13:43 -0700186 return result;
Adrian Roos8ab09542014-06-02 20:33:56 +0200187 }
Matthew Fritze516b0f12017-01-26 14:37:48 -0800188
189 @Override
190 public List<PreferenceController> getPreferenceControllers(Context context) {
191 final List<PreferenceController> controllers = new ArrayList<>();
192 controllers.add(new AutoBrightnessPreferenceController(context));
193 return controllers;
194 }
Adrian Roos8ab09542014-06-02 20:33:56 +0200195 };
Amith Yamasani992f1022010-01-25 09:17:53 -0800196}