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_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
@@ -151,6 +173,11 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
*/
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,
* turning off, turning on) of the setting.
@@ -158,16 +185,17 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
public final void setImageViewResources(Context context, RemoteViews views) {
int buttonId = getButtonId();
int indicatorId = getIndicatorId();
int pos = getPosition();
switch (getTriState(context)) {
case STATE_DISABLED:
views.setImageViewResource(buttonId, getButtonImageId(false));
views.setImageViewResource(
indicatorId, R.drawable.appwidget_settings_ind_off_l);
indicatorId, IND_DRAWABLE_OFF[pos]);
break;
case STATE_ENABLED:
views.setImageViewResource(buttonId, getButtonImageId(true));
views.setImageViewResource(
indicatorId, R.drawable.appwidget_settings_ind_on_l);
indicatorId, IND_DRAWABLE_ON[pos]);
break;
case STATE_INTERMEDIATE:
// In the transitional state, the bottom green bar
@@ -178,11 +206,11 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
if (isTurningOn()) {
views.setImageViewResource(buttonId, getButtonImageId(true));
views.setImageViewResource(
indicatorId, R.drawable.appwidget_settings_ind_mid_l);
indicatorId, IND_DRAWABLE_MID[pos]);
} else {
views.setImageViewResource(buttonId, getButtonImageId(false));
views.setImageViewResource(
indicatorId, R.drawable.appwidget_settings_ind_off_l);
indicatorId, IND_DRAWABLE_OFF[pos]);
}
break;
}
@@ -298,6 +326,9 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
: R.drawable.ic_appwidget_settings_wifi_off;
}
@Override
public int getPosition() { return POS_LEFT; }
@Override
public int getActualState(Context context) {
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);