Merge "Add quickUpdate method to BatteryHeaderPrefCtrl" into oc-dr1-dev

This commit is contained in:
TreeHugger Robot
2017-06-28 17:08:46 +00:00
committed by Android (Google) Code Review
4 changed files with 47 additions and 12 deletions

View File

@@ -21,6 +21,7 @@ import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.os.BatteryManager;
import android.support.annotation.VisibleForTesting; import android.support.annotation.VisibleForTesting;
import android.support.v14.preference.PreferenceFragment; import android.support.v14.preference.PreferenceFragment;
import android.support.v7.preference.PreferenceScreen; import android.support.v7.preference.PreferenceScreen;
@@ -46,7 +47,7 @@ public class BatteryHeaderPreferenceController extends PreferenceController
@VisibleForTesting @VisibleForTesting
BatteryMeterView mBatteryMeterView; BatteryMeterView mBatteryMeterView;
@VisibleForTesting @VisibleForTesting
TextView mTimeText; TextView mBatteryPercentText;
@VisibleForTesting @VisibleForTesting
TextView mSummary1; TextView mSummary1;
@VisibleForTesting @VisibleForTesting
@@ -75,16 +76,11 @@ public class BatteryHeaderPreferenceController extends PreferenceController
mBatteryLayoutPref = (LayoutPreference) screen.findPreference(KEY_BATTERY_HEADER); mBatteryLayoutPref = (LayoutPreference) screen.findPreference(KEY_BATTERY_HEADER);
mBatteryMeterView = (BatteryMeterView) mBatteryLayoutPref mBatteryMeterView = (BatteryMeterView) mBatteryLayoutPref
.findViewById(R.id.battery_header_icon); .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); mSummary1 = mBatteryLayoutPref.findViewById(R.id.summary1);
mSummary2 = mBatteryLayoutPref.findViewById(R.id.summary2); mSummary2 = mBatteryLayoutPref.findViewById(R.id.summary2);
Intent batteryBroadcast = mContext.registerReceiver(null, quickUpdateHeaderPreference();
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
final int batteryLevel = Utils.getBatteryLevel(batteryBroadcast);
mBatteryMeterView.setBatteryLevel(batteryLevel);
mTimeText.setText(Utils.formatPercentage(batteryLevel));
} }
@Override @Override
@@ -106,7 +102,7 @@ public class BatteryHeaderPreferenceController extends PreferenceController
} }
public void updateHeaderPreference(BatteryInfo info) { public void updateHeaderPreference(BatteryInfo info) {
mTimeText.setText(Utils.formatPercentage(info.batteryLevel)); mBatteryPercentText.setText(Utils.formatPercentage(info.batteryLevel));
if (info.remainingLabel == null) { if (info.remainingLabel == null) {
mSummary1.setText(info.statusLabel); mSummary1.setText(info.statusLabel);
} else { } else {
@@ -119,4 +115,21 @@ public class BatteryHeaderPreferenceController extends PreferenceController
mBatteryMeterView.setBatteryLevel(info.batteryLevel); mBatteryMeterView.setBatteryLevel(info.batteryLevel);
mBatteryMeterView.setCharging(!info.discharging); 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("");
}
} }

View File

@@ -78,6 +78,11 @@ public class BatteryMeterView extends ImageView {
public void setCharging(boolean charging) { public void setCharging(boolean charging) {
mDrawable.setCharging(charging); mDrawable.setCharging(charging);
postInvalidate();
}
public boolean getCharging() {
return mDrawable.getCharging();
} }
public static class BatteryMeterDrawable extends BatteryMeterDrawableBase { public static class BatteryMeterDrawable extends BatteryMeterDrawableBase {

View File

@@ -848,6 +848,12 @@ public class PowerUsageSummary extends PowerUsageBase implements
performBatteryHeaderClick(); performBatteryHeaderClick();
} }
@Override
protected void restartBatteryStatsLoader() {
super.restartBatteryStatsLoader();
mBatteryHeaderPreferenceController.quickUpdateHeaderPreference();
}
private static class SummaryProvider implements SummaryLoader.SummaryProvider { private static class SummaryProvider implements SummaryLoader.SummaryProvider {
private final Context mContext; private final Context mContext;
private final SummaryLoader mLoader; private final SummaryLoader mLoader;

View File

@@ -46,6 +46,7 @@ import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Matchers.any; import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq; import static org.mockito.Matchers.eq;
@@ -81,7 +82,7 @@ public class BatteryHeaderPreferenceControllerTest {
private BatteryHeaderPreferenceController mController; private BatteryHeaderPreferenceController mController;
private Context mContext; private Context mContext;
private BatteryMeterView mBatteryMeterView; private BatteryMeterView mBatteryMeterView;
private TextView mTimeText; private TextView mBatteryPercentText;
private TextView mSummary; private TextView mSummary;
private TextView mSummary2; private TextView mSummary2;
private LayoutPreference mBatteryLayoutPref; private LayoutPreference mBatteryLayoutPref;
@@ -95,7 +96,7 @@ public class BatteryHeaderPreferenceControllerTest {
mLifecycle = new Lifecycle(); mLifecycle = new Lifecycle();
mContext = spy(RuntimeEnvironment.application); mContext = spy(RuntimeEnvironment.application);
mBatteryMeterView = new BatteryMeterView(mContext); mBatteryMeterView = new BatteryMeterView(mContext);
mTimeText = new TextView(mContext); mBatteryPercentText = new TextView(mContext);
mSummary = new TextView(mContext); mSummary = new TextView(mContext);
ShadowEntityHeaderController.setUseMock(mEntityHeaderController); ShadowEntityHeaderController.setUseMock(mEntityHeaderController);
mSummary2 = new TextView(mContext); mSummary2 = new TextView(mContext);
@@ -103,6 +104,7 @@ public class BatteryHeaderPreferenceControllerTest {
mBatteryIntent = new Intent(); mBatteryIntent = new Intent();
mBatteryIntent.putExtra(BatteryManager.EXTRA_LEVEL, BATTERY_LEVEL); mBatteryIntent.putExtra(BatteryManager.EXTRA_LEVEL, BATTERY_LEVEL);
mBatteryIntent.putExtra(BatteryManager.EXTRA_SCALE, 100); mBatteryIntent.putExtra(BatteryManager.EXTRA_SCALE, 100);
mBatteryIntent.putExtra(BatteryManager.EXTRA_PLUGGED, 1);
doReturn(mBatteryIntent).when(mContext).registerReceiver(any(), any()); doReturn(mBatteryIntent).when(mContext).registerReceiver(any(), any());
mBatteryLayoutPref = new LayoutPreference(mContext, R.layout.battery_header); mBatteryLayoutPref = new LayoutPreference(mContext, R.layout.battery_header);
@@ -114,7 +116,7 @@ public class BatteryHeaderPreferenceControllerTest {
mController = new BatteryHeaderPreferenceController( mController = new BatteryHeaderPreferenceController(
mContext, mActivity, mPreferenceFragment, mLifecycle); mContext, mActivity, mPreferenceFragment, mLifecycle);
mController.mBatteryMeterView = mBatteryMeterView; mController.mBatteryMeterView = mBatteryMeterView;
mController.mTimeText = mTimeText; mController.mBatteryPercentText = mBatteryPercentText;
mController.mSummary1 = mSummary; mController.mSummary1 = mSummary;
mController.mSummary2 = mSummary2; mController.mSummary2 = mSummary2;
} }
@@ -175,4 +177,13 @@ public class BatteryHeaderPreferenceControllerTest {
verify(mEntityHeaderController).styleActionBar(mActivity); 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%");
}
} }