• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2016 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
5  * except in compliance with the License. You may obtain a copy of the License at
6  *
7  *      http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software distributed under the
10  * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
11  * KIND, either express or implied. See the License for the specific language governing
12  * permissions and limitations under the License.
13  */
14 
15 package com.android.settings.fuelgauge;
16 
17 import android.content.Context;
18 import android.database.ContentObserver;
19 import android.os.Handler;
20 import android.os.PowerManager;
21 import android.provider.Settings;
22 import android.provider.Settings.Global;
23 import android.support.v7.preference.Preference;
24 import android.util.AttributeSet;
25 import android.view.View;
26 import com.android.settings.R;
27 import com.android.settings.Utils;
28 
29 public class BatterySaverPreference extends Preference {
30 
31     private PowerManager mPowerManager;
32 
BatterySaverPreference(Context context, AttributeSet attrs)33     public BatterySaverPreference(Context context, AttributeSet attrs) {
34         super(context, attrs);
35     }
36 
37     @Override
performClick(View view)38     protected void performClick(View view) {
39         Utils.startWithFragment(getContext(), getFragment(), null, null, 0, 0, getTitle());
40     }
41 
42     @Override
onAttached()43     public void onAttached() {
44         super.onAttached();
45         mPowerManager = (PowerManager) getContext().getSystemService(Context.POWER_SERVICE);
46         mObserver.onChange(true);
47         getContext().getContentResolver().registerContentObserver(
48                 Settings.Global.getUriFor(Global.LOW_POWER_MODE_TRIGGER_LEVEL), true, mObserver);
49         getContext().getContentResolver().registerContentObserver(
50                 Settings.Global.getUriFor(Global.LOW_POWER_MODE), true, mObserver);
51     }
52 
53     @Override
onDetached()54     public void onDetached() {
55         super.onDetached();
56         getContext().getContentResolver().unregisterContentObserver(mObserver);
57     }
58 
updateSwitch()59     private void updateSwitch() {
60         final Context context = getContext();
61         final boolean mode = mPowerManager.isPowerSaveMode();
62         int format = mode ? R.string.battery_saver_on_summary
63                 : R.string.battery_saver_off_summary;
64         int percent = Settings.Global.getInt(context.getContentResolver(),
65                 Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0);
66         int percentFormat = percent > 0 ? R.string.battery_saver_desc_turn_on_auto_pct
67                 : R.string.battery_saver_desc_turn_on_auto_never;
68         setSummary(context.getString(format, context.getString(percentFormat,
69                 Utils.formatPercentage(percent))));
70     }
71 
72     private final ContentObserver mObserver = new ContentObserver(new Handler()) {
73         @Override
74         public void onChange(boolean selfChange) {
75             updateSwitch();
76         }
77     };
78 
79 }
80