blob: a3fe6bb61a1839f346394cdbf60c04edde4837f8 [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 Monk11a77442015-05-12 19:29:02 -040021import android.app.FragmentTransaction;
Jason Monk431ad732015-07-16 08:58:15 -040022import android.content.DialogInterface;
John Spurlockf40d08f2015-05-29 10:48:22 -040023import android.database.ContentObserver;
24import android.net.Uri;
Jason Monk295a3372015-05-11 16:57:15 -040025import android.os.Bundle;
John Spurlockf40d08f2015-05-29 10:48:22 -040026import android.os.Handler;
Jason Monk431ad732015-07-16 08:58:15 -040027import android.provider.Settings;
John Spurlockf40d08f2015-05-29 10:48:22 -040028import android.provider.Settings.System;
Jason Monk87ccd552015-12-11 21:39:54 -050029import android.support.v14.preference.PreferenceFragment;
30import android.support.v14.preference.SwitchPreference;
31import android.support.v7.preference.Preference;
32import android.support.v7.preference.Preference.OnPreferenceChangeListener;
33import android.support.v7.preference.Preference.OnPreferenceClickListener;
Jason Monk431ad732015-07-16 08:58:15 -040034import android.view.Menu;
35import android.view.MenuInflater;
Jason Monk295a3372015-05-11 16:57:15 -040036import android.view.MenuItem;
Jason Monk87ccd552015-12-11 21:39:54 -050037
Jason Monka4031592015-07-16 14:15:50 -040038import com.android.internal.logging.MetricsLogger;
Jason Monk295a3372015-05-11 16:57:15 -040039import com.android.systemui.R;
Jason Monkfe7c91b2015-08-13 15:42:28 -040040
Jason Monkabe19742015-09-29 09:47:06 -040041import static com.android.systemui.BatteryMeterDrawable.SHOW_PERCENT_SETTING;
Jason Monk295a3372015-05-11 16:57:15 -040042
43public class TunerFragment extends PreferenceFragment {
44
Jason Monk431ad732015-07-16 08:58:15 -040045 private static final String TAG = "TunerFragment";
46
John Spurlockf40d08f2015-05-29 10:48:22 -040047 private static final String KEY_BATTERY_PCT = "battery_pct";
48
Jason Monk431ad732015-07-16 08:58:15 -040049 public static final String SETTING_SEEN_TUNER_WARNING = "seen_tuner_warning";
50
Jason Monk72def0d2015-11-10 16:03:06 -050051 private static final String WARNING_TAG = "tuner_warning";
52
Jason Monk431ad732015-07-16 08:58:15 -040053 private static final int MENU_REMOVE = Menu.FIRST + 1;
54
John Spurlockf40d08f2015-05-29 10:48:22 -040055 private final SettingObserver mSettingObserver = new SettingObserver();
56
57 private SwitchPreference mBatteryPct;
Jason Monk11a77442015-05-12 19:29:02 -040058
Jason Monk87ccd552015-12-11 21:39:54 -050059 @Override
Jason Monk295a3372015-05-11 16:57:15 -040060 public void onCreate(Bundle savedInstanceState) {
61 super.onCreate(savedInstanceState);
62
Jason Monk295a3372015-05-11 16:57:15 -040063 getActivity().getActionBar().setDisplayHomeAsUpEnabled(true);
64 setHasOptionsMenu(true);
Jason Monk87ccd552015-12-11 21:39:54 -050065 }
Jason Monk11a77442015-05-12 19:29:02 -040066
Jason Monk87ccd552015-12-11 21:39:54 -050067 @Override
68 public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
69 addPreferencesFromResource(R.xml.tuner_prefs);
70
John Spurlockf40d08f2015-05-29 10:48:22 -040071 mBatteryPct = (SwitchPreference) findPreference(KEY_BATTERY_PCT);
Jason Monk431ad732015-07-16 08:58:15 -040072 if (Settings.Secure.getInt(getContext().getContentResolver(), SETTING_SEEN_TUNER_WARNING,
73 0) == 0) {
Jason Monk72def0d2015-11-10 16:03:06 -050074 if (getFragmentManager().findFragmentByTag(WARNING_TAG) == null) {
75 new TunerWarningFragment().show(getFragmentManager(), WARNING_TAG);
76 }
Jason Monk431ad732015-07-16 08:58:15 -040077 }
John Spurlockf40d08f2015-05-29 10:48:22 -040078 }
79
80 @Override
81 public void onResume() {
82 super.onResume();
83 updateBatteryPct();
84 getContext().getContentResolver().registerContentObserver(
85 System.getUriFor(SHOW_PERCENT_SETTING), false, mSettingObserver);
Jason Monk5e745172015-06-02 19:14:44 -040086
Jason Monka4031592015-07-16 14:15:50 -040087 MetricsLogger.visibility(getContext(), MetricsLogger.TUNER, true);
John Spurlockf40d08f2015-05-29 10:48:22 -040088 }
89
90 @Override
91 public void onPause() {
92 super.onPause();
93 getContext().getContentResolver().unregisterContentObserver(mSettingObserver);
Jason Monk5e745172015-06-02 19:14:44 -040094
Jason Monka4031592015-07-16 14:15:50 -040095 MetricsLogger.visibility(getContext(), MetricsLogger.TUNER, false);
Jason Monk5e745172015-06-02 19:14:44 -040096 }
97
Jason Monk295a3372015-05-11 16:57:15 -040098 @Override
Jason Monk431ad732015-07-16 08:58:15 -040099 public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
100 menu.add(Menu.NONE, MENU_REMOVE, Menu.NONE, R.string.remove_from_settings);
101 }
102
103 @Override
Jason Monk295a3372015-05-11 16:57:15 -0400104 public boolean onOptionsItemSelected(MenuItem item) {
105 switch (item.getItemId()) {
106 case android.R.id.home:
107 getActivity().finish();
108 return true;
Jason Monk431ad732015-07-16 08:58:15 -0400109 case MENU_REMOVE:
110 TunerService.showResetRequest(getContext(), new Runnable() {
111 @Override
112 public void run() {
113 getActivity().finish();
114 }
115 });
116 return true;
Jason Monk295a3372015-05-11 16:57:15 -0400117 }
118 return super.onOptionsItemSelected(item);
119 }
120
John Spurlockf40d08f2015-05-29 10:48:22 -0400121 private void updateBatteryPct() {
122 mBatteryPct.setOnPreferenceChangeListener(null);
123 mBatteryPct.setChecked(System.getInt(getContext().getContentResolver(),
124 SHOW_PERCENT_SETTING, 0) != 0);
125 mBatteryPct.setOnPreferenceChangeListener(mBatteryPctChange);
126 }
127
128 private final class SettingObserver extends ContentObserver {
129 public SettingObserver() {
130 super(new Handler());
131 }
132
133 @Override
134 public void onChange(boolean selfChange, Uri uri, int userId) {
135 super.onChange(selfChange, uri, userId);
136 updateBatteryPct();
137 }
138 }
139
140 private final OnPreferenceChangeListener mBatteryPctChange = new OnPreferenceChangeListener() {
141 @Override
142 public boolean onPreferenceChange(Preference preference, Object newValue) {
143 final boolean v = (Boolean) newValue;
Jason Monka4031592015-07-16 14:15:50 -0400144 MetricsLogger.action(getContext(), MetricsLogger.TUNER_BATTERY_PERCENTAGE, v);
John Spurlockf40d08f2015-05-29 10:48:22 -0400145 System.putInt(getContext().getContentResolver(), SHOW_PERCENT_SETTING, v ? 1 : 0);
146 return true;
147 }
148 };
Jason Monkcaf37622015-08-18 12:33:50 -0400149
Jason Monk72def0d2015-11-10 16:03:06 -0500150 public static class TunerWarningFragment extends DialogFragment {
151 @Override
152 public Dialog onCreateDialog(Bundle savedInstanceState) {
153 return new AlertDialog.Builder(getContext())
154 .setTitle(R.string.tuner_warning_title)
155 .setMessage(R.string.tuner_warning)
156 .setPositiveButton(R.string.got_it, new DialogInterface.OnClickListener() {
157 @Override
158 public void onClick(DialogInterface dialog, int which) {
159 Settings.Secure.putInt(getContext().getContentResolver(),
160 SETTING_SEEN_TUNER_WARNING, 1);
161 }
162 }).show();
163 }
164 }
Jason Monk295a3372015-05-11 16:57:15 -0400165}