blob: df2be489b886cdaa35d258d5595496fd4ac8d650 [file] [log] [blame]
Jason Monk295a3372015-05-11 16:57:15 -04001/*
2 * Copyright (C) 2015 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 */
16package com.android.systemui.tuner;
17
Jason Monk431ad732015-07-16 08:58:15 -040018import android.app.AlertDialog;
Jason Monk72def0d2015-11-10 16:03:06 -050019import android.app.Dialog;
20import android.app.DialogFragment;
Jason Monk431ad732015-07-16 08:58:15 -040021import android.content.DialogInterface;
Jason Monk2ad83b92017-05-09 14:19:57 -040022import android.os.Build;
Jason Monk295a3372015-05-11 16:57:15 -040023import android.os.Bundle;
Jason Monk431ad732015-07-16 08:58:15 -040024import android.provider.Settings;
Jason Monk87ccd552015-12-11 21:39:54 -050025import android.support.v14.preference.PreferenceFragment;
Jason Monk2ad83b92017-05-09 14:19:57 -040026import android.support.v7.preference.Preference;
Jason Monk431ad732015-07-16 08:58:15 -040027import android.view.Menu;
28import android.view.MenuInflater;
Jason Monk295a3372015-05-11 16:57:15 -040029import android.view.MenuItem;
Jason Monk87ccd552015-12-11 21:39:54 -050030
Adrian Roos0261fb22017-03-07 20:20:35 +000031import com.android.internal.hardware.AmbientDisplayConfiguration;
Jason Monka4031592015-07-16 14:15:50 -040032import com.android.internal.logging.MetricsLogger;
Tamas Berghammer383db5eb2016-06-22 15:21:38 +010033import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
Jason Monk295a3372015-05-11 16:57:15 -040034import com.android.systemui.R;
Jason Monkef0d34d2016-08-23 14:41:05 -040035import com.android.systemui.plugins.PluginPrefs;
Jason Monkfe7c91b2015-08-13 15:42:28 -040036
Jason Monk295a3372015-05-11 16:57:15 -040037public class TunerFragment extends PreferenceFragment {
38
Jason Monk431ad732015-07-16 08:58:15 -040039 private static final String TAG = "TunerFragment";
40
John Spurlockf40d08f2015-05-29 10:48:22 -040041 private static final String KEY_BATTERY_PCT = "battery_pct";
Jason Monkef0d34d2016-08-23 14:41:05 -040042 private static final String KEY_PLUGINS = "plugins";
Adrian Roos5cd29e42017-02-22 16:02:02 +010043 private static final CharSequence KEY_DOZE = "doze";
John Spurlockf40d08f2015-05-29 10:48:22 -040044
Jason Monk431ad732015-07-16 08:58:15 -040045 public static final String SETTING_SEEN_TUNER_WARNING = "seen_tuner_warning";
46
Jason Monk72def0d2015-11-10 16:03:06 -050047 private static final String WARNING_TAG = "tuner_warning";
Jason Monk2ad83b92017-05-09 14:19:57 -040048 private static final String[] DEBUG_ONLY = new String[] {
49 "nav_bar",
50 "lockscreen",
51 "picture_in_picture",
52 };
Jason Monk72def0d2015-11-10 16:03:06 -050053
Jason Monk431ad732015-07-16 08:58:15 -040054 private static final int MENU_REMOVE = Menu.FIRST + 1;
55
Jason Monk87ccd552015-12-11 21:39:54 -050056 @Override
Jason Monk295a3372015-05-11 16:57:15 -040057 public void onCreate(Bundle savedInstanceState) {
58 super.onCreate(savedInstanceState);
59
Jason Monk295a3372015-05-11 16:57:15 -040060 setHasOptionsMenu(true);
Jason Monk87ccd552015-12-11 21:39:54 -050061 }
Jason Monk11a77442015-05-12 19:29:02 -040062
Jason Monk87ccd552015-12-11 21:39:54 -050063 @Override
Jason Monka9f12882016-01-24 12:03:19 -050064 public void onActivityCreated(Bundle savedInstanceState) {
65 super.onActivityCreated(savedInstanceState);
66 getActivity().getActionBar().setDisplayHomeAsUpEnabled(true);
67 }
68
69 @Override
Jason Monk87ccd552015-12-11 21:39:54 -050070 public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
71 addPreferencesFromResource(R.xml.tuner_prefs);
Jason Monkef0d34d2016-08-23 14:41:05 -040072 if (!PluginPrefs.hasPlugins(getContext())) {
73 getPreferenceScreen().removePreference(findPreference(KEY_PLUGINS));
74 }
Adrian Roos0261fb22017-03-07 20:20:35 +000075 if (!alwaysOnAvailable()) {
Adrian Roos5cd29e42017-02-22 16:02:02 +010076 getPreferenceScreen().removePreference(findPreference(KEY_DOZE));
77 }
Jason Monk2ad83b92017-05-09 14:19:57 -040078 if (!Build.IS_DEBUGGABLE) {
79 for (int i = 0; i < DEBUG_ONLY.length; i++) {
80 Preference preference = findPreference(DEBUG_ONLY[i]);
81 if (preference != null) getPreferenceScreen().removePreference(preference);
82 }
83 }
Jason Monk87ccd552015-12-11 21:39:54 -050084
Jason Monk431ad732015-07-16 08:58:15 -040085 if (Settings.Secure.getInt(getContext().getContentResolver(), SETTING_SEEN_TUNER_WARNING,
86 0) == 0) {
Jason Monk72def0d2015-11-10 16:03:06 -050087 if (getFragmentManager().findFragmentByTag(WARNING_TAG) == null) {
88 new TunerWarningFragment().show(getFragmentManager(), WARNING_TAG);
89 }
Jason Monk431ad732015-07-16 08:58:15 -040090 }
John Spurlockf40d08f2015-05-29 10:48:22 -040091 }
92
Adrian Roos0261fb22017-03-07 20:20:35 +000093 private boolean alwaysOnAvailable() {
94 return new AmbientDisplayConfiguration(getContext()).alwaysOnAvailable();
95 }
96
John Spurlockf40d08f2015-05-29 10:48:22 -040097 @Override
98 public void onResume() {
99 super.onResume();
Jason Monkf0c6f642016-01-20 22:24:50 -0500100 getActivity().setTitle(R.string.system_ui_tuner);
Jason Monk5e745172015-06-02 19:14:44 -0400101
Chris Wrenf6e9228b2016-01-26 18:04:35 -0500102 MetricsLogger.visibility(getContext(), MetricsEvent.TUNER, true);
John Spurlockf40d08f2015-05-29 10:48:22 -0400103 }
104
105 @Override
106 public void onPause() {
107 super.onPause();
Jason Monk5e745172015-06-02 19:14:44 -0400108
Chris Wrenf6e9228b2016-01-26 18:04:35 -0500109 MetricsLogger.visibility(getContext(), MetricsEvent.TUNER, false);
Jason Monk5e745172015-06-02 19:14:44 -0400110 }
111
Jason Monk295a3372015-05-11 16:57:15 -0400112 @Override
Jason Monk431ad732015-07-16 08:58:15 -0400113 public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
114 menu.add(Menu.NONE, MENU_REMOVE, Menu.NONE, R.string.remove_from_settings);
115 }
116
117 @Override
Jason Monk295a3372015-05-11 16:57:15 -0400118 public boolean onOptionsItemSelected(MenuItem item) {
119 switch (item.getItemId()) {
120 case android.R.id.home:
121 getActivity().finish();
122 return true;
Jason Monk431ad732015-07-16 08:58:15 -0400123 case MENU_REMOVE:
124 TunerService.showResetRequest(getContext(), new Runnable() {
125 @Override
126 public void run() {
Akira Oshimi8fbcb762016-09-29 12:17:24 +0900127 if (getActivity() != null) {
128 getActivity().finish();
129 }
Jason Monk431ad732015-07-16 08:58:15 -0400130 }
131 });
132 return true;
Jason Monk295a3372015-05-11 16:57:15 -0400133 }
134 return super.onOptionsItemSelected(item);
135 }
136
Jason Monk72def0d2015-11-10 16:03:06 -0500137 public static class TunerWarningFragment extends DialogFragment {
138 @Override
139 public Dialog onCreateDialog(Bundle savedInstanceState) {
140 return new AlertDialog.Builder(getContext())
141 .setTitle(R.string.tuner_warning_title)
142 .setMessage(R.string.tuner_warning)
143 .setPositiveButton(R.string.got_it, new DialogInterface.OnClickListener() {
144 @Override
145 public void onClick(DialogInterface dialog, int which) {
146 Settings.Secure.putInt(getContext().getContentResolver(),
147 SETTING_SEEN_TUNER_WARNING, 1);
148 }
149 }).show();
150 }
151 }
Jason Monk295a3372015-05-11 16:57:15 -0400152}