diff options
Diffstat (limited to 'services/java/com/android/server/status/widget/PowerButton.java')
-rw-r--r-- | services/java/com/android/server/status/widget/PowerButton.java | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/services/java/com/android/server/status/widget/PowerButton.java b/services/java/com/android/server/status/widget/PowerButton.java new file mode 100644 index 0000000..0e61bda --- /dev/null +++ b/services/java/com/android/server/status/widget/PowerButton.java @@ -0,0 +1,135 @@ +package com.android.server.status.widget; + +import com.android.internal.R; + +import android.content.ContentResolver; +import android.content.Context; +import android.content.res.Resources; +import android.graphics.drawable.Drawable; +import android.graphics.PorterDuff.Mode; +import android.widget.ImageView; +import android.widget.RemoteViews; +import android.widget.LinearLayout; +import android.util.Log; +import android.provider.Settings; +import android.view.View; + +import com.android.server.status.ExpandedView; + +public abstract class PowerButton { + public static final String TOGGLE_WIFI = "toggleWifi"; + public static final String TOGGLE_GPS = "toggleGPS"; + public static final String TOGGLE_BLUETOOTH = "toggleBluetooth"; + public static final String TOGGLE_BRIGHTNESS = "toggleBrightness"; + public static final String TOGGLE_SOUND = "toggleSound"; + public static final String TOGGLE_SYNC = "toggleSync"; + public static final String TOGGLE_WIFIAP = "toggleWifiAp"; + public static final String TOGGLE_SCREENTIMEOUT = "toggleScreenTimeout"; + public static final String TOGGLE_MOBILEDATA = "toggleMobileData"; + public static final String TOGGLE_LOCKSCREEN = "toggleLockScreen"; + public static final String TOGGLE_NETWORKMODE = "toggleNetworkMode"; + public static final String TOGGLE_AUTOROTATE = "toggleAutoRotate"; + public static final String TOGGLE_FLASHLIGHT = "toggleFlashlight"; + public static final String TOGGLE_AIRPLANE = "toggleAirplane"; + + private Mode expPDMode = Mode.SCREEN; + public static final int STATE_ENABLED = 1; + public static final int STATE_DISABLED = 2; + public static final int STATE_TURNING_ON = 3; + public static final int STATE_TURNING_OFF = 4; + public static final int STATE_INTERMEDIATE = 5; + public static final int STATE_UNKNOWN = 6; + + public int currentIcon; + public int currentState; + public int currentPosition; + + abstract void initButton(int position); + abstract public void toggleState(Context context); + public abstract void updateState(Context context); + + public void setupButton(int position) { + currentPosition = position; + } + + public void updateView(Context context, ExpandedView views) { + if(currentPosition > 0) { + Resources res = context.getResources(); + int buttonLayer = getLayoutID(currentPosition); + int buttonIcon = getImageID(currentPosition); + int buttonState = getStatusInd(currentPosition); + + views.findViewById(buttonLayer).setVisibility(View.VISIBLE); + + updateImageView(views, buttonIcon, currentIcon); + + /* Button State */ + int sColorMaskBase = Settings.System.getInt(context.getContentResolver(), + Settings.System.EXPANDED_VIEW_WIDGET_COLOR, 0xFF00EFFF); + int sColorMaskOn = (sColorMaskBase & 0x00FFFFFF) | 0xA0000000; + int sColorMaskOff = (sColorMaskBase & 0x00FFFFFF) | 0x33000000; + int sColorMaskInter = (sColorMaskBase & 0x00FFFFFF) | 0x60000000; + + switch(currentState) { + case STATE_ENABLED: + updateImageView(views, buttonState, + res.getDrawable(com.android.internal.R.drawable.stat_bgon_custom, sColorMaskOn, expPDMode)); + break; + case STATE_DISABLED: + updateImageView(views, buttonState, + res.getDrawable(com.android.internal.R.drawable.stat_bgon_custom, sColorMaskOff, expPDMode)); + break; + default: + updateImageView(views, buttonState, + res.getDrawable(com.android.internal.R.drawable.stat_bgon_custom, sColorMaskInter, expPDMode)); + break; + } + } + } + + private void updateImageView(ExpandedView view, int id, int resId) { + ImageView imageIcon = (ImageView)view.findViewById(id); + imageIcon.setImageResource(resId); + } + private void updateImageView(ExpandedView view, int id, Drawable resDraw) { + ImageView statusInd = (ImageView)view.findViewById(id); + statusInd.setImageResource(com.android.internal.R.drawable.stat_bgon_custom); + statusInd.setImageDrawable(resDraw); + } + + public static int getLayoutID(int posi) { + switch(posi) { + case 1: return R.id.exp_power_stat_1; + case 2: return R.id.exp_power_stat_2; + case 3: return R.id.exp_power_stat_3; + case 4: return R.id.exp_power_stat_4; + case 5: return R.id.exp_power_stat_5; + case 6: return R.id.exp_power_stat_6; + } + return 0; + } + + private int getImageID(int posi) { + switch(posi) { + case 1: return R.id.exp_power_image_1; + case 2: return R.id.exp_power_image_2; + case 3: return R.id.exp_power_image_3; + case 4: return R.id.exp_power_image_4; + case 5: return R.id.exp_power_image_5; + case 6: return R.id.exp_power_image_6; + } + return 0; + } + + private int getStatusInd(int posi) { + switch(posi) { + case 1: return R.id.exp_power_indic_1; + case 2: return R.id.exp_power_indic_2; + case 3: return R.id.exp_power_indic_3; + case 4: return R.id.exp_power_indic_4; + case 5: return R.id.exp_power_indic_5; + case 6: return R.id.exp_power_indic_6; + } + return 0; + } +} |