Fix the indicators in the button bar. The middle ones were showing the left indicators incorrectly.

Earlier refactoring seems to have messed it up. Added a position value to the state trackers.

Bug: 2980926

Change-Id: I31df4b1ae0b835d801d67747154594299498c4cf
This commit is contained in:
Amith Yamasani
2010-09-26 15:58:00 -07:00
parent dd79a33ba5
commit 740edeaa42

View File

@@ -68,6 +68,28 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
private static final int STATE_UNKNOWN = 4; private static final int STATE_UNKNOWN = 4;
private static final int STATE_INTERMEDIATE = 5; private static final int STATE_INTERMEDIATE = 5;
// Position in the widget bar, to enable different graphics for left, center and right buttons
private static final int POS_LEFT = 0;
private static final int POS_CENTER = 1;
private static final int POS_RIGHT = 2;
private static final int[] IND_DRAWABLE_OFF = {
R.drawable.appwidget_settings_ind_off_l,
R.drawable.appwidget_settings_ind_off_c,
R.drawable.appwidget_settings_ind_off_r
};
private static final int[] IND_DRAWABLE_MID = {
R.drawable.appwidget_settings_ind_mid_l,
R.drawable.appwidget_settings_ind_mid_c,
R.drawable.appwidget_settings_ind_mid_r
};
private static final int[] IND_DRAWABLE_ON = {
R.drawable.appwidget_settings_ind_on_l,
R.drawable.appwidget_settings_ind_on_c,
R.drawable.appwidget_settings_ind_on_r
};
/** /**
* Minimum and maximum brightnesses. Don't go to 0 since that makes the display unusable * Minimum and maximum brightnesses. Don't go to 0 since that makes the display unusable
@@ -151,6 +173,11 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
*/ */
public abstract int getButtonImageId(boolean on); public abstract int getButtonImageId(boolean on);
/**
* Returns the position in the button bar - either POS_LEFT, POS_RIGHT or POS_CENTER.
*/
public int getPosition() { return POS_CENTER; }
/** /**
* Updates the remote views depending on the state (off, on, * Updates the remote views depending on the state (off, on,
* turning off, turning on) of the setting. * turning off, turning on) of the setting.
@@ -158,16 +185,17 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
public final void setImageViewResources(Context context, RemoteViews views) { public final void setImageViewResources(Context context, RemoteViews views) {
int buttonId = getButtonId(); int buttonId = getButtonId();
int indicatorId = getIndicatorId(); int indicatorId = getIndicatorId();
int pos = getPosition();
switch (getTriState(context)) { switch (getTriState(context)) {
case STATE_DISABLED: case STATE_DISABLED:
views.setImageViewResource(buttonId, getButtonImageId(false)); views.setImageViewResource(buttonId, getButtonImageId(false));
views.setImageViewResource( views.setImageViewResource(
indicatorId, R.drawable.appwidget_settings_ind_off_l); indicatorId, IND_DRAWABLE_OFF[pos]);
break; break;
case STATE_ENABLED: case STATE_ENABLED:
views.setImageViewResource(buttonId, getButtonImageId(true)); views.setImageViewResource(buttonId, getButtonImageId(true));
views.setImageViewResource( views.setImageViewResource(
indicatorId, R.drawable.appwidget_settings_ind_on_l); indicatorId, IND_DRAWABLE_ON[pos]);
break; break;
case STATE_INTERMEDIATE: case STATE_INTERMEDIATE:
// In the transitional state, the bottom green bar // In the transitional state, the bottom green bar
@@ -178,11 +206,11 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
if (isTurningOn()) { if (isTurningOn()) {
views.setImageViewResource(buttonId, getButtonImageId(true)); views.setImageViewResource(buttonId, getButtonImageId(true));
views.setImageViewResource( views.setImageViewResource(
indicatorId, R.drawable.appwidget_settings_ind_mid_l); indicatorId, IND_DRAWABLE_MID[pos]);
} else { } else {
views.setImageViewResource(buttonId, getButtonImageId(false)); views.setImageViewResource(buttonId, getButtonImageId(false));
views.setImageViewResource( views.setImageViewResource(
indicatorId, R.drawable.appwidget_settings_ind_off_l); indicatorId, IND_DRAWABLE_OFF[pos]);
} }
break; break;
} }
@@ -298,6 +326,9 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
: R.drawable.ic_appwidget_settings_wifi_off; : R.drawable.ic_appwidget_settings_wifi_off;
} }
@Override
public int getPosition() { return POS_LEFT; }
@Override @Override
public int getActualState(Context context) { public int getActualState(Context context) {
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);