1 /*
2  * Copyright (C) 2017 The Android Open Source Project
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * 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
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  *
15  *
16  */
17 
18 package com.android.settings.fuelgauge;
19 
20 import android.content.Context;
21 import android.content.Intent;
22 import android.content.IntentFilter;
23 import android.support.annotation.VisibleForTesting;
24 import android.support.v7.preference.PreferenceScreen;
25 import android.widget.TextView;
26 
27 import com.android.settings.R;
28 import com.android.settings.applications.LayoutPreference;
29 import com.android.settings.core.PreferenceController;
30 import com.android.settingslib.BatteryInfo;
31 import com.android.settingslib.Utils;
32 
33 /**
34  * Controller that update the battery header view
35  */
36 public class BatteryHeaderPreferenceController extends PreferenceController {
37     @VisibleForTesting
38     static final String KEY_BATTERY_HEADER = "battery_header";
39     @VisibleForTesting
40     BatteryMeterView mBatteryMeterView;
41     @VisibleForTesting
42     TextView mTimeText;
43     @VisibleForTesting
44     TextView mSummary;
45 
46     private LayoutPreference mBatteryLayoutPref;
47 
BatteryHeaderPreferenceController(Context context)48     public BatteryHeaderPreferenceController(Context context) {
49         super(context);
50     }
51 
52     @Override
displayPreference(PreferenceScreen screen)53     public void displayPreference(PreferenceScreen screen) {
54         super.displayPreference(screen);
55 
56         mBatteryLayoutPref = (LayoutPreference) screen.findPreference(KEY_BATTERY_HEADER);
57         mBatteryMeterView = (BatteryMeterView) mBatteryLayoutPref
58                 .findViewById(R.id.battery_header_icon);
59         mTimeText = (TextView) mBatteryLayoutPref.findViewById(R.id.battery_percent);
60         mSummary = (TextView) mBatteryLayoutPref.findViewById(R.id.summary1);
61 
62         Intent batteryBroadcast = mContext.registerReceiver(null,
63                 new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
64         final int batteryLevel = Utils.getBatteryLevel(batteryBroadcast);
65 
66         mBatteryMeterView.setBatteryLevel(batteryLevel);
67         mTimeText.setText(Utils.formatPercentage(batteryLevel));
68     }
69 
70     @Override
isAvailable()71     public boolean isAvailable() {
72         return true;
73     }
74 
75     @Override
getPreferenceKey()76     public String getPreferenceKey() {
77         return KEY_BATTERY_HEADER;
78     }
79 
updateHeaderPreference(BatteryInfo info)80     public void updateHeaderPreference(BatteryInfo info) {
81         mTimeText.setText(Utils.formatPercentage(info.batteryLevel));
82         if (info.remainingLabel == null) {
83             mSummary.setText(info.statusLabel);
84         } else {
85             mSummary.setText(info.remainingLabel);
86         }
87 
88         mBatteryMeterView.setBatteryLevel(info.batteryLevel);
89         mBatteryMeterView.setCharging(!info.discharging);
90     }
91 }
92