Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 73b4346d authored by Danny Baumann's avatar Danny Baumann Committed by Gerrit Code Review
Browse files

Merge "Fix charging indication." into cm-11.0

parents fc065090 5d3fe36b
Loading
Loading
Loading
Loading
+32 −29
Original line number Diff line number Diff line
@@ -127,6 +127,16 @@ public class BatteryMeterView extends View implements DemoMode {
                });
            }
        }

        protected boolean shouldIndicateCharging() {
            if (status == BatteryManager.BATTERY_STATUS_CHARGING) {
                return true;
            }
            if (plugged) {
                return status == BatteryManager.BATTERY_STATUS_FULL;
            }
            return false;
        }
    }

    private final Runnable mInvalidate = new Runnable() {
@@ -217,15 +227,16 @@ public class BatteryMeterView extends View implements DemoMode {
    }

    protected BatteryMeterDrawable createBatteryMeterDrawable(BatteryMeterMode mode) {
        Resources res = mContext.getResources();
        switch (mode) {
            case BATTERY_METER_CIRCLE:
                return new CircleBatteryMeterDrawable(mContext);
                return new CircleBatteryMeterDrawable(res);

            case BATTERY_METER_ICON_LANDSCAPE:
                return new NormalBatteryMeterDrawable(mContext, true);
                return new NormalBatteryMeterDrawable(res, true);

            default:
                return new NormalBatteryMeterDrawable(mContext, false);
                return new NormalBatteryMeterDrawable(res, false);
        }
    }

@@ -313,7 +324,8 @@ public class BatteryMeterView extends View implements DemoMode {
    public void draw(Canvas c) {
        synchronized (mLock) {
            if (mBatteryMeterDrawable != null) {
                mBatteryMeterDrawable.onDraw(c);
                BatteryTracker tracker = mDemoMode ? mDemoTracker : mTracker;
                mBatteryMeterDrawable.onDraw(c, tracker);
            }
        }
    }
@@ -343,7 +355,7 @@ public class BatteryMeterView extends View implements DemoMode {
    }

    protected interface BatteryMeterDrawable {
        void onDraw(Canvas c);
        void onDraw(Canvas c, BatteryTracker tracker);
        void onSizeChanged(int w, int h, int oldw, int oldh);
        void onDispose();
    }
@@ -374,13 +386,11 @@ public class BatteryMeterView extends View implements DemoMode {
        private final RectF mClipFrame = new RectF();
        private final RectF mBoltFrame = new RectF();

        public NormalBatteryMeterDrawable(Context ctx, boolean horizontal) {
        public NormalBatteryMeterDrawable(Resources res, boolean horizontal) {
            super();
            mHorizontal = horizontal;
            mDisposed = false;

            Resources res = ctx.getResources();

            mFramePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
            mFramePaint.setColor(res.getColor(R.color.batterymeter_frame_color));
            mFramePaint.setDither(true);
@@ -412,10 +422,9 @@ public class BatteryMeterView extends View implements DemoMode {
        }

        @Override
        public void onDraw(Canvas c) {
        public void onDraw(Canvas c, BatteryTracker tracker) {
            if (mDisposed) return;

            BatteryTracker tracker = mDemoMode ? mDemoTracker : mTracker;
            final int level = tracker.level;

            if (level == BatteryTracker.UNKNOWN_LEVEL) return;
@@ -493,7 +502,7 @@ public class BatteryMeterView extends View implements DemoMode {
            c.drawRect(mFrame, mBatteryPaint);
            c.restore();

            if (tracker.plugged) {
            if (tracker.shouldIndicateCharging()) {
                // draw the bolt
                final float bl = (int)(mFrame.left + mFrame.width() / (mHorizontal ? 9f : 4.5f));
                final float bt = (int)(mFrame.top + mFrame.height() / (mHorizontal ? 4.5f : 6f));
@@ -607,12 +616,10 @@ public class BatteryMeterView extends View implements DemoMode {
        private final float[] mBoltPoints;
        private final Path mBoltPath = new Path();

        public CircleBatteryMeterDrawable(Context ctx) {
        public CircleBatteryMeterDrawable(Resources res) {
            super();
            mDisposed = false;

            Resources res = getResources();

            mTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
            mTextPaint.setColor(res.getColor(R.color.status_bar_clock_color));
            Typeface font = Typeface.create("sans-serif-condensed", Typeface.NORMAL);
@@ -641,21 +648,15 @@ public class BatteryMeterView extends View implements DemoMode {
        }

        @Override
        public void onDraw(Canvas c) {
        public void onDraw(Canvas c, BatteryTracker tracker) {
            if (mDisposed) return;

            if (mRectLeft == null) {
                initSizeBasedStuff();
            }

            final int status = mTracker.status;
            final int level = mTracker.level;
            updateChargeAnim(status);

            boolean charging = mTracker.status == BatteryManager.BATTERY_STATUS_CHARGING;
            int offset = charging ? mAnimOffset : 0;

            drawCircle(c, status, level, offset, mTextX, mRectLeft);
            updateChargeAnim(tracker);
            drawCircle(c, tracker, mTextX, mRectLeft);
        }

        @Override
@@ -688,9 +689,11 @@ public class BatteryMeterView extends View implements DemoMode {
            return R.array.batterymeter_bolt_points;
        }

        private void drawCircle(Canvas canvas, int status, int level, int animOffset,
        private void drawCircle(Canvas canvas, BatteryTracker tracker,
                float textX, RectF drawRect) {
            boolean unknownStatus = status == BatteryManager.BATTERY_STATUS_UNKNOWN;
            boolean unknownStatus = tracker.status == BatteryManager.BATTERY_STATUS_UNKNOWN;
            int animOffset = tracker.shouldIndicateCharging() ? mAnimOffset : 0;
            int level = tracker.level;
            Paint paint;

            if (unknownStatus) {
@@ -699,7 +702,7 @@ public class BatteryMeterView extends View implements DemoMode {
            } else {
                paint = mFrontPaint;
                paint.setColor(getColorForLevel(level));
                if (status == BatteryManager.BATTERY_STATUS_FULL) {
                if (tracker.status == BatteryManager.BATTERY_STATUS_FULL) {
                    level = 100;
                }
            }
@@ -714,7 +717,7 @@ public class BatteryMeterView extends View implements DemoMode {
                mTextPaint.setColor(paint.getColor());
                canvas.drawText("?", textX, mTextY, mTextPaint);

            } else if (mTracker.plugged && (!mShowPercent || level == 100)) {
            } else if (tracker.shouldIndicateCharging() && (!mShowPercent || level == 100)) {
                // draw the bolt
                final float bl = (int)(drawRect.left + drawRect.width() / 3.2f);
                final float bt = (int)(drawRect.top + drawRect.height() / 4f);
@@ -749,8 +752,8 @@ public class BatteryMeterView extends View implements DemoMode {
         * cares for timed callbacks to continue animation cycles
         * uses mInvalidate for delayed invalidate() callbacks
         */
        private void updateChargeAnim(int status) {
            if (status != BatteryManager.BATTERY_STATUS_CHARGING) {
        private void updateChargeAnim(BatteryTracker tracker) {
            if (!tracker.shouldIndicateCharging()) {
                if (mIsAnimating) {
                    mIsAnimating = false;
                    mAnimOffset = 0;
+9 −7
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui;

import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.os.BatteryManager;
import android.util.AttributeSet;
import android.view.View;
@@ -137,22 +138,23 @@ public class DockBatteryMeterView extends BatteryMeterView {

    @Override
    protected BatteryMeterDrawable createBatteryMeterDrawable(BatteryMeterMode mode) {
        Resources res = mContext.getResources();
        switch (mode) {
            case BATTERY_METER_CIRCLE:
                return new DockCircleBatteryMeterDrawable(mContext);
                return new DockCircleBatteryMeterDrawable(res);

            case BATTERY_METER_ICON_LANDSCAPE:
                return new DockNormalBatteryMeterDrawable(mContext, true);
                return new DockNormalBatteryMeterDrawable(res, true);

            default:
                return new DockNormalBatteryMeterDrawable(mContext, false);
                return new DockNormalBatteryMeterDrawable(res, false);
        }
    }

    protected class DockNormalBatteryMeterDrawable extends NormalBatteryMeterDrawable {

        public DockNormalBatteryMeterDrawable(Context ctx, boolean inverted) {
            super(ctx, inverted);
        public DockNormalBatteryMeterDrawable(Resources res, boolean horizontal) {
            super(res, horizontal);
        }

        @Override
@@ -164,8 +166,8 @@ public class DockBatteryMeterView extends BatteryMeterView {
    }

    protected class DockCircleBatteryMeterDrawable extends CircleBatteryMeterDrawable {
        public DockCircleBatteryMeterDrawable(Context ctx) {
            super(ctx);
        public DockCircleBatteryMeterDrawable(Resources res) {
            super(res);
        }

        @Override