Loading src/com/android/settings/fuelgauge/BatteryHeaderPreferenceController.java +22 −9 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.BatteryManager; import android.support.annotation.VisibleForTesting; import android.support.v14.preference.PreferenceFragment; import android.support.v7.preference.PreferenceScreen; Loading @@ -47,7 +48,7 @@ public class BatteryHeaderPreferenceController extends AbstractPreferenceControl @VisibleForTesting BatteryMeterView mBatteryMeterView; @VisibleForTesting TextView mTimeText; TextView mBatteryPercentText; @VisibleForTesting TextView mSummary1; @VisibleForTesting Loading Loading @@ -76,16 +77,11 @@ public class BatteryHeaderPreferenceController extends AbstractPreferenceControl mBatteryLayoutPref = (LayoutPreference) screen.findPreference(KEY_BATTERY_HEADER); mBatteryMeterView = (BatteryMeterView) mBatteryLayoutPref .findViewById(R.id.battery_header_icon); mTimeText = mBatteryLayoutPref.findViewById(R.id.battery_percent); mBatteryPercentText = mBatteryLayoutPref.findViewById(R.id.battery_percent); mSummary1 = mBatteryLayoutPref.findViewById(R.id.summary1); mSummary2 = mBatteryLayoutPref.findViewById(R.id.summary2); Intent batteryBroadcast = mContext.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); final int batteryLevel = Utils.getBatteryLevel(batteryBroadcast); mBatteryMeterView.setBatteryLevel(batteryLevel); mTimeText.setText(Utils.formatPercentage(batteryLevel)); quickUpdateHeaderPreference(); } @Override Loading @@ -107,7 +103,7 @@ public class BatteryHeaderPreferenceController extends AbstractPreferenceControl } public void updateHeaderPreference(BatteryInfo info) { mTimeText.setText(Utils.formatPercentage(info.batteryLevel)); mBatteryPercentText.setText(Utils.formatPercentage(info.batteryLevel)); if (info.remainingLabel == null) { mSummary1.setText(info.statusLabel); } else { Loading @@ -120,4 +116,21 @@ public class BatteryHeaderPreferenceController extends AbstractPreferenceControl mBatteryMeterView.setBatteryLevel(info.batteryLevel); mBatteryMeterView.setCharging(!info.discharging); } public void quickUpdateHeaderPreference() { Intent batteryBroadcast = mContext.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); final int batteryLevel = Utils.getBatteryLevel(batteryBroadcast); final boolean discharging = batteryBroadcast.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1) == 0; // Set battery level and charging status mBatteryMeterView.setBatteryLevel(batteryLevel); mBatteryMeterView.setCharging(!discharging); mBatteryPercentText.setText(Utils.formatPercentage(batteryLevel)); // clear all the summaries mSummary1.setText(""); mSummary2.setText(""); } } src/com/android/settings/fuelgauge/BatteryMeterView.java +5 −0 Original line number Diff line number Diff line Loading @@ -78,6 +78,11 @@ public class BatteryMeterView extends ImageView { public void setCharging(boolean charging) { mDrawable.setCharging(charging); postInvalidate(); } public boolean getCharging() { return mDrawable.getCharging(); } public static class BatteryMeterDrawable extends BatteryMeterDrawableBase { Loading src/com/android/settings/fuelgauge/PowerUsageSummary.java +6 −0 Original line number Diff line number Diff line Loading @@ -848,6 +848,12 @@ public class PowerUsageSummary extends PowerUsageBase implements performBatteryHeaderClick(); } @Override protected void restartBatteryStatsLoader() { super.restartBatteryStatsLoader(); mBatteryHeaderPreferenceController.quickUpdateHeaderPreference(); } private static class SummaryProvider implements SummaryLoader.SummaryProvider { private final Context mContext; private final SummaryLoader mLoader; Loading tests/robotests/src/com/android/settings/fuelgauge/BatteryHeaderPreferenceControllerTest.java +14 −3 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; Loading Loading @@ -81,7 +82,7 @@ public class BatteryHeaderPreferenceControllerTest { private BatteryHeaderPreferenceController mController; private Context mContext; private BatteryMeterView mBatteryMeterView; private TextView mTimeText; private TextView mBatteryPercentText; private TextView mSummary; private TextView mSummary2; private LayoutPreference mBatteryLayoutPref; Loading @@ -95,7 +96,7 @@ public class BatteryHeaderPreferenceControllerTest { mLifecycle = new Lifecycle(); mContext = spy(RuntimeEnvironment.application); mBatteryMeterView = new BatteryMeterView(mContext); mTimeText = new TextView(mContext); mBatteryPercentText = new TextView(mContext); mSummary = new TextView(mContext); ShadowEntityHeaderController.setUseMock(mEntityHeaderController); mSummary2 = new TextView(mContext); Loading @@ -103,6 +104,7 @@ public class BatteryHeaderPreferenceControllerTest { mBatteryIntent = new Intent(); mBatteryIntent.putExtra(BatteryManager.EXTRA_LEVEL, BATTERY_LEVEL); mBatteryIntent.putExtra(BatteryManager.EXTRA_SCALE, 100); mBatteryIntent.putExtra(BatteryManager.EXTRA_PLUGGED, 1); doReturn(mBatteryIntent).when(mContext).registerReceiver(any(), any()); mBatteryLayoutPref = new LayoutPreference(mContext, R.layout.battery_header); Loading @@ -114,7 +116,7 @@ public class BatteryHeaderPreferenceControllerTest { mController = new BatteryHeaderPreferenceController( mContext, mActivity, mPreferenceFragment, mLifecycle); mController.mBatteryMeterView = mBatteryMeterView; mController.mTimeText = mTimeText; mController.mBatteryPercentText = mBatteryPercentText; mController.mSummary1 = mSummary; mController.mSummary2 = mSummary2; } Loading Loading @@ -175,4 +177,13 @@ public class BatteryHeaderPreferenceControllerTest { verify(mEntityHeaderController).styleActionBar(mActivity); } @Test public void testQuickUpdateHeaderPreference_showBatteryLevelAndChargingState() { mController.quickUpdateHeaderPreference(); assertThat(mBatteryMeterView.getBatteryLevel()).isEqualTo(BATTERY_LEVEL); assertThat(mBatteryMeterView.getCharging()).isTrue(); assertThat(mBatteryPercentText.getText()).isEqualTo("60%"); } } Loading
src/com/android/settings/fuelgauge/BatteryHeaderPreferenceController.java +22 −9 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.BatteryManager; import android.support.annotation.VisibleForTesting; import android.support.v14.preference.PreferenceFragment; import android.support.v7.preference.PreferenceScreen; Loading @@ -47,7 +48,7 @@ public class BatteryHeaderPreferenceController extends AbstractPreferenceControl @VisibleForTesting BatteryMeterView mBatteryMeterView; @VisibleForTesting TextView mTimeText; TextView mBatteryPercentText; @VisibleForTesting TextView mSummary1; @VisibleForTesting Loading Loading @@ -76,16 +77,11 @@ public class BatteryHeaderPreferenceController extends AbstractPreferenceControl mBatteryLayoutPref = (LayoutPreference) screen.findPreference(KEY_BATTERY_HEADER); mBatteryMeterView = (BatteryMeterView) mBatteryLayoutPref .findViewById(R.id.battery_header_icon); mTimeText = mBatteryLayoutPref.findViewById(R.id.battery_percent); mBatteryPercentText = mBatteryLayoutPref.findViewById(R.id.battery_percent); mSummary1 = mBatteryLayoutPref.findViewById(R.id.summary1); mSummary2 = mBatteryLayoutPref.findViewById(R.id.summary2); Intent batteryBroadcast = mContext.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); final int batteryLevel = Utils.getBatteryLevel(batteryBroadcast); mBatteryMeterView.setBatteryLevel(batteryLevel); mTimeText.setText(Utils.formatPercentage(batteryLevel)); quickUpdateHeaderPreference(); } @Override Loading @@ -107,7 +103,7 @@ public class BatteryHeaderPreferenceController extends AbstractPreferenceControl } public void updateHeaderPreference(BatteryInfo info) { mTimeText.setText(Utils.formatPercentage(info.batteryLevel)); mBatteryPercentText.setText(Utils.formatPercentage(info.batteryLevel)); if (info.remainingLabel == null) { mSummary1.setText(info.statusLabel); } else { Loading @@ -120,4 +116,21 @@ public class BatteryHeaderPreferenceController extends AbstractPreferenceControl mBatteryMeterView.setBatteryLevel(info.batteryLevel); mBatteryMeterView.setCharging(!info.discharging); } public void quickUpdateHeaderPreference() { Intent batteryBroadcast = mContext.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); final int batteryLevel = Utils.getBatteryLevel(batteryBroadcast); final boolean discharging = batteryBroadcast.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1) == 0; // Set battery level and charging status mBatteryMeterView.setBatteryLevel(batteryLevel); mBatteryMeterView.setCharging(!discharging); mBatteryPercentText.setText(Utils.formatPercentage(batteryLevel)); // clear all the summaries mSummary1.setText(""); mSummary2.setText(""); } }
src/com/android/settings/fuelgauge/BatteryMeterView.java +5 −0 Original line number Diff line number Diff line Loading @@ -78,6 +78,11 @@ public class BatteryMeterView extends ImageView { public void setCharging(boolean charging) { mDrawable.setCharging(charging); postInvalidate(); } public boolean getCharging() { return mDrawable.getCharging(); } public static class BatteryMeterDrawable extends BatteryMeterDrawableBase { Loading
src/com/android/settings/fuelgauge/PowerUsageSummary.java +6 −0 Original line number Diff line number Diff line Loading @@ -848,6 +848,12 @@ public class PowerUsageSummary extends PowerUsageBase implements performBatteryHeaderClick(); } @Override protected void restartBatteryStatsLoader() { super.restartBatteryStatsLoader(); mBatteryHeaderPreferenceController.quickUpdateHeaderPreference(); } private static class SummaryProvider implements SummaryLoader.SummaryProvider { private final Context mContext; private final SummaryLoader mLoader; Loading
tests/robotests/src/com/android/settings/fuelgauge/BatteryHeaderPreferenceControllerTest.java +14 −3 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; Loading Loading @@ -81,7 +82,7 @@ public class BatteryHeaderPreferenceControllerTest { private BatteryHeaderPreferenceController mController; private Context mContext; private BatteryMeterView mBatteryMeterView; private TextView mTimeText; private TextView mBatteryPercentText; private TextView mSummary; private TextView mSummary2; private LayoutPreference mBatteryLayoutPref; Loading @@ -95,7 +96,7 @@ public class BatteryHeaderPreferenceControllerTest { mLifecycle = new Lifecycle(); mContext = spy(RuntimeEnvironment.application); mBatteryMeterView = new BatteryMeterView(mContext); mTimeText = new TextView(mContext); mBatteryPercentText = new TextView(mContext); mSummary = new TextView(mContext); ShadowEntityHeaderController.setUseMock(mEntityHeaderController); mSummary2 = new TextView(mContext); Loading @@ -103,6 +104,7 @@ public class BatteryHeaderPreferenceControllerTest { mBatteryIntent = new Intent(); mBatteryIntent.putExtra(BatteryManager.EXTRA_LEVEL, BATTERY_LEVEL); mBatteryIntent.putExtra(BatteryManager.EXTRA_SCALE, 100); mBatteryIntent.putExtra(BatteryManager.EXTRA_PLUGGED, 1); doReturn(mBatteryIntent).when(mContext).registerReceiver(any(), any()); mBatteryLayoutPref = new LayoutPreference(mContext, R.layout.battery_header); Loading @@ -114,7 +116,7 @@ public class BatteryHeaderPreferenceControllerTest { mController = new BatteryHeaderPreferenceController( mContext, mActivity, mPreferenceFragment, mLifecycle); mController.mBatteryMeterView = mBatteryMeterView; mController.mTimeText = mTimeText; mController.mBatteryPercentText = mBatteryPercentText; mController.mSummary1 = mSummary; mController.mSummary2 = mSummary2; } Loading Loading @@ -175,4 +177,13 @@ public class BatteryHeaderPreferenceControllerTest { verify(mEntityHeaderController).styleActionBar(mActivity); } @Test public void testQuickUpdateHeaderPreference_showBatteryLevelAndChargingState() { mController.quickUpdateHeaderPreference(); assertThat(mBatteryMeterView.getBatteryLevel()).isEqualTo(BATTERY_LEVEL); assertThat(mBatteryMeterView.getCharging()).isTrue(); assertThat(mBatteryPercentText.getText()).isEqualTo("60%"); } }