blob: cdbdc229d4431e377fee20986839b32ab7bf8520 [file] [log] [blame]
Daniel Sandlerdfaf3bd2013-04-12 01:39:02 -04001/*
2 * Copyright (C) 2013 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 */
Daniel Sandlerdfaf3bd2013-04-12 01:39:02 -040016package com.android.systemui;
17
Daniel Sandlerdfaf3bd2013-04-12 01:39:02 -040018import android.content.Context;
Daniel Sandlerdfaf3bd2013-04-12 01:39:02 -040019import android.content.res.TypedArray;
John Spurlockf40d08f2015-05-29 10:48:22 -040020import android.os.Handler;
Daniel Sandlerdfaf3bd2013-04-12 01:39:02 -040021import android.util.AttributeSet;
Jason Monkabe19742015-09-29 09:47:06 -040022import android.widget.ImageView;
Jorim Jaggi708f7722014-08-20 17:30:38 +020023import com.android.systemui.statusbar.policy.BatteryController;
24
Jason Monkabe19742015-09-29 09:47:06 -040025public class BatteryMeterView extends ImageView implements BatteryController.BatteryStateChangeCallback {
Daniel Sandlerdfaf3bd2013-04-12 01:39:02 -040026
Jason Monkabe19742015-09-29 09:47:06 -040027 private final BatteryMeterDrawable mDrawable;
Jorim Jaggi708f7722014-08-20 17:30:38 +020028 private BatteryController mBatteryController;
Daniel Sandlerdfaf3bd2013-04-12 01:39:02 -040029
30 public BatteryMeterView(Context context) {
31 this(context, null, 0);
32 }
33
34 public BatteryMeterView(Context context, AttributeSet attrs) {
35 this(context, attrs, 0);
36 }
37
38 public BatteryMeterView(Context context, AttributeSet attrs, int defStyle) {
39 super(context, attrs, defStyle);
40
John Spurlock29786fc2014-02-04 17:55:47 -050041 TypedArray atts = context.obtainStyledAttributes(attrs, R.styleable.BatteryMeterView,
42 defStyle, 0);
43 final int frameColor = atts.getColor(R.styleable.BatteryMeterView_frameColor,
Alan Viverette4a357cd2015-03-18 18:37:18 -070044 context.getColor(R.color.batterymeter_frame_color));
Jason Monkabe19742015-09-29 09:47:06 -040045 mDrawable = new BatteryMeterDrawable(context, new Handler(), frameColor);
John Spurlock29786fc2014-02-04 17:55:47 -050046 atts.recycle();
Daniel Sandlerdfaf3bd2013-04-12 01:39:02 -040047
Jason Monkabe19742015-09-29 09:47:06 -040048 setImageDrawable(mDrawable);
Daniel Sandlerdfaf3bd2013-04-12 01:39:02 -040049 }
John Spurlock3c875662013-08-31 15:07:25 -040050
Jorim Jaggi0d266892014-07-28 14:49:13 +020051 @Override
52 public boolean hasOverlappingRendering() {
53 return false;
54 }
55
Jason Monkabe19742015-09-29 09:47:06 -040056 @Override
57 public void onAttachedToWindow() {
58 super.onAttachedToWindow();
59 mBatteryController.addStateChangedCallback(this);
60 mDrawable.startListening();
61 }
John Spurlock3c875662013-08-31 15:07:25 -040062
63 @Override
Jason Monkabe19742015-09-29 09:47:06 -040064 public void onDetachedFromWindow() {
65 super.onDetachedFromWindow();
66 mBatteryController.removeStateChangedCallback(this);
67 mDrawable.stopListening();
John Spurlock3c875662013-08-31 15:07:25 -040068 }
John Spurlockf40d08f2015-05-29 10:48:22 -040069
Jason Monkabe19742015-09-29 09:47:06 -040070 @Override
71 public void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging) {
72 setContentDescription(
73 getContext().getString(R.string.accessibility_battery_level, level));
John Spurlockf40d08f2015-05-29 10:48:22 -040074 }
75
Jason Monkabe19742015-09-29 09:47:06 -040076 @Override
Jason Monkc06fbb12016-01-08 14:12:18 -050077 public void onPowerSaveChanged(boolean isPowerSave) {
John Spurlockf40d08f2015-05-29 10:48:22 -040078
John Spurlockf40d08f2015-05-29 10:48:22 -040079 }
80
Jason Monkabe19742015-09-29 09:47:06 -040081 public void setBatteryController(BatteryController mBatteryController) {
82 this.mBatteryController = mBatteryController;
83 mDrawable.setBatteryController(mBatteryController);
84 }
85
86 public void setDarkIntensity(float f) {
87 mDrawable.setDarkIntensity(f);
88 }
Daniel Sandlerdfaf3bd2013-04-12 01:39:02 -040089}