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:
@@ -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);
|
||||||
|
Reference in New Issue
Block a user