diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000..9bea4330f055c
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+
+.DS_Store
diff --git a/cmds/bootanimation/bootanimation_main.cpp b/cmds/bootanimation/bootanimation_main.cpp
index 5f8b7441f4dc5..161ba445824d7 100644
--- a/cmds/bootanimation/bootanimation_main.cpp
+++ b/cmds/bootanimation/bootanimation_main.cpp
@@ -45,7 +45,7 @@ int main(int argc, char** argv)
#endif
char value[PROPERTY_VALUE_MAX];
- property_get("debug.sf.nobootanimation", value, "0");
+ property_get("persist.sys.nobootanimation", value, "0");
int noBootAnimation = atoi(value);
LOGI_IF(noBootAnimation, "boot animation disabled");
if (!noBootAnimation) {
diff --git a/core/java/android/provider/ContactsContract.java b/core/java/android/provider/ContactsContract.java
index c41439da22e9e..6e9551c534bd7 100644
--- a/core/java/android/provider/ContactsContract.java
+++ b/core/java/android/provider/ContactsContract.java
@@ -750,7 +750,11 @@ protected interface BaseSyncColumns {
public static final String SYNC3 = "sync3";
/** Generic column for use by sync adapters. */
public static final String SYNC4 = "sync4";
+<<<<<<< HEAD
/** Facebook contacts */
+=======
+ /** Facebook sync */
+>>>>>>> a653394989b691362658984f62af44943a1eba05
public static final String IS_RESTRICTED = "is_restricted";
}
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index bf86a071aa298..84ed4a1dc6b7e 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -589,6 +589,22 @@ public final class Settings {
@SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
public static final String ACTION_NFCSHARING_SETTINGS =
"android.settings.NFCSHARING_SETTINGS";
+
+ /**
+ * Activity Action: Show Anderson settings.
+ *
+ * In some cases, a matching Activity may not exist, so ensure you
+ * safeguard against this.
+ *
+ * Input: Nothing.
+ *
+ * Output: Nothing
+ *
+ * @hide
+ */
+ @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
+ public static final String ACTION_ANDERSON_SETTINGS =
+ "android.settings.ANDERSON_SETTINGS";
// End of Intent actions for Settings
@@ -1804,6 +1820,19 @@ public static void setShowGTalkServiceStatus(ContentResolver cr, boolean flag) {
*/
public static final String ACCELEROMETER_ROTATION = "accelerometer_rotation";
+ /**
+ * Control the type of rotation which can be performed using the accelerometer
+ * if ACCELEROMETER_ROTATION is enabled.
+ * Value is a bitwise combination of
+ * 1 = 0 degrees (portrait)
+ * 2 = 90 degrees (left)
+ * 4 = 180 degrees (inverted portrait)
+ * 8 = 270 degrees (right)
+ * Setting to 0 is effectively orientation lock
+ * @hide
+ */
+ public static final String ACCELEROMETER_ROTATION_ANGLES = "accelerometer_rotation_angles";
+
/**
* Default screen rotation when no other policy applies.
* When {@link #ACCELEROMETER_ROTATION} is zero and no on-screen Activity expresses a
@@ -2025,6 +2054,294 @@ public static void setShowGTalkServiceStatus(ContentResolver cr, boolean flag) {
* @hide
*/
public static final String POINTER_SPEED = "pointer_speed";
+
+ /**
+ * Pulse light color setting.
+ * This is an int value which represents the color of the pulse light
+ *
+ * @hide
+ */
+ public static final String NOTIFICATION_PULSE_COLOR = "notification_pulse_color";
+
+ /**
+ * Pulse light color fallback setting.
+ * This is an int value which represents the color of the pulse light if no setting is found
+ *
+ * @hide
+ */
+ public static final int NOTIFICATION_PULSE_COLOR_FALLBACK = -1; // fallback to white if no other color set
+
+ /**
+ * Use the Notification Power Widget? (Who wouldn't!)
+ *
+ * @hide
+ */
+ public static final String EXPANDED_VIEW_WIDGET = "expanded_view_widget";
+
+ /**
+ * Whether to hide the notification screen after clicking on a widget
+ * button
+ *
+ * @hide
+ */
+ public static final String EXPANDED_HIDE_ONCHANGE = "expanded_hide_onchange";
+
+ /**
+ * Hide scroll bar in power widget
+ *
+ * @hide
+ */
+ public static final String EXPANDED_HIDE_SCROLLBAR = "expanded_hide_scrollbar";
+
+ /**
+ * Hide indicator in status bar widget
+ *
+ * @hide
+ */
+ public static final String EXPANDED_HIDE_INDICATOR = "expanded_hide_indicator";
+
+ /**
+ * Haptic feedback in power widget
+ *
+ * @hide
+ */
+ public static final String EXPANDED_HAPTIC_FEEDBACK = "expanded_haptic_feedback";
+
+ /**
+ * Notification Indicator Color
+ *
+ * @hide
+ */
+ public static final String EXPANDED_VIEW_WIDGET_COLOR = "expanded_widget_color";
+
+ /**
+ * Widget Buttons to Use
+ *
+ * @hide
+ */
+ public static final String WIDGET_BUTTONS = "expanded_widget_buttons";
+
+ /**
+ * Navigation controls to Use
+ *
+ * @hide
+ */
+ public static final String NAV_BUTTONS = "nav_buttons";
+
+ /**
+ * Notification Power Widget - Custom Brightness Mode
+ * @hide
+ */
+ public static final String EXPANDED_BRIGHTNESS_MODE = "expanded_brightness_mode";
+
+ /**
+ * Notification Power Widget - Custom Network Mode
+ * @hide
+ */
+ public static final String EXPANDED_NETWORK_MODE = "expanded_network_mode";
+
+ /**
+ * Notification Power Widget - Custom LTE Toggle
+ * 1 - lte on, 0 - lte off
+ * @hide
+ */
+ public static final String LTE_MODE = "lte_mode";
+
+ /**
+ * Notification Power Widget - Custom Screen Timeout
+ * @hide
+ */
+ public static final String EXPANDED_SCREENTIMEOUT_MODE = "expanded_screentimeout_mode";
+
+ /**
+ * Notification Power Widget - Custom Ring Mode
+ * @hide
+ */
+ public static final String EXPANDED_RING_MODE = "expanded_ring_mode";
+
+ /**
+ * Notification Power Widget - Custom Torch Mode
+ * @hide
+ */
+ public static final String EXPANDED_FLASH_MODE = "expanded_flash_mode";
+
+ /**
+ * Setting to hide the statusbar alarm clock notification
+ * @hide
+ */
+ public static final String STATUSBAR_SHOW_ALARM = "statusbar_show_alarm";
+
+ /**
+ * Status bar battery percentage text.
+ * @hide
+ */
+ public static final String STATUSBAR_BATTERY_TEXT = "statusbar_battery_text";
+
+ /**
+ * Status bar battery percentage text style.
+ * @hide
+ */
+ public static final String STATUSBAR_BATTERY_TEXT_STYLE = "statusbar_battery_text_style";
+
+ /**
+ * Pulse light duration setting.
+ * This is an int value which represents the milliseconds the pulse should flash
+ *
+ * @hide
+ */
+ public static final String NOTIFICATION_PULSE_DURATION = "notification_pulse_duration";
+
+ /**
+ * Pulse light duration fallback setting.
+ * This is an int value which represents the milliseconds the pulse should flash
+ *
+ * @hide
+ */
+ public static final int NOTIFICATION_PULSE_DURATION_FALLBACK = 500; // fallback to 500ms
+
+ /**
+ * Pulse light frequency setting.
+ * This is an int value which represents the milliseconds between pulses
+ *
+ * @hide
+ */
+ public static final String NOTIFICATION_PULSE_FREQUENCY = "notification_pulse_frequency";
+
+ /**
+ * Pulse light duration fallback setting.
+ * This is an int value which represents the milliseconds between pulses
+ *
+ * @hide
+ */
+ public static final int NOTIFICATION_PULSE_FREQUENCY_FALLBACK = 7000; // fallback to 7000ms
+
+ /**
+ * Setting for using battery percentage drawables
+ * @hide
+ */
+ public static final String BATTERY_PERCENTAGES = "battery_percentages";
+
+ /**
+ * Setting to always show the menu button in navigation bar
+ * @hide
+ */
+ public static final String PERSIST_MENU = "persist_menu";
+
+ /**
+ * Setting for AM/PM statusbar clock style
+ *
+ * @hide
+ */
+ public static final String STATUSBAR_CLOCK_AM_PM_STYLE = "statusbar_clock_am_pm_style";
+
+ /**
+ * Setting for statusbar clock layout (right and center)
+ *
+ * @hide
+ */
+ public static final String STATUSBAR_CLOCK_STYLE = "statusbar_clock_enabled";
+
+ /**
+ * Setting for custom statusbar clock colors
+ *
+ * @hide
+ */
+ public static final String STATUSBAR_CLOCK_COLOR = "statusbar_clock_color";
+
+ /**
+ * Setting for statusbar clock layout (hide)
+ *
+ * @hide
+ */
+ public static final String STATUSBAR_CLOCK_LOCKSCREEN_HIDE = "statusbar_clock_lockscreen_hide";
+
+ /**
+ * Setting to enable/disable menu unlock on the lockscreen
+ *
+ * @hide
+ */
+ public static final String LOCKSCREEN_ENABLE_MENU_KEY = "lockscreen_enable_menu_key";
+
+ /**
+ *
+ * 0 = stock 1 = six 2 = eight 3 = eight unhidden
+ * @hide
+ */
+ public static final String LOCKSCREEN_LAYOUT = "lockscreen_layout";
+
+ /**
+ * Setting for custom nav bar tint
+ *
+ * @hide
+ */
+ public static final String NAVIGATION_BAR_TINT = "navigation_bar_tint";
+
+ /**
+ * Setting to switch the camera on the lockscreen out for the sound toggle
+ *
+ * @hide
+ */
+ public static final String LOCKSCREEN_DISABLE_CAMERA = "lockscreen_disable_camera";
+
+ /**
+ * whether volume keys wake the screen. boolean value
+ *
+ * @hide
+ */
+ public static final String VOLUME_WAKE_SCREEN = "volume_wake_screen";
+
+ /**
+ * launch a custom app for sms
+ *
+ * @hide
+ */
+ public static final String LOCKSCREEN_CUSTOM_SMS_INTENT = "lockscreen_custom_sms_intent";
+
+ /**
+ * launch a custom app for upper right target
+ *
+ * @hide
+ */
+ public static final String LOCKSCREEN_CUSTOM_UPPER_RIGHT_INTENT = "lockscreen_custom_upper_right_intent";
+
+ /**
+ * launch a custom app for upper left target
+ *
+ * @hide
+ */
+ public static final String LOCKSCREEN_CUSTOM_UPPER_LEFT_INTENT = "lockscreen_custom_upper_left_intent";
+
+ /**
+ * launch a custom app for lower right target
+ *
+ * @hide
+ */
+ public static final String LOCKSCREEN_CUSTOM_LOWER_RIGHT_INTENT = "lockscreen_custom_lower_right_intent";
+
+ /**
+ * launch a custom app for lower left target
+ *
+ * @hide
+ */
+ public static final String LOCKSCREEN_CUSTOM_LOWER_LEFT_INTENT = "lockscreen_custom_lower_left_intent";
+
+ /**
+ * Whether volume up/down can be long pressed to skip tracks
+ * @hide
+ */
+ public static final String VOLUME_MUSIC_CONTROLS = "volume_music_controls";
+
+ /**
+ * Whether to show the battery bar
+ *
+ * @hide
+ */
+ public static final String STATUSBAR_BATTERY_BAR = "statusbar_battery_bar";
+
+ /**
+ * @hide
+ */
+ public static final String STATUSBAR_BATTERY_BAR_COLOR = "statusbar_battery_bar_color";
/**
* GLOBAL_PHONE_SIM_ABSENT_TAG setting
@@ -2184,6 +2501,7 @@ public static void setShowGTalkServiceStatus(ContentResolver cr, boolean flag) {
SIP_CALL_OPTIONS,
SIP_RECEIVE_CALLS,
POINTER_SPEED,
+ NOTIFICATION_PULSE_COLOR,
};
// Settings moved to Settings.Secure
@@ -2415,6 +2733,12 @@ public static void setShowGTalkServiceStatus(ContentResolver cr, boolean flag) {
@Deprecated
public static final String WIFI_WATCHDOG_PING_TIMEOUT_MS =
Secure.WIFI_WATCHDOG_PING_TIMEOUT_MS;
+
+ public static final String CRT_OFF_ANIMATION = "crt_off_animation";
+
+ public static final String CRT_ON_ANIMATION = "crt_on_animation";
+
+ public static final String CUSTOM_CARRIER_LABEL = "custom_carrier_label";
}
/**
@@ -2685,10 +3009,16 @@ public static boolean putFloat(ContentResolver cr, String name, float value) {
public static final String ADB_ENABLED = "adb_enabled";
/**
+<<<<<<< HEAD
* The TCP/IP port to run ADB on, or -1 for USB
* @hide
*/
public static final String ADB_PORT = "adb_port";
+=======
+ * Whether to display the ADB notification.
+ */
+ public static final String ADB_NOTIFY = "adb_notify";
+>>>>>>> a653394989b691362658984f62af44943a1eba05
/**
* Setting to allow mock locations and location provider status to be injected into the
@@ -4276,6 +4606,28 @@ public static final String getBluetoothInputDevicePriorityKey(String address) {
public static final String SETUP_PREPAID_DETECTION_REDIR_HOST =
"setup_prepaid_detection_redir_host";
+ /**
+ * Whether the screensaver is enabled.
+ * @hide
+ */
+ public static final String SCREENSAVER_ENABLED = "screensaver_enabled";
+
+ /**
+ * The user's chosen screensaver component.
+ *
+ * This component will be launched by the PhoneWindowManager after a timeout when not on
+ * battery, or upon dock insertion (if SCREENSAVER_ACTIVATE_ON_DOCK is set to 1).
+ * @hide
+ */
+ public static final String SCREENSAVER_COMPONENT = "screensaver_component";
+
+ /**
+ * Whether the screensaver should be automatically launched when the device is inserted
+ * into a (desk) dock.
+ * @hide
+ */
+ public static final String SCREENSAVER_ACTIVATE_ON_DOCK = "screensaver_activate_on_dock";
+
/** {@hide} */
public static final String NETSTATS_ENABLED = "netstats_enabled";
/** {@hide} */
diff --git a/core/java/android/view/WindowOrientationListener.java b/core/java/android/view/WindowOrientationListener.java
index c3c74a7c59c54..2b7c5aae1b40c 100755
--- a/core/java/android/view/WindowOrientationListener.java
+++ b/core/java/android/view/WindowOrientationListener.java
@@ -322,7 +322,7 @@ static final class SensorEventListenerImpl implements SensorEventListener {
// The number of milliseconds for which the device posture must be stable
// before we perform an orientation change. If the device appears to be rotating
// (being picked up, put down) then we keep waiting until it settles.
- private static final int SETTLE_TIME_MS = 200;
+ private static final int SETTLE_TIME_MS = 50;
// The maximum change in magnitude that can occur during the settle time.
// Tuning this constant particularly helps to filter out situations where the
diff --git a/core/java/com/android/internal/app/ShutdownThread.java b/core/java/com/android/internal/app/ShutdownThread.java
index d445ab4f9b109..a9ae727e8824e 100644
--- a/core/java/com/android/internal/app/ShutdownThread.java
+++ b/core/java/com/android/internal/app/ShutdownThread.java
@@ -30,6 +30,8 @@
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Handler;
+import android.os.IBinder;
+import android.os.IPowerManager;
import android.os.Power;
import android.os.PowerManager;
import android.os.RemoteException;
@@ -62,6 +64,7 @@ public final class ShutdownThread extends Thread {
private static boolean sIsStarted = false;
private static boolean mReboot;
+ private static boolean mRestart;
private static String mRebootReason;
// Provides shutdown assurance in case the system_server is killed
@@ -105,14 +108,16 @@ public static void shutdown(final Context context, boolean confirm) {
? com.android.internal.R.string.shutdown_confirm_question
: com.android.internal.R.string.shutdown_confirm;
- Log.d(TAG, "Notifying thread to start shutdown longPressBehavior=" + longPressBehavior);
if (confirm) {
final AlertDialog dialog;
// Set different dialog message based on whether or not we're rebooting
if (mReboot) {
dialog = new AlertDialog.Builder(context)
+<<<<<<< HEAD
.setIcon(android.R.drawable.ic_dialog_alert)
+=======
+>>>>>>> a653394989b691362658984f62af44943a1eba05
.setTitle(com.android.internal.R.string.reboot_system)
.setSingleChoiceItems(com.android.internal.R.array.shutdown_reboot_options, 0, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
@@ -128,6 +133,12 @@ public void onClick(DialogInterface dialog, int which) {
.setPositiveButton(com.android.internal.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
mReboot = true;
+<<<<<<< HEAD
+=======
+ if (mRebootReason != null && mRebootReason.equals("restart")) {
+ mRestart = true;
+ }
+>>>>>>> a653394989b691362658984f62af44943a1eba05
beginShutdownSequence(context);
}
})
@@ -147,12 +158,17 @@ public boolean onKey (DialogInterface dialog, int keyCode, KeyEvent event) {
return true;
}
});
+<<<<<<< HEAD
// Initialize to the first reason
String actions[] = context.getResources().getStringArray(com.android.internal.R.array.shutdown_reboot_actions);
mRebootReason = actions[0];
} else {
dialog = new AlertDialog.Builder(context)
.setIcon(android.R.drawable.ic_dialog_alert)
+=======
+ } else {
+ dialog = new AlertDialog.Builder(context)
+>>>>>>> a653394989b691362658984f62af44943a1eba05
.setTitle(com.android.internal.R.string.power_off)
.setMessage(com.android.internal.R.string.shutdown_confirm)
.setPositiveButton(com.android.internal.R.string.yes, new DialogInterface.OnClickListener() {
@@ -215,12 +231,21 @@ private static void beginShutdownSequence(Context context) {
sIsStarted = true;
}
- // throw up an indeterminate system dialog to indicate radio is
- // shutting down.
+ // throw up an indeterminate system dialog while services shut down
ProgressDialog pd = new ProgressDialog(context);
if (mReboot) {
+<<<<<<< HEAD
pd.setTitle(context.getText(com.android.internal.R.string.reboot_system));
pd.setMessage(context.getText(com.android.internal.R.string.reboot_progress));
+=======
+ if (mRestart) {
+ pd.setTitle(context.getText(com.android.internal.R.string.restart_title));
+ pd.setMessage(context.getText(com.android.internal.R.string.restart_progress));
+ } else {
+ pd.setTitle(context.getText(com.android.internal.R.string.reboot_system));
+ pd.setMessage(context.getText(com.android.internal.R.string.reboot_progress));
+ }
+>>>>>>> a653394989b691362658984f62af44943a1eba05
} else {
pd.setTitle(context.getText(com.android.internal.R.string.power_off));
pd.setMessage(context.getText(com.android.internal.R.string.shutdown_progress));
@@ -288,35 +313,36 @@ public void run() {
}
};
- /*
- * Write a system property in case the system_server reboots before we
- * get to the actual hardware restart. If that happens, we'll retry at
- * the beginning of the SystemServer startup.
- */
- {
- String reason = (mReboot ? "1" : "0") + (mRebootReason != null ? mRebootReason : "");
- SystemProperties.set(SHUTDOWN_ACTION_PROPERTY, reason);
- }
+ if (!mRestart) {
+ /*
+ * Write a system property in case the system_server reboots before we
+ * get to the actual hardware restart. If that happens, we'll retry at
+ * the beginning of the SystemServer startup.
+ */
+ {
+ String reason = (mReboot ? "1" : "0") + (mRebootReason != null ? mRebootReason : "");
+ SystemProperties.set(SHUTDOWN_ACTION_PROPERTY, reason);
+ }
- Log.i(TAG, "Sending shutdown broadcast...");
-
- // First send the high-level shut down broadcast.
- mActionDone = false;
- mContext.sendOrderedBroadcast(new Intent(Intent.ACTION_SHUTDOWN), null,
- br, mHandler, 0, null, null);
-
- final long endTime = SystemClock.elapsedRealtime() + MAX_BROADCAST_TIME;
- synchronized (mActionDoneSync) {
- while (!mActionDone) {
- long delay = endTime - SystemClock.elapsedRealtime();
- if (delay <= 0) {
- Log.w(TAG, "Shutdown broadcast timed out");
- break;
- }
- try {
- mActionDoneSync.wait(delay);
- } catch (InterruptedException e) {
- }
+ Log.i(TAG, "Sending shutdown broadcast...");
+
+ // First send the high-level shut down broadcast.
+ mActionDone = false;
+ mContext.sendOrderedBroadcast(new Intent(Intent.ACTION_SHUTDOWN), null,
+ br, mHandler, 0, null, null);
+
+ final long endTime = SystemClock.elapsedRealtime() + MAX_BROADCAST_TIME;
+ synchronized (mActionDoneSync) {
+ while (!mActionDone) {
+ long delay = endTime - SystemClock.elapsedRealtime();
+ if (delay <= 0) {
+ Log.w(TAG, "Shutdown broadcast timed out");
+ break;
+ }
+ try {
+ mActionDoneSync.wait(delay);
+ } catch (InterruptedException e) {
+ } }
}
}
@@ -440,6 +466,20 @@ public void onShutDownComplete(int statusCode) throws RemoteException {
public static void rebootOrShutdown(boolean reboot, String reason) {
if (reboot) {
Log.i(TAG, "Rebooting, reason: " + reason);
+
+ // check if restart was requested
+ if (mRestart) {
+ // crash system server to restart framework
+ try {
+ IBinder b = ServiceManager.getService(Context.POWER_SERVICE);
+ IPowerManager pm = IPowerManager.Stub.asInterface(b);
+ pm.crash("Crashed framework, now restarting");
+ } catch (RemoteException e) {
+ Log.e(TAG, "Restart failed, will attempt reboot instead", e);
+ reason = null;
+ }
+ }
+ // normal reboot
try {
Power.reboot(reason);
} catch (Exception e) {
@@ -452,7 +492,7 @@ public static void rebootOrShutdown(boolean reboot, String reason) {
vibrator.vibrate(SHUTDOWN_VIBRATE_MS);
} catch (Exception e) {
// Failure to vibrate shouldn't interrupt shutdown. Just log it.
- Log.w(TAG, "Failed to vibrate during shutdown.", e);
+ Log.w(TAG, "Failed to vibrate during shutdown", e);
}
// vibrator is asynchronous so we need to wait to avoid shutting down too soon.
diff --git a/core/java/com/android/internal/widget/multiwaveview/MultiWaveView.java b/core/java/com/android/internal/widget/multiwaveview/MultiWaveView.java
index ebd355aa272c6..f372f7ba40612 100644
--- a/core/java/com/android/internal/widget/multiwaveview/MultiWaveView.java
+++ b/core/java/com/android/internal/widget/multiwaveview/MultiWaveView.java
@@ -947,7 +947,13 @@ private String getDirectionDescription(int index) {
return null;
}
}
- return mDirectionDescriptions.get(index);
+
+ try {
+ String desc = mDirectionDescriptions.get(index);
+ return desc;
+ } catch (Exception e) {
+ return "";
+ }
}
private ArrayList loadDescriptions(int resourceId) {
diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_custom_activated.png b/core/res/res/drawable-hdpi/ic_lockscreen_custom_activated.png
new file mode 100644
index 0000000000000..f8bb6449fbaaa
Binary files /dev/null and b/core/res/res/drawable-hdpi/ic_lockscreen_custom_activated.png differ
diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_custom_normal.png b/core/res/res/drawable-hdpi/ic_lockscreen_custom_normal.png
new file mode 100644
index 0000000000000..1ca90a1f18e13
Binary files /dev/null and b/core/res/res/drawable-hdpi/ic_lockscreen_custom_normal.png differ
diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_phone_activated.png b/core/res/res/drawable-hdpi/ic_lockscreen_phone_activated.png
new file mode 100644
index 0000000000000..c0bb01c1fae1e
Binary files /dev/null and b/core/res/res/drawable-hdpi/ic_lockscreen_phone_activated.png differ
diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_phone_normal.png b/core/res/res/drawable-hdpi/ic_lockscreen_phone_normal.png
new file mode 100644
index 0000000000000..cc43e4c7807fe
Binary files /dev/null and b/core/res/res/drawable-hdpi/ic_lockscreen_phone_normal.png differ
diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_sms_activated.png b/core/res/res/drawable-hdpi/ic_lockscreen_sms_activated.png
new file mode 100644
index 0000000000000..9c1e73326f23c
Binary files /dev/null and b/core/res/res/drawable-hdpi/ic_lockscreen_sms_activated.png differ
diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_sms_normal.png b/core/res/res/drawable-hdpi/ic_lockscreen_sms_normal.png
new file mode 100644
index 0000000000000..9a598f45dc3ca
Binary files /dev/null and b/core/res/res/drawable-hdpi/ic_lockscreen_sms_normal.png differ
diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_custom_activated.png b/core/res/res/drawable-mdpi/ic_lockscreen_custom_activated.png
new file mode 100644
index 0000000000000..0ef72b0f7f427
Binary files /dev/null and b/core/res/res/drawable-mdpi/ic_lockscreen_custom_activated.png differ
diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_custom_normal.png b/core/res/res/drawable-mdpi/ic_lockscreen_custom_normal.png
new file mode 100644
index 0000000000000..51a4440f13c5d
Binary files /dev/null and b/core/res/res/drawable-mdpi/ic_lockscreen_custom_normal.png differ
diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_phone_activated.png b/core/res/res/drawable-mdpi/ic_lockscreen_phone_activated.png
new file mode 100644
index 0000000000000..5aaa48266a0fc
Binary files /dev/null and b/core/res/res/drawable-mdpi/ic_lockscreen_phone_activated.png differ
diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_phone_normal.png b/core/res/res/drawable-mdpi/ic_lockscreen_phone_normal.png
new file mode 100644
index 0000000000000..6717045391862
Binary files /dev/null and b/core/res/res/drawable-mdpi/ic_lockscreen_phone_normal.png differ
diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_sms_activated.png b/core/res/res/drawable-mdpi/ic_lockscreen_sms_activated.png
new file mode 100644
index 0000000000000..8240d9030d55a
Binary files /dev/null and b/core/res/res/drawable-mdpi/ic_lockscreen_sms_activated.png differ
diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_sms_normal.png b/core/res/res/drawable-mdpi/ic_lockscreen_sms_normal.png
new file mode 100644
index 0000000000000..75c25a3579edf
Binary files /dev/null and b/core/res/res/drawable-mdpi/ic_lockscreen_sms_normal.png differ
diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_custom_activated.png b/core/res/res/drawable-xhdpi/ic_lockscreen_custom_activated.png
new file mode 100644
index 0000000000000..bbded3efc3189
Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_lockscreen_custom_activated.png differ
diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_custom_normal.png b/core/res/res/drawable-xhdpi/ic_lockscreen_custom_normal.png
new file mode 100644
index 0000000000000..eecfea8ead63a
Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_lockscreen_custom_normal.png differ
diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_phone_activated.png b/core/res/res/drawable-xhdpi/ic_lockscreen_phone_activated.png
new file mode 100644
index 0000000000000..fa3331c53f27e
Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_lockscreen_phone_activated.png differ
diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_phone_normal.png b/core/res/res/drawable-xhdpi/ic_lockscreen_phone_normal.png
new file mode 100644
index 0000000000000..2a1e48f2ef531
Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_lockscreen_phone_normal.png differ
diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_sms_activated.png b/core/res/res/drawable-xhdpi/ic_lockscreen_sms_activated.png
new file mode 100644
index 0000000000000..d7a19d1d7f7ec
Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_lockscreen_sms_activated.png differ
diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_sms_normal.png b/core/res/res/drawable-xhdpi/ic_lockscreen_sms_normal.png
new file mode 100644
index 0000000000000..556277dc4e34c
Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_lockscreen_sms_normal.png differ
diff --git a/core/res/res/drawable/ic_lockscreen_custom.xml b/core/res/res/drawable/ic_lockscreen_custom.xml
new file mode 100755
index 0000000000000..e23beec3843aa
--- /dev/null
+++ b/core/res/res/drawable/ic_lockscreen_custom.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
diff --git a/core/res/res/drawable/ic_lockscreen_phone.xml b/core/res/res/drawable/ic_lockscreen_phone.xml
new file mode 100755
index 0000000000000..d2516598f748d
--- /dev/null
+++ b/core/res/res/drawable/ic_lockscreen_phone.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
diff --git a/core/res/res/drawable/ic_lockscreen_sms.xml b/core/res/res/drawable/ic_lockscreen_sms.xml
new file mode 100755
index 0000000000000..43fd8d61d4beb
--- /dev/null
+++ b/core/res/res/drawable/ic_lockscreen_sms.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
diff --git a/core/res/res/layout/keyguard_screen_eight_targets_unhidden.xml b/core/res/res/layout/keyguard_screen_eight_targets_unhidden.xml
new file mode 100644
index 0000000000000..6df6fb3ca87e0
--- /dev/null
+++ b/core/res/res/layout/keyguard_screen_eight_targets_unhidden.xml
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/res/res/layout/keyguard_screen_eight_targets_unhidden_land.xml b/core/res/res/layout/keyguard_screen_eight_targets_unhidden_land.xml
new file mode 100644
index 0000000000000..294f91e899972
--- /dev/null
+++ b/core/res/res/layout/keyguard_screen_eight_targets_unhidden_land.xml
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/res/res/layout/keyguard_screen_six_targets.xml b/core/res/res/layout/keyguard_screen_six_targets.xml
new file mode 100644
index 0000000000000..0c8bc16c8ee61
--- /dev/null
+++ b/core/res/res/layout/keyguard_screen_six_targets.xml
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/res/res/layout/keyguard_screen_six_targets_land.xml b/core/res/res/layout/keyguard_screen_six_targets_land.xml
new file mode 100644
index 0000000000000..294f91e899972
--- /dev/null
+++ b/core/res/res/layout/keyguard_screen_six_targets_land.xml
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/res/res/layout/keyguard_screen_tab_unlock.xml b/core/res/res/layout/keyguard_screen_tab_unlock.xml
index 0ec8f75871e00..c292977b0dde1 100644
--- a/core/res/res/layout/keyguard_screen_tab_unlock.xml
+++ b/core/res/res/layout/keyguard_screen_tab_unlock.xml
@@ -31,8 +31,7 @@
+ android:layout_gravity="center_horizontal">
@@ -64,8 +63,7 @@
+ android:layout_gravity="center_horizontal">
- - @null
"
+ - @null
+ - @null
- @drawable/ic_lockscreen_unlock
- @null
+ - @null
+ - @null
- @drawable/ic_lockscreen_soundon
+ - @null
+ - @null
- @null
- @string/description_target_unlock
- @null
+ - @null
+ - @null
- @string/description_target_soundon
+ - @null
+ - @null
- @null
- @string/description_direction_up
- @null
+ - @null
+ - @null
- @string/description_direction_down
+ - @null
+ - @null
- @null
- @drawable/ic_lockscreen_unlock
- @null
+ - @null
+ - @null
- @drawable/ic_lockscreen_silent
+ - @null
+ - @null
- @null
- @string/description_target_unlock
- @null
+ - @null
+ - @null
- @string/description_target_silent
+ - @null
+ - @null
- @null
- @drawable/ic_lockscreen_unlock
- @null
+ - @null
+ - @null
- @drawable/ic_lockscreen_camera
+ - @null
+ - @null
- @null
- @string/description_target_unlock
- @null
+ - @null
+ - @null
- @string/description_target_camera
+ - @null
+
+
+
+ - @drawable/ic_lockscreen_phone
+ - @drawable/ic_lockscreen_custom
+ - @drawable/ic_lockscreen_camera
+ - @drawable/ic_lockscreen_custom
+ - @drawable/ic_lockscreen_sms
+ - @null
+ - @drawable/ic_lockscreen_unlock
+ - @null
+
+
+
+ - @string/description_target_phone
+ - @string/description_target_custom
+ - @string/description_target_camera
+ - @string/description_target_custom
+ - @string/description_target_sms
+ - @null
+ - @string/description_target_unlock
+ - @null
+
+
+
+ - @drawable/ic_lockscreen_phone
+ - @drawable/ic_lockscreen_custom
+ - @drawable/ic_lockscreen_silent
+ - @drawable/ic_lockscreen_custom
+ - @drawable/ic_lockscreen_sms
+ - @null
+ - @drawable/ic_lockscreen_unlock
+ - @null
+
+
+
+ - @string/description_target_phone
+ - @string/description_target_custom
+ - @string/description_target_silent
+ - @string/description_target_custom
+ - @string/description_target_sms
+ - @null
+ - @string/description_target_unlock
+ - @null
+
+
+
+ - @drawable/ic_lockscreen_phone
+ - @drawable/ic_lockscreen_custom
+ - @drawable/ic_lockscreen_soundon
+ - @drawable/ic_lockscreen_custom
+ - @drawable/ic_lockscreen_sms
+ - @null
+ - @drawable/ic_lockscreen_unlock
+ - @null
+
+
+
+ - @string/description_target_phone
+ - @string/description_target_custom
+ - @string/description_target_soundon
+ - @string/description_target_custom
+ - @string/description_target_sms
+ - @null
+ - @string/description_target_unlock
+ - @null
+
+
+
+ - @drawable/ic_lockscreen_phone
+ - @drawable/ic_lockscreen_custom
+ - @drawable/ic_lockscreen_camera
+ - @drawable/ic_lockscreen_custom
+ - @drawable/ic_lockscreen_sms
+ - @drawable/ic_lockscreen_custom
+ - @drawable/ic_lockscreen_unlock
+ - @drawable/ic_lockscreen_custom
+
+
+
+ - @string/description_target_phone
+ - @string/description_target_custom
+ - @string/description_target_camera
+ - @string/description_target_custom
+ - @string/description_target_sms
+ - @string/description_target_custom
+ - @string/description_target_unlock
+ - @string/description_target_custom
+
+
+
+ - @drawable/ic_lockscreen_phone
+ - @drawable/ic_lockscreen_custom
+ - @drawable/ic_lockscreen_silent
+ - @drawable/ic_lockscreen_custom
+ - @drawable/ic_lockscreen_sms
+ - @drawable/ic_lockscreen_custom
+ - @drawable/ic_lockscreen_unlock
+ - @drawable/ic_lockscreen_custom
+
+
+
+ - @string/description_target_phone
+ - @string/description_target_custom
+ - @string/description_target_silent
+ - @string/description_target_custom
+ - @string/description_target_sms
+ - @string/description_target_custom
+ - @string/description_target_unlock
+ - @string/description_target_custom
+
+
+
+ - @drawable/ic_lockscreen_phone
+ - @drawable/ic_lockscreen_custom
+ - @drawable/ic_lockscreen_soundon
+ - @drawable/ic_lockscreen_custom
+ - @drawable/ic_lockscreen_sms
+ - @drawable/ic_lockscreen_custom
+ - @drawable/ic_lockscreen_unlock
+ - @drawable/ic_lockscreen_custom
+
+
+
+ - @string/description_target_phone
+ - @string/description_target_custom
+ - @string/description_target_soundon
+ - @string/description_target_custom
+ - @string/description_target_sms
+ - @string/description_target_custom
+ - @string/description_target_unlock
+ - @string/description_target_custom
diff --git a/core/res/res/values/arrays.xml b/core/res/res/values/arrays.xml
index bf1ddac10da93..ff501bbc996ca 100644
--- a/core/res/res/values/arrays.xml
+++ b/core/res/res/values/arrays.xml
@@ -465,51 +465,214 @@
- @drawable/ic_lockscreen_unlock
- @null
+ - @null
- @drawable/ic_lockscreen_soundon
- @null
+ - @null
- @string/description_target_unlock
- @null
+ - @null
- @string/description_target_soundon
- @null
+ - @null
- @string/description_direction_right
- @null
+ - @null
- @string/description_direction_left
- @null
+ - @null
- @drawable/ic_lockscreen_unlock
- @null
+ - @null
- @drawable/ic_lockscreen_silent
- @null
+ - @null
- @string/description_target_unlock
- @null
+ - @null
- @string/description_target_silent
- @null
+ - @null
- @drawable/ic_lockscreen_unlock
- @null
+ - @null
- @drawable/ic_lockscreen_camera
- @null
+ - @null
- @string/description_target_unlock
- @null
+ - @null
- @string/description_target_camera
- @null
+ - @null
+
+
+
+ - @drawable/ic_lockscreen_phone
+ - @drawable/ic_lockscreen_custom
+ - @drawable/ic_lockscreen_camera
+ - @drawable/ic_lockscreen_custom
+ - @drawable/ic_lockscreen_sms
+ - @null
+ - @drawable/ic_lockscreen_unlock
+ - @null
+
+
+
+ - @string/description_target_phone
+ - @string/description_target_custom
+ - @string/description_target_camera
+ - @string/description_target_custom
+ - @string/description_target_sms
+ - @null
+ - @string/description_target_unlock
+ - @null
+
+
+
+ - @drawable/ic_lockscreen_phone
+ - @drawable/ic_lockscreen_custom
+ - @drawable/ic_lockscreen_silent
+ - @drawable/ic_lockscreen_custom
+ - @drawable/ic_lockscreen_sms
+ - @null
+ - @drawable/ic_lockscreen_unlock
+ - @null
+
+
+
+ - @string/description_target_phone
+ - @string/description_target_custom
+ - @string/description_target_silent
+ - @string/description_target_custom
+ - @string/description_target_sms
+ - @null
+ - @string/description_target_unlock
+ - @null
+
+
+
+ - @drawable/ic_lockscreen_phone
+ - @drawable/ic_lockscreen_custom
+ - @drawable/ic_lockscreen_soundon
+ - @drawable/ic_lockscreen_custom
+ - @drawable/ic_lockscreen_sms
+ - @null
+ - @drawable/ic_lockscreen_unlock
+ - @null
+
+
+ - @string/description_target_phone
+ - @string/description_target_custom
+ - @string/description_target_soundon
+ - @string/description_target_custom
+ - @string/description_target_sms
+ - @null
+ - @string/description_target_unlock
+ - @null
+
+
+
+ - @drawable/ic_lockscreen_phone
+ - @drawable/ic_lockscreen_custom
+ - @drawable/ic_lockscreen_camera
+ - @drawable/ic_lockscreen_custom
+ - @drawable/ic_lockscreen_sms
+ - @drawable/ic_lockscreen_custom
+ - @drawable/ic_lockscreen_unlock
+ - @drawable/ic_lockscreen_custom
+
+
+
+ - @string/description_target_phone
+ - @string/description_target_custom
+ - @string/description_target_camera
+ - @string/description_target_custom
+ - @string/description_target_sms
+ - @string/description_target_custom
+ - @string/description_target_unlock
+ - @string/description_target_custom
+
+
+
+ - @drawable/ic_lockscreen_phone
+ - @drawable/ic_lockscreen_custom
+ - @drawable/ic_lockscreen_silent
+ - @drawable/ic_lockscreen_custom
+ - @drawable/ic_lockscreen_sms
+ - @drawable/ic_lockscreen_custom
+ - @drawable/ic_lockscreen_unlock
+ - @drawable/ic_lockscreen_custom
+
+
+
+ - @string/description_target_phone
+ - @string/description_target_custom
+ - @string/description_target_silent
+ - @string/description_target_custom
+ - @string/description_target_sms
+ - @string/description_target_custom
+ - @string/description_target_unlock
+ - @string/description_target_custom
+
+
+
+ - @drawable/ic_lockscreen_phone
+ - @drawable/ic_lockscreen_custom
+ - @drawable/ic_lockscreen_soundon
+ - @drawable/ic_lockscreen_custom
+ - @drawable/ic_lockscreen_sms
+ - @drawable/ic_lockscreen_custom
+ - @drawable/ic_lockscreen_unlock
+ - @drawable/ic_lockscreen_custom
+
+
+
+ - @string/description_target_phone
+ - @string/description_target_custom
+ - @string/description_target_soundon
+ - @string/description_target_custom
+ - @string/description_target_sms
+ - @string/description_target_custom
+ - @string/description_target_unlock
+ - @string/description_target_custom
+
+
+
+
+ - @string/reboot_reboot
+ - @string/reboot_restart
+ - @string/reboot_recovery
+ - @string/reboot_bootloader
+
+
+
+
+
+ - restart
+ - recovery
+ - bootloader
+
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
old mode 100755
new mode 100644
index 55c877c82ad1b..b2e2e1e438fe3
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -62,17 +62,17 @@
true
- 200
+ 100
- 400
+ 200
- 500
+ 250
- 150
- 220
+ 50
+ 120
8dp
+<<<<<<< HEAD
@@ -756,4 +757,8 @@
legacy USB manager should be started. -->
/sys/devices/platform/usb_mass_storage/lun0/file
+=======
+
+ com.google.android.deskclock/com.android.deskclock.Screensaver
+>>>>>>> a653394989b691362658984f62af44943a1eba05
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index f9fd5f504fd80..da74a9abc0c4d 100755
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -318,6 +318,40 @@
Ringer vibrate
Ringer on
+
+
+ Restarting\u2026
+
+ Your tablet will restart.
+
+ Your phone will restart.
+
+
+ Reboot phone
+
+
+ Screenshot
+
+
+ Reboot
+
+ Restart
+
+ Recovery
+
+ Bootloader
+
+ Bootmenu
+
+ Fastboot
+
+ Download
+
+
+ Rebooting\u2026
+
+ Your phone will reboot.
+
Shutting down\u2026
@@ -3298,9 +3332,15 @@
Camera
Silent
+
+ MMS
+
+ Phone
Sound on
-
+
+ Custom
+
Swipe to unlock.
diff --git a/data/sounds/AllAudio.mk b/data/sounds/AllAudio.mk
index db73a7156f0bc..bff308b93e157 100644
--- a/data/sounds/AllAudio.mk
+++ b/data/sounds/AllAudio.mk
@@ -21,3 +21,4 @@ $(call inherit-product, frameworks/base/data/sounds/AudioPackage4.mk)
#$(call inherit-product, frameworks/base/data/sounds/AudioPackage5.mk)
$(call inherit-product, frameworks/base/data/sounds/AudioPackage6.mk)
$(call inherit-product, frameworks/base/data/sounds/AudioPackage7.mk)
+$(call inherit-product, frameworks/base/data/sounds/AudioPackage7alt.mk)
diff --git a/packages/SettingsProvider/res/values/defaults.xml b/packages/SettingsProvider/res/values/defaults.xml
index 1ebed1fd3c76d..3036204ac0542 100644
--- a/packages/SettingsProvider/res/values/defaults.xml
+++ b/packages/SettingsProvider/res/values/defaults.xml
@@ -34,7 +34,7 @@
true
false
- false
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_sysbar_search.png b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_search.png
new file mode 100644
index 0000000000000..096e775348b77
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_search.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_sysbar_search_land.png b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_search_land.png
new file mode 100644
index 0000000000000..8c82c4417f1e3
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_search_land.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_lte_off.png b/packages/SystemUI/res/drawable-hdpi/stat_lte_off.png
new file mode 100755
index 0000000000000..ffc5d7b102f30
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_lte_off.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_lte_on.png b/packages/SystemUI/res/drawable-hdpi/stat_lte_on.png
new file mode 100755
index 0000000000000..72c6b384afb8f
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_lte_on.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_1.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_1.png
new file mode 100755
index 0000000000000..03a2ce8af7e33
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_1.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_10.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_10.png
new file mode 100755
index 0000000000000..2a21e2ddf1c8d
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_10.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_100.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_100.png
new file mode 100755
index 0000000000000..01ae82ce025a5
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_100.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_11.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_11.png
new file mode 100755
index 0000000000000..ac2d52e568f3b
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_11.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_12.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_12.png
new file mode 100755
index 0000000000000..46693f520079e
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_12.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_13.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_13.png
new file mode 100755
index 0000000000000..9d793b67d99d2
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_13.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_14.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_14.png
new file mode 100755
index 0000000000000..ec53ac5d810e4
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_14.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_15.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_15.png
new file mode 100755
index 0000000000000..b0b5d65489f37
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_15.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_16.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_16.png
new file mode 100755
index 0000000000000..b92b884ec798a
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_16.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_17.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_17.png
new file mode 100755
index 0000000000000..398eb705d5968
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_17.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_18.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_18.png
new file mode 100755
index 0000000000000..506d5d366870d
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_18.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_19.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_19.png
new file mode 100755
index 0000000000000..4f13422c10e5b
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_19.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_2.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_2.png
new file mode 100755
index 0000000000000..d24dda6462c58
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_2.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_20.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_20.png
new file mode 100755
index 0000000000000..eeaa2f3fa6bd9
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_20.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_21.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_21.png
new file mode 100755
index 0000000000000..43225b17db6ef
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_21.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_22.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_22.png
new file mode 100755
index 0000000000000..dc8e1842b2000
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_22.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_23.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_23.png
new file mode 100755
index 0000000000000..7ed28a331025d
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_23.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_24.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_24.png
new file mode 100755
index 0000000000000..3caedb7deecb4
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_24.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_25.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_25.png
new file mode 100755
index 0000000000000..48cb789263e93
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_25.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_26.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_26.png
new file mode 100755
index 0000000000000..fc21767816e07
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_26.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_27.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_27.png
new file mode 100755
index 0000000000000..a260baf741a24
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_27.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_28.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_28.png
new file mode 100755
index 0000000000000..5a43a1bb9338d
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_28.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_29.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_29.png
new file mode 100755
index 0000000000000..dd906c484217e
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_29.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_3.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_3.png
new file mode 100755
index 0000000000000..b46e20ae2eb1b
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_3.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_30.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_30.png
new file mode 100755
index 0000000000000..51feae6f58772
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_30.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_31.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_31.png
new file mode 100755
index 0000000000000..6ecde48b41b4b
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_31.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_32.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_32.png
new file mode 100755
index 0000000000000..38f2f89a9a8f2
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_32.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_33.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_33.png
new file mode 100755
index 0000000000000..b2c87e112a7fa
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_33.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_34.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_34.png
new file mode 100755
index 0000000000000..ae3449d00d33c
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_34.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_35.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_35.png
new file mode 100755
index 0000000000000..72b8d328f4962
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_35.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_36.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_36.png
new file mode 100755
index 0000000000000..50f712fe989ff
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_36.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_37.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_37.png
new file mode 100755
index 0000000000000..0b8d64ef8d0c0
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_37.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_38.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_38.png
new file mode 100755
index 0000000000000..c758468085444
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_38.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_39.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_39.png
new file mode 100755
index 0000000000000..046587548e722
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_39.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_4.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_4.png
new file mode 100755
index 0000000000000..f630d552438b6
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_4.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_40.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_40.png
new file mode 100755
index 0000000000000..7160439e70504
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_40.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_41.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_41.png
new file mode 100755
index 0000000000000..175a30bae1ef6
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_41.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_42.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_42.png
new file mode 100755
index 0000000000000..1df34f0bd177f
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_42.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_43.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_43.png
new file mode 100755
index 0000000000000..564dac567cfb1
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_43.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_44.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_44.png
new file mode 100755
index 0000000000000..b22220f9e1e59
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_44.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_45.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_45.png
new file mode 100755
index 0000000000000..763855933fa5f
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_45.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_46.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_46.png
new file mode 100755
index 0000000000000..a4bf8f91bdce2
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_46.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_47.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_47.png
new file mode 100755
index 0000000000000..ada38a79a7bc1
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_47.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_48.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_48.png
new file mode 100755
index 0000000000000..e68574abeb7a7
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_48.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_49.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_49.png
new file mode 100755
index 0000000000000..a858ca8430321
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_49.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_5.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_5.png
new file mode 100755
index 0000000000000..50e2d75b1c562
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_5.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_50.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_50.png
new file mode 100755
index 0000000000000..05600701f32cc
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_50.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_51.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_51.png
new file mode 100755
index 0000000000000..ad4953a24410d
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_51.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_52.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_52.png
new file mode 100755
index 0000000000000..e8324d727c68a
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_52.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_53.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_53.png
new file mode 100755
index 0000000000000..32f592ade9ba9
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_53.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_54.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_54.png
new file mode 100755
index 0000000000000..3fb14c04b4fb8
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_54.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_55.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_55.png
new file mode 100755
index 0000000000000..ff9c895b3089d
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_55.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_56.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_56.png
new file mode 100755
index 0000000000000..f13b257291cc9
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_56.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_57.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_57.png
new file mode 100755
index 0000000000000..2378e65c283ef
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_57.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_58.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_58.png
new file mode 100755
index 0000000000000..0d8c7b31362a9
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_58.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_59.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_59.png
new file mode 100755
index 0000000000000..5c67775482c8d
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_59.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_6.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_6.png
new file mode 100755
index 0000000000000..5113a88a18a64
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_6.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_60.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_60.png
new file mode 100755
index 0000000000000..8c44a32756288
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_60.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_61.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_61.png
new file mode 100755
index 0000000000000..b390904418b49
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_61.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_62.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_62.png
new file mode 100755
index 0000000000000..8b700c2ac693e
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_62.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_63.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_63.png
new file mode 100755
index 0000000000000..77bfc00ef98cd
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_63.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_64.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_64.png
new file mode 100755
index 0000000000000..2141809baedc7
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_64.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_65.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_65.png
new file mode 100755
index 0000000000000..6e087848f766d
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_65.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_66.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_66.png
new file mode 100755
index 0000000000000..211662592553a
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_66.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_67.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_67.png
new file mode 100755
index 0000000000000..1c04927db79fc
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_67.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_68.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_68.png
new file mode 100755
index 0000000000000..8dc237c30ce14
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_68.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_69.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_69.png
new file mode 100755
index 0000000000000..77debf78ea226
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_69.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_7.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_7.png
new file mode 100755
index 0000000000000..89453c8bad0a9
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_7.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_70.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_70.png
new file mode 100755
index 0000000000000..68b82bd423e15
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_70.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_71.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_71.png
new file mode 100755
index 0000000000000..063eaf4be774f
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_71.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_72.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_72.png
new file mode 100755
index 0000000000000..2bbdc39d0a7b5
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_72.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_73.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_73.png
new file mode 100755
index 0000000000000..160ffa253caae
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_73.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_74.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_74.png
new file mode 100755
index 0000000000000..4ecc7506a25ae
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_74.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_75.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_75.png
new file mode 100755
index 0000000000000..d5275e7f6790a
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_75.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_76.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_76.png
new file mode 100755
index 0000000000000..351ac4ca75189
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_76.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_77.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_77.png
new file mode 100755
index 0000000000000..95c307ff38b3e
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_77.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_78.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_78.png
new file mode 100755
index 0000000000000..0e048f0eff933
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_78.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_79.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_79.png
new file mode 100755
index 0000000000000..511203bce813c
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_79.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_8.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_8.png
new file mode 100755
index 0000000000000..2dbccaa8ec8d4
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_8.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_80.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_80.png
new file mode 100755
index 0000000000000..39bcec13090df
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_80.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_81.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_81.png
new file mode 100755
index 0000000000000..842f5646d9dfd
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_81.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_82.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_82.png
new file mode 100755
index 0000000000000..3be8130ea97e8
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_82.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_83.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_83.png
new file mode 100755
index 0000000000000..f9e3771bf39a9
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_83.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_84.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_84.png
new file mode 100755
index 0000000000000..f0a1435ee3903
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_84.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_85.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_85.png
new file mode 100755
index 0000000000000..b867329202be3
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_85.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_86.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_86.png
new file mode 100755
index 0000000000000..c720d56b694e1
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_86.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_87.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_87.png
new file mode 100755
index 0000000000000..f3547133ab936
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_87.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_88.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_88.png
new file mode 100755
index 0000000000000..4e4b32c62b93f
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_88.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_89.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_89.png
new file mode 100755
index 0000000000000..a69a332d00fb5
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_89.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_9.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_9.png
new file mode 100755
index 0000000000000..44154d4614660
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_9.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_90.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_90.png
new file mode 100755
index 0000000000000..cceb2028d3ecb
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_90.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_91.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_91.png
new file mode 100755
index 0000000000000..02f3826052bdd
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_91.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_92.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_92.png
new file mode 100755
index 0000000000000..d7879e0dd03e9
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_92.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_93.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_93.png
new file mode 100755
index 0000000000000..b94f40126604e
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_93.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_94.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_94.png
new file mode 100755
index 0000000000000..d5216420dcd1b
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_94.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_95.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_95.png
new file mode 100755
index 0000000000000..a89c88cdaa92c
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_95.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_96.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_96.png
new file mode 100755
index 0000000000000..c01ce7a443ff9
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_96.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_97.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_97.png
new file mode 100755
index 0000000000000..1f0c0316daaa1
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_97.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_98.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_98.png
new file mode 100755
index 0000000000000..fe6d6af5eccea
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_98.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_99.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_99.png
new file mode 100755
index 0000000000000..ce8df84e3ef90
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_percentages_99.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_sysbar_search.png b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_search.png
new file mode 100644
index 0000000000000..59e6572c8a54c
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_search.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_sysbar_search_land.png b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_search_land.png
new file mode 100644
index 0000000000000..e76fc91df13fc
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_search_land.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_lte_off.png b/packages/SystemUI/res/drawable-mdpi/stat_lte_off.png
new file mode 100755
index 0000000000000..3161b572ba741
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_lte_off.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_lte_on.png b/packages/SystemUI/res/drawable-mdpi/stat_lte_on.png
new file mode 100755
index 0000000000000..234dfdedabf77
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_lte_on.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_1.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_1.png
new file mode 100755
index 0000000000000..a81d251034e4f
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_1.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_10.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_10.png
new file mode 100755
index 0000000000000..5f8cb4dcc2ce7
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_10.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_100.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_100.png
new file mode 100755
index 0000000000000..579b4e5a6749d
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_100.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_11.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_11.png
new file mode 100755
index 0000000000000..31fd57f211717
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_11.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_12.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_12.png
new file mode 100755
index 0000000000000..15be3f5926dc9
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_12.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_13.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_13.png
new file mode 100755
index 0000000000000..415a6d8b2415b
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_13.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_14.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_14.png
new file mode 100755
index 0000000000000..d4529085a1029
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_14.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_15.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_15.png
new file mode 100755
index 0000000000000..034c5ba17e976
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_15.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_16.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_16.png
new file mode 100755
index 0000000000000..12caabb5be47c
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_16.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_17.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_17.png
new file mode 100755
index 0000000000000..9b29767085b0b
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_17.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_18.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_18.png
new file mode 100755
index 0000000000000..439a79d4fc0ab
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_18.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_19.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_19.png
new file mode 100755
index 0000000000000..6e6970f2384ad
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_19.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_2.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_2.png
new file mode 100755
index 0000000000000..2b3c4b4130756
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_2.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_20.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_20.png
new file mode 100755
index 0000000000000..f5ecb99fd9022
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_20.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_21.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_21.png
new file mode 100755
index 0000000000000..ce3dfa2b9b748
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_21.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_22.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_22.png
new file mode 100755
index 0000000000000..f6f98b0731da9
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_22.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_23.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_23.png
new file mode 100755
index 0000000000000..8942a25920a60
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_23.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_24.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_24.png
new file mode 100755
index 0000000000000..214a223911d7e
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_24.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_25.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_25.png
new file mode 100755
index 0000000000000..de29b102bb413
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_25.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_26.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_26.png
new file mode 100755
index 0000000000000..917fa55459fd8
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_26.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_27.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_27.png
new file mode 100755
index 0000000000000..88d2c638492b6
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_27.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_28.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_28.png
new file mode 100755
index 0000000000000..4ad23c03eae71
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_28.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_29.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_29.png
new file mode 100755
index 0000000000000..823c2034bc2d3
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_29.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_3.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_3.png
new file mode 100755
index 0000000000000..a3d6c1f926b44
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_3.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_30.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_30.png
new file mode 100755
index 0000000000000..de139fcf8a6ed
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_30.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_31.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_31.png
new file mode 100755
index 0000000000000..dda2dc324cfd2
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_31.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_32.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_32.png
new file mode 100755
index 0000000000000..aa55f0077a08e
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_32.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_33.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_33.png
new file mode 100755
index 0000000000000..ee5465ff92934
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_33.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_34.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_34.png
new file mode 100755
index 0000000000000..b46f30f59454f
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_34.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_35.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_35.png
new file mode 100755
index 0000000000000..5efbf2060fd04
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_35.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_36.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_36.png
new file mode 100755
index 0000000000000..74a4dfee2e8b6
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_36.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_37.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_37.png
new file mode 100755
index 0000000000000..24559dee96bb4
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_37.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_38.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_38.png
new file mode 100755
index 0000000000000..f342ffd8551f8
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_38.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_39.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_39.png
new file mode 100755
index 0000000000000..399384a704806
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_39.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_4.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_4.png
new file mode 100755
index 0000000000000..37a15e0b17b7a
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_4.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_40.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_40.png
new file mode 100755
index 0000000000000..5216096f3bab5
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_40.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_41.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_41.png
new file mode 100755
index 0000000000000..edf686e24814b
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_41.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_42.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_42.png
new file mode 100755
index 0000000000000..2aee626966abe
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_42.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_43.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_43.png
new file mode 100755
index 0000000000000..8f0a10e8b54a6
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_43.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_44.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_44.png
new file mode 100755
index 0000000000000..c74c4be458332
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_44.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_45.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_45.png
new file mode 100755
index 0000000000000..9149bea2204fc
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_45.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_46.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_46.png
new file mode 100755
index 0000000000000..f0b12a58eb722
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_46.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_47.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_47.png
new file mode 100755
index 0000000000000..2493dbdb3cc86
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_47.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_48.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_48.png
new file mode 100755
index 0000000000000..6081c0f89b54e
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_48.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_49.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_49.png
new file mode 100755
index 0000000000000..6f9791258c146
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_49.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_5.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_5.png
new file mode 100755
index 0000000000000..e61c3a4c1e3a0
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_5.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_50.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_50.png
new file mode 100755
index 0000000000000..9127cc21b0f3f
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_50.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_51.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_51.png
new file mode 100755
index 0000000000000..b9601dff997f6
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_51.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_52.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_52.png
new file mode 100755
index 0000000000000..67712851d65a8
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_52.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_53.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_53.png
new file mode 100755
index 0000000000000..9345bff3005f0
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_53.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_54.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_54.png
new file mode 100755
index 0000000000000..f604077c30b90
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_54.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_55.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_55.png
new file mode 100755
index 0000000000000..4b5a7a156a39c
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_55.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_56.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_56.png
new file mode 100755
index 0000000000000..9ce5b80ff542d
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_56.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_57.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_57.png
new file mode 100755
index 0000000000000..2ed66c2a1db21
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_57.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_58.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_58.png
new file mode 100755
index 0000000000000..fb38740d9e55a
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_58.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_59.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_59.png
new file mode 100755
index 0000000000000..f65b4882c5d66
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_59.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_6.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_6.png
new file mode 100755
index 0000000000000..42db0abe307dd
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_6.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_60.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_60.png
new file mode 100755
index 0000000000000..217b803171090
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_60.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_61.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_61.png
new file mode 100755
index 0000000000000..5548f6281d89e
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_61.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_62.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_62.png
new file mode 100755
index 0000000000000..4ad6b8dd60f49
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_62.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_63.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_63.png
new file mode 100755
index 0000000000000..21bee927795d6
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_63.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_64.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_64.png
new file mode 100755
index 0000000000000..aaee3e178adb9
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_64.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_65.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_65.png
new file mode 100755
index 0000000000000..4400562ef9839
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_65.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_66.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_66.png
new file mode 100755
index 0000000000000..0f9d046d16edc
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_66.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_67.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_67.png
new file mode 100755
index 0000000000000..23fa795603521
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_67.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_68.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_68.png
new file mode 100755
index 0000000000000..bdeba044c8f45
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_68.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_69.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_69.png
new file mode 100755
index 0000000000000..f1cb3b3f7f58f
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_69.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_7.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_7.png
new file mode 100755
index 0000000000000..a4cfc885ef8a1
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_7.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_70.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_70.png
new file mode 100755
index 0000000000000..8fa74ecbec223
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_70.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_71.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_71.png
new file mode 100755
index 0000000000000..396cc403b7dea
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_71.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_72.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_72.png
new file mode 100755
index 0000000000000..e817841ea4842
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_72.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_73.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_73.png
new file mode 100755
index 0000000000000..fc240cc39d700
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_73.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_74.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_74.png
new file mode 100755
index 0000000000000..ab20db235f4f3
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_74.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_75.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_75.png
new file mode 100755
index 0000000000000..2e8d313a07f00
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_75.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_76.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_76.png
new file mode 100755
index 0000000000000..048d366f43356
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_76.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_77.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_77.png
new file mode 100755
index 0000000000000..e9f7c65f97705
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_77.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_78.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_78.png
new file mode 100755
index 0000000000000..36480cdac17d7
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_78.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_79.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_79.png
new file mode 100755
index 0000000000000..88158de565124
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_79.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_8.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_8.png
new file mode 100755
index 0000000000000..6b5539911b997
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_8.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_80.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_80.png
new file mode 100755
index 0000000000000..8edf935b63da9
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_80.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_81.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_81.png
new file mode 100755
index 0000000000000..f17195c395386
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_81.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_82.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_82.png
new file mode 100755
index 0000000000000..e0c42ce6a7258
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_82.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_83.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_83.png
new file mode 100755
index 0000000000000..6655051fdee7b
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_83.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_84.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_84.png
new file mode 100755
index 0000000000000..ec3c85b411a9c
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_84.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_85.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_85.png
new file mode 100755
index 0000000000000..68d096c78ec64
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_85.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_86.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_86.png
new file mode 100755
index 0000000000000..f211df26be900
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_86.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_87.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_87.png
new file mode 100755
index 0000000000000..56c3b85cd2807
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_87.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_88.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_88.png
new file mode 100755
index 0000000000000..3665dd8b3df32
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_88.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_89.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_89.png
new file mode 100755
index 0000000000000..cf4cd539b5225
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_89.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_9.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_9.png
new file mode 100755
index 0000000000000..6d8a330e6d1a4
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_9.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_90.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_90.png
new file mode 100755
index 0000000000000..06d18092275fd
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_90.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_91.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_91.png
new file mode 100755
index 0000000000000..72bd796a3ec63
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_91.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_92.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_92.png
new file mode 100755
index 0000000000000..108a124e92d96
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_92.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_93.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_93.png
new file mode 100755
index 0000000000000..bdb45b5c8f683
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_93.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_94.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_94.png
new file mode 100755
index 0000000000000..f140822e15022
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_94.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_95.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_95.png
new file mode 100755
index 0000000000000..d140dafe3e1a3
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_95.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_96.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_96.png
new file mode 100755
index 0000000000000..d45b8975991ed
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_96.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_97.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_97.png
new file mode 100755
index 0000000000000..12290ea62b092
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_97.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_98.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_98.png
new file mode 100755
index 0000000000000..65b8a3c125486
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_98.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_99.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_99.png
new file mode 100755
index 0000000000000..5e83c1a1e192c
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_percentages_99.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_search.png b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_search.png
new file mode 100644
index 0000000000000..205a571edd9b5
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_search.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_search_land.png b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_search_land.png
new file mode 100644
index 0000000000000..a3a87affdaa48
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_search_land.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_lte_off.png b/packages/SystemUI/res/drawable-xhdpi/stat_lte_off.png
new file mode 100644
index 0000000000000..e587da9290114
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_lte_off.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_lte_on.png b/packages/SystemUI/res/drawable-xhdpi/stat_lte_on.png
new file mode 100644
index 0000000000000..1631cd27b42f7
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_lte_on.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_0.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_0.png
new file mode 100755
index 0000000000000..2b47449cf995f
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_0.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_1.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_1.png
new file mode 100755
index 0000000000000..06545e63506cd
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_1.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_10.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_10.png
new file mode 100755
index 0000000000000..30e6a11ae49c7
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_10.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_100.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_100.png
new file mode 100755
index 0000000000000..c2e88107d19c1
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_100.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_11.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_11.png
new file mode 100755
index 0000000000000..d4dc6f8d4a316
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_11.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_12.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_12.png
new file mode 100755
index 0000000000000..eaad8944de408
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_12.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_13.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_13.png
new file mode 100755
index 0000000000000..fb530a693f87e
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_13.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_14.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_14.png
new file mode 100755
index 0000000000000..eb007d5691743
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_14.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_15.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_15.png
new file mode 100755
index 0000000000000..6c53209fb9cce
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_15.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_16.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_16.png
new file mode 100755
index 0000000000000..d96c5c8bb5428
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_16.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_17.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_17.png
new file mode 100755
index 0000000000000..c090fb92e4ef8
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_17.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_18.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_18.png
new file mode 100755
index 0000000000000..846cf6f09fd0a
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_18.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_19.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_19.png
new file mode 100755
index 0000000000000..6e1c85f47bf32
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_19.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_2.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_2.png
new file mode 100755
index 0000000000000..a7c9daaee0240
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_2.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_20.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_20.png
new file mode 100755
index 0000000000000..6ca5f289feaf9
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_20.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_21.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_21.png
new file mode 100755
index 0000000000000..5c65995b90cbd
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_21.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_22.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_22.png
new file mode 100755
index 0000000000000..129da128ac213
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_22.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_23.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_23.png
new file mode 100755
index 0000000000000..06eab4771b834
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_23.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_24.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_24.png
new file mode 100755
index 0000000000000..78c76fc870538
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_24.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_25.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_25.png
new file mode 100755
index 0000000000000..64fac50f0ef80
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_25.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_26.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_26.png
new file mode 100755
index 0000000000000..4569aafa68f97
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_26.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_27.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_27.png
new file mode 100755
index 0000000000000..f2ba9d8ec0208
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_27.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_28.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_28.png
new file mode 100755
index 0000000000000..05af6d01c6c09
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_28.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_29.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_29.png
new file mode 100755
index 0000000000000..912ca75041a50
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_29.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_3.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_3.png
new file mode 100755
index 0000000000000..f9b8cea31894c
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_3.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_30.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_30.png
new file mode 100755
index 0000000000000..720f47a95211f
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_30.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_31.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_31.png
new file mode 100755
index 0000000000000..550d9d50fe6b9
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_31.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_32.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_32.png
new file mode 100755
index 0000000000000..057960cb68fbf
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_32.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_33.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_33.png
new file mode 100755
index 0000000000000..3cd8952acc0f9
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_33.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_34.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_34.png
new file mode 100755
index 0000000000000..f4833730926f7
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_34.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_35.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_35.png
new file mode 100755
index 0000000000000..c031dfe650373
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_35.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_36.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_36.png
new file mode 100755
index 0000000000000..0ef609b7065dd
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_36.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_37.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_37.png
new file mode 100755
index 0000000000000..7258106e03f15
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_37.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_38.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_38.png
new file mode 100755
index 0000000000000..4308260d9eee7
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_38.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_39.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_39.png
new file mode 100755
index 0000000000000..3fd1e67a40f74
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_39.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_4.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_4.png
new file mode 100755
index 0000000000000..fd6bc2d0adf15
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_4.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_40.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_40.png
new file mode 100755
index 0000000000000..8b95354847ea0
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_40.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_41.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_41.png
new file mode 100755
index 0000000000000..6020d3d8227f8
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_41.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_42.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_42.png
new file mode 100755
index 0000000000000..1c0c635465a13
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_42.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_43.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_43.png
new file mode 100755
index 0000000000000..784db7b99576c
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_43.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_44.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_44.png
new file mode 100755
index 0000000000000..2a7ec365ec87c
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_44.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_45.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_45.png
new file mode 100755
index 0000000000000..f26eeefee40e6
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_45.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_46.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_46.png
new file mode 100755
index 0000000000000..fe442e4762a39
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_46.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_47.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_47.png
new file mode 100755
index 0000000000000..f9f123215720e
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_47.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_48.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_48.png
new file mode 100755
index 0000000000000..559a5a1ffba14
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_48.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_49.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_49.png
new file mode 100755
index 0000000000000..e9793326cf12f
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_49.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_5.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_5.png
new file mode 100755
index 0000000000000..232153b0f6814
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_5.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_50.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_50.png
new file mode 100755
index 0000000000000..6542a46d92d23
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_50.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_51.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_51.png
new file mode 100755
index 0000000000000..4f8563491de03
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_51.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_52.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_52.png
new file mode 100755
index 0000000000000..165b544e2833a
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_52.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_53.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_53.png
new file mode 100755
index 0000000000000..54984d7581568
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_53.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_54.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_54.png
new file mode 100755
index 0000000000000..8a66d705063e7
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_54.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_55.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_55.png
new file mode 100755
index 0000000000000..d883b3d65bf1b
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_55.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_56.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_56.png
new file mode 100755
index 0000000000000..a673f7b64f9e2
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_56.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_57.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_57.png
new file mode 100755
index 0000000000000..5d4090317a5c0
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_57.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_58.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_58.png
new file mode 100755
index 0000000000000..c46b57a8dd82d
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_58.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_59.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_59.png
new file mode 100755
index 0000000000000..8e7e402dbde67
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_59.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_6.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_6.png
new file mode 100755
index 0000000000000..9452761d6b382
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_6.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_60.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_60.png
new file mode 100755
index 0000000000000..4475b690dc3da
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_60.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_61.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_61.png
new file mode 100755
index 0000000000000..a02c101e27728
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_61.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_62.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_62.png
new file mode 100755
index 0000000000000..a168dd7ad4d0a
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_62.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_63.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_63.png
new file mode 100755
index 0000000000000..e4c5b67707fd6
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_63.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_64.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_64.png
new file mode 100755
index 0000000000000..238cca828422c
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_64.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_65.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_65.png
new file mode 100755
index 0000000000000..848a961336cd5
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_65.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_66.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_66.png
new file mode 100755
index 0000000000000..b9eb078390728
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_66.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_67.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_67.png
new file mode 100755
index 0000000000000..019d209d9b460
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_67.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_68.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_68.png
new file mode 100755
index 0000000000000..0c51e06ebaf99
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_68.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_69.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_69.png
new file mode 100755
index 0000000000000..3302fc284a078
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_69.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_7.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_7.png
new file mode 100755
index 0000000000000..f72bf1a6f15b0
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_7.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_70.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_70.png
new file mode 100755
index 0000000000000..0330ed76032b4
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_70.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_71.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_71.png
new file mode 100755
index 0000000000000..6a67ac5c64216
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_71.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_72.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_72.png
new file mode 100755
index 0000000000000..82a4277a011d7
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_72.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_73.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_73.png
new file mode 100755
index 0000000000000..29adbfd89d014
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_73.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_74.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_74.png
new file mode 100755
index 0000000000000..f37cdd6fb2a22
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_74.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_75.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_75.png
new file mode 100755
index 0000000000000..6fd4a8bac785b
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_75.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_76.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_76.png
new file mode 100755
index 0000000000000..4d48af89411c8
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_76.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_77.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_77.png
new file mode 100755
index 0000000000000..5a52f13237bfc
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_77.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_78.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_78.png
new file mode 100755
index 0000000000000..742f9109c6416
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_78.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_79.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_79.png
new file mode 100755
index 0000000000000..6275d376438e8
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_79.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_8.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_8.png
new file mode 100755
index 0000000000000..4cce4037ae386
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_8.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_80.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_80.png
new file mode 100755
index 0000000000000..7fd94b1b2e961
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_80.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_81.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_81.png
new file mode 100755
index 0000000000000..ec7902b568c15
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_81.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_82.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_82.png
new file mode 100755
index 0000000000000..e23af791b1b8b
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_82.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_83.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_83.png
new file mode 100755
index 0000000000000..b756166dce83b
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_83.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_84.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_84.png
new file mode 100755
index 0000000000000..05754b55b2c5e
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_84.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_85.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_85.png
new file mode 100755
index 0000000000000..67a88c6183e81
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_85.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_86.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_86.png
new file mode 100755
index 0000000000000..ea8c71b7e127b
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_86.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_87.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_87.png
new file mode 100755
index 0000000000000..127a352ee70bd
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_87.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_88.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_88.png
new file mode 100755
index 0000000000000..6541f4001fdb9
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_88.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_89.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_89.png
new file mode 100755
index 0000000000000..980a26a4ee18a
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_89.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_9.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_9.png
new file mode 100755
index 0000000000000..9a6a1a1f9d2a5
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_9.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_90.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_90.png
new file mode 100755
index 0000000000000..48ad1618ea4b5
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_90.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_91.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_91.png
new file mode 100755
index 0000000000000..e8894be1f7ca7
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_91.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_92.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_92.png
new file mode 100755
index 0000000000000..406c6c6f13e70
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_92.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_93.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_93.png
new file mode 100755
index 0000000000000..6d6acdd6aec6c
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_93.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_94.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_94.png
new file mode 100755
index 0000000000000..e945304b11094
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_94.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_95.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_95.png
new file mode 100755
index 0000000000000..1a7e645e85525
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_95.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_96.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_96.png
new file mode 100755
index 0000000000000..5040248841a11
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_96.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_97.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_97.png
new file mode 100755
index 0000000000000..452996669cb56
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_97.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_98.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_98.png
new file mode 100755
index 0000000000000..50a730a2bd00d
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_98.png differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_99.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_99.png
new file mode 100755
index 0000000000000..599eb50060ca7
Binary files /dev/null and b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_percentages_99.png differ
diff --git a/packages/SystemUI/res/drawable/battery_bar.xml b/packages/SystemUI/res/drawable/battery_bar.xml
new file mode 100755
index 0000000000000..122241c9a4db2
--- /dev/null
+++ b/packages/SystemUI/res/drawable/battery_bar.xml
@@ -0,0 +1,63 @@
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/SystemUI/res/drawable/powerwidget_bg.xml b/packages/SystemUI/res/drawable/powerwidget_bg.xml
new file mode 100644
index 0000000000000..df67b3e1f0a63
--- /dev/null
+++ b/packages/SystemUI/res/drawable/powerwidget_bg.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
diff --git a/packages/SystemUI/res/drawable/stat_power_bg.xml b/packages/SystemUI/res/drawable/stat_power_bg.xml
new file mode 100644
index 0000000000000..a21b510e1bd3f
--- /dev/null
+++ b/packages/SystemUI/res/drawable/stat_power_bg.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/SystemUI/res/drawable/stat_sys_battery_percentages.xml b/packages/SystemUI/res/drawable/stat_sys_battery_percentages.xml
new file mode 100755
index 0000000000000..cb102c1ad1894
--- /dev/null
+++ b/packages/SystemUI/res/drawable/stat_sys_battery_percentages.xml
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/SystemUI/res/layout/navigation_bar.xml b/packages/SystemUI/res/layout/navigation_bar.xml
index d19fd81f8e626..b425f5f11bf27 100644
--- a/packages/SystemUI/res/layout/navigation_bar.xml
+++ b/packages/SystemUI/res/layout/navigation_bar.xml
@@ -43,52 +43,58 @@
-
-
+
-
+
-
+
-
+
+
-
-
+
+
+
-
+
-
-
-
-
+
+
@@ -243,20 +283,34 @@
android:scaleType="center"
android:layout_weight="0"
/>
-
-
+
+
+
+=======
+ android:background="@drawable/powerwidget_bg">
+>>>>>>> a653394989b691362658984f62af44943a1eba05
+
+
+
+
+
+
+
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index 2c1473b22a41e..17b4460940313 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -200,6 +200,7 @@
Menu
Recent apps
+ Search
Switch input method button.
@@ -362,4 +363,7 @@
Clear all notifications.
+
+
+ Activate screen saver
diff --git a/packages/SystemUI/src/com/android/systemui/DreamsDockLauncher.java b/packages/SystemUI/src/com/android/systemui/DreamsDockLauncher.java
new file mode 100644
index 0000000000000..1db2a7feca006
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/DreamsDockLauncher.java
@@ -0,0 +1,78 @@
+package com.android.systemui;
+
+import android.app.Activity;
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.provider.Settings;
+import android.util.Slog;
+
+public class DreamsDockLauncher extends Activity {
+ private static final String TAG = "DreamsDockLauncher";
+
+ // Launch the screen saver if started as an activity.
+ @Override
+ protected void onCreate (Bundle icicle) {
+ super.onCreate(icicle);
+ launchDream(this);
+ finish();
+ }
+
+ private static void launchDream(Context context) {
+ try {
+ String component = Settings.Secure.getString(
+ context.getContentResolver(), Settings.Secure.SCREENSAVER_COMPONENT);
+ if (component == null) {
+ component = context.getResources().getString(
+ com.android.internal.R.string.config_defaultDreamComponent);
+ }
+ if (component != null) {
+ // dismiss the notification shade, recents, etc.
+ context.sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
+
+ ComponentName cn = ComponentName.unflattenFromString(component);
+ Intent zzz = new Intent(Intent.ACTION_MAIN)
+ .setComponent(cn)
+ .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+ | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
+ | Intent.FLAG_ACTIVITY_NO_USER_ACTION
+ | Intent.FLAG_FROM_BACKGROUND
+ | Intent.FLAG_ACTIVITY_NO_HISTORY
+ );
+ Slog.v(TAG, "Starting screen saver on dock event: " + component);
+ context.startActivity(zzz);
+ } else {
+ Slog.e(TAG, "Couldn't start screen saver: none selected");
+ }
+ } catch (android.content.ActivityNotFoundException exc) {
+ // no screensaver? give up
+ Slog.e(TAG, "Couldn't start screen saver: none installed");
+ }
+ }
+
+ // Trap low-level dock events and launch the screensaver.
+ public static class DockEventReceiver extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ final boolean activateOnDock = 0 != Settings.Secure.getInt(
+ context.getContentResolver(),
+ Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK, 1);
+
+ if (!activateOnDock) return;
+
+ if (Intent.ACTION_DOCK_EVENT.equals(intent.getAction())) {
+ Bundle extras = intent.getExtras();
+ int state = extras
+ .getInt(Intent.EXTRA_DOCK_STATE, Intent.EXTRA_DOCK_STATE_UNDOCKED);
+ if (state == Intent.EXTRA_DOCK_STATE_DESK
+ || state == Intent.EXTRA_DOCK_STATE_LE_DESK
+ || state == Intent.EXTRA_DOCK_STATE_HE_DESK) {
+ launchDream(context);
+ }
+ }
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CarrierLabel.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CarrierLabel.java
index d8441f2b1df3b..10acc446b0148 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CarrierLabel.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CarrierLabel.java
@@ -20,6 +20,7 @@
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.provider.Settings;
import android.provider.Telephony;
import android.util.AttributeSet;
import android.util.Slog;
@@ -33,7 +34,7 @@
import com.android.internal.R;
/**
- * This widget display an analogic clock with two hands for hours and
+ * This widget display an analogic clock with two hands for hours and minutes.
* minutes.
*/
public class CarrierLabel extends TextView {
@@ -91,23 +92,33 @@ void updateNetworkName(boolean showSpn, String spn, boolean showPlmn, String plm
Slog.d("CarrierLabel", "updateNetworkName showSpn=" + showSpn + " spn=" + spn
+ " showPlmn=" + showPlmn + " plmn=" + plmn);
}
- StringBuilder str = new StringBuilder();
- boolean something = false;
- if (showPlmn && plmn != null) {
- str.append(plmn);
- something = true;
- }
- if (showSpn && spn != null) {
+
+ String customLabel = null;
+ customLabel = Settings.System.getString(mContext.getContentResolver(),
+ Settings.System.CUSTOM_CARRIER_LABEL);
+
+ if (customLabel == null) {
+
+ StringBuilder str = new StringBuilder();
+ boolean something = false;
+ if (showPlmn && plmn != null) {
+ str.append(plmn);
+ something = true;
+ }
+ if (showSpn && spn != null) {
+ if (something) {
+ str.append('\n');
+ }
+ str.append(spn);
+ something = true;
+ }
if (something) {
- str.append('\n');
+ setText(str.toString());
+ } else {
+ setText(com.android.internal.R.string.lockscreen_carrier_default);
}
- str.append(spn);
- something = true;
- }
- if (something) {
- setText(str.toString());
} else {
- setText(com.android.internal.R.string.lockscreen_carrier_default);
+ setText(customLabel);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
index 97a18555e4323..0653be915e5d3 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
@@ -16,30 +16,42 @@
package com.android.systemui.statusbar.phone;
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
+import android.content.ContentResolver;
import android.content.Context;
+import android.content.res.Configuration;
import android.content.res.Resources;
+import android.database.ContentObserver;
import android.graphics.Rect;
+import android.os.Handler;
+import android.os.Handler;
import android.os.ServiceManager;
+import android.provider.Settings;
+import android.graphics.Rect;
+import android.os.ServiceManager;
+import android.provider.Settings;
import android.util.AttributeSet;
import android.util.Slog;
-import android.view.animation.AccelerateInterpolator;
import android.view.Display;
+import android.view.KeyEvent;
import android.view.MotionEvent;
+import android.view.Surface;
import android.view.View;
import android.view.ViewGroup;
-import android.view.Surface;
import android.view.WindowManager;
+import android.view.animation.AccelerateInterpolator;
import android.widget.LinearLayout;
-import java.io.FileDescriptor;
-import java.io.PrintWriter;
-import java.lang.StringBuilder;
-
import com.android.internal.statusbar.IStatusBarService;
-
import com.android.systemui.R;
+import com.android.systemui.statusbar.policy.KeyButtonView;
public class NavigationBarView extends LinearLayout {
final static boolean DEBUG = false;
@@ -50,6 +62,9 @@ public class NavigationBarView extends LinearLayout {
final static boolean NAVBAR_ALWAYS_AT_RIGHT = true;
final static boolean ANIMATE_HIDE_TRANSITION = false; // turned off because it introduces unsightly delay when videos goes to full screen
+
+ private boolean mPersistMenu;
+ private Handler mHandler;
protected IStatusBarService mBarService;
final Display mDisplay;
@@ -59,11 +74,78 @@ public class NavigationBarView extends LinearLayout {
int mBarSize;
boolean mVertical;
- boolean mHidden, mLowProfile, mShowMenu;
+ boolean mHidden, mLowProfile, mShowMenu, mHideSearch;
int mDisabledFlags = 0;
+ public void updateButtons() {
+ String saved = Settings.System.getString(mContext.getContentResolver(), Settings.System.NAV_BUTTONS);
+ if (saved == null) {
+ saved = "back|home|recent|search0";
+ }
+ boolean isPortrait = mContext.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT;
+ List ids = Arrays.asList(R.id.one,R.id.two,R.id.three,R.id.four);
+ if (!isPortrait) {
+ Collections.reverse(ids);
+ }
+ mHideSearch = saved.contains("search0");
+ int cc =0;
+ //Reset all paddings to invisible
+ ViewGroup navPanel = ((ViewGroup) mCurrentView.findViewById(R.id.nav_buttons));
+ for (int cv = 0; cv < navPanel.getChildCount(); cv++) {
+ if (!(navPanel.getChildAt(cv) instanceof KeyButtonView)) {
+ navPanel.getChildAt(cv).setVisibility(View.INVISIBLE);
+ }
+ }
+ for (String buttons : saved.split("\\|") ){
+ KeyButtonView cView = (KeyButtonView) mCurrentView.findViewById(ids.get(cc));
+ if (buttons.equals("back")){
+ cView.setTag("back");
+ cView.setContentDescription(mContext.getResources().getString(R.string.accessibility_back));
+ cView.setMCode(KeyEvent.KEYCODE_BACK);
+ if (isPortrait) {
+ cView.setImageResource(R.drawable.ic_sysbar_back);
+ } else {
+ cView.setImageResource(R.drawable.ic_sysbar_back_land);
+ }
+ } else if (buttons.equals("home")){
+ cView.setTag("home");
+ cView.setContentDescription(mContext.getResources().getString(R.string.accessibility_home));
+ cView.setMCode(KeyEvent.KEYCODE_HOME);
+ if (isPortrait) {
+ cView.setImageResource(R.drawable.ic_sysbar_home);
+ } else {
+ cView.setImageResource(R.drawable.ic_sysbar_home_land);
+ }
+ } else if (buttons.equals("recent")){
+ cView.setTag("recent");
+ cView.setContentDescription(mContext.getResources().getString(R.string.accessibility_recent));
+ cView.setMCode(0);
+ if (isPortrait) {
+ cView.setImageResource(R.drawable.ic_sysbar_recent);
+ } else {
+ cView.setImageResource(R.drawable.ic_sysbar_recent_land);
+ }
+ } else {
+ cView.setTag("search");
+ cView.setContentDescription(mContext.getResources().getString(R.string.accessibility_search));
+ cView.setMCode(KeyEvent.KEYCODE_SEARCH);
+ if (isPortrait) {
+ cView.setImageResource(R.drawable.ic_sysbar_search);
+ } else {
+ cView.setImageResource(R.drawable.ic_sysbar_search_land);
+ }
+ //Hide search button padding
+ if (mHideSearch) {
+ navPanel.getChildAt(navPanel.indexOfChild(cView) - 1).setVisibility(View.GONE);
+ }
+ }
+ cc++;
+ }
+ mCurrentView.invalidate();
+ }
+
public View getRecentsButton() {
- return mCurrentView.findViewById(R.id.recent_apps);
+ return mCurrentView.findViewWithTag("recent");
}
public View getMenuButton() {
@@ -71,11 +153,15 @@ public View getMenuButton() {
}
public View getBackButton() {
- return mCurrentView.findViewById(R.id.back);
+ return mCurrentView.findViewWithTag("back");
}
public View getHomeButton() {
- return mCurrentView.findViewById(R.id.home);
+ return mCurrentView.findViewWithTag("home");
+ }
+
+ public View getSearchButton() {
+ return mCurrentView.findViewWithTag("search");
}
public NavigationBarView(Context context, AttributeSet attrs) {
@@ -87,6 +173,12 @@ public NavigationBarView(Context context, AttributeSet attrs) {
Context.WINDOW_SERVICE)).getDefaultDisplay();
mBarService = IStatusBarService.Stub.asInterface(
ServiceManager.getService(Context.STATUS_BAR_SERVICE));
+ mPersistMenu = (Settings.System.getInt(mContext.getContentResolver(),
+ Settings.System.PERSIST_MENU, 0) == 1);
+
+ mHandler = new Handler();
+ SettingsObserver settingsObserver = new SettingsObserver(mHandler);
+ settingsObserver.observe();
final Resources res = mContext.getResources();
mBarSize = res.getDimensionPixelSize(R.dimen.navigation_bar_size);
@@ -94,6 +186,21 @@ public NavigationBarView(Context context, AttributeSet attrs) {
mShowMenu = false;
}
+ class SettingsObserver extends ContentObserver {
+ SettingsObserver(Handler handler) {
+ super(handler);
+ }
+ void observe() {
+ ContentResolver resolver = mContext.getContentResolver();
+ resolver.registerContentObserver(Settings.System.getUriFor(Settings.System.PERSIST_MENU), false, this);
+ }
+
+ @Override
+ public void onChange(boolean selfChange) {
+ updateSettings();
+ }
+ }
+
View.OnTouchListener mLightsOutListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent ev) {
@@ -128,6 +235,11 @@ public void setDisabledFlags(int disabledFlags, boolean force) {
getBackButton() .setVisibility(disableBack ? View.INVISIBLE : View.VISIBLE);
getHomeButton() .setVisibility(disableHome ? View.INVISIBLE : View.VISIBLE);
getRecentsButton().setVisibility(disableRecent ? View.INVISIBLE : View.VISIBLE);
+ if (!mHideSearch) {
+ getSearchButton() .setVisibility(disableRecent ? View.INVISIBLE : View.VISIBLE);
+ } else {
+ getSearchButton() .setVisibility(View.GONE);
+ }
}
public void setMenuVisibility(final boolean show) {
@@ -135,11 +247,15 @@ public void setMenuVisibility(final boolean show) {
}
public void setMenuVisibility(final boolean show, final boolean force) {
- if (!force && mShowMenu == show) return;
+ if (mPersistMenu) {
+ getMenuButton().setVisibility(View.VISIBLE);
+ } else {
+ if (!force && mShowMenu == show) return;
- mShowMenu = show;
+ mShowMenu = show;
- getMenuButton().setVisibility(mShowMenu ? View.VISIBLE : View.INVISIBLE);
+ getMenuButton().setVisibility(mShowMenu ? View.VISIBLE : View.INVISIBLE);
+ }
}
public void setLowProfile(final boolean lightsOut) {
@@ -156,6 +272,8 @@ public void setLowProfile(final boolean lightsOut, final boolean animate, final
final View navButtons = mCurrentView.findViewById(R.id.nav_buttons);
final View lowLights = mCurrentView.findViewById(R.id.lights_out);
+ lowLights.findViewById(R.id.extraDot).setVisibility(mHideSearch ? View.GONE : View.VISIBLE);
+
// ok, everyone, stop it right there
navButtons.animate().cancel();
lowLights.animate().cancel();
@@ -228,7 +346,7 @@ public void reorient() {
mCurrentView = mRotatedViews[rot];
mCurrentView.setVisibility(View.VISIBLE);
mVertical = (rot == Surface.ROTATION_90 || rot == Surface.ROTATION_270);
-
+ updateButtons();
// force the low profile & disabled states into compliance
setLowProfile(mLowProfile, false, true /* force */);
setDisabledFlags(mDisabledFlags, true /* force */);
@@ -317,4 +435,14 @@ public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
);
pw.println(" }");
}
+
+ private void updateSettings() {
+ ContentResolver resolver = mContext.getContentResolver();
+ mPersistMenu = (Settings.System.getInt(resolver, Settings.System.PERSIST_MENU, 0) == 1);
+ if (mPersistMenu) {
+ getMenuButton().setVisibility(View.VISIBLE);
+ } else {
+ getMenuButton().setVisibility(View.INVISIBLE);
+ }
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index be0ba4a360fa3..e7acee292b634 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -25,6 +25,7 @@
import android.app.PendingIntent;
import android.app.StatusBarManager;
import android.content.BroadcastReceiver;
+import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
@@ -32,6 +33,7 @@
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.Resources;
import android.content.res.Configuration;
+import android.database.ContentObserver;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
@@ -85,6 +87,8 @@
import com.android.systemui.statusbar.StatusBar;
import com.android.systemui.statusbar.StatusBarIconView;
import com.android.systemui.statusbar.SignalClusterView;
+import com.android.systemui.statusbar.policy.CenterClock;
+import com.android.systemui.statusbar.policy.Clock;
import com.android.systemui.statusbar.policy.DateView;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.statusbar.policy.LocationController;
@@ -225,6 +229,7 @@ public class PhoneStatusBar extends StatusBar {
int[] mAbsPos = new int[2];
Runnable mPostCollapseCleanup = null;
+ LinearLayout mCenterClockLayout;
// for disabling the status bar
int mDisabled = 0;
@@ -307,11 +312,16 @@ protected View makeStatusBarView() {
(NavigationBarView) View.inflate(context, R.layout.navigation_bar, null);
mNavigationBarView.setDisabledFlags(mDisabled);
+ NavPanelObserver settingsObserver = new NavPanelObserver(new Handler());
+ settingsObserver.observe();
}
} catch (RemoteException ex) {
// no window manager? good luck with that
}
-
+
+
+ NavPanelObserver settingsObserver = new NavPanelObserver(new Handler());
+ settingsObserver.observe();
// figure out which pixel-format to use for the status bar.
mPixelFormat = PixelFormat.OPAQUE;
mStatusIcons = (LinearLayout)sb.findViewById(R.id.statusIcons);
@@ -319,6 +329,7 @@ protected View makeStatusBarView() {
mMoreIcon = sb.findViewById(R.id.moreIcon);
mNotificationIcons.setOverflowIndicator(mMoreIcon);
mIcons = (LinearLayout)sb.findViewById(R.id.icons);
+ mCenterClockLayout = (LinearLayout) sb.findViewById(R.id.center_clock_layout);
mTickerView = sb.findViewById(R.id.ticker);
mExpandedDialog = new ExpandedDialog(context);
@@ -348,6 +359,10 @@ public void onClick(View v) {
}
}
});
+<<<<<<< HEAD
+=======
+
+>>>>>>> a653394989b691362658984f62af44943a1eba05
mPowerWidget.setGlobalButtonOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View v) {
animateCollapse();
@@ -355,6 +370,10 @@ public boolean onLongClick(View v) {
}
});
+<<<<<<< HEAD
+=======
+
+>>>>>>> a653394989b691362658984f62af44943a1eba05
mTicker = new MyTicker(context, sb);
TickerView tickerView = (TickerView)sb.findViewById(R.id.tickerText);
@@ -400,6 +419,25 @@ public boolean onLongClick(View v) {
return sb;
}
+ protected class NavPanelObserver extends ContentObserver {
+ public NavPanelObserver(Handler handler) {
+ super(handler);
+ }
+
+ public void observe() {
+ ContentResolver resolver = mContext.getContentResolver();
+ resolver.registerContentObserver(
+ Settings.System.getUriFor(Settings.System.NAV_BUTTONS),
+ false, this);
+ onChange(true);
+ }
+
+ @Override
+ public void onChange(boolean selfChange) {
+ prepareNavigationBarView();
+ }
+ }
+
protected WindowManager.LayoutParams getRecentsLayoutParams(LayoutParams layoutParams) {
boolean opaque = false;
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
@@ -1059,9 +1097,15 @@ private void setAreThereNotifications() {
}
public void showClock(boolean show) {
- View clock = mStatusBarView.findViewById(R.id.clock);
+
+ Clock clock = (Clock) mStatusBarView.findViewById(R.id.clock);
if (clock != null) {
- clock.setVisibility(show ? View.VISIBLE : View.GONE);
+ clock.updateVisibilityFromStatusBar(show);
+ }
+
+ CenterClock cclock = (CenterClock) mStatusBarView.findViewById(R.id.center_clock);
+ if (cclock != null) {
+ cclock.updateVisibilityFromStatusBar(show);
}
}
@@ -1720,24 +1764,30 @@ private class MyTicker extends Ticker {
public void tickerStarting() {
mTicking = true;
mIcons.setVisibility(View.GONE);
+ mCenterClockLayout.setVisibility(View.GONE);
mTickerView.setVisibility(View.VISIBLE);
mTickerView.startAnimation(loadAnim(com.android.internal.R.anim.push_up_in, null));
mIcons.startAnimation(loadAnim(com.android.internal.R.anim.push_up_out, null));
+ mCenterClockLayout.startAnimation(loadAnim(com.android.internal.R.anim.push_up_out, null));
}
@Override
public void tickerDone() {
mIcons.setVisibility(View.VISIBLE);
+ mCenterClockLayout.setVisibility(View.VISIBLE);
mTickerView.setVisibility(View.GONE);
mIcons.startAnimation(loadAnim(com.android.internal.R.anim.push_down_in, null));
+ mCenterClockLayout.startAnimation(loadAnim(com.android.internal.R.anim.push_down_in, null));
mTickerView.startAnimation(loadAnim(com.android.internal.R.anim.push_down_out,
mTickingDoneListener));
}
public void tickerHalting() {
mIcons.setVisibility(View.VISIBLE);
+ mCenterClockLayout.setVisibility(View.VISIBLE);
mTickerView.setVisibility(View.GONE);
mIcons.startAnimation(loadAnim(com.android.internal.R.anim.fade_in, null));
+ mCenterClockLayout.startAnimation(loadAnim(com.android.internal.R.anim.fade_in, null));
mTickerView.startAnimation(loadAnim(com.android.internal.R.anim.fade_out,
mTickingDoneListener));
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java
index 5f18b5dfe8ab7..ce2474b89a610 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java
@@ -194,6 +194,10 @@ public PhoneStatusBarPolicy(Context context) {
private final void updateAlarm(Intent intent) {
boolean alarmSet = intent.getBooleanExtra("alarmSet", false);
+
+ if(alarmSet && Settings.System.getInt(mContext.getContentResolver(), Settings.System.STATUSBAR_SHOW_ALARM, 1) == 0)
+ alarmSet = false;
+
mService.setIconVisibility("alarm_clock", alarmSet);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryBar.java
new file mode 100755
index 0000000000000..0b7e2d5cf43b3
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryBar.java
@@ -0,0 +1,208 @@
+
+package com.android.systemui.statusbar.policy;
+
+import android.content.BroadcastReceiver;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.database.ContentObserver;
+import android.graphics.drawable.Animatable;
+import android.os.BatteryManager;
+import android.os.Handler;
+import android.provider.Settings;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.LinearLayout;
+
+public class BatteryBar extends LinearLayout implements Animatable, Runnable {
+
+ private static final String TAG = BatteryBar.class.getSimpleName();
+
+ // Total animation duration
+ private static final int ANIM_DURATION = 8000; // 5 seconds
+
+ // Duration between frames of charging animation
+ private static final int FRAME_DURATION = ANIM_DURATION / 100;
+
+ private boolean mAttached = false;
+ private boolean mShowBatteryBar = false;
+ private int mBatteryLevel = 0;
+ private int mChargingLevel = -1;
+ private boolean mBatteryCharging = false;
+
+ private Handler mHandler = new Handler();
+
+ LinearLayout mBatteryBarLayout;
+ View mBatteryBar;
+
+ class SettingsObserver extends ContentObserver {
+
+ public SettingsObserver(Handler handler) {
+ super(handler);
+ }
+
+ void observer() {
+ ContentResolver resolver = mContext.getContentResolver();
+ resolver.registerContentObserver(
+ Settings.System.getUriFor(Settings.System.STATUSBAR_BATTERY_BAR), false, this);
+ resolver.registerContentObserver(
+ Settings.System.getUriFor(Settings.System.STATUSBAR_BATTERY_BAR_COLOR), false,
+ this);
+ }
+
+ @Override
+ public void onChange(boolean selfChange) {
+ updateSettings();
+ }
+ }
+
+ public BatteryBar(Context context) {
+ this(context, null);
+ }
+
+ public BatteryBar(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public BatteryBar(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+
+ mBatteryBarLayout = new LinearLayout(mContext);
+ mBatteryBarLayout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
+ LayoutParams.MATCH_PARENT));
+ mBatteryBar = new View(mContext);
+ mBatteryBar.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
+ LayoutParams.MATCH_PARENT));
+ mBatteryBarLayout.addView(mBatteryBar);
+ addView(mBatteryBarLayout);
+ }
+
+ @Override
+ protected void onAttachedToWindow() {
+ super.onAttachedToWindow();
+
+ if (!mAttached) {
+ mAttached = true;
+ IntentFilter filter = new IntentFilter();
+ filter.addAction(Intent.ACTION_BATTERY_CHANGED);
+ filter.addAction(Intent.ACTION_SCREEN_OFF);
+ filter.addAction(Intent.ACTION_SCREEN_ON);
+ getContext().registerReceiver(mIntentReceiver, filter, null, getHandler());
+
+ SettingsObserver observer = new SettingsObserver(mHandler);
+ observer.observer();
+ updateSettings();
+ }
+ }
+
+ @Override
+ protected void onDetachedFromWindow() {
+ super.onDetachedFromWindow();
+
+ if (mAttached) {
+ mAttached = false;
+ getContext().unregisterReceiver(mIntentReceiver);
+ }
+ }
+
+ private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String action = intent.getAction();
+
+ if (!mShowBatteryBar) {
+ stop();
+ return;
+ }
+
+ if (Intent.ACTION_BATTERY_CHANGED.equals(action)) {
+ mBatteryLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
+ mBatteryCharging = intent.getIntExtra(BatteryManager.EXTRA_STATUS, 0) == BatteryManager.BATTERY_STATUS_CHARGING;
+ if (mBatteryCharging && mBatteryLevel < 100) {
+ start();
+ } else {
+ stop();
+ }
+ } else if (Intent.ACTION_SCREEN_OFF.equals(action)) {
+ stop();
+ } else if (Intent.ACTION_SCREEN_ON.equals(action)) {
+ if (mBatteryCharging && mBatteryLevel < 100) {
+ start();
+ }
+ }
+ }
+ };
+
+ private void updateSettings() {
+ ContentResolver resolver = getContext().getContentResolver();
+ mShowBatteryBar = (Settings.System.getInt(resolver,
+ Settings.System.STATUSBAR_BATTERY_BAR, 0) == 1);
+
+ int color = Settings.System.getInt(resolver,
+ Settings.System.STATUSBAR_BATTERY_BAR_COLOR, 0xFF33B5E5);
+
+ mBatteryBar.setBackgroundColor(color);
+
+ if (mShowBatteryBar) {
+ setVisibility(VISIBLE);
+ } else {
+ setVisibility(GONE);
+ }
+
+ if (mBatteryCharging && mBatteryLevel < 100) {
+ start();
+ } else {
+ stop();
+ }
+ }
+
+ @Override
+ public void run() {
+ mChargingLevel++;
+ if (mChargingLevel > 100) {
+ mChargingLevel = mBatteryLevel;
+ mBatteryBar.forceLayout();
+
+ }
+ setProgress(mChargingLevel);
+ if (mChargingLevel < 95)
+ mHandler.postDelayed(this, FRAME_DURATION);
+ else
+ mHandler.postDelayed(this, 2000);
+ }
+
+ private void setProgress(int n) {
+
+ int width = (int) ((getWidth() / 100) + 0.5d) * n;
+ LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) mBatteryBar
+ .getLayoutParams();
+ params.width = width;
+
+ mBatteryBarLayout.setLayoutParams(params);
+ }
+
+ @Override
+ public void start() {
+ if (!isRunning()) {
+ mHandler.removeCallbacks(this);
+ mChargingLevel = mBatteryLevel;
+ mHandler.postDelayed(this, FRAME_DURATION);
+ }
+ }
+
+ @Override
+ public void stop() {
+ if (isRunning()) {
+ mHandler.removeCallbacks(this);
+ mChargingLevel = -1;
+ }
+ setProgress(mBatteryLevel);
+ }
+
+ @Override
+ public boolean isRunning() {
+ return mChargingLevel != -1;
+ }
+
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java
index ff418c4500e9a..00039cf59f186 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java
@@ -19,10 +19,14 @@
import java.util.ArrayList;
import android.content.BroadcastReceiver;
+import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.database.ContentObserver;
import android.os.BatteryManager;
+import android.os.Handler;
+import android.provider.Settings;
import android.util.Slog;
import android.widget.ImageView;
import android.widget.TextView;
@@ -35,14 +39,38 @@ public class BatteryController extends BroadcastReceiver {
private Context mContext;
private ArrayList mIconViews = new ArrayList();
private ArrayList mLabelViews = new ArrayList();
+ private int mBattIcon;
+ private boolean mUseBattPercentages;
+ private Handler mHandler;
public BatteryController(Context context) {
mContext = context;
+
+ mUseBattPercentages = (Settings.System.getInt(mContext.getContentResolver(), Settings.System.BATTERY_PERCENTAGES, 0) ==1);
+
+ mHandler = new Handler();
+ SettingsObserver settingsObserver = new SettingsObserver(mHandler);
+ settingsObserver.observe();
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
context.registerReceiver(this, filter);
}
+
+ class SettingsObserver extends ContentObserver {
+ SettingsObserver(Handler handler) {
+ super(handler);
+ }
+ void observe() {
+ ContentResolver resolver = mContext.getContentResolver();
+ resolver.registerContentObserver(Settings.System.getUriFor(Settings.System.BATTERY_PERCENTAGES), false, this);
+ }
+
+ @Override
+ public void onChange(boolean selfChange) {
+ updateSettings();
+ }
+ }
public void addIconView(ImageView v) {
mIconViews.add(v);
@@ -57,8 +85,13 @@ public void onReceive(Context context, Intent intent) {
if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
final int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
final boolean plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0) != 0;
+ if (mUseBattPercentages) {
+ mBattIcon = R.drawable.stat_sys_battery_percentages;
+ } else {
+ mBattIcon = R.drawable.stat_sys_battery;
+ }
final int icon = plugged ? R.drawable.stat_sys_battery_charge
- : R.drawable.stat_sys_battery;
+ : mBattIcon;
int N = mIconViews.size();
for (int i=0; i= 0 && magic2 > magic1) {
SpannableStringBuilder formatted = new SpannableStringBuilder(result);
- if (AM_PM_STYLE == AM_PM_STYLE_GONE) {
- formatted.delete(magic1, magic2+1);
+ if (mAmPmStyle == AM_PM_STYLE_GONE) {
+ formatted.delete(magic1, magic2 + 1);
} else {
- if (AM_PM_STYLE == AM_PM_STYLE_SMALL) {
+ if (mAmPmStyle == AM_PM_STYLE_SMALL) {
CharacterStyle style = new RelativeSizeSpan(0.7f);
formatted.setSpan(style, magic1, magic2,
Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
@@ -204,5 +211,70 @@ private final CharSequence getSmallTime() {
return result;
}
+
+ public void updateVisibilityFromStatusBar(boolean show) {
+ if (mClockStyle == STYLE_CLOCK_RIGHT)
+ setVisibility(show ? View.VISIBLE : View.GONE);
+
+ }
+
+ class SettingsObserver extends ContentObserver {
+ SettingsObserver(Handler handler) {
+ super(handler);
+ }
+
+ void observe() {
+ ContentResolver resolver = mContext.getContentResolver();
+ resolver.registerContentObserver(
+ Settings.System.getUriFor(Settings.System.STATUSBAR_CLOCK_AM_PM_STYLE), false,
+ this);
+ resolver.registerContentObserver(
+ Settings.System.getUriFor(Settings.System.STATUSBAR_CLOCK_STYLE), false, this);
+ resolver.registerContentObserver(
+ Settings.System.getUriFor(Settings.System.STATUSBAR_CLOCK_COLOR), false, this);
+ resolver.registerContentObserver(
+ Settings.System.getUriFor(Settings.System.STATUSBAR_CLOCK_LOCKSCREEN_HIDE),
+ false, this);
+ updateSettings();
+ }
+
+ @Override
+ public void onChange(boolean selfChange) {
+ updateSettings();
+ }
+ }
+
+ protected void updateSettings() {
+ ContentResolver resolver = mContext.getContentResolver();
+
+ mClockFormatString = "";
+ mAmPmStyle = Settings.System.getInt(resolver, Settings.System.STATUSBAR_CLOCK_AM_PM_STYLE,
+ AM_PM_STYLE_GONE);
+
+ if (mAttached) {
+ updateClock();
+ }
+
+ mClockColor = Settings.System.getInt(resolver, Settings.System.STATUSBAR_CLOCK_COLOR,
+ 0xFF33B5E5);
+ if (mClockColor == Integer.MIN_VALUE) {
+ // flag to reset the color
+ mClockColor = 0xFF33B5E5;
+ }
+ setTextColor(mClockColor);
+
+ mClockStyle = Settings.System.getInt(resolver, Settings.System.STATUSBAR_CLOCK_STYLE, 1);
+ updateClockVisibility();
+
+ mShowClockDuringLockscreen = (Settings.System.getInt(resolver,
+ Settings.System.STATUSBAR_CLOCK_LOCKSCREEN_HIDE, 1) == 1);
+ }
+
+ protected void updateClockVisibility() {
+ if (mClockStyle == STYLE_CLOCK_RIGHT)
+ setVisibility(View.VISIBLE);
+ else
+ setVisibility(View.GONE);
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java
index 5e5bc1a425ef2..7255a8a615f3c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java
@@ -18,13 +18,18 @@
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
+import android.content.ContentResolver;
import android.content.Context;
import android.content.res.TypedArray;
+import android.database.ContentObserver;
import android.graphics.drawable.Drawable;
+import android.os.Handler;
import android.graphics.Canvas;
import android.graphics.RectF;
import android.os.RemoteException;
import android.os.SystemClock;
+import android.provider.Settings;
+import android.provider.Settings.SettingNotFoundException;
import android.os.ServiceManager;
import android.util.AttributeSet;
import android.view.accessibility.AccessibilityEvent;
@@ -40,6 +45,7 @@
import android.widget.ImageView;
import com.android.systemui.R;
+import com.android.systemui.statusbar.policy.Clock.SettingsObserver;
public class KeyButtonView extends ImageView {
private static final String TAG = "StatusBar.KeyButtonView";
@@ -97,6 +103,8 @@ public KeyButtonView(Context context, AttributeSet attrs, int defStyle) {
setClickable(true);
mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
+ SettingsObserver settingsObserver = new SettingsObserver(new Handler());
+ settingsObserver.observe();
}
@Override
@@ -131,6 +139,10 @@ public void setDrawingAlpha(float x) {
invalidate();
}
+ public void setMCode(int x) {
+ mCode = x;
+ }
+
public float getGlowAlpha() {
if (mGlowBG == null) return 0;
return mGlowAlpha;
@@ -185,14 +197,14 @@ public void setPressed(boolean pressed) {
ObjectAnimator.ofFloat(this, "glowAlpha", 1f),
ObjectAnimator.ofFloat(this, "glowScale", GLOW_MAX_SCALE_FACTOR)
);
- as.setDuration(50);
+ as.setDuration(20);
} else {
as.playTogether(
ObjectAnimator.ofFloat(this, "glowAlpha", 0f),
ObjectAnimator.ofFloat(this, "glowScale", 1f),
ObjectAnimator.ofFloat(this, "drawingAlpha", BUTTON_QUIESCENT_ALPHA)
);
- as.setDuration(500);
+ as.setDuration(200);
}
as.start();
}
@@ -280,6 +292,35 @@ void sendEvent(int action, int flags, long when) {
// System process is dead
}
}
+ class SettingsObserver extends ContentObserver {
+ SettingsObserver(Handler handler) {
+ super(handler);
+ }
+
+ void observe() {
+ ContentResolver resolver = mContext.getContentResolver();
+ resolver.registerContentObserver(
+ Settings.System.getUriFor(Settings.System.NAVIGATION_BAR_TINT), false,
+ this);
+ updateSettings();
+ }
+
+ @Override
+ public void onChange(boolean selfChange) {
+ updateSettings();
+ }
+ }
+
+ protected void updateSettings() {
+ ContentResolver resolver = mContext.getContentResolver();
+
+ try {
+ setColorFilter(null);
+ setColorFilter(Settings.System.getInt(resolver, Settings.System.NAVIGATION_BAR_TINT));
+ } catch (SettingNotFoundException e) {
+ }
+
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/LTEButton.java b/packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/LTEButton.java
new file mode 100644
index 0000000000000..ae9799e1089ce
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/LTEButton.java
@@ -0,0 +1,85 @@
+package com.android.systemui.statusbar.powerwidget;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.provider.Settings;
+import android.provider.Settings.SettingNotFoundException;
+import android.telephony.TelephonyManager;
+
+import com.android.internal.telephony.Phone;
+import com.android.systemui.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class LTEButton extends PowerButton{
+
+ private static final List OBSERVED_URIS = new ArrayList();
+ static {
+ OBSERVED_URIS.add(Settings.System.getUriFor(Settings.System.LTE_MODE));
+ }
+
+ public LTEButton() { mType = BUTTON_LTE; }
+
+ @Override
+ protected void updateState() {
+ ContentResolver resolver = mView.getContext().getContentResolver();
+ int network = getCurrentPreferredNetworkMode(mView.getContext());
+ switch(network) {
+ case Phone.NT_MODE_GLOBAL:
+ mIcon = R.drawable.stat_lte_on;
+ mState = STATE_ENABLED;
+ Settings.System.putInt(resolver, Settings.System.LTE_MODE, 1);
+ break;
+ case Phone.NT_MODE_CDMA:
+ mIcon = R.drawable.stat_lte_off;
+ mState = STATE_DISABLED;
+ Settings.System.putInt(resolver, Settings.System.LTE_MODE, 0);
+ break;
+ }
+ }
+
+ @Override
+ protected void toggleState() {
+ TelephonyManager tm = (TelephonyManager) mView.getContext()
+ .getSystemService(Context.TELEPHONY_SERVICE);
+ int network = getCurrentPreferredNetworkMode(mView.getContext());
+ ContentResolver resolver = mView.getContext().getContentResolver();
+ if (Phone.NT_MODE_GLOBAL == network) {
+ tm.toggleLTE(false);
+ mState = STATE_DISABLED;
+ Settings.System.putInt(resolver, Settings.System.LTE_MODE, 0);
+ } else if (Phone.NT_MODE_CDMA == network) {
+ tm.toggleLTE(true);
+ mState = STATE_ENABLED;
+ Settings.System.putInt(resolver, Settings.System.LTE_MODE, 1);
+ }
+ }
+
+ @Override
+ protected boolean handleLongClick() {
+ Intent intent = new Intent(Intent.ACTION_MAIN);
+ intent.setClassName("com.android.phone", "com.android.phone.Settings");
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ mView.getContext().startActivity(intent);
+ return true;
+ }
+
+ @Override
+ protected List getObservedUris() {
+ return OBSERVED_URIS;
+ }
+
+ private static int getCurrentPreferredNetworkMode(Context context) {
+ int network = -1;
+ try {
+ network = Settings.Secure.getInt(context.getContentResolver(),
+ Settings.Secure.PREFERRED_NETWORK_MODE);
+ } catch (SettingNotFoundException e) {
+ e.printStackTrace();
+ }
+ return network;
+ }
+}
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/PowerButton.java b/packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/PowerButton.java
index 1ea4016b6cc7c..1aea8240c7e85 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/PowerButton.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/PowerButton.java
@@ -51,6 +51,10 @@ public abstract class PowerButton {
public static final String BUTTON_MEDIA_PREVIOUS = "toggleMediaPrevious";
public static final String BUTTON_MEDIA_NEXT = "toggleMediaNext";
public static final String BUTTON_WIMAX = "toggleWimax";
+<<<<<<< HEAD
+=======
+ public static final String BUTTON_LTE = "toggleLte";
+>>>>>>> a653394989b691362658984f62af44943a1eba05
public static final String BUTTON_UNKNOWN = "unknown";
private static final Mode MASK_MODE = Mode.SCREEN;
@@ -76,6 +80,10 @@ public abstract class PowerButton {
BUTTONS.put(BUTTON_MEDIA_PLAY_PAUSE, MediaPlayPauseButton.class);
BUTTONS.put(BUTTON_MEDIA_PREVIOUS, MediaPreviousButton.class);
BUTTONS.put(BUTTON_MEDIA_NEXT, MediaNextButton.class);
+<<<<<<< HEAD
+=======
+ BUTTONS.put(BUTTON_LTE, LTEButton.class);
+>>>>>>> a653394989b691362658984f62af44943a1eba05
/* BUTTONS.put(BUTTON_WIMAX, WimaxButton.class); */
}
// this is a list of our currently loaded buttons
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/PowerWidget.java b/packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/PowerWidget.java
index 97408f29f877d..57ba0ffcbb9aa 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/PowerWidget.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/PowerWidget.java
@@ -201,7 +201,11 @@ private void updateButtonLayoutWidth() {
private void updateVisibility() {
// now check if we need to display the widget still
boolean displayPowerWidget = Settings.System.getInt(mContext.getContentResolver(),
+<<<<<<< HEAD
Settings.System.EXPANDED_VIEW_WIDGET, 1) == 1;
+=======
+ Settings.System.EXPANDED_VIEW_WIDGET, 0) == 1;
+>>>>>>> a653394989b691362658984f62af44943a1eba05
if(!displayPowerWidget) {
setVisibility(View.GONE);
} else {
@@ -265,7 +269,11 @@ public void observe() {
resolver.registerContentObserver(
Settings.System.getUriFor(Settings.System.EXPANDED_VIEW_WIDGET_COLOR),
false, this);
+<<<<<<< HEAD
+=======
+
+>>>>>>> a653394989b691362658984f62af44943a1eba05
// watch for changes in indicator visibility
resolver.registerContentObserver(
Settings.System.getUriFor(Settings.System.EXPANDED_HIDE_INDICATOR),
diff --git a/policy/src/com/android/internal/policy/impl/GlobalActions.java b/policy/src/com/android/internal/policy/impl/GlobalActions.java
index dfece301e53d4..ef314cd458ae5 100644
--- a/policy/src/com/android/internal/policy/impl/GlobalActions.java
+++ b/policy/src/com/android/internal/policy/impl/GlobalActions.java
@@ -172,9 +172,7 @@ public boolean showBeforeProvisioning() {
// first: power off
mItems.add(
- new SinglePressAction(
- com.android.internal.R.drawable.ic_lock_power_off,
- R.string.global_action_power_off) {
+ new SinglePressAction(com.android.internal.R.drawable.ic_lock_power_off, R.string.global_action_power_off) {
public void onPress() {
// shutdown by making sure radio and power are handled accordingly.
@@ -189,6 +187,38 @@ public boolean showBeforeProvisioning() {
return true;
}
});
+
+ // next: reboot
+ mItems.add(
+ new SinglePressAction(com.android.internal.R.drawable.ic_lock_reboot, R.string.global_action_reboot) {
+ public void onPress() {
+ ShutdownThread.reboot(mContext, "null", true);
+ }
+
+ public boolean showDuringKeyguard() {
+ return true;
+ }
+
+ public boolean showBeforeProvisioning() {
+ return true;
+ }
+ });
+
+ // next: screenshot
+ mItems.add(
+ new SinglePressAction(com.android.internal.R.drawable.ic_lock_screenshot, R.string.global_action_screenshot) {
+ public void onPress() {
+ takeScreenshot();
+ }
+
+ public boolean showDuringKeyguard() {
+ return true;
+ }
+
+ public boolean showBeforeProvisioning() {
+ return true;
+ }
+ });
// next: reboot
mItems.add(
diff --git a/policy/src/com/android/internal/policy/impl/KeyguardStatusViewManager.java b/policy/src/com/android/internal/policy/impl/KeyguardStatusViewManager.java
index ee54de1300e34..c107430f5f141 100644
--- a/policy/src/com/android/internal/policy/impl/KeyguardStatusViewManager.java
+++ b/policy/src/com/android/internal/policy/impl/KeyguardStatusViewManager.java
@@ -521,7 +521,15 @@ private void updateCarrierStateWithSimStatus(State simState) {
break;
}
- setCarrierText(carrierText);
+ String customLabel = null;
+ customLabel = Settings.System.getString(getContext().getContentResolver(),
+ Settings.System.CUSTOM_CARRIER_LABEL);
+
+ if(customLabel == null)
+ setCarrierText(carrierText);
+ else
+ setCarrierText(customLabel);
+
setCarrierHelpText(carrierHelpTextId);
updateEmergencyCallButtonState(mPhoneState);
}
diff --git a/policy/src/com/android/internal/policy/impl/LockScreen.java b/policy/src/com/android/internal/policy/impl/LockScreen.java
index 24a2420428d38..44dd2919bb1fa 100644
--- a/policy/src/com/android/internal/policy/impl/LockScreen.java
+++ b/policy/src/com/android/internal/policy/impl/LockScreen.java
@@ -16,28 +16,34 @@
package com.android.internal.policy.impl;
-import com.android.internal.R;
-import com.android.internal.widget.LockPatternUtils;
-import com.android.internal.widget.SlidingTab;
-import com.android.internal.widget.WaveView;
-import com.android.internal.widget.multiwaveview.MultiWaveView;
+
+import java.io.File;
+import java.net.URISyntaxException;
import android.app.ActivityManager;
+import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
+import android.database.ContentObserver;
+import android.media.AudioManager;
+import android.os.Handler;
+import android.provider.MediaStore;
+import android.provider.Settings;
+import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.*;
-import android.util.Log;
-import android.media.AudioManager;
-import android.provider.MediaStore;
-import android.provider.Settings;
+import android.widget.LinearLayout;
-import java.io.File;
+
+import com.android.internal.R;
+import com.android.internal.widget.LockPatternUtils;
+import com.android.internal.widget.SlidingTab;
+import com.android.internal.widget.WaveView;
+import com.android.internal.widget.multiwaveview.MultiWaveView;
/**
* The screen within {@link LockPatternKeyguardView} that shows general
@@ -52,6 +58,13 @@ class LockScreen extends LinearLayout implements KeyguardScreen {
private static final String ENABLE_MENU_KEY_FILE = "/data/local/enable_menu_key";
private static final int WAIT_FOR_ANIMATION_TIMEOUT = 0;
private static final int STAY_ON_WHILE_GRABBED_TIMEOUT = 30000;
+
+ public static final int LAYOUT_STOCK = 0;
+ public static final int LAYOUT_SIX = 1;
+ public static final int LAYOUT_EIGHT = 2;
+ public static final int LAYOUT_EIGHT_UNHIDDEN = 3;
+
+ private int mLockscreenStyle = LAYOUT_STOCK;
private LockPatternUtils mLockPatternUtils;
private KeyguardUpdateMonitor mUpdateMonitor;
@@ -184,26 +197,37 @@ class MultiWaveViewMethods implements MultiWaveView.OnTriggerListener,
UnlockWidgetCommonMethods {
private final MultiWaveView mMultiWaveView;
- private boolean mCameraDisabled;
+ private boolean mCameraDisabled = (Settings.System.getInt(mContext.getContentResolver(),
+ Settings.System.LOCKSCREEN_DISABLE_CAMERA, 0) == 1);
MultiWaveViewMethods(MultiWaveView multiWaveView) {
mMultiWaveView = multiWaveView;
- final boolean cameraDisabled = mLockPatternUtils.getDevicePolicyManager()
- .getCameraDisabled(null);
- if (cameraDisabled) {
- Log.v(TAG, "Camera disabled by Device Policy");
- mCameraDisabled = true;
- } else {
- // Camera is enabled if resource is initially defined for MultiWaveView
- // in the lockscreen layout file
- mCameraDisabled = mMultiWaveView.getTargetResourceId()
- != R.array.lockscreen_targets_with_camera;
- }
}
public void updateResources() {
int resId;
- if (mCameraDisabled) {
+ if (mLockscreenStyle == LAYOUT_EIGHT) {
+ if (mCameraDisabled) {
+ resId = mSilentMode ? R.array.soundon_eight_lockscreen_targets
+ : R.array.silent_eight_lockscreen_targets;
+ } else {
+ resId = R.array.eight_lockscreen_targets;
+ }
+ } else if (mLockscreenStyle == LAYOUT_EIGHT_UNHIDDEN) {
+ if (mCameraDisabled) {
+ resId = mSilentMode ? R.array.soundon_eight_lockscreen_targets
+ : R.array.silent_eight_lockscreen_targets;
+ } else {
+ resId = R.array.eight_lockscreen_targets;
+ }
+ } else if (mLockscreenStyle == LAYOUT_SIX) {
+ if (mCameraDisabled) {
+ resId = mSilentMode ? R.array.soundon_six_lockscreen_targets
+ : R.array.silent_six_lockscreen_targets;
+ } else {
+ resId = R.array.six_lockscreen_targets;
+ }
+ } else if (mCameraDisabled) {
// Fall back to showing ring/silence if camera is disabled by DPM...
resId = mSilentMode ? R.array.lockscreen_targets_when_silent
: R.array.lockscreen_targets_when_soundon;
@@ -222,19 +246,310 @@ public void onReleased(View v, int handle) {
}
public void onTrigger(View v, int target) {
- if (target == 0 || target == 1) { // 0 = unlock/portrait, 1 = unlock/landscape
- mCallback.goToUnlockScreen();
- } else if (target == 2 || target == 3) { // 2 = alt/portrait, 3 = alt/landscape
- if (!mCameraDisabled) {
- // Start the Camera
- Intent intent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- mContext.startActivity(intent);
+ if (mLockscreenStyle == LAYOUT_STOCK) {
+ if (target == 0 || target == 1) { // 0 = unlock/portrait, 1 = unlock/landscape
+ mCallback.goToUnlockScreen();
+ } else if (target == 2 || target == 3) { // 2 = alt/portrait, 3 = alt/landscape
+ if (mCameraDisabled) {
+ toggleRingMode();
+ mUnlockWidgetMethods.updateResources();
+ mCallback.pokeWakelock();
+ } else {
+ // Start the Camera
+ Intent intent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ mContext.startActivity(intent);
+ mCallback.goToUnlockScreen();
+ }
+ }
+ }
+ if (mLockscreenStyle == LAYOUT_SIX) {
+ if (target == 5) { // lower left Action = Empty
+ } else if (target == 0) { // right Action = Phone
+ Intent phoneIntent = new Intent(Intent.ACTION_MAIN);
+ phoneIntent.setClassName("com.android.contacts",
+ "com.android.contacts.activities.DialtactsActivity");
+ phoneIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ mContext.startActivity(phoneIntent);
+ mCallback.goToUnlockScreen();
+ } else if (target == 3) { // upper left Action = Custom
+ String intentUri = Settings.System.getString(mContext.getContentResolver(), Settings.System.LOCKSCREEN_CUSTOM_UPPER_LEFT_INTENT);
+
+ if(intentUri == null) {
+ } else {
+ Intent mmsIntent;
+ try {
+ mmsIntent = Intent.parseUri(intentUri, 0);
+ mmsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+ | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
+ mContext.startActivity(mmsIntent);
+ } catch (URISyntaxException e) {
+ }
+ }
+ mCallback.goToUnlockScreen();
+ } else if (target == 2) { // up Action == Camera/Ring Toggle
+ if (mCameraDisabled) {
+ toggleRingMode();
+ mUnlockWidgetMethods.updateResources();
+ mCallback.pokeWakelock();
+ } else {
+ // Start the Camera
+ Intent intent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ mContext.startActivity(intent);
+ mCallback.goToUnlockScreen();
+ }
+ } else if (target == 1) { // upper right Action = Unlock
+ String intentUri = Settings.System.getString(mContext.getContentResolver(), Settings.System.LOCKSCREEN_CUSTOM_UPPER_RIGHT_INTENT);
+
+ if(intentUri == null) {
+ } else {
+ Intent mmsIntent;
+ try {
+ mmsIntent = Intent.parseUri(intentUri, 0);
+ mmsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+ | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
+ mContext.startActivity(mmsIntent);
+ } catch (URISyntaxException e) {
+ }
+ }
+ mCallback.goToUnlockScreen();
+ } else if (target == 4) { // left Action = Mms
+ String intentUri = Settings.System.getString(mContext.getContentResolver(), Settings.System.LOCKSCREEN_CUSTOM_SMS_INTENT);
+
+ if(intentUri == null) {
+ Intent intent = new Intent(Intent.ACTION_MAIN);
+ intent.addCategory(Intent.CATEGORY_LAUNCHER);
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+ | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
+ intent.setClassName("com.android.mms", "com.android.mms.ui.ConversationList");
+ mContext.startActivity(intent);
+ } else {
+ Intent mmsIntent;
+ try {
+ mmsIntent = Intent.parseUri(intentUri, 0);
+ mmsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+ | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
+ mContext.startActivity(mmsIntent);
+ } catch (URISyntaxException e) {
+ }
+ }
+ mCallback.goToUnlockScreen();
+ } else if (target == 7) { // lower right Action = Empty
+ } else if (target == 6) { // bottom Action = Hidden Unlock
+ mCallback.goToUnlockScreen();
+ }
+ }
+ if (mLockscreenStyle == LAYOUT_EIGHT) {
+ if (target == 5) { // lower left Action = Custom
+ String intentUri = Settings.System.getString(mContext.getContentResolver(), Settings.System.LOCKSCREEN_CUSTOM_LOWER_LEFT_INTENT);
+
+ if(intentUri == null) {
+ mCallback.goToUnlockScreen();
+ } else {
+ Intent mmsIntent;
+ try {
+ mmsIntent = Intent.parseUri(intentUri, 0);
+ mmsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+ | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
+ mContext.startActivity(mmsIntent);
+ } catch (URISyntaxException e) {
+ }
+ }
+ mCallback.goToUnlockScreen();
+ } else if (target == 0) { // right Action = Phone
+ Intent phoneIntent = new Intent(Intent.ACTION_MAIN);
+ phoneIntent.setClassName("com.android.contacts",
+ "com.android.contacts.activities.DialtactsActivity");
+ phoneIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ mContext.startActivity(phoneIntent);
+ mCallback.goToUnlockScreen();
+ } else if (target == 3) { // upper left Action = Custom
+ String intentUri = Settings.System.getString(mContext.getContentResolver(), Settings.System.LOCKSCREEN_CUSTOM_UPPER_LEFT_INTENT);
+
+ if(intentUri == null) {
+ } else {
+ Intent mmsIntent;
+ try {
+ mmsIntent = Intent.parseUri(intentUri, 0);
+ mmsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+ | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
+ mContext.startActivity(mmsIntent);
+ } catch (URISyntaxException e) {
+ }
+ }
+ mCallback.goToUnlockScreen();
+ } else if (target == 2) { // top Action == Camera/Ring Toggle
+ if (mCameraDisabled) {
+ toggleRingMode();
+ mUnlockWidgetMethods.updateResources();
+ mCallback.pokeWakelock();
+ } else {
+ // Start the Camera
+ Intent intent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ mContext.startActivity(intent);
+ mCallback.goToUnlockScreen();
+ }
+ } else if (target == 1) { // upper right Action = Custom
+ String intentUri = Settings.System.getString(mContext.getContentResolver(), Settings.System.LOCKSCREEN_CUSTOM_UPPER_RIGHT_INTENT);
+
+ if(intentUri == null) {
+ } else {
+ Intent mmsIntent;
+ try {
+ mmsIntent = Intent.parseUri(intentUri, 0);
+ mmsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+ | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
+ mContext.startActivity(mmsIntent);
+ } catch (URISyntaxException e) {
+ }
+ }
+ mCallback.goToUnlockScreen();
+ } else if (target == 4) { // left Action = Mms
+ String intentUri = Settings.System.getString(mContext.getContentResolver(), Settings.System.LOCKSCREEN_CUSTOM_SMS_INTENT);
+
+ if(intentUri == null) {
+ Intent intent = new Intent(Intent.ACTION_MAIN);
+ intent.addCategory(Intent.CATEGORY_LAUNCHER);
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+ | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
+ intent.setClassName("com.android.mms", "com.android.mms.ui.ConversationList");
+ mContext.startActivity(intent);
+ } else {
+ Intent mmsIntent;
+ try {
+ mmsIntent = Intent.parseUri(intentUri, 0);
+ mmsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+ | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
+ mContext.startActivity(mmsIntent);
+ } catch (URISyntaxException e) {
+ }
+ }
+ mCallback.goToUnlockScreen();
+ } else if (target == 7) { // lower right Action = Custom
+ String intentUri = Settings.System.getString(mContext.getContentResolver(), Settings.System.LOCKSCREEN_CUSTOM_LOWER_RIGHT_INTENT);
+
+ if(intentUri == null) {
+ } else {
+ Intent mmsIntent;
+ try {
+ mmsIntent = Intent.parseUri(intentUri, 0);
+ mmsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+ | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
+ mContext.startActivity(mmsIntent);
+ } catch (URISyntaxException e) {
+ }
+ }
+ mCallback.goToUnlockScreen();
+ } else if (target == 6) { // bottom Action = Hidden Unlock
+ mCallback.goToUnlockScreen();
+ }
+ }
+ if (mLockscreenStyle == LAYOUT_EIGHT_UNHIDDEN) {
+ if (target == 5) { // lower left Action = Custom
+ String intentUri = Settings.System.getString(mContext.getContentResolver(), Settings.System.LOCKSCREEN_CUSTOM_LOWER_LEFT_INTENT);
+
+ if(intentUri == null) {
+ mCallback.goToUnlockScreen();
+ } else {
+ Intent mmsIntent;
+ try {
+ mmsIntent = Intent.parseUri(intentUri, 0);
+ mmsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+ | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
+ mContext.startActivity(mmsIntent);
+ } catch (URISyntaxException e) {
+ }
+ }
+ mCallback.goToUnlockScreen();
+ } else if (target == 0) { // right Action = Phone
+ Intent phoneIntent = new Intent(Intent.ACTION_MAIN);
+ phoneIntent.setClassName("com.android.contacts",
+ "com.android.contacts.activities.DialtactsActivity");
+ phoneIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ mContext.startActivity(phoneIntent);
+ mCallback.goToUnlockScreen();
+ } else if (target == 3) { // upper left Action = Custom
+ String intentUri = Settings.System.getString(mContext.getContentResolver(), Settings.System.LOCKSCREEN_CUSTOM_UPPER_LEFT_INTENT);
+
+ if(intentUri == null) {
+ } else {
+ Intent mmsIntent;
+ try {
+ mmsIntent = Intent.parseUri(intentUri, 0);
+ mmsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+ | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
+ mContext.startActivity(mmsIntent);
+ } catch (URISyntaxException e) {
+ }
+ }
+ mCallback.goToUnlockScreen();
+ } else if (target == 2) { // top Action == Camera/Ring Toggle
+ if (mCameraDisabled) {
+ toggleRingMode();
+ mUnlockWidgetMethods.updateResources();
+ mCallback.pokeWakelock();
+ } else {
+ // Start the Camera
+ Intent intent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ mContext.startActivity(intent);
+ mCallback.goToUnlockScreen();
+ }
+ } else if (target == 1) { // upper right Action = Custom
+ String intentUri = Settings.System.getString(mContext.getContentResolver(), Settings.System.LOCKSCREEN_CUSTOM_UPPER_RIGHT_INTENT);
+
+ if(intentUri == null) {
+ } else {
+ Intent mmsIntent;
+ try {
+ mmsIntent = Intent.parseUri(intentUri, 0);
+ mmsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+ | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
+ mContext.startActivity(mmsIntent);
+ } catch (URISyntaxException e) {
+ }
+ }
+ mCallback.goToUnlockScreen();
+ } else if (target == 4) { // left Action = Mms
+ String intentUri = Settings.System.getString(mContext.getContentResolver(), Settings.System.LOCKSCREEN_CUSTOM_SMS_INTENT);
+
+ if(intentUri == null) {
+ Intent intent = new Intent(Intent.ACTION_MAIN);
+ intent.addCategory(Intent.CATEGORY_LAUNCHER);
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+ | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
+ intent.setClassName("com.android.mms", "com.android.mms.ui.ConversationList");
+ mContext.startActivity(intent);
+ } else {
+ Intent mmsIntent;
+ try {
+ mmsIntent = Intent.parseUri(intentUri, 0);
+ mmsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+ | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
+ mContext.startActivity(mmsIntent);
+ } catch (URISyntaxException e) {
+ }
+ }
+ mCallback.goToUnlockScreen();
+ } else if (target == 7) { // lower right Action = Custom
+ String intentUri = Settings.System.getString(mContext.getContentResolver(), Settings.System.LOCKSCREEN_CUSTOM_LOWER_RIGHT_INTENT);
+
+ if(intentUri == null) {
+ } else {
+ Intent mmsIntent;
+ try {
+ mmsIntent = Intent.parseUri(intentUri, 0);
+ mmsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+ | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
+ mContext.startActivity(mmsIntent);
+ } catch (URISyntaxException e) {
+ }
+ }
+ mCallback.goToUnlockScreen();
+ } else if (target == 6) { // bottom Action = Hidden Unlock
mCallback.goToUnlockScreen();
- } else {
- toggleRingMode();
- mUnlockWidgetMethods.updateResources();
- mCallback.pokeWakelock();
}
}
}
@@ -298,7 +613,10 @@ private boolean shouldEnableMenuKey() {
final boolean configDisabled = res.getBoolean(R.bool.config_disableMenuKeyInLockScreen);
final boolean isTestHarness = ActivityManager.isRunningInTestHarness();
final boolean fileOverride = (new File(ENABLE_MENU_KEY_FILE)).exists();
- return !configDisabled || isTestHarness || fileOverride;
+ boolean defaultValue = !configDisabled || isTestHarness || fileOverride;
+
+ return (Settings.System.getInt(getContext().getContentResolver(),
+ Settings.System.LOCKSCREEN_ENABLE_MENU_KEY, defaultValue ? 1 : 0) == 1);
}
/**
@@ -322,6 +640,9 @@ private boolean shouldEnableMenuKey() {
mCreationOrientation = configuration.orientation;
mKeyboardHidden = configuration.hardKeyboardHidden;
+
+ SettingsObserver settingsObserver = new SettingsObserver(new Handler());
+ settingsObserver.observe();
if (LockPatternKeyguardView.DEBUG_CONFIGURATION) {
Log.v(TAG, "***** CREATING LOCK SCREEN", new RuntimeException());
@@ -331,10 +652,43 @@ private boolean shouldEnableMenuKey() {
final LayoutInflater inflater = LayoutInflater.from(context);
if (DBG) Log.v(TAG, "Creation orientation = " + mCreationOrientation);
- if (mCreationOrientation != Configuration.ORIENTATION_LANDSCAPE) {
- inflater.inflate(R.layout.keyguard_screen_tab_unlock, this, true);
- } else {
- inflater.inflate(R.layout.keyguard_screen_tab_unlock_land, this, true);
+
+
+ boolean landscape = mCreationOrientation == Configuration.ORIENTATION_LANDSCAPE;
+
+ switch (mLockscreenStyle) {
+ case LAYOUT_STOCK:
+ if (landscape)
+ inflater.inflate(R.layout.keyguard_screen_tab_unlock_land, this,
+ true);
+ else
+ inflater.inflate(R.layout.keyguard_screen_tab_unlock, this,
+ true);
+ break;
+ case LAYOUT_SIX:
+ if (landscape)
+ inflater.inflate(R.layout.keyguard_screen_six_targets_land, this,
+ true);
+ else
+ inflater.inflate(R.layout.keyguard_screen_six_targets, this,
+ true);
+ break;
+ case LAYOUT_EIGHT:
+ if (landscape)
+ inflater.inflate(R.layout.keyguard_screen_six_targets_land, this,
+ true);
+ else
+ inflater.inflate(R.layout.keyguard_screen_six_targets, this,
+ true);
+ break;
+ case LAYOUT_EIGHT_UNHIDDEN:
+ if (landscape)
+ inflater.inflate(R.layout.keyguard_screen_eight_targets_unhidden_land, this,
+ true);
+ else
+ inflater.inflate(R.layout.keyguard_screen_eight_targets_unhidden, this,
+ true);
+ break;
}
mStatusViewManager = new KeyguardStatusViewManager(this, mUpdateMonitor, mLockPatternUtils,
@@ -471,4 +825,31 @@ public void onRingerModeChanged(int state) {
public void onPhoneStateChanged(String newState) {
}
+
+ class SettingsObserver extends ContentObserver {
+ SettingsObserver(Handler handler) {
+ super(handler);
+ }
+
+ void observe() {
+ ContentResolver resolver = mContext.getContentResolver();
+ resolver.registerContentObserver(
+ Settings.System.getUriFor(Settings.System.LOCKSCREEN_LAYOUT), false,
+ this);
+ updateSettings();
+ }
+
+ @Override
+ public void onChange(boolean selfChange) {
+ updateSettings();
+ }
+ }
+
+ protected void updateSettings() {
+ ContentResolver resolver = mContext.getContentResolver();
+
+ mLockscreenStyle = Settings.System.getInt(resolver,
+ Settings.System.LOCKSCREEN_LAYOUT, LAYOUT_STOCK);
+
+ }
}
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
index 04fa307703428..e3ad78a023843 100755
--- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -168,6 +168,9 @@ public class PhoneWindowManager implements WindowManagerPolicy {
static final boolean ENABLE_CAR_DOCK_HOME_CAPTURE = true;
static final boolean ENABLE_DESK_DOCK_HOME_CAPTURE = false;
+ // Should screen savers use their own timeout, or the SCREEN_OFF_TIMEOUT?
+ static final boolean SEPARATE_TIMEOUT_FOR_SCREEN_SAVER = false;
+
static final int LONG_PRESS_POWER_NOTHING = 0;
static final int LONG_PRESS_POWER_GLOBAL_ACTIONS = 1;
static final int LONG_PRESS_POWER_SHUT_OFF = 2;
@@ -329,6 +332,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
int mUserRotationMode = WindowManagerPolicy.USER_ROTATION_FREE;
int mUserRotation = Surface.ROTATION_0;
+ int mUserRotationAngles = -1;
int mAllowAllRotations = -1;
boolean mCarDockEnablesAccelerometer;
@@ -430,6 +434,12 @@ public void handleMotion(MotionEvent event, InputQueue.FinishedCallback finished
int mLockScreenTimeout;
boolean mLockScreenTimerActive;
+ // visual screen saver support
+ int mScreenSaverTimeout = 0;
+ boolean mScreenSaverEnabledByUser = false;
+ boolean mScreenSaverMayRun = true; // false if a wakelock is held
+ boolean mPluggedIn;
+
// Behavior of ENDCALL Button. (See Settings.System.END_BUTTON_BEHAVIOR.)
int mEndcallBehavior;
@@ -455,6 +465,10 @@ public void handleMotion(MotionEvent event, InputQueue.FinishedCallback finished
private boolean mPowerKeyTriggered;
private long mPowerKeyTime;
+ private boolean mVolumeWakeScreen;
+ boolean mVolBtnMusicControls;
+ boolean mIsLongPress;
+
ShortcutManager mShortcutManager;
PowerManager.WakeLock mBroadcastWakeLock;
@@ -490,8 +504,20 @@ void observe() {
Settings.System.POINTER_LOCATION), false, this);
resolver.registerContentObserver(Settings.Secure.getUriFor(
Settings.Secure.DEFAULT_INPUT_METHOD), false, this);
+ resolver.registerContentObserver(Settings.System.getUriFor(
+ Settings.System.VOLUME_WAKE_SCREEN), false, this);
+ resolver.registerContentObserver(Settings.System.getUriFor(
+ Settings.System.VOLUME_MUSIC_CONTROLS), false, this);
resolver.registerContentObserver(Settings.System.getUriFor(
"fancy_rotation_anim"), false, this);
+ resolver.registerContentObserver(Settings.Secure.getUriFor(
+ Settings.Secure.SCREENSAVER_ENABLED), false, this);
+ if (SEPARATE_TIMEOUT_FOR_SCREEN_SAVER) {
+ resolver.registerContentObserver(Settings.Secure.getUriFor(
+ "screensaver_timeout"), false, this);
+ } // otherwise SCREEN_OFF_TIMEOUT will do nicely
+ resolver.registerContentObserver(Settings.System.getUriFor(
+ Settings.System.ACCELEROMETER_ROTATION_ANGLES), false, this);
updateSettings();
}
@@ -613,6 +639,46 @@ private void cancelPendingPowerKeyAction() {
mPendingPowerKeyUpCanceled = true;
}
}
+
+ /**
+ * When a volumeup-key longpress expires, skip songs based on key press
+ */
+ Runnable mVolumeUpLongPress = new Runnable() {
+ public void run() {
+ // set the long press flag to true
+ mIsLongPress = true;
+
+ // Shamelessly copied from Kmobs LockScreen controls, works for Pandora, etc...
+ sendMediaButtonEvent(KeyEvent.KEYCODE_MEDIA_NEXT);
+ };
+ };
+
+ /**
+ * When a volumedown-key longpress expires, skip songs based on key press
+ */
+ Runnable mVolumeDownLongPress = new Runnable() {
+ public void run() {
+ // set the long press flag to true
+ mIsLongPress = true;
+
+ // Shamelessly copied from Kmobs LockScreen controls, works for Pandora, etc...
+ sendMediaButtonEvent(KeyEvent.KEYCODE_MEDIA_PREVIOUS);
+ };
+ };
+
+ private void sendMediaButtonEvent(int code) {
+ long eventtime = SystemClock.uptimeMillis();
+
+ Intent downIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
+ KeyEvent downEvent = new KeyEvent(eventtime, eventtime, KeyEvent.ACTION_DOWN, code, 0);
+ downIntent.putExtra(Intent.EXTRA_KEY_EVENT, downEvent);
+ mContext.sendOrderedBroadcast(downIntent, null);
+
+ Intent upIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
+ KeyEvent upEvent = new KeyEvent(eventtime, eventtime, KeyEvent.ACTION_UP, code, 0);
+ upIntent.putExtra(Intent.EXTRA_KEY_EVENT, upEvent);
+ mContext.sendOrderedBroadcast(upIntent, null);
+ }
private void interceptScreenshotChord() {
if (mVolumeDownKeyTriggered && mPowerKeyTriggered && !mVolumeUpKeyTriggered) {
@@ -848,6 +914,14 @@ public void init(Context context, IWindowManager windowManager,
Intent.EXTRA_DOCK_STATE_UNDOCKED);
}
+ // watch the plug to know whether to trigger the screen saver
+ filter = new IntentFilter();
+ filter.addAction(Intent.ACTION_BATTERY_CHANGED);
+ intent = context.registerReceiver(mPowerReceiver, filter);
+ if (intent != null) {
+ mPluggedIn = (0 != intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0));
+ }
+
mVibrator = new Vibrator();
mLongPressVibePattern = getLongIntArray(mContext.getResources(),
com.android.internal.R.array.config_longPressVibePattern);
@@ -959,12 +1033,19 @@ public void updateSettings() {
mUserRotation = Settings.System.getInt(resolver,
Settings.System.USER_ROTATION,
Surface.ROTATION_0);
+ mUserRotationAngles = Settings.System.getInt(resolver,
+ Settings.System.ACCELEROMETER_ROTATION_ANGLES, -1);
if (mAccelerometerDefault != accelerometerDefault) {
mAccelerometerDefault = accelerometerDefault;
updateOrientationListenerLp();
}
+ mVolumeWakeScreen = (Settings.System.getInt(resolver,
+ Settings.System.VOLUME_WAKE_SCREEN, 0) == 1);
+ mVolBtnMusicControls = (Settings.System.getInt(resolver,
+ Settings.System.VOLUME_MUSIC_CONTROLS, 0) == 1);
+
mOrientationListener.setLogEnabled(
Settings.System.getInt(resolver,
Settings.System.WINDOW_ORIENTATION_LISTENER_LOG, 0) != 0);
@@ -996,6 +1077,23 @@ public void updateSettings() {
mHasSoftInput = hasSoftInput;
updateRotation = true;
}
+
+ mScreenSaverEnabledByUser = 0 != Settings.Secure.getInt(resolver,
+ Settings.Secure.SCREENSAVER_ENABLED, 1);
+
+ if (SEPARATE_TIMEOUT_FOR_SCREEN_SAVER) {
+ mScreenSaverTimeout = Settings.Secure.getInt(resolver,
+ "screensaver_timeout", 0);
+ } else {
+ mScreenSaverTimeout = Settings.System.getInt(resolver,
+ Settings.System.SCREEN_OFF_TIMEOUT, 0);
+ if (mScreenSaverTimeout > 0) {
+ // We actually want to activate the screensaver just before the
+ // power manager's screen timeout
+ mScreenSaverTimeout -= 5000;
+ }
+ }
+ updateScreenSaverTimeoutLocked();
}
if (updateRotation) {
updateRotation(true);
@@ -2783,7 +2881,9 @@ public int interceptKeyBeforeQueueing(KeyEvent event, int policyFlags, boolean i
result = 0;
final boolean isWakeKey = (policyFlags
- & (WindowManagerPolicy.FLAG_WAKE | WindowManagerPolicy.FLAG_WAKE_DROPPED)) != 0;
+ & (WindowManagerPolicy.FLAG_WAKE | WindowManagerPolicy.FLAG_WAKE_DROPPED)) != 0 ||
+ ((keyCode == KeyEvent.KEYCODE_VOLUME_UP) && mVolumeWakeScreen) ||
+ ((keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) && mVolumeWakeScreen);
if (down && isWakeKey) {
if (keyguardActive) {
// If the keyguard is showing, let it decide what to do with the wake key.
@@ -2801,6 +2901,13 @@ public int interceptKeyBeforeQueueing(KeyEvent event, int policyFlags, boolean i
case KeyEvent.KEYCODE_VOLUME_DOWN:
case KeyEvent.KEYCODE_VOLUME_UP:
case KeyEvent.KEYCODE_VOLUME_MUTE: {
+ if (mVolBtnMusicControls && !down) {
+ handleVolumeLongPressAbort();
+
+ // delay handling volume events if mVolBtnMusicControls is desired
+ if (!mIsLongPress)
+ handleVolumeKey(AudioManager.STREAM_MUSIC, keyCode);
+ }
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
if (down) {
if (isScreenOn && !mVolumeDownKeyTriggered
@@ -2864,9 +2971,19 @@ public int interceptKeyBeforeQueueing(KeyEvent event, int policyFlags, boolean i
}
if (isMusicActive() && (result & ACTION_PASS_TO_USER) == 0) {
- // If music is playing but we decided not to pass the key to the
- // application, handle the volume change here.
- handleVolumeKey(AudioManager.STREAM_MUSIC, keyCode);
+ // Care for long-press actions to skip tracks
+ if (mVolBtnMusicControls) {
+ // initialize long press flag to false for volume events
+ mIsLongPress = false;
+
+ // if the button is held long enough, the following
+ // procedure will set mIsLongPress=true
+ handleVolumeLongPress(keyCode);
+ } else {
+ // If music is playing but we decided not to pass the key to the
+ // application, handle the volume change here.
+ handleVolumeKey(AudioManager.STREAM_MUSIC, keyCode);
+ }
break;
}
}
@@ -3024,6 +3141,22 @@ public int interceptMotionBeforeQueueingWhenScreenOff(int policyFlags) {
return result;
}
+ void handleVolumeLongPress(int keycode) {
+ Runnable btnHandler;
+
+ if (keycode == KeyEvent.KEYCODE_VOLUME_UP)
+ btnHandler = mVolumeUpLongPress;
+ else
+ btnHandler = mVolumeDownLongPress;
+
+ mHandler.postDelayed(btnHandler, ViewConfiguration.getLongPressTimeout());
+ }
+
+ void handleVolumeLongPressAbort() {
+ mHandler.removeCallbacks(mVolumeUpLongPress);
+ mHandler.removeCallbacks(mVolumeDownLongPress);
+ }
+
class PassHeadsetKey implements Runnable {
KeyEvent mKeyEvent;
@@ -3065,6 +3198,15 @@ public void onReceive(Context context, Intent intent) {
}
};
+ BroadcastReceiver mPowerReceiver = new BroadcastReceiver() {
+ public void onReceive(Context context, Intent intent) {
+ if (Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())) {
+ mPluggedIn = (0 != intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0));
+ if (localLOGV) Log.v(TAG, "BATTERY_CHANGED: " + intent + " plugged=" + mPluggedIn);
+ }
+ }
+ };
+
/** {@inheritDoc} */
public void screenTurnedOff(int why) {
EventLog.writeEvent(70000, 0);
@@ -3076,6 +3218,7 @@ public void screenTurnedOff(int why) {
synchronized (mLock) {
updateOrientationListenerLp();
updateLockScreenTimeout();
+ updateScreenSaverTimeoutLocked();
}
}
@@ -3122,6 +3265,7 @@ public void screenTurningOn(final ScreenOnListener screenOnListener) {
mScreenOnEarly = true;
updateOrientationListenerLp();
updateLockScreenTimeout();
+ updateScreenSaverTimeoutLocked();
}
}
@@ -3251,9 +3395,30 @@ public int rotationForOrientationLw(int orientation, int lastRotation) {
mAllowAllRotations = mContext.getResources().getBoolean(
com.android.internal.R.bool.config_allowAllRotations) ? 1 : 0;
}
- if (sensorRotation != Surface.ROTATION_180
- || mAllowAllRotations == 1
- || orientation == ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR) {
+ // Rotation setting bitmask
+ // 1=0 2=90 4=180 8=270
+ boolean allowed = true;
+ if (mUserRotationAngles < 0) {
+ // Not set by user so use these defaults
+ mUserRotationAngles = mAllowAllRotations == 1 ?
+ (1 | 2 | 4 | 8) : // All angles
+ (1 | 2 | 8); // All except 180
+ }
+ switch (sensorRotation) {
+ case Surface.ROTATION_0:
+ allowed = (mUserRotationAngles & 1) != 0;
+ break;
+ case Surface.ROTATION_90:
+ allowed = (mUserRotationAngles & 2) != 0;
+ break;
+ case Surface.ROTATION_180:
+ allowed = (mUserRotationAngles & 4) != 0;
+ break;
+ case Surface.ROTATION_270:
+ allowed = (mUserRotationAngles & 8) != 0;
+ break;
+ }
+ if (allowed) {
preferredRotation = sensorRotation;
} else {
preferredRotation = lastRotation;
@@ -3520,6 +3685,85 @@ public void userActivity() {
mHandler.postDelayed(mScreenLockTimeout, mLockScreenTimeout);
}
}
+
+ synchronized (mLock) {
+ // Only posts messages; holds no additional locks.
+ updateScreenSaverTimeoutLocked();
+ }
+ }
+
+ Runnable mScreenSaverActivator = new Runnable() {
+ public void run() {
+ if (!(mScreenSaverMayRun && mScreenOnEarly)) {
+ Log.w(TAG, "mScreenSaverActivator ran, but the screensaver should not be showing. Who's driving this thing?");
+ return;
+ }
+ if (!mPluggedIn) {
+ if (localLOGV) Log.v(TAG, "mScreenSaverActivator: not running screen saver when not plugged in");
+ return;
+ }
+ // Quick fix for automation tests.
+ // The correct fix is to move this triggering logic to PowerManager, where more complete
+ // information about wakelocks (including StayOnWhilePluggedIn) is available.
+ if (Settings.System.getInt(mContext.getContentResolver(),
+ Settings.System.STAY_ON_WHILE_PLUGGED_IN,
+ BatteryManager.BATTERY_PLUGGED_AC) != 0) {
+ Log.v(TAG, "mScreenSaverActivator: not running screen saver when STAY_ON_WHILE_PLUGGED_IN");
+ return;
+ }
+
+ if (localLOGV) Log.v(TAG, "mScreenSaverActivator entering dreamland");
+
+ try {
+ String component = Settings.Secure.getString(
+ mContext.getContentResolver(), Settings.Secure.SCREENSAVER_COMPONENT);
+ if (component == null) {
+ component = mContext.getResources().getString(R.string.config_defaultDreamComponent);
+ }
+ if (component != null) {
+ // dismiss the notification shade, recents, etc.
+ mContext.sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)
+ .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT));
+
+ ComponentName cn = ComponentName.unflattenFromString(component);
+ Intent intent = new Intent(Intent.ACTION_MAIN)
+ .setComponent(cn)
+ .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+ | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
+ | Intent.FLAG_ACTIVITY_NO_USER_ACTION
+ | Intent.FLAG_FROM_BACKGROUND
+ | Intent.FLAG_ACTIVITY_NO_HISTORY
+ );
+ mContext.startActivity(intent);
+ } else {
+ Log.e(TAG, "Couldn't start screen saver: none selected");
+ }
+ } catch (android.content.ActivityNotFoundException exc) {
+ // no screensaver? give up
+ Log.e(TAG, "Couldn't start screen saver: none installed");
+ }
+ }
+ };
+
+ // Must call while holding mLock
+ private void updateScreenSaverTimeoutLocked() {
+ if (mScreenSaverActivator == null) return;
+
+ mHandler.removeCallbacks(mScreenSaverActivator);
+ if (mScreenSaverEnabledByUser && mScreenSaverMayRun && mScreenOnEarly && mScreenSaverTimeout > 0) {
+ if (localLOGV)
+ Log.v(TAG, "scheduling screensaver for " + mScreenSaverTimeout + "ms from now");
+ mHandler.postDelayed(mScreenSaverActivator, mScreenSaverTimeout);
+ } else {
+ if (localLOGV) {
+ if (!mScreenSaverEnabledByUser || mScreenSaverTimeout == 0)
+ Log.v(TAG, "screen saver disabled by user");
+ else if (!mScreenOnEarly)
+ Log.v(TAG, "screen saver disabled while screen off");
+ else
+ Log.v(TAG, "screen saver disabled by wakelock");
+ }
+ }
}
Runnable mScreenLockTimeout = new Runnable() {
@@ -3725,6 +3969,11 @@ public boolean performHapticFeedbackLw(WindowState win, int effectId, boolean al
}
public void screenOnStartedLw() {
+ // The window manager has just grabbed a wake lock. This is our cue to disable the screen
+ // saver.
+ synchronized (mLock) {
+ mScreenSaverMayRun = false;
+ }
}
public void screenOnStoppedLw() {
@@ -3733,6 +3982,13 @@ public void screenOnStoppedLw() {
long curTime = SystemClock.uptimeMillis();
mPowerManager.userActivity(curTime, false, LocalPowerManager.OTHER_EVENT);
}
+
+ synchronized (mLock) {
+ // even if the keyguard is up, now that all the wakelocks have been released, we
+ // should re-enable the screen saver
+ mScreenSaverMayRun = true;
+ updateScreenSaverTimeoutLocked();
+ }
}
}
diff --git a/services/input/InputReader.cpp b/services/input/InputReader.cpp
index 8d16d50c0cea1..da4acf7bf8e2a 100644
--- a/services/input/InputReader.cpp
+++ b/services/input/InputReader.cpp
@@ -19,22 +19,22 @@
//#define LOG_NDEBUG 0
// Log debug messages for each raw event received from the EventHub.
-//#define DEBUG_RAW_EVENTS 0
+#define DEBUG_RAW_EVENTS 0
// Log debug messages about touch screen filtering hacks.
-//#define DEBUG_HACKS 0
+#define DEBUG_HACKS 0
// Log debug messages about virtual key processing.
-//#define DEBUG_VIRTUAL_KEYS 0
+#define DEBUG_VIRTUAL_KEYS 0
// Log debug messages about pointers.
-//#define DEBUG_POINTERS 0
+#define DEBUG_POINTERS 0
// Log debug messages about pointer assignment calculations.
-//#define DEBUG_POINTER_ASSIGNMENT 0
+#define DEBUG_POINTER_ASSIGNMENT 0
// Log debug messages about gesture detection.
-//#define DEBUG_GESTURES 0
+#define DEBUG_GESTURES 0
#include "InputReader.h"
@@ -645,7 +645,7 @@ int32_t InputReader::getStateLocked(int32_t deviceId, uint32_t sourceMask, int32
InputDevice* device = mDevices.valueAt(i);
if (! device->isIgnored() && sourcesMatchMask(device->getSources(), sourceMask)) {
result = (device->*getStateFunc)(sourceMask, code);
- if (result >= AKEY_STATE_UP) {
+ if (result >= AKEY_STATE_DOWN) {
return result;
}
}
@@ -931,9 +931,6 @@ void InputDevice::process(const RawEvent* rawEvents, size_t count) {
// have side-effects that must be interleaved. For example, joystick movement events and
// gamepad button presses are handled by different mappers but they should be dispatched
// in the order received.
-#ifdef LEGACY_TOUCHSCREEN
- static int32_t touched, z_data;
-#endif
size_t numMappers = mMappers.size();
for (const RawEvent* rawEvent = rawEvents; count--; rawEvent++) {
#if DEBUG_RAW_EVENTS
@@ -959,66 +956,9 @@ void InputDevice::process(const RawEvent* rawEvents, size_t count) {
mDropUntilNextSync = true;
reset(rawEvent->when);
} else {
-
- if (!numMappers) continue;
- InputMapper* mapper = NULL;
-
-#ifdef LEGACY_TOUCHSCREEN
-
- // Old touchscreen sensors need to send a fake BTN_TOUCH (BTN_LEFT)
-
- if (rawEvent->scanCode == ABS_MT_TOUCH_MAJOR && rawEvent->type == EV_ABS) {
-
- z_data = rawEvent->value;
- touched = (0 != z_data);
- }
- else if (rawEvent->scanCode == ABS_MT_POSITION_Y) {
-
- RawEvent event;
- memset(&event, 0, sizeof(event));
- event.when = rawEvent->when;
- event.deviceId = rawEvent->deviceId;
- event.scanCode = rawEvent->scanCode;
-
- event.type = rawEvent->type;
- event.value = rawEvent->value;
- for (size_t i = 0; i < numMappers; i++) {
- mapper = mMappers[i];
- mapper->process(&event);
- }
-
- /* Pressure on contact area from ABS_MT_TOUCH_MAJOR */
- event.type = rawEvent->type;
- event.scanCode = ABS_MT_PRESSURE;
- event.value = z_data;
- for (size_t i = 0; i < numMappers; i++) {
- mapper = mMappers[i];
- mapper->process(&event);
- }
-
- event.type = EV_KEY;
- event.scanCode = BTN_TOUCH;
- event.keyCode = BTN_LEFT;
- event.value = touched;
- for (size_t i = 0; i < numMappers; i++) {
- mapper = mMappers[i];
- mapper->process(&event);
- }
-
-#if DEBUG_RAW_EVENTS
- LOGD("Fake event sent, touch=%d :: Input event: device=%d type=0x%04x scancode=0x%04x "
- "keycode=0x%04x value=0x%08x flags=0x%08x!", touched, rawEvent->deviceId, rawEvent->type, rawEvent->scanCode, rawEvent->keyCode,
- rawEvent->value, rawEvent->flags);
-#endif
- }
- else
-#endif //LEGACY_TOUCHSCREEN
- {
- // just send the rawEvent
- for (size_t i = 0; i < numMappers; i++) {
- mapper = mMappers[i];
- mapper->process(rawEvent);
- }
+ for (size_t i = 0; i < numMappers; i++) {
+ InputMapper* mapper = mMappers[i];
+ mapper->process(rawEvent);
}
}
}
@@ -1061,7 +1001,7 @@ int32_t InputDevice::getState(uint32_t sourceMask, int32_t code, GetStateFunc ge
InputMapper* mapper = mMappers[i];
if (sourcesMatchMask(mapper->getSources(), sourceMask)) {
result = (mapper->*getStateFunc)(sourceMask, code);
- if (result >= AKEY_STATE_UP) {
+ if (result >= AKEY_STATE_DOWN) {
return result;
}
}
@@ -1350,6 +1290,12 @@ void TouchButtonAccumulator::process(const RawEvent* rawEvent) {
break;
}
}
+#ifdef LEGACY_TOUCHSCREEN
+ // set true to mBtnTouch by multi-touch event with pressure more than zero
+ // some touchscreen driver which has BTN_TOUCH feature doesn't send BTN_TOUCH event
+ else if (rawEvent->type == EV_ABS && rawEvent->scanCode == ABS_MT_TOUCH_MAJOR && rawEvent->value > 0)
+ mBtnTouch = true;
+#endif
}
uint32_t TouchButtonAccumulator::getButtonState() const {
@@ -1625,7 +1571,12 @@ void MultiTouchMotionAccumulator::process(const RawEvent* rawEvent) {
break;
case ABS_MT_TOUCH_MAJOR:
slot->mInUse = true;
+#ifdef LEGACY_TOUCHSCREEN
+ // emulate ABS_MT_PRESSURE
+ slot->mAbsMTPressure = rawEvent->value;
+#else
slot->mAbsMTTouchMajor = rawEvent->value;
+#endif
break;
case ABS_MT_TOUCH_MINOR:
slot->mInUse = true;
@@ -1634,7 +1585,12 @@ void MultiTouchMotionAccumulator::process(const RawEvent* rawEvent) {
break;
case ABS_MT_WIDTH_MAJOR:
slot->mInUse = true;
+#ifdef LEGACY_TOUCHSCREEN
+ // emulate ABS_MT_TOUCH_MAJOR
+ slot->mAbsMTTouchMajor = rawEvent->value;
+#else
slot->mAbsMTWidthMajor = rawEvent->value;
+#endif
break;
case ABS_MT_WIDTH_MINOR:
slot->mInUse = true;
@@ -1671,6 +1627,12 @@ void MultiTouchMotionAccumulator::process(const RawEvent* rawEvent) {
}
}
} else if (rawEvent->type == EV_SYN && rawEvent->scanCode == SYN_MT_REPORT) {
+#ifdef LEGACY_TOUCHSCREEN
+ // don't use the slot with pressure less than or qeual to zero
+ // some touchscreen driver sends multi-touch event for not-in-use pointer
+ if (mSlots[mCurrentSlot].mAbsMTPressure <= 0)
+ mSlots[mCurrentSlot].mInUse = false;
+#endif
// MultiTouch Sync: The driver has returned all data for *one* of the pointers.
mCurrentSlot += 1;
}
@@ -1900,7 +1862,6 @@ void KeyboardInputMapper::reset(nsecs_t when) {
}
void KeyboardInputMapper::process(const RawEvent* rawEvent) {
- // LOGE("process(), type=%d, keyCode=%d, scanCode=%d, flags=0x%08x", rawEvent->type, rawEvent->keyCode, rawEvent->scanCode, rawEvent->flags);
switch (rawEvent->type) {
case EV_KEY: {
int32_t scanCode = rawEvent->scanCode;
@@ -5731,12 +5692,20 @@ void MultiTouchInputMapper::configureRawPointerAxes() {
getAbsoluteAxisInfo(ABS_MT_POSITION_X, &mRawPointerAxes.x);
getAbsoluteAxisInfo(ABS_MT_POSITION_Y, &mRawPointerAxes.y);
+#ifdef LEGACY_TOUCHSCREEN
+ getAbsoluteAxisInfo(ABS_MT_WIDTH_MAJOR, &mRawPointerAxes.touchMajor);
+#else
getAbsoluteAxisInfo(ABS_MT_TOUCH_MAJOR, &mRawPointerAxes.touchMajor);
+#endif
getAbsoluteAxisInfo(ABS_MT_TOUCH_MINOR, &mRawPointerAxes.touchMinor);
getAbsoluteAxisInfo(ABS_MT_WIDTH_MAJOR, &mRawPointerAxes.toolMajor);
getAbsoluteAxisInfo(ABS_MT_WIDTH_MINOR, &mRawPointerAxes.toolMinor);
getAbsoluteAxisInfo(ABS_MT_ORIENTATION, &mRawPointerAxes.orientation);
+#ifdef LEGACY_TOUCHSCREEN
+ getAbsoluteAxisInfo(ABS_MT_TOUCH_MAJOR, &mRawPointerAxes.pressure);
+#else
getAbsoluteAxisInfo(ABS_MT_PRESSURE, &mRawPointerAxes.pressure);
+#endif
getAbsoluteAxisInfo(ABS_MT_DISTANCE, &mRawPointerAxes.distance);
getAbsoluteAxisInfo(ABS_MT_TRACKING_ID, &mRawPointerAxes.trackingId);
getAbsoluteAxisInfo(ABS_MT_SLOT, &mRawPointerAxes.slot);
@@ -6104,3 +6073,4 @@ bool JoystickInputMapper::hasMovedNearerToValueWithinFilteredRange(
}
} // namespace android
+
diff --git a/services/java/com/android/server/BatteryService.java b/services/java/com/android/server/BatteryService.java
index ab9ae69b9945b..32c3a66b73cc8 100644
--- a/services/java/com/android/server/BatteryService.java
+++ b/services/java/com/android/server/BatteryService.java
@@ -24,9 +24,11 @@
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
+import android.database.ContentObserver;
import android.os.BatteryManager;
import android.os.Binder;
import android.os.FileUtils;
+import android.os.Handler;
import android.os.IBinder;
import android.os.DropBoxManager;
import android.os.RemoteException;
@@ -124,7 +126,9 @@ class BatteryService extends Binder {
private Led mLed;
private boolean mSentLowBatteryBroadcast = false;
-
+ private boolean mUseBattPercentages;
+ private Handler mHandler;
+
public BatteryService(Context context, LightsService lights) {
mContext = context;
mLed = new Led(context, lights);
@@ -143,10 +147,32 @@ public BatteryService(Context context, LightsService lights) {
if (new File("/sys/devices/virtual/switch/invalid_charger/state").exists()) {
mInvalidChargerObserver.startObserving("DEVPATH=/devices/virtual/switch/invalid_charger");
}
+
+ mUseBattPercentages = (Settings.System.getInt(mContext.getContentResolver(), Settings.System.BATTERY_PERCENTAGES, 0) == 1);
+
+ mHandler = new Handler();
+ SettingsObserver settingsObserver = new SettingsObserver(mHandler);
+ settingsObserver.observe();
// set initial status
update();
}
+
+ class SettingsObserver extends ContentObserver {
+ SettingsObserver(Handler handler) {
+ super(handler);
+ }
+ void observe() {
+ ContentResolver resolver = mContext.getContentResolver();
+ resolver.registerContentObserver(
+ Settings.System.getUriFor(Settings.System.BATTERY_PERCENTAGES), false, this);
+ }
+
+ @Override
+ public void onChange(boolean selfChange) {
+ updateSettings();
+ }
+ }
final boolean isPowered() {
// assume we are powered if battery state is unknown so the "stay on while plugged in" option will work.
@@ -602,5 +628,11 @@ void updateLightsLocked() {
}
}
}
+
+ private void updateSettings() {
+ ContentResolver resolver = mContext.getContentResolver();
+ mUseBattPercentages = (Settings.System.getInt(resolver, Settings.System.BATTERY_PERCENTAGES, 0) == 1);
+ sendIntent();
+ }
}
diff --git a/services/java/com/android/server/NotificationManagerService.java b/services/java/com/android/server/NotificationManagerService.java
index 5039294a2680e..2bb9b97de244e 100755
--- a/services/java/com/android/server/NotificationManagerService.java
+++ b/services/java/com/android/server/NotificationManagerService.java
@@ -371,6 +371,19 @@ void observe() {
ContentResolver resolver = mContext.getContentResolver();
resolver.registerContentObserver(Settings.System.getUriFor(
Settings.System.NOTIFICATION_LIGHT_PULSE), false, this);
+
+ /* termleech - 12/13/2011 - this will observe any changes to these settings
+ * so once they are changed, it will be reflected here
+ */
+ resolver.registerContentObserver(Settings.System.getUriFor(
+ Settings.System.NOTIFICATION_PULSE_COLOR), false, this);
+
+ resolver.registerContentObserver(Settings.System.getUriFor(
+ Settings.System.NOTIFICATION_PULSE_DURATION), false, this);
+
+ resolver.registerContentObserver(Settings.System.getUriFor(
+ Settings.System.NOTIFICATION_PULSE_FREQUENCY), false, this);
+
update();
}
@@ -380,11 +393,45 @@ void observe() {
public void update() {
ContentResolver resolver = mContext.getContentResolver();
+
+ boolean updatePulse = false;
boolean pulseEnabled = Settings.System.getInt(resolver,
Settings.System.NOTIFICATION_LIGHT_PULSE, 0) != 0;
+
+ int pulseColor = Settings.System.getInt(resolver,
+ Settings.System.NOTIFICATION_PULSE_COLOR,
+ Settings.System.NOTIFICATION_PULSE_COLOR_FALLBACK);
+
+ int pulseDuration = Settings.System.getInt(resolver,
+ Settings.System.NOTIFICATION_PULSE_DURATION,
+ Settings.System.NOTIFICATION_PULSE_DURATION_FALLBACK);
+
+ int pulseFrequency = Settings.System.getInt(resolver,
+ Settings.System.NOTIFICATION_PULSE_FREQUENCY,
+ Settings.System.NOTIFICATION_PULSE_FREQUENCY_FALLBACK);
+
if (mNotificationPulseEnabled != pulseEnabled) {
mNotificationPulseEnabled = pulseEnabled;
- updateNotificationPulse();
+ updatePulse = true;
+ }
+
+ if (mDefaultNotificationColor != pulseColor) {
+ mDefaultNotificationColor = pulseColor;
+ updatePulse = true;
+ }
+
+ if (mDefaultNotificationLedOn != pulseDuration) {
+ mDefaultNotificationLedOn = pulseDuration;
+ updatePulse = true;
+ }
+
+ if (mDefaultNotificationLedOff != pulseFrequency) {
+ mDefaultNotificationLedOff = pulseFrequency;
+ updatePulse = true;
+ }
+
+ if (updatePulse) {
+ updateNotificationPulse();
}
}
}
@@ -407,12 +454,17 @@ public void update() {
mAttentionLight = lights.getLight(LightsService.LIGHT_ID_ATTENTION);
Resources resources = mContext.getResources();
- mDefaultNotificationColor = resources.getColor(
- com.android.internal.R.color.config_defaultNotificationColor);
- mDefaultNotificationLedOn = resources.getInteger(
- com.android.internal.R.integer.config_defaultNotificationLedOn);
- mDefaultNotificationLedOff = resources.getInteger(
- com.android.internal.R.integer.config_defaultNotificationLedOff);
+
+ /* termleech - 12/13/2011 - pull from the new system setting instead of the resource file */
+
+ mDefaultNotificationColor = Settings.System.getInt(mContext.getContentResolver(),
+ Settings.System.NOTIFICATION_PULSE_COLOR,
+ Settings.System.NOTIFICATION_PULSE_COLOR_FALLBACK);
+
+
+ mDefaultNotificationLedOff = Settings.System.getInt(mContext.getContentResolver(),
+ Settings.System.NOTIFICATION_PULSE_FREQUENCY,
+ Settings.System.NOTIFICATION_PULSE_FREQUENCY_FALLBACK);
// Don't start allowing notifications until the setup wizard has run once.
// After that, including subsequent boots, init with notifications turned on.
diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java
index d26d3fc7ea7e0..b5c1c2be65d3c 100644
--- a/services/java/com/android/server/PowerManagerService.java
+++ b/services/java/com/android/server/PowerManagerService.java
@@ -146,7 +146,7 @@ public class PowerManagerService extends IPowerManager.Stub
// used for noChangeLights in setPowerState()
private static final int LIGHTS_MASK = SCREEN_BRIGHT_BIT | BUTTON_BRIGHT_BIT | KEYBOARD_BRIGHT_BIT;
- boolean mAnimateScreenLights = true;
+ boolean mAnimateScreenLights = false;
static final int ANIM_STEPS = 60/4;
// Slower animation for autobrightness changes
@@ -255,6 +255,8 @@ public class PowerManagerService extends IPowerManager.Stub
private int mWarningSpewThrottleCount;
private long mWarningSpewThrottleTime;
private int mAnimationSetting = ANIM_SETTING_OFF;
+ private boolean mAnimateCrtOff = false;
+ private boolean mAnimateCrtOn = false;
// Must match with the ISurfaceComposer constants in C++.
private static final int ANIM_SETTING_ON = 0x01;
@@ -500,16 +502,23 @@ public void update(Observable o, Object arg) {
// recalculate everything
setScreenOffTimeoutsLocked();
- final float windowScale = getFloat(WINDOW_ANIMATION_SCALE, 1.0f);
- final float transitionScale = getFloat(TRANSITION_ANIMATION_SCALE, 1.0f);
+ // final float windowScale = getFloat(WINDOW_ANIMATION_SCALE, 1.0f);
+ // final float transitionScale = getFloat(TRANSITION_ANIMATION_SCALE, 1.0f);
mAnimationSetting = 0;
- if (windowScale > 0.5f) {
+ mAnimateCrtOn = getInt(Settings.System.CRT_ON_ANIMATION, 0) == 1;
+ mAnimateCrtOff = getInt(Settings.System.CRT_OFF_ANIMATION, 1) == 1;
+ if (mAnimateCrtOff)
mAnimationSetting |= ANIM_SETTING_OFF;
+ if (mAnimateCrtOn) {
+ mAnimationSetting |= ANIM_SETTING_ON;
}
- if (transitionScale > 0.5f) {
- // Uncomment this if you want the screen-on animation.
- // mAnimationSetting |= ANIM_SETTING_ON;
- }
+ // if (windowScale > 0.5f) {
+ // mAnimationSetting |= ANIM_SETTING_OFF;
+ // }
+ // if (transitionScale > 0.5f) {
+ // Uncomment this if you want the screen-on animation.
+ // mAnimationSetting |= ANIM_SETTING_ON;
+ // }
}
}
}
@@ -658,10 +667,20 @@ void initInThread() {
+ Settings.System.NAME + "=?) or ("
+ Settings.System.NAME + "=?) or ("
+ Settings.System.NAME + "=?) or ("
+<<<<<<< HEAD
+ Settings.System.NAME + "=?)",
new String[]{STAY_ON_WHILE_PLUGGED_IN, SCREEN_OFF_TIMEOUT, DIM_SCREEN,
SCREEN_BRIGHTNESS_MODE, WINDOW_ANIMATION_SCALE, TRANSITION_ANIMATION_SCALE,
Settings.System.LIGHTS_CHANGED},
+=======
+ + Settings.System.NAME + "=?) or ("
+ + Settings.System.NAME + "=?) or ("
+ + Settings.System.NAME + "=?)",
+ new String[] {
+ STAY_ON_WHILE_PLUGGED_IN, SCREEN_OFF_TIMEOUT, DIM_SCREEN,
+ SCREEN_BRIGHTNESS_MODE, WINDOW_ANIMATION_SCALE, TRANSITION_ANIMATION_SCALE,
+ Settings.System.CRT_OFF_ANIMATION, Settings.System.CRT_ON_ANIMATION},
+>>>>>>> a653394989b691362658984f62af44943a1eba05
null);
mSettings = new ContentQueryMap(settingsCursor, Settings.System.NAME, true, mHandler);
SettingsObserver settingsObserver = new SettingsObserver();
@@ -2258,19 +2277,23 @@ public void run() {
synchronized (mLocks) {
// we're turning off
final boolean turningOff = animating && targetValue == Power.BRIGHTNESS_OFF;
- if (mAnimateScreenLights || !turningOff) {
+ final boolean crtAnimate = animating &&
+ ((mAnimateCrtOff && targetValue == Power.BRIGHTNESS_OFF) ||
+ (mAnimateCrtOn && (int) curValue == Power.BRIGHTNESS_OFF));
+
+ if (!crtAnimate && (mAnimateScreenLights || !turningOff)) {
long now = SystemClock.uptimeMillis();
boolean more = mScreenBrightness.stepLocked();
if (more) {
mScreenOffHandler.postAtTime(this, now+(1000/60));
}
} else {
+ Slog.i(TAG, "animating: " + mAnimationSetting);
// It's pretty scary to hold mLocks for this long, and we should
// redesign this, but it works for now.
- nativeStartSurfaceFlingerAnimation(
- mScreenOffReason == WindowManagerPolicy.OFF_BECAUSE_OF_PROX_SENSOR
- ? 0 : mAnimationSetting);
- mScreenBrightness.jumpToTargetLocked();
+ nativeStartSurfaceFlingerAnimation(mScreenOffReason == WindowManagerPolicy.OFF_BECAUSE_OF_PROX_SENSOR
+ ? 0 : mAnimationSetting);
+ mScreenBrightness.jumpToTargetLocked();
}
}
}
@@ -2699,7 +2722,16 @@ private void lightSensorChangedLocked(int value) {
if (mLightSensorValue != value) {
mLightSensorValue = value;
if ((mPowerState & BATTERY_LOW_BIT) == 0) {
+<<<<<<< HEAD
int lcdValue = getAutoBrightnessValue(value, mLastLcdValue,
+=======
+ // use maximum light sensor value seen since screen went on for LCD to avoid flicker
+ // we only do this if we are docked, since lighting should be stable when
+ // stationary in a dock.
+ int lcdValue = getAutoBrightnessValue(
+ (!mIsDocked ? value : mHighestLightSensorValue),
+ mLastLcdValue,
+>>>>>>> a653394989b691362658984f62af44943a1eba05
(mCustomLightEnabled ? mCustomLightLevels : mAutoBrightnessLevels),
(mCustomLightEnabled ? mCustomLcdValues : mLcdBacklightValues));
diff --git a/services/java/com/android/server/UiModeManagerService.java b/services/java/com/android/server/UiModeManagerService.java
index c7fbc000a3a64..e6392d746daa3 100644
--- a/services/java/com/android/server/UiModeManagerService.java
+++ b/services/java/com/android/server/UiModeManagerService.java
@@ -65,7 +65,7 @@ class UiModeManagerService extends IUiModeManager.Stub {
// Enable launching of applications when entering the dock.
private static final boolean ENABLE_LAUNCH_CAR_DOCK_APP = true;
- private static final boolean ENABLE_LAUNCH_DESK_DOCK_APP = true;
+ private static final boolean ENABLE_LAUNCH_DESK_DOCK_APP = false;
private static final int MSG_UPDATE_TWILIGHT = 0;
private static final int MSG_ENABLE_LOCATION_UPDATES = 1;
diff --git a/services/java/com/android/server/usb/UsbDeviceManager.java b/services/java/com/android/server/usb/UsbDeviceManager.java
index b94a97bd7bda2..9f9522205ff25 100644
--- a/services/java/com/android/server/usb/UsbDeviceManager.java
+++ b/services/java/com/android/server/usb/UsbDeviceManager.java
@@ -297,6 +297,14 @@ public UsbHandler(Looper looper) {
Settings.Secure.getUriFor(Settings.Secure.ADB_ENABLED),
false, new AdbSettingsObserver());
+ mContentResolver.registerContentObserver(
+ Settings.Secure.getUriFor(Settings.Secure.ADB_NOTIFY),
+ false, new ContentObserver(null) {
+ public void onChange(boolean selfChange) {
+ updateAdbNotification();
+ }
+ });
+
// Watch for USB configuration changes
mUEventObserver.startObserving(USB_STATE_MATCH);
mUEventObserver.startObserving(ACCESSORY_START_MATCH);
@@ -591,8 +599,10 @@ private void updateUsbNotification() {
private void updateAdbNotification() {
if (mNotificationManager == null) return;
final int id = com.android.internal.R.string.adb_active_notification_title;
- if (mAdbEnabled && mConnected) {
- if ("0".equals(SystemProperties.get("persist.adb.notify"))) return;
+ if (mAdbEnabled && mConnected &&
+ !"0".equals(SystemProperties.get("persist.adb.notify")) &&
+ Settings.Secure.getInt(mContext.getContentResolver(),
+ Settings.Secure.ADB_NOTIFY, 1) == 1) {
if (!mAdbNotificationShown) {
Resources r = mContext.getResources();
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index db78e2e98deaf..c1f058070be62 100755
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -470,6 +470,14 @@ public int getNetworkType() {
}
}
+ public void toggleLTE(boolean on) {
+ try {
+ getITelephony().toggleLTE(on);
+ } catch (RemoteException e) {
+ //Silently fail
+ }
+ }
+
/** Unknown network class. {@hide} */
public static final int NETWORK_CLASS_UNKNOWN = 0;
/** Class of broadly defined "2G" networks. {@hide} */
diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl
index 19441cd43ea23..cd92e934edb23 100644
--- a/telephony/java/com/android/internal/telephony/ITelephony.aidl
+++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl
@@ -43,6 +43,12 @@ interface ITelephony {
*/
void call(String number);
+ /**
+ * Toggle between 3G and LTE (NT_MODE_CDMA, NT_MODE_GLOBAL)
+ * @param boolean to turn on and off LTE
+ */
+ void toggleLTE(boolean on);
+
/**
* If there is currently a call in progress, show the call screen.
* The DTMF dialpad may or may not be visible initially, depending on
diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmConnection.java b/telephony/java/com/android/internal/telephony/gsm/GsmConnection.java
index c1ad7b3249294..1941362b8d28b 100644
--- a/telephony/java/com/android/internal/telephony/gsm/GsmConnection.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GsmConnection.java
@@ -26,6 +26,7 @@
import android.util.Log;
import android.telephony.PhoneNumberUtils;
import android.telephony.ServiceState;
+import android.text.TextUtils;
import com.android.internal.telephony.*;
@@ -46,6 +47,7 @@ public class GsmConnection extends Connection {
boolean isIncoming;
boolean disconnected;
+ String cnapName;
int index; // index in GsmCallTracker.connections[], -1 if unassigned
// The GSM index is 1 + this
@@ -72,6 +74,7 @@ public class GsmConnection extends Connection {
DisconnectCause cause = DisconnectCause.NOT_DISCONNECTED;
PostDialState postDialState = PostDialState.NOT_STARTED;
int numberPresentation = Connection.PRESENTATION_ALLOWED;
+ int cnapNamePresentation = Connection.PRESENTATION_ALLOWED;
UUSInfo uusInfo;
Handler h;
@@ -125,6 +128,8 @@ class MyHandler extends Handler {
isIncoming = dc.isMT;
createTime = System.currentTimeMillis();
+ cnapName = dc.name;
+ cnapNamePresentation = dc.namePresentation;
numberPresentation = dc.numberPresentation;
uusInfo = dc.uusInfo;
@@ -151,6 +156,9 @@ class MyHandler extends Handler {
index = -1;
isIncoming = false;
+ cnapName = null;
+ cnapNamePresentation = Connection.PRESENTATION_ALLOWED;
+ numberPresentation = Connection.PRESENTATION_ALLOWED;
createTime = System.currentTimeMillis();
this.parent = parent;
@@ -189,6 +197,14 @@ public GsmCall getCall() {
return parent;
}
+ public String getCnapName() {
+ return cnapName;
+ }
+
+ public int getCnapNamePresentation() {
+ return cnapNamePresentation;
+ }
+
public long getCreateTime() {
return createTime;
}
@@ -437,6 +453,21 @@ public void cancelPostDial() {
changed = true;
}
+ // A null cnapName should be the same as ""
+ if (TextUtils.isEmpty(dc.name)) {
+ if (!TextUtils.isEmpty(cnapName)) {
+ changed = true;
+ cnapName = "";
+ }
+ } else if (!dc.name.equals(cnapName)) {
+ changed = true;
+ cnapName = dc.name;
+ }
+
+ if (Phone.DEBUG_PHONE) log("--dssds----"+cnapName);
+ cnapNamePresentation = dc.namePresentation;
+ numberPresentation = dc.numberPresentation;
+
if (newParent != parent) {
if (parent != null) {
parent.detach(this);