• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
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  */
16 package com.android.systemui.tuner;
17 
18 import android.app.AlertDialog;
19 import android.app.Dialog;
20 import android.app.DialogFragment;
21 import android.content.DialogInterface;
22 import android.os.Build;
23 import android.os.Bundle;
24 import android.provider.Settings;
25 import android.support.v14.preference.PreferenceFragment;
26 import android.support.v7.preference.Preference;
27 import android.view.Menu;
28 import android.view.MenuInflater;
29 import android.view.MenuItem;
30 
31 import com.android.internal.hardware.AmbientDisplayConfiguration;
32 import com.android.internal.logging.MetricsLogger;
33 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
34 import com.android.systemui.R;
35 import com.android.systemui.plugins.PluginPrefs;
36 
37 public class TunerFragment extends PreferenceFragment {
38 
39     private static final String TAG = "TunerFragment";
40 
41     private static final String KEY_BATTERY_PCT = "battery_pct";
42     private static final String KEY_PLUGINS = "plugins";
43     private static final CharSequence KEY_DOZE = "doze";
44 
45     public static final String SETTING_SEEN_TUNER_WARNING = "seen_tuner_warning";
46 
47     private static final String WARNING_TAG = "tuner_warning";
48     private static final String[] DEBUG_ONLY = new String[] {
49             "nav_bar",
50             "lockscreen",
51             "picture_in_picture",
52     };
53 
54     private static final int MENU_REMOVE = Menu.FIRST + 1;
55 
56     @Override
onCreate(Bundle savedInstanceState)57     public void onCreate(Bundle savedInstanceState) {
58         super.onCreate(savedInstanceState);
59 
60         setHasOptionsMenu(true);
61     }
62 
63     @Override
onActivityCreated(Bundle savedInstanceState)64     public void onActivityCreated(Bundle savedInstanceState) {
65         super.onActivityCreated(savedInstanceState);
66         getActivity().getActionBar().setDisplayHomeAsUpEnabled(true);
67     }
68 
69     @Override
onCreatePreferences(Bundle savedInstanceState, String rootKey)70     public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
71         addPreferencesFromResource(R.xml.tuner_prefs);
72         if (!PluginPrefs.hasPlugins(getContext())) {
73             getPreferenceScreen().removePreference(findPreference(KEY_PLUGINS));
74         }
75         if (!alwaysOnAvailable()) {
76             getPreferenceScreen().removePreference(findPreference(KEY_DOZE));
77         }
78         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         }
84 
85         if (Settings.Secure.getInt(getContext().getContentResolver(), SETTING_SEEN_TUNER_WARNING,
86                 0) == 0) {
87             if (getFragmentManager().findFragmentByTag(WARNING_TAG) == null) {
88                 new TunerWarningFragment().show(getFragmentManager(), WARNING_TAG);
89             }
90         }
91     }
92 
alwaysOnAvailable()93     private boolean alwaysOnAvailable() {
94         return new AmbientDisplayConfiguration(getContext()).alwaysOnAvailable();
95     }
96 
97     @Override
onResume()98     public void onResume() {
99         super.onResume();
100         getActivity().setTitle(R.string.system_ui_tuner);
101 
102         MetricsLogger.visibility(getContext(), MetricsEvent.TUNER, true);
103     }
104 
105     @Override
onPause()106     public void onPause() {
107         super.onPause();
108 
109         MetricsLogger.visibility(getContext(), MetricsEvent.TUNER, false);
110     }
111 
112     @Override
onCreateOptionsMenu(Menu menu, MenuInflater inflater)113     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
onOptionsItemSelected(MenuItem item)118     public boolean onOptionsItemSelected(MenuItem item) {
119         switch (item.getItemId()) {
120             case android.R.id.home:
121                 getActivity().finish();
122                 return true;
123             case MENU_REMOVE:
124                 TunerService.showResetRequest(getContext(), new Runnable() {
125                     @Override
126                     public void run() {
127                         if (getActivity() != null) {
128                             getActivity().finish();
129                         }
130                     }
131                 });
132                 return true;
133         }
134         return super.onOptionsItemSelected(item);
135     }
136 
137     public static class TunerWarningFragment extends DialogFragment {
138         @Override
onCreateDialog(Bundle savedInstanceState)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     }
152 }
153