summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Burns <burnsra@gmail.com>2012-07-17 22:01:45 -0400
committerRobert Burns <burnsra@gmail.com>2012-11-26 21:17:14 -0500
commit1abc2dd1021793806ee3239994f4b3e1ca50233b (patch)
tree099655d338831e92cc8d445bf54b0a88ef170d6f
parentee52a8d30aa78ee98cc5f93cc330aac1add7fa02 (diff)
downloadframeworks_base-1abc2dd1021793806ee3239994f4b3e1ca50233b.zip
frameworks_base-1abc2dd1021793806ee3239994f4b3e1ca50233b.tar.gz
frameworks_base-1abc2dd1021793806ee3239994f4b3e1ca50233b.tar.bz2
Forward port Status Bar interface
Patch Set 1: Signal / Clock / Battery / Notification Count Patch Set 2: Updated commit message Change-Id: Iecd4bb06b95b14888916331f5d36327f3206aeef
-rw-r--r--core/java/android/provider/Settings.java6
-rw-r--r--packages/SystemUI/res/drawable-hdpi/ic_notification_overlay.9.pngbin935 -> 784 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim0.pngbin0 -> 1187 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim100.pngbin0 -> 3264 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim15.pngbin0 -> 3260 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim28.pngbin0 -> 3267 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim43.pngbin0 -> 3269 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim57.pngbin0 -> 3264 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim71.pngbin0 -> 3272 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim85.pngbin0 -> 3267 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_0.pngbin0 -> 3186 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_100.pngbin0 -> 2882 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_15.pngbin0 -> 2912 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_28.pngbin0 -> 2897 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_43.pngbin0 -> 2897 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_57.pngbin0 -> 2897 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_71.pngbin0 -> 2896 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_85.pngbin0 -> 2896 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/stat_sys_signal_min.pngbin0 -> 3194 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/ic_notification_overlay.9.pngbin469 -> 398 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim0.pngbin0 -> 1111 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim100.pngbin0 -> 3107 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim15.pngbin0 -> 3105 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim28.pngbin0 -> 3102 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim43.pngbin0 -> 3111 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim57.pngbin0 -> 3110 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim71.pngbin0 -> 3109 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim85.pngbin0 -> 3113 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_0.pngbin0 -> 3046 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_100.pngbin0 -> 2883 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_15.pngbin0 -> 2901 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_28.pngbin0 -> 2901 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_43.pngbin0 -> 2907 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_57.pngbin0 -> 2911 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_71.pngbin0 -> 2898 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_85.pngbin0 -> 2902 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/stat_sys_signal_min.pngbin0 -> 3052 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim0.pngbin0 -> 1287 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim100.pngbin0 -> 3452 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim15.pngbin0 -> 3426 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim28.pngbin0 -> 3453 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim43.pngbin0 -> 3448 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim57.pngbin0 -> 3453 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim71.pngbin0 -> 3451 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim85.pngbin0 -> 3438 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_0.pngbin0 -> 3359 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_100.pngbin0 -> 2901 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_15.pngbin0 -> 2918 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_28.pngbin0 -> 2923 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_43.pngbin0 -> 2922 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_57.pngbin0 -> 2918 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_71.pngbin0 -> 2918 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_85.pngbin0 -> 2921 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_signal_min.pngbin0 -> 3395 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim0.pngbin0 -> 1179 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim100.pngbin0 -> 3249 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim15.pngbin0 -> 3238 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim28.pngbin0 -> 3250 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim43.pngbin0 -> 3247 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim57.pngbin0 -> 3247 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim71.pngbin0 -> 3251 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim85.pngbin0 -> 3238 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_0.pngbin0 -> 3173 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_100.pngbin0 -> 2922 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_15.pngbin0 -> 2919 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_28.pngbin0 -> 2915 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_43.pngbin0 -> 2920 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_57.pngbin0 -> 2916 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_71.pngbin0 -> 2917 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_85.pngbin0 -> 2918 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_signal_min.pngbin0 -> 3151 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim0.pngbin0 -> 1396 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim100.pngbin0 -> 3666 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim15.pngbin0 -> 3641 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim28.pngbin0 -> 3675 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim43.pngbin0 -> 3670 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim57.pngbin0 -> 3659 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim71.pngbin0 -> 3685 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim85.pngbin0 -> 3667 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_0.pngbin0 -> 3622 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_100.pngbin0 -> 2919 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_15.pngbin0 -> 2935 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_28.pngbin0 -> 2926 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_43.pngbin0 -> 2927 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_57.pngbin0 -> 2925 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_71.pngbin0 -> 2931 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_85.pngbin0 -> 2927 bytes
-rw-r--r--packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_signal_min.pngbin0 -> 3588 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/ic_notification_overlay.9.pngbin1751 -> 876 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim0.pngbin0 -> 1285 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim100.pngbin0 -> 3436 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim15.pngbin0 -> 3429 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim28.pngbin0 -> 3434 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim43.pngbin0 -> 3444 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim57.pngbin0 -> 3431 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim71.pngbin0 -> 3443 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim85.pngbin0 -> 3432 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_0.pngbin0 -> 3341 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_100.pngbin0 -> 2910 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_15.pngbin0 -> 2930 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_28.pngbin0 -> 2923 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_43.pngbin0 -> 2922 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_57.pngbin0 -> 2928 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_71.pngbin0 -> 2916 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_85.pngbin0 -> 2920 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_min.pngbin0 -> 3425 bytes
-rw-r--r--packages/SystemUI/res/drawable/stat_sys_battery_charge_min.xml29
-rw-r--r--packages/SystemUI/res/drawable/stat_sys_battery_min.xml30
-rw-r--r--packages/SystemUI/res/layout/signal_cluster_text_view.xml53
-rw-r--r--packages/SystemUI/res/layout/status_bar.xml30
-rw-r--r--packages/SystemUI/res/layout/system_bar_notification_area.xml8
-rw-r--r--packages/SystemUI/res/layout/system_bar_notification_panel_title.xml9
-rw-r--r--packages/SystemUI/res/values/colors.xml2
-rw-r--r--packages/SystemUI/res/values/strings.xml5
-rw-r--r--packages/SystemUI/res/values/styles.xml16
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterTextView.java176
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java44
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java49
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java14
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java101
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/CircleBattery.java384
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java58
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java11
124 files changed, 1008 insertions, 22 deletions
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index cef301d..68516b4 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -2676,7 +2676,9 @@ public final class Settings {
* Display style of the status bar battery information
* 0: Display the stock battery information
* 1: Display cm battery percentage implementation / dont show stock icon
- * 2: Hide the battery information
+ * 2: Display cm circle battery implementation without percentage
+ * 3: Display cm circle battery implementation with percentage
+ * 4: Hide the battery information
* default: 0
* @hide
*/
@@ -2750,7 +2752,7 @@ public final class Settings {
/**
* Boolean value whether to link ringtone and notification volumes
- *
+ *
* @hide
*/
public static final String VOLUME_LINK_NOTIFICATION = "volume_link_notification";
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_notification_overlay.9.png b/packages/SystemUI/res/drawable-hdpi/ic_notification_overlay.9.png
index fd33ef3..cf18e33 100644
--- a/packages/SystemUI/res/drawable-hdpi/ic_notification_overlay.9.png
+++ b/packages/SystemUI/res/drawable-hdpi/ic_notification_overlay.9.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim0.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim0.png
new file mode 100644
index 0000000..a9dc546
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim0.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim100.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim100.png
new file mode 100644
index 0000000..ea49dd7
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim100.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim15.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim15.png
new file mode 100644
index 0000000..f1b97e1
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim15.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim28.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim28.png
new file mode 100644
index 0000000..7a9123e
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim28.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim43.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim43.png
new file mode 100644
index 0000000..1b2d22c
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim43.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim57.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim57.png
new file mode 100644
index 0000000..e4a3457
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim57.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim71.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim71.png
new file mode 100644
index 0000000..6ce4554
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim71.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim85.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim85.png
new file mode 100644
index 0000000..5685685
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim85.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_0.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_0.png
new file mode 100644
index 0000000..bdfe108
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_0.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_100.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_100.png
new file mode 100644
index 0000000..9fdaf23
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_100.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_15.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_15.png
new file mode 100644
index 0000000..f424636
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_15.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_28.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_28.png
new file mode 100644
index 0000000..3237b05
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_28.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_43.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_43.png
new file mode 100644
index 0000000..6d72129
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_43.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_57.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_57.png
new file mode 100644
index 0000000..6e10476
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_57.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_71.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_71.png
new file mode 100644
index 0000000..fe0c8b3
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_71.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_85.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_85.png
new file mode 100644
index 0000000..172e00c
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_85.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_min.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_min.png
new file mode 100644
index 0000000..c3f79ce
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_min.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_notification_overlay.9.png b/packages/SystemUI/res/drawable-mdpi/ic_notification_overlay.9.png
index 667b13d..8d0233f 100644
--- a/packages/SystemUI/res/drawable-mdpi/ic_notification_overlay.9.png
+++ b/packages/SystemUI/res/drawable-mdpi/ic_notification_overlay.9.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim0.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim0.png
new file mode 100644
index 0000000..78d2384
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim0.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim100.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim100.png
new file mode 100644
index 0000000..5aca171
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim100.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim15.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim15.png
new file mode 100644
index 0000000..7c06ef7
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim15.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim28.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim28.png
new file mode 100644
index 0000000..1fce2fc
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim28.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim43.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim43.png
new file mode 100644
index 0000000..28294dd
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim43.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim57.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim57.png
new file mode 100644
index 0000000..c905ddc
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim57.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim71.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim71.png
new file mode 100644
index 0000000..dc5184b
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim71.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim85.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim85.png
new file mode 100644
index 0000000..3af272c
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim85.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_0.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_0.png
new file mode 100644
index 0000000..cd042a7
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_0.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_100.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_100.png
new file mode 100644
index 0000000..1d506b2
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_100.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_15.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_15.png
new file mode 100644
index 0000000..cc3a01a
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_15.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_28.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_28.png
new file mode 100644
index 0000000..937e384
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_28.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_43.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_43.png
new file mode 100644
index 0000000..41d02db
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_43.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_57.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_57.png
new file mode 100644
index 0000000..ed90158
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_57.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_71.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_71.png
new file mode 100644
index 0000000..a195b26
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_71.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_85.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_85.png
new file mode 100644
index 0000000..690979d
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_85.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_min.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_min.png
new file mode 100644
index 0000000..51a4c4c
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_min.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim0.png b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim0.png
new file mode 100644
index 0000000..979b733
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim0.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim100.png b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim100.png
new file mode 100644
index 0000000..599bd42
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim100.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim15.png b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim15.png
new file mode 100644
index 0000000..ed4dd8a
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim15.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim28.png b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim28.png
new file mode 100644
index 0000000..d4e1b5d
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim28.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim43.png b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim43.png
new file mode 100644
index 0000000..763eb3f
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim43.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim57.png b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim57.png
new file mode 100644
index 0000000..f2294d4
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim57.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim71.png b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim71.png
new file mode 100644
index 0000000..4fa3cea
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim71.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim85.png b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim85.png
new file mode 100644
index 0000000..1ed832f
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim85.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_0.png b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_0.png
new file mode 100644
index 0000000..1b3d49e
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_0.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_100.png b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_100.png
new file mode 100644
index 0000000..a73398a
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_100.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_15.png b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_15.png
new file mode 100644
index 0000000..37cc5a2
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_15.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_28.png b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_28.png
new file mode 100644
index 0000000..f3b35d8
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_28.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_43.png b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_43.png
new file mode 100644
index 0000000..abdbec2
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_43.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_57.png b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_57.png
new file mode 100644
index 0000000..68da4b7
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_57.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_71.png b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_71.png
new file mode 100644
index 0000000..c0d35cb
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_71.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_85.png b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_85.png
new file mode 100644
index 0000000..72976dd
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_85.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_signal_min.png b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_signal_min.png
new file mode 100644
index 0000000..5f17531
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_signal_min.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim0.png b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim0.png
new file mode 100644
index 0000000..24bb1e0
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim0.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim100.png b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim100.png
new file mode 100644
index 0000000..8115db1
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim100.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim15.png b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim15.png
new file mode 100644
index 0000000..b90f5e3
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim15.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim28.png b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim28.png
new file mode 100644
index 0000000..c0d3204
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim28.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim43.png b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim43.png
new file mode 100644
index 0000000..adc37d3
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim43.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim57.png b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim57.png
new file mode 100644
index 0000000..7c771c4
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim57.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim71.png b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim71.png
new file mode 100644
index 0000000..8f32043
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim71.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim85.png b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim85.png
new file mode 100644
index 0000000..42b71b2
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim85.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_0.png b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_0.png
new file mode 100644
index 0000000..f3f1a19
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_0.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_100.png b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_100.png
new file mode 100644
index 0000000..23be933
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_100.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_15.png b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_15.png
new file mode 100644
index 0000000..9cb4909
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_15.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_28.png b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_28.png
new file mode 100644
index 0000000..80ec7c7
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_28.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_43.png b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_43.png
new file mode 100644
index 0000000..c892bd3
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_43.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_57.png b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_57.png
new file mode 100644
index 0000000..45822b0
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_57.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_71.png b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_71.png
new file mode 100644
index 0000000..465db1e
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_71.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_85.png b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_85.png
new file mode 100644
index 0000000..b3f08d4
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_85.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_signal_min.png b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_signal_min.png
new file mode 100644
index 0000000..fd0f879
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_signal_min.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim0.png b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim0.png
new file mode 100644
index 0000000..5aebefc
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim0.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim100.png b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim100.png
new file mode 100644
index 0000000..1f556ab
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim100.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim15.png b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim15.png
new file mode 100644
index 0000000..7522d25
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim15.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim28.png b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim28.png
new file mode 100644
index 0000000..189305e
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim28.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim43.png b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim43.png
new file mode 100644
index 0000000..6cb2b3d
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim43.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim57.png b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim57.png
new file mode 100644
index 0000000..ac79f19
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim57.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim71.png b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim71.png
new file mode 100644
index 0000000..4073111
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim71.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim85.png b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim85.png
new file mode 100644
index 0000000..83f36cb
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim85.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_0.png b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_0.png
new file mode 100644
index 0000000..7cf1065
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_0.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_100.png b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_100.png
new file mode 100644
index 0000000..041000b
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_100.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_15.png b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_15.png
new file mode 100644
index 0000000..7625a1a
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_15.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_28.png b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_28.png
new file mode 100644
index 0000000..122e4d5
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_28.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_43.png b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_43.png
new file mode 100644
index 0000000..761c280
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_43.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_57.png b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_57.png
new file mode 100644
index 0000000..58ed133
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_57.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_71.png b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_71.png
new file mode 100644
index 0000000..0423f11
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_71.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_85.png b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_85.png
new file mode 100644
index 0000000..fd41402
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_85.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_signal_min.png b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_signal_min.png
new file mode 100644
index 0000000..cd7d4db
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_signal_min.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_notification_overlay.9.png b/packages/SystemUI/res/drawable-xhdpi/ic_notification_overlay.9.png
index 8758b02..71c84ef 100644
--- a/packages/SystemUI/res/drawable-xhdpi/ic_notification_overlay.9.png
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_notification_overlay.9.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim0.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim0.png
new file mode 100644
index 0000000..223c4d3
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim0.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim100.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim100.png
new file mode 100644
index 0000000..1a518c4
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim100.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim15.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim15.png
new file mode 100644
index 0000000..e32069a
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim15.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim28.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim28.png
new file mode 100644
index 0000000..7eef777
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim28.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim43.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim43.png
new file mode 100644
index 0000000..359a020
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim43.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim57.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim57.png
new file mode 100644
index 0000000..15225e2
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim57.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim71.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim71.png
new file mode 100644
index 0000000..e401d01
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim71.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim85.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim85.png
new file mode 100644
index 0000000..147c51c
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim85.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_0.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_0.png
new file mode 100644
index 0000000..3389306
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_0.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_100.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_100.png
new file mode 100644
index 0000000..2176d9b
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_100.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_15.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_15.png
new file mode 100644
index 0000000..f34033d
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_15.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_28.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_28.png
new file mode 100644
index 0000000..fff6b28
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_28.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_43.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_43.png
new file mode 100644
index 0000000..17e4937
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_43.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_57.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_57.png
new file mode 100644
index 0000000..acc555f
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_57.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_71.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_71.png
new file mode 100644
index 0000000..82127eb
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_71.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_85.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_85.png
new file mode 100644
index 0000000..2ccba10
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_85.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_min.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_min.png
new file mode 100644
index 0000000..1203d7e
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_min.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable/stat_sys_battery_charge_min.xml b/packages/SystemUI/res/drawable/stat_sys_battery_charge_min.xml
new file mode 100644
index 0000000..92ede09
--- /dev/null
+++ b/packages/SystemUI/res/drawable/stat_sys_battery_charge_min.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2011, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<level-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:maxLevel="4" android:drawable="@drawable/stat_sys_battery_charge_min_anim0" />
+ <item android:maxLevel="15" android:drawable="@drawable/stat_sys_battery_charge_min_anim15" />
+ <item android:maxLevel="35" android:drawable="@drawable/stat_sys_battery_charge_min_anim28" />
+ <item android:maxLevel="49" android:drawable="@drawable/stat_sys_battery_charge_min_anim43" />
+ <item android:maxLevel="60" android:drawable="@drawable/stat_sys_battery_charge_min_anim57" />
+ <item android:maxLevel="75" android:drawable="@drawable/stat_sys_battery_charge_min_anim71" />
+ <item android:maxLevel="90" android:drawable="@drawable/stat_sys_battery_charge_min_anim85" />
+ <item android:maxLevel="100" android:drawable="@drawable/stat_sys_battery_charge_min_anim100" />
+</level-list>
diff --git a/packages/SystemUI/res/drawable/stat_sys_battery_min.xml b/packages/SystemUI/res/drawable/stat_sys_battery_min.xml
new file mode 100644
index 0000000..1717e1e
--- /dev/null
+++ b/packages/SystemUI/res/drawable/stat_sys_battery_min.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/* //device/apps/common/res/drawable/stat_sys_battery.xml
+**
+** Copyright 2007, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<level-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:maxLevel="4" android:drawable="@drawable/stat_sys_battery_min_0" />
+ <item android:maxLevel="15" android:drawable="@drawable/stat_sys_battery_min_15" />
+ <item android:maxLevel="35" android:drawable="@drawable/stat_sys_battery_min_28" />
+ <item android:maxLevel="49" android:drawable="@drawable/stat_sys_battery_min_43" />
+ <item android:maxLevel="60" android:drawable="@drawable/stat_sys_battery_min_57" />
+ <item android:maxLevel="75" android:drawable="@drawable/stat_sys_battery_min_71" />
+ <item android:maxLevel="90" android:drawable="@drawable/stat_sys_battery_min_85" />
+ <item android:maxLevel="100" android:drawable="@drawable/stat_sys_battery_min_100" />
+</level-list>
diff --git a/packages/SystemUI/res/layout/signal_cluster_text_view.xml b/packages/SystemUI/res/layout/signal_cluster_text_view.xml
new file mode 100644
index 0000000..44c94fb
--- /dev/null
+++ b/packages/SystemUI/res/layout/signal_cluster_text_view.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/* apps/common/assets/default/default/skins/StatusBar.xml
+**
+** Copyright 2011, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<com.android.systemui.statusbar.SignalClusterTextView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:orientation="horizontal"
+ >
+ <LinearLayout
+ android:id="@+id/mobile_signal_text_combo"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:orientation="horizontal"
+ android:gravity="center"
+ android:layout_marginRight="-3dip"
+ >
+ <TextView
+ android:id="@+id/mobile_signal_text"
+ android:textAppearance="@style/TextAppearance.StatusBar.Signal"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:singleLine="true"
+ android:layout_marginRight="-3dip"
+ android:gravity="center_vertical|left"
+ />
+ <ImageView
+ android:id="@+id/mobile_signal_text_icon"
+ android:src="@drawable/stat_sys_signal_min"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_marginLeft="1dip"
+ android:paddingRight="2dip"
+ />
+ </LinearLayout>
+</com.android.systemui.statusbar.SignalClusterTextView> \ No newline at end of file
diff --git a/packages/SystemUI/res/layout/status_bar.xml b/packages/SystemUI/res/layout/status_bar.xml
index 267b62d..4c586d0 100644
--- a/packages/SystemUI/res/layout/status_bar.xml
+++ b/packages/SystemUI/res/layout/status_bar.xml
@@ -77,7 +77,7 @@
android:layout_height="match_parent"
android:orientation="horizontal">
- <LinearLayout android:id="@+id/statusIcons"
+ <LinearLayout android:id="@+id/statusIcons"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
@@ -96,14 +96,38 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
+ <include layout="@layout/signal_cluster_text_view"
+ android:id="@+id/signal_cluster_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ />
+ <TextView
+ android:id="@+id/battery_text"
+ android:textAppearance="@style/TextAppearance.StatusBar.Battery"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:singleLine="true"
+ android:paddingLeft="4dip"
+ android:layout_marginRight="-3dip"
+ android:gravity="center_vertical|left"
+ />
<ImageView
android:id="@+id/battery"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:paddingLeft="4dip"
/>
+ <com.android.systemui.statusbar.policy.CircleBattery
+ android:id="@+id/circle_battery"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textAppearance="@style/TextAppearance.StatusBar.Battery"
+ android:singleLine="true"
+ android:gravity="bottom"
+ android:paddingLeft="4dip"
+ />
</LinearLayout>
-
+
<com.android.systemui.statusbar.policy.Clock
android:id="@+id/clock"
android:textAppearance="@style/TextAppearance.StatusBar.Clock"
@@ -115,7 +139,7 @@
/>
</LinearLayout>
</LinearLayout>
-
+
<LinearLayout android:id="@+id/ticker"
android:layout_width="match_parent"
android:layout_height="match_parent"
diff --git a/packages/SystemUI/res/layout/system_bar_notification_area.xml b/packages/SystemUI/res/layout/system_bar_notification_area.xml
index a59dad2..f4ae0f5 100644
--- a/packages/SystemUI/res/layout/system_bar_notification_area.xml
+++ b/packages/SystemUI/res/layout/system_bar_notification_area.xml
@@ -122,6 +122,14 @@
android:paddingLeft="4dip"
android:visibility="gone"
/>
+ <com.android.systemui.statusbar.policy.CircleBattery
+ android:id="@+id/dock_circle_battery"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:singleLine="true"
+ android:paddingLeft="4dip"
+ android:gravity="center_vertical|left"
+ />
<ImageView
android:id="@+id/battery"
android:layout_height="wrap_content"
diff --git a/packages/SystemUI/res/layout/system_bar_notification_panel_title.xml b/packages/SystemUI/res/layout/system_bar_notification_panel_title.xml
index 59544f4..1a77ad8 100644
--- a/packages/SystemUI/res/layout/system_bar_notification_panel_title.xml
+++ b/packages/SystemUI/res/layout/system_bar_notification_panel_title.xml
@@ -153,6 +153,15 @@
android:text="@string/status_bar_settings_settings_button"
/>
+ <com.android.systemui.statusbar.policy.CircleBattery
+ android:id="@+id/panel_circle_battery"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:singleLine="true"
+ android:paddingLeft="6dp"
+ android:layout_gravity="center_vertical"
+ />
+
<!-- this will stretch to eat up available space -->
<View
android:layout_width="0dp"
diff --git a/packages/SystemUI/res/values/colors.xml b/packages/SystemUI/res/values/colors.xml
index acb192d..d04d84fe 100644
--- a/packages/SystemUI/res/values/colors.xml
+++ b/packages/SystemUI/res/values/colors.xml
@@ -17,7 +17,7 @@
*/
-->
<resources>
- <drawable name="notification_number_text_color">#ffffffff</drawable>
+ <drawable name="notification_number_text_color">#ff000000</drawable>
<drawable name="ticker_background_color">#ff1d1d1d</drawable>
<drawable name="status_bar_background">#ff000000</drawable>
<color name="notification_panel_solid_background">#ff000000</color>
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index 3c0c791..a2cbf0c 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -517,4 +517,9 @@
<!-- Body of help text shown when the notification panel is pulled down for the very first time. [CHAR LIMIT=NONE] -->
<string name="status_bar_help_text">Access them anytime by swiping down.\nSwipe down again for system controls.</string>
<string name="powerwidget_screen_timeout_toast">Screen timeout set to: %1$d %2$s</string>
+
+ <!-- Text to display next to the minimal graphical battery meter. [CHAR LIMIT=3] -->
+ <string name="status_bar_settings_battery_meter_min_format" translatable="false">
+ <xliff:g id="number">%d</xliff:g>
+ </string>
</resources>
diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml
index 1a59d6c..d59056e 100644
--- a/packages/SystemUI/res/values/styles.xml
+++ b/packages/SystemUI/res/values/styles.xml
@@ -52,6 +52,13 @@
<item name="android:textColor">#FFFFFFFF</item>
</style>
+ <style name="TextAppearance.StatusBar.Battery" parent="@*android:style/TextAppearance.StatusBar.Icon">
+ <!-- Note: must be dp to fit in status bar -->
+ <item name="android:textSize">12dp</item>
+ <item name="android:textStyle">normal</item>
+ <item name="android:textColor">@android:color/holo_blue_light</item>
+ </style>
+
<style name="TextAppearance.StatusBar.Clock" parent="@*android:style/TextAppearance.StatusBar.Icon">
<!-- Note: must be dp to fit in status bar -->
<item name="android:textSize">16dp</item>
@@ -83,7 +90,14 @@
<style name="TextAppearance.StatusBar.Expanded.Network" parent="@style/TextAppearance.StatusBar.Expanded.Date">
<item name="android:textColor">#999999</item>
- </style>
+ </style>
+
+ <style name="TextAppearance.StatusBar.Signal" parent="@*android:style/TextAppearance.StatusBar.Icon">
+ <!-- Note: must be dp to fit in status bar -->
+ <item name="android:textSize">12dp</item>
+ <item name="android:textStyle">normal</item>
+ <item name="android:textColor">@android:color/holo_blue_light</item>
+ </style>
<style name="TextAppearance.StatusBar.Expanded.Network.EmergencyOnly">
</style>
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
index 8743a90..67a8061 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
@@ -141,6 +141,8 @@ public abstract class BaseStatusBar extends SystemUI implements
private boolean mDeviceProvisioned = false;
+ private boolean mShowNotificationCounts;
+
public IStatusBarService getStatusBarService() {
return mBarService;
}
@@ -206,6 +208,9 @@ public abstract class BaseStatusBar extends SystemUI implements
mBarService = IStatusBarService.Stub.asInterface(
ServiceManager.getService(Context.STATUS_BAR_SERVICE));
+ mShowNotificationCounts = Settings.System.getInt(mContext.getContentResolver(),
+ Settings.System.STATUS_BAR_NOTIF_COUNT, 0) == 1;
+
mStatusBarContainer = new FrameLayout(mContext);
// Connect in to the status bar manager service
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterTextView.java b/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterTextView.java
new file mode 100644
index 0000000..8d9dcfd
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterTextView.java
@@ -0,0 +1,176 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar;
+
+import android.content.BroadcastReceiver;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.database.ContentObserver;
+import android.os.Handler;
+import android.provider.Settings;
+import android.telephony.PhoneStateListener;
+import android.telephony.ServiceState;
+import android.telephony.SignalStrength;
+import android.telephony.TelephonyManager;
+import android.text.Spannable;
+import android.text.SpannableStringBuilder;
+import android.text.style.CharacterStyle;
+import android.text.style.RelativeSizeSpan;
+import android.util.AttributeSet;
+import android.util.Slog;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.android.systemui.statusbar.SignalClusterView.SettingsObserver;
+import com.android.systemui.statusbar.policy.NetworkController;
+import com.android.systemui.R;
+
+// Intimately tied to the design of res/layout/signal_cluster_text_view.xml
+public class SignalClusterTextView
+ extends LinearLayout {
+
+ private static final int SIGNAL_CLUSTER_STYLE_NORMAL = 0;
+ private static final int SIGNAL_CLUSTER_STYLE_TEXT = 1;
+ private static final int SIGNAL_CLUSTER_STYLE_HIDDEN = 2;
+
+ private boolean mAttached;
+ private boolean mAirplaneMode;
+ private int mSignalClusterStyle;
+ private int mPhoneState;
+
+ private SignalStrength signalStrength;
+
+ ViewGroup mMobileGroup;
+ TextView mMobileSignalText;
+
+ Handler mHandler;
+
+ int dBm = 0;
+
+ class SettingsObserver extends ContentObserver {
+ SettingsObserver(Handler handler) {
+ super(handler);
+ }
+
+ void observe() {
+ ContentResolver resolver = mContext.getContentResolver();
+ resolver.registerContentObserver(Settings.System.getUriFor(
+ Settings.System.STATUS_BAR_SIGNAL_TEXT), false, this);
+ }
+
+ @Override public void onChange(boolean selfChange) {
+ updateSettings();
+ }
+ }
+
+ public SignalClusterTextView(Context context) {
+ this(context, null);
+ }
+
+ public SignalClusterTextView(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public SignalClusterTextView(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+
+ mHandler = new Handler();
+
+ SettingsObserver settingsObserver = new SettingsObserver(mHandler);
+ settingsObserver.observe();
+ }
+
+ @Override
+ protected void onAttachedToWindow() {
+ super.onAttachedToWindow();
+
+ mMobileGroup = (ViewGroup) findViewById(R.id.mobile_signal_text_combo);
+ mMobileSignalText = (TextView) findViewById(R.id.mobile_signal_text);
+
+ if (!mAttached) {
+ mAttached = true;
+ ((TelephonyManager) getContext().getSystemService(Context.TELEPHONY_SERVICE)).listen(
+ mPhoneStateListener, PhoneStateListener.LISTEN_SERVICE_STATE
+ | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
+
+ updateSettings();
+ }
+ }
+
+ @Override
+ protected void onDetachedFromWindow() {
+ if (mAttached) {
+ mAttached = false;
+ }
+ super.onDetachedFromWindow();
+ }
+
+ private String getSignalLevelString(int dBm) {
+ if (dBm == 0) {
+ return "-\u221e"; // -oo ('minus infinity')
+ }
+ return Integer.toString(dBm);
+ }
+
+ final void updateSignalText() {
+
+ if (mAirplaneMode || dBm == 0) {
+ mMobileGroup.setVisibility(View.GONE);
+ return;
+ } else if (mSignalClusterStyle == SIGNAL_CLUSTER_STYLE_TEXT) {
+ mMobileGroup.setVisibility(View.VISIBLE);
+ mMobileSignalText.setText(getSignalLevelString(dBm));
+ } else {
+ mMobileGroup.setVisibility(View.GONE);
+ }
+ }
+
+ /*
+ * Phone listener to update signal information
+ */
+ private PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
+ @Override
+ public void onSignalStrengthsChanged(SignalStrength signalStrength) {
+ if (signalStrength != null) {
+ dBm = signalStrength.getDbm();
+ } else {
+ dBm = 0;
+ }
+
+ // update text if it's visible
+ if (mAttached) {
+ updateSettings();
+ }
+ }
+
+ public void onServiceStateChanged(ServiceState serviceState) {
+ mAirplaneMode = serviceState.getState() == ServiceState.STATE_POWER_OFF;
+ updateSettings();
+ }
+ };
+
+ private void updateSettings() {
+ ContentResolver resolver = mContext.getContentResolver();
+ mSignalClusterStyle = (Settings.System.getInt(resolver,
+ Settings.System.STATUS_BAR_SIGNAL_TEXT, SIGNAL_CLUSTER_STYLE_NORMAL));
+ updateSignalText();
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java b/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java
index 1321ade..a10cc51 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java
@@ -16,7 +16,11 @@
package com.android.systemui.statusbar;
+import android.content.ContentResolver;
import android.content.Context;
+import android.database.ContentObserver;
+import android.os.Handler;
+import android.provider.Settings;
import android.util.AttributeSet;
import android.util.Slog;
import android.view.View;
@@ -39,6 +43,9 @@ public class SignalClusterView
NetworkController mNC;
+ private static final int SIGNAL_CLUSTER_STYLE_NORMAL = 0;
+
+ private int mSignalClusterStyle;
private boolean mWifiVisible = false;
private int mWifiStrengthId = 0, mWifiActivityId = 0;
private boolean mMobileVisible = false;
@@ -51,6 +58,25 @@ public class SignalClusterView
ImageView mWifi, mMobile, mWifiActivity, mMobileActivity, mMobileType, mAirplane;
View mSpacer;
+ Handler mHandler;
+
+ class SettingsObserver extends ContentObserver {
+ SettingsObserver(Handler handler) {
+ super(handler);
+ }
+
+ void observe() {
+ ContentResolver resolver = mContext.getContentResolver();
+ resolver.registerContentObserver(Settings.System.getUriFor(
+ Settings.System.STATUS_BAR_SIGNAL_TEXT), false, this);
+ }
+
+ @Override
+ public void onChange(boolean selfChange) {
+ updateSettings();
+ }
+ }
+
public SignalClusterView(Context context) {
this(context, null);
}
@@ -61,6 +87,11 @@ public class SignalClusterView
public SignalClusterView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
+
+ mHandler = new Handler();
+
+ SettingsObserver settingsObserver = new SettingsObserver(mHandler);
+ settingsObserver.observe();
}
public void setNetworkController(NetworkController nc) {
@@ -191,6 +222,19 @@ public class SignalClusterView
mMobileType.setVisibility(
!mWifiVisible ? View.VISIBLE : View.GONE);
+
+ updateSettings();
+ }
+
+ private void updateSignalClusterStyle() {
+ mMobileGroup.setVisibility(mSignalClusterStyle != SIGNAL_CLUSTER_STYLE_NORMAL ? View.GONE : View.VISIBLE);
+ }
+
+ private void updateSettings() {
+ ContentResolver resolver = mContext.getContentResolver();
+ mSignalClusterStyle = (Settings.System.getInt(resolver,
+ Settings.System.STATUS_BAR_SIGNAL_TEXT, SIGNAL_CLUSTER_STYLE_NORMAL));
+ updateSignalClusterStyle();
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java
index 3bc3b65..20d69ad 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java
@@ -20,11 +20,15 @@ import android.app.Notification;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.res.Resources;
+import android.database.ContentObserver;
import android.graphics.drawable.Drawable;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
+import android.graphics.Typeface;
+import android.os.Handler;
import android.os.UserHandle;
+import android.provider.Settings;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.Slog;
@@ -50,18 +54,27 @@ public class StatusBarIconView extends AnimatedImageView {
private int mNumberY;
private String mNumberText;
private Notification mNotification;
+ private boolean mShowNotificationCount;
public StatusBarIconView(Context context, String slot, Notification notification) {
super(context);
final Resources res = context.getResources();
+ final float densityMultiplier = res.getDisplayMetrics().density;
+ final float scaledPx = 8 * densityMultiplier;
mSlot = slot;
mNumberPain = new Paint();
mNumberPain.setTextAlign(Paint.Align.CENTER);
mNumberPain.setColor(res.getColor(R.drawable.notification_number_text_color));
mNumberPain.setAntiAlias(true);
+ mNumberPain.setTypeface(Typeface.DEFAULT_BOLD);
+ mNumberPain.setTextSize(scaledPx);
mNotification = notification;
+ mShowNotificationCount = Settings.System.getInt(mContext.getContentResolver(),
+ Settings.System.STATUS_BAR_NOTIF_COUNT, 0) == 1;
setContentDescription(notification);
+ SettingsObserver observer = new SettingsObserver(new Handler());
+ observer.observe();
// We do not resize and scale system icons (on the right), only notification icons (on the
// left).
if (notification != null) {
@@ -106,6 +119,10 @@ public class StatusBarIconView extends AnimatedImageView {
* Returns whether the set succeeded.
*/
public boolean set(StatusBarIcon icon) {
+ return set(icon, false);
+ }
+
+ private boolean set(StatusBarIcon icon, boolean force) {
final boolean iconEquals = mIcon != null
&& streq(mIcon.iconPackage, icon.iconPackage)
&& mIcon.iconId == icon.iconId;
@@ -117,7 +134,7 @@ public class StatusBarIconView extends AnimatedImageView {
&& mIcon.number == icon.number;
mIcon = icon.clone();
setContentDescription(icon.contentDescription);
- if (!iconEquals) {
+ if (!iconEquals || force) {
Drawable drawable = getIcon(icon);
if (drawable == null) {
Slog.w(TAG, "No icon for slot " + mSlot);
@@ -125,13 +142,12 @@ public class StatusBarIconView extends AnimatedImageView {
}
setImageDrawable(drawable);
}
- if (!levelEquals) {
+ if (!levelEquals || force) {
setImageLevel(icon.iconLevel);
}
- if (!numberEquals) {
- if (icon.number > 0 && mContext.getResources().getBoolean(
- R.bool.config_statusBarShowNumber)) {
+ if (!numberEquals || force) {
+ if (icon.number > 0 && mShowNotificationCount) {
if (mNumberBackground == null) {
mNumberBackground = getContext().getResources().getDrawable(
R.drawable.ic_notification_overlay);
@@ -143,7 +159,7 @@ public class StatusBarIconView extends AnimatedImageView {
}
invalidate();
}
- if (!visibilityEquals) {
+ if (!visibilityEquals || force) {
setVisibility(icon.visible ? VISIBLE : GONE);
}
return true;
@@ -282,4 +298,25 @@ public class StatusBarIconView extends AnimatedImageView {
return "StatusBarIconView(slot=" + mSlot + " icon=" + mIcon
+ " notification=" + mNotification + ")";
}
+
+ class SettingsObserver extends ContentObserver {
+ SettingsObserver(Handler handler) {
+ super(handler);
+ }
+ void observe() {
+ mContext.getContentResolver().registerContentObserver(
+ Settings.System.getUriFor(Settings.System.STATUS_BAR_NOTIF_COUNT),
+ false, this);
+ }
+ void unobserve() {
+ mContext.getContentResolver().unregisterContentObserver(this);
+ }
+ @Override
+ public void onChange(boolean selfChange) {
+ mShowNotificationCount = Settings.System.getInt(
+ mContext.getContentResolver(),
+ Settings.System.STATUS_BAR_NOTIF_COUNT, 0) == 1;
+ set(mIcon, true);
+ }
+ }
}
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 d21492b..5b52bcf 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -27,6 +27,7 @@ import android.app.Notification;
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;
@@ -219,6 +220,13 @@ public class PhoneStatusBar extends BaseStatusBar {
private boolean mShowCarrierInPanel = false;
+ // clock
+ private boolean mShowClock;
+
+ // drag bar
+ CloseDragHandle mCloseView;
+ private int mCloseViewHeight;
+
// position
int[] mPositionTmp = new int[2];
boolean mExpandedVisible;
@@ -535,6 +543,7 @@ public class PhoneStatusBar extends BaseStatusBar {
mLocationController = new LocationController(mContext); // will post a notification
mBatteryController = new BatteryController(mContext);
mBatteryController.addIconView((ImageView)mStatusBarView.findViewById(R.id.battery));
+ mBatteryController.addLabelView((TextView)mStatusBarView.findViewById(R.id.battery_text));
mNetworkController = new NetworkController(mContext);
mBluetoothController = new BluetoothController(mContext);
final SignalClusterView signalCluster =
@@ -1208,9 +1217,12 @@ public class PhoneStatusBar extends BaseStatusBar {
public void showClock(boolean show) {
if (mStatusBarView == null) return;
+ ContentResolver resolver = mContext.getContentResolver();
View clock = mStatusBarView.findViewById(R.id.clock);
+ mShowClock = (Settings.System.getInt(resolver,
+ Settings.System.STATUS_BAR_CLOCK, 1) == 1);
if (clock != null) {
- clock.setVisibility(show ? View.VISIBLE : View.GONE);
+ clock.setVisibility(show ? (mShowClock ? View.VISIBLE : View.GONE) : View.GONE);
}
}
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 7f9bcac..287d388 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java
@@ -20,11 +20,16 @@ import java.util.ArrayList;
import android.bluetooth.BluetoothAdapter.BluetoothStateChangeCallback;
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.view.View;
import android.widget.ImageView;
import android.widget.TextView;
@@ -37,6 +42,49 @@ public class BatteryController extends BroadcastReceiver {
private ArrayList<ImageView> mIconViews = new ArrayList<ImageView>();
private ArrayList<TextView> mLabelViews = new ArrayList<TextView>();
+ private static final int BATTERY_STYLE_NORMAL = 0;
+ private static final int BATTERY_STYLE_PERCENT = 1;
+ /***
+ * BATTERY_STYLE_CIRCLE* cannot be handled in this controller, since we cannot get views from
+ * statusbar here. Yet it is listed for completion and not to confuse at future updates
+ * See CircleBattery.java for more info
+ *
+ * set to public to be reused by CircleBattery
+ */
+ public static final int BATTERY_STYLE_CIRCLE = 2;
+ public static final int BATTERY_STYLE_CIRCLE_PERCENT = 3;
+ private static final int BATTERY_STYLE_GONE = 4;
+
+ private static final int BATTERY_ICON_STYLE_NORMAL = R.drawable.stat_sys_battery;
+ private static final int BATTERY_ICON_STYLE_CHARGE = R.drawable.stat_sys_battery_charge;
+ private static final int BATTERY_ICON_STYLE_NORMAL_MIN = R.drawable.stat_sys_battery_min;
+ private static final int BATTERY_ICON_STYLE_CHARGE_MIN = R.drawable.stat_sys_battery_charge_min;
+
+ private static final int BATTERY_TEXT_STYLE_NORMAL = R.string.status_bar_settings_battery_meter_format;
+ private static final int BATTERY_TEXT_STYLE_MIN = R.string.status_bar_settings_battery_meter_min_format;
+
+ private boolean mBatteryPlugged = false;
+ private int mBatteryStyle;
+ private int mBatteryIcon = BATTERY_ICON_STYLE_NORMAL;
+
+ Handler mHandler;
+
+ class SettingsObserver extends ContentObserver {
+ SettingsObserver(Handler handler) {
+ super(handler);
+ }
+
+ void observe() {
+ ContentResolver resolver = mContext.getContentResolver();
+ resolver.registerContentObserver(Settings.System.getUriFor(
+ Settings.System.STATUS_BAR_BATTERY), false, this);
+ }
+
+ @Override public void onChange(boolean selfChange) {
+ updateSettings();
+ }
+ }
+
private ArrayList<BatteryStateChangeCallback> mChangeCallbacks =
new ArrayList<BatteryStateChangeCallback>();
@@ -47,6 +95,12 @@ public class BatteryController extends BroadcastReceiver {
public BatteryController(Context context) {
mContext = context;
+ mHandler = new Handler();
+
+ SettingsObserver settingsObserver = new SettingsObserver(mHandler);
+ settingsObserver.observe();
+ updateSettings();
+
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
context.registerReceiver(this, filter);
@@ -68,13 +122,10 @@ public class BatteryController extends BroadcastReceiver {
final String action = intent.getAction();
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;
- final int icon = plugged ? R.drawable.stat_sys_battery_charge
- : R.drawable.stat_sys_battery;
+ mBatteryPlugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0) != 0;
int N = mIconViews.size();
for (int i=0; i<N; i++) {
ImageView v = mIconViews.get(i);
- v.setImageResource(icon);
v.setImageLevel(level);
v.setContentDescription(mContext.getString(R.string.accessibility_battery_level,
level));
@@ -82,13 +133,51 @@ public class BatteryController extends BroadcastReceiver {
N = mLabelViews.size();
for (int i=0; i<N; i++) {
TextView v = mLabelViews.get(i);
- v.setText(mContext.getString(R.string.status_bar_settings_battery_meter_format,
+ v.setText(mContext.getString(BATTERY_TEXT_STYLE_MIN,
level));
}
for (BatteryStateChangeCallback cb : mChangeCallbacks) {
- cb.onBatteryLevelChanged(level, plugged);
+ cb.onBatteryLevelChanged(level, mBatteryPlugged);
}
+ updateBattery();
+ }
+ }
+
+ private void updateBattery() {
+ int mIcon = View.GONE;
+ int mText = View.GONE;
+ int mIconStyle = BATTERY_ICON_STYLE_NORMAL;
+
+ if (mBatteryStyle == BATTERY_STYLE_NORMAL) {
+ mIcon = (View.VISIBLE);
+ mIconStyle = mBatteryPlugged ? BATTERY_ICON_STYLE_CHARGE
+ : BATTERY_ICON_STYLE_NORMAL;
+ } else if (mBatteryStyle == BATTERY_STYLE_PERCENT) {
+ mIcon = (View.VISIBLE);
+ mText = (View.VISIBLE);
+ mIconStyle = mBatteryPlugged ? BATTERY_ICON_STYLE_CHARGE_MIN
+ : BATTERY_ICON_STYLE_NORMAL_MIN;
}
+
+ int N = mIconViews.size();
+ for (int i=0; i<N; i++) {
+ ImageView v = mIconViews.get(i);
+ v.setVisibility(mIcon);
+ v.setImageResource(mIconStyle);
+ }
+ N = mLabelViews.size();
+ for (int i=0; i<N; i++) {
+ TextView v = mLabelViews.get(i);
+ v.setVisibility(mText);
+ }
+ }
+
+ private void updateSettings() {
+ ContentResolver resolver = mContext.getContentResolver();
+
+ mBatteryStyle = (Settings.System.getInt(resolver,
+ Settings.System.STATUS_BAR_BATTERY, 0));
+ updateBattery();
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/CircleBattery.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CircleBattery.java
new file mode 100644
index 0000000..e521b02
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CircleBattery.java
@@ -0,0 +1,384 @@
+/*
+ * Copyright (C) 2012 Sven Dawitz for the CyanogenMod Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.policy;
+
+import android.view.ViewGroup.LayoutParams;
+import android.content.BroadcastReceiver;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.res.Resources;
+import android.database.ContentObserver;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.Paint.Align;
+import android.graphics.Rect;
+import android.graphics.RectF;
+import android.os.BatteryManager;
+import android.os.Handler;
+import android.provider.Settings;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.ImageView;
+
+import com.android.internal.R;
+
+/***
+ * Note about CircleBattery Implementation:
+ *
+ * Unfortunately, we cannot use BatteryController or DockBatteryController here,
+ * since communication between controller and this view is not possible without
+ * huge changes. As a result, this Class is doing everything by itself,
+ * monitoring battery level and battery settings.
+ */
+
+public class CircleBattery extends ImageView {
+ private Handler mHandler;
+ private Context mContext;
+ private BatteryReceiver mBatteryReceiver = null;
+
+ // state variables
+ private boolean mAttached; // whether or not attached to a window
+ private boolean mActivated; // whether or not activated due to system settings
+ private boolean mPercentage; // whether or not to show percentage number
+ private boolean mIsCharging; // whether or not device is currently charging
+ private int mLevel; // current battery level
+ private int mAnimOffset; // current level of charging animation
+ private boolean mIsAnimating; // stores charge-animation status to reliably remove callbacks
+ private int mDockLevel; // current dock battery level
+ private boolean mDockIsCharging;// whether or not dock battery is currently charging
+ private boolean mIsDocked = false; // whether or not dock battery is connected
+
+ private int mCircleSize; // draw size of circle. read rather complicated from
+ // another status bar icon, so it fits the icon size
+ // no matter the dps and resolution
+ private RectF mRectLeft; // contains the precalculated rect used in drawArc(), derived from mCircleSize
+ private RectF mRectRight; // contains the precalculated rect used in drawArc() for dock battery
+ private Float mTextLeftX; // precalculated x position for drawText() to appear centered
+ private Float mTextY; // precalculated y position for drawText() to appear vertical-centered
+ private Float mTextRightX; // precalculated x position for dock battery drawText()
+
+ // quiet a lot of paint variables. helps to move cpu-usage from actual drawing to initialization
+ private Paint mPaintFont;
+ private Paint mPaintGray;
+ private Paint mPaintSystem;
+ private Paint mPaintRed;
+
+ // runnable to invalidate view via mHandler.postDelayed() call
+ private final Runnable mInvalidate = new Runnable() {
+ public void run() {
+ if(mActivated && mAttached) {
+ invalidate();
+ }
+ }
+ };
+
+ // observes changes in system battery settings and enables/disables view accordingly
+ class SettingsObserver extends ContentObserver {
+ SettingsObserver(Handler handler) {
+ super(handler);
+ }
+
+ public void observe() {
+ ContentResolver resolver = mContext.getContentResolver();
+ resolver.registerContentObserver(Settings.System.getUriFor(
+ Settings.System.STATUS_BAR_BATTERY), false, this);
+ onChange(true);
+ }
+
+ @Override
+ public void onChange(boolean selfChange) {
+ int batteryStyle = (Settings.System.getInt(mContext.getContentResolver(),
+ Settings.System.STATUS_BAR_BATTERY, 0));
+
+ mActivated = (batteryStyle == BatteryController.BATTERY_STYLE_CIRCLE || batteryStyle == BatteryController.BATTERY_STYLE_CIRCLE_PERCENT);
+ mPercentage = (batteryStyle == BatteryController.BATTERY_STYLE_CIRCLE_PERCENT);
+
+ setVisibility(mActivated ? View.VISIBLE : View.GONE);
+ if (mBatteryReceiver != null) {
+ mBatteryReceiver.updateRegistration();
+ }
+
+ if (mActivated && mAttached) {
+ invalidate();
+ }
+ }
+ }
+
+ // keeps track of current battery level and charger-plugged-state
+ class BatteryReceiver extends BroadcastReceiver {
+ private boolean mIsRegistered = false;
+
+ public BatteryReceiver(Context context) {
+ }
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ final String action = intent.getAction();
+ if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
+ mLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
+ mIsCharging = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0) != 0;
+
+ if (mActivated && mAttached) {
+ LayoutParams l = getLayoutParams();
+ l.width = mCircleSize + getPaddingLeft()
+ + (mIsDocked ? mCircleSize + getPaddingLeft() : 0);
+ setLayoutParams(l);
+
+ invalidate();
+ }
+ }
+ }
+
+ private void registerSelf() {
+ if (!mIsRegistered) {
+ mIsRegistered = true;
+
+ IntentFilter filter = new IntentFilter();
+ filter.addAction(Intent.ACTION_BATTERY_CHANGED);
+ mContext.registerReceiver(mBatteryReceiver, filter);
+ }
+ }
+
+ private void unregisterSelf() {
+ if (mIsRegistered) {
+ mIsRegistered = false;
+ mContext.unregisterReceiver(this);
+ }
+ }
+
+ private void updateRegistration() {
+ if (mActivated && mAttached) {
+ registerSelf();
+ } else {
+ unregisterSelf();
+ }
+ }
+ }
+
+ /***
+ * Start of CircleBattery implementation
+ */
+ public CircleBattery(Context context) {
+ this(context, null);
+ }
+
+ public CircleBattery(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public CircleBattery(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+
+ mContext = context;
+ mHandler = new Handler();
+
+ SettingsObserver settingsObserver = new SettingsObserver(mHandler);
+ settingsObserver.observe();
+ mBatteryReceiver = new BatteryReceiver(mContext);
+
+ // initialize and setup all paint variables
+ // stroke width is later set in initSizeBasedStuff()
+ Resources res = getResources();
+
+ mPaintFont = new Paint();
+ mPaintFont.setAntiAlias(true);
+ mPaintFont.setDither(true);
+ mPaintFont.setStyle(Paint.Style.STROKE);
+
+ mPaintGray = new Paint(mPaintFont);
+ mPaintSystem = new Paint(mPaintFont);
+ mPaintRed = new Paint(mPaintFont);
+
+ mPaintFont.setColor(res.getColor(R.color.holo_blue_dark));
+ mPaintSystem.setColor(res.getColor(R.color.holo_blue_dark));
+ // could not find the darker definition anywhere in resources
+ // do not want to use static 0x404040 color value. would break theming.
+ mPaintGray.setColor(res.getColor(R.color.darker_gray));
+ mPaintRed.setColor(res.getColor(R.color.holo_red_light));
+
+ // font needs some extra settings
+ mPaintFont.setTextAlign(Align.CENTER);
+ mPaintFont.setFakeBoldText(true);
+ }
+
+ @Override
+ protected void onAttachedToWindow() {
+ super.onAttachedToWindow();
+ if (!mAttached) {
+ mAttached = true;
+ mBatteryReceiver.updateRegistration();
+ mHandler.postDelayed(mInvalidate, 250);
+ }
+ }
+
+ @Override
+ protected void onDetachedFromWindow() {
+ super.onDetachedFromWindow();
+ if (mAttached) {
+ mAttached = false;
+ mBatteryReceiver.updateRegistration();
+ mRectLeft = null; // makes sure, size based variables get
+ // recalculated on next attach
+ mCircleSize = 0; // makes sure, mCircleSize is reread from icons on
+ // next attach
+ }
+ }
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ if (mCircleSize == 0) {
+ initSizeMeasureIconHeight();
+ }
+
+ setMeasuredDimension(mCircleSize + getPaddingLeft()
+ + (mIsDocked ? mCircleSize + getPaddingLeft() : 0), mCircleSize);
+ }
+
+ private void drawCircle(Canvas canvas, int level, int animOffset, float textX, RectF drawRect) {
+ Paint usePaint = mPaintSystem;
+ // turn red at 14% - same level android battery warning appears
+ if (level <= 14) {
+ usePaint = mPaintRed;
+ }
+
+ // pad circle percentage to 100% once it reaches 97%
+ // for one, the circle looks odd with a too small gap,
+ // for another, some phones never reach 100% due to hardware design
+ int padLevel = level;
+ if (padLevel >= 97) {
+ padLevel = 100;
+ }
+
+ // draw thin gray ring first
+ canvas.drawArc(drawRect, 270, 360, false, mPaintGray);
+ // draw colored arc representing charge level
+ canvas.drawArc(drawRect, 270 + animOffset, 3.6f * padLevel, false, usePaint);
+ // if chosen by options, draw percentage text in the middle
+ // always skip percentage when 100, so layout doesnt break
+ if (level < 100 && mPercentage) {
+ mPaintFont.setColor(usePaint.getColor());
+ canvas.drawText(Integer.toString(level), textX, mTextY, mPaintFont);
+ }
+
+ }
+
+ @Override
+ protected void onDraw(Canvas canvas) {
+ if (mRectLeft == null) {
+ initSizeBasedStuff();
+ }
+
+ updateChargeAnim();
+
+ if (mIsDocked) {
+ drawCircle(canvas, mDockLevel, (mDockIsCharging ? mAnimOffset : 0), mTextLeftX, mRectLeft);
+ drawCircle(canvas, mLevel, (mIsCharging ? mAnimOffset : 0), mTextRightX, mRectRight);
+ } else {
+ drawCircle(canvas, mLevel, (mIsCharging ? mAnimOffset : 0), mTextLeftX, mRectLeft);
+ }
+ }
+
+ /***
+ * updates the animation counter
+ * cares for timed callbacks to continue animation cycles
+ * uses mInvalidate for delayed invalidate() callbacks
+ */
+ private void updateChargeAnim() {
+ if (!(mIsCharging || mDockIsCharging) || (mLevel >= 97 && mDockLevel >= 97)) {
+ if (mIsAnimating) {
+ mIsAnimating = false;
+ mAnimOffset = 0;
+ mHandler.removeCallbacks(mInvalidate);
+ }
+ return;
+ }
+
+ mIsAnimating = true;
+
+ if (mAnimOffset > 360) {
+ mAnimOffset = 0;
+ } else {
+ mAnimOffset += 3;
+ }
+
+ mHandler.removeCallbacks(mInvalidate);
+ mHandler.postDelayed(mInvalidate, 50);
+ }
+
+ /***
+ * initializes all size dependent variables
+ * sets stroke width and text size of all involved paints
+ * YES! i think the method name is appropriate
+ */
+ private void initSizeBasedStuff() {
+ if (mCircleSize == 0) {
+ initSizeMeasureIconHeight();
+ }
+
+ mPaintFont.setTextSize(mCircleSize / 2f);
+
+ float strokeWidth = mCircleSize / 6.5f;
+ mPaintRed.setStrokeWidth(strokeWidth);
+ mPaintSystem.setStrokeWidth(strokeWidth);
+ mPaintGray.setStrokeWidth(strokeWidth / 3.5f);
+
+ // calculate rectangle for drawArc calls
+ int pLeft = getPaddingLeft();
+ mRectLeft = new RectF(pLeft + strokeWidth / 2.0f, 0 + strokeWidth / 2.0f, mCircleSize
+ - strokeWidth / 2.0f + pLeft, mCircleSize - strokeWidth / 2.0f);
+ int off = pLeft + mCircleSize;
+ mRectRight = new RectF(mRectLeft.left + off, mRectLeft.top, mRectLeft.right + off,
+ mRectLeft.bottom);
+
+ // calculate Y position for text
+ Rect bounds = new Rect();
+ mPaintFont.getTextBounds("99", 0, "99".length(), bounds);
+ mTextLeftX = mCircleSize / 2.0f + getPaddingLeft();
+ mTextRightX = mTextLeftX + off;
+ // the +1 at end of formular balances out rounding issues. works out on all resolutions
+ mTextY = mCircleSize / 2.0f + (bounds.bottom - bounds.top) / 2.0f - strokeWidth / 2.0f + 1;
+
+ // force new measurement for wrap-content xml tag
+ onMeasure(0, 0);
+ }
+
+ /***
+ * we need to measure the size of the circle battery by checking another
+ * resource. unfortunately, those resources have transparent/empty borders
+ * so we have to count the used pixel manually and deduct the size from
+ * it. quiet complicated, but the only way to fit properly into the
+ * statusbar for all resolutions
+ */
+ private void initSizeMeasureIconHeight() {
+ final Bitmap measure = BitmapFactory.decodeResource(getResources(),
+ com.android.systemui.R.drawable.stat_sys_wifi_signal_4_fully);
+ final int x = measure.getWidth() / 2;
+
+ mCircleSize = 0;
+ for (int y = 0; y < measure.getHeight(); y++) {
+ int alpha = Color.alpha(measure.getPixel(x, y));
+ if (alpha > 5) {
+ mCircleSize++;
+ }
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java
index ffc18c7..6003420 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java
@@ -17,14 +17,18 @@
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.content.res.Resources;
import android.content.res.TypedArray;
+import android.database.ContentObserver;
import android.graphics.Canvas;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
+import android.os.Handler;
+import android.provider.Settings;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.format.DateFormat;
@@ -58,7 +62,30 @@ public class Clock extends TextView {
private static final int AM_PM_STYLE_SMALL = 1;
private static final int AM_PM_STYLE_GONE = 2;
- private static final int AM_PM_STYLE = AM_PM_STYLE_GONE;
+ private static int AM_PM_STYLE = AM_PM_STYLE_GONE;
+
+ private int mAmPmStyle;
+ private boolean mShowClock;
+
+ Handler mHandler;
+
+ class SettingsObserver extends ContentObserver {
+ SettingsObserver(Handler handler) {
+ super(handler);
+ }
+
+ void observe() {
+ ContentResolver resolver = mContext.getContentResolver();
+ resolver.registerContentObserver(Settings.System.getUriFor(
+ Settings.System.STATUS_BAR_AM_PM), false, this);
+ resolver.registerContentObserver(Settings.System.getUriFor(
+ Settings.System.STATUS_BAR_CLOCK), false, this);
+ }
+
+ @Override public void onChange(boolean selfChange) {
+ updateSettings();
+ }
+ }
public Clock(Context context) {
this(context, null);
@@ -70,6 +97,11 @@ public class Clock extends TextView {
public Clock(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
+
+ mHandler = new Handler();
+ SettingsObserver settingsObserver = new SettingsObserver(mHandler);
+ settingsObserver.observe();
+ updateSettings();
}
@Override
@@ -204,5 +236,29 @@ public class Clock extends TextView {
return result;
}
+
+ private void updateSettings(){
+ ContentResolver resolver = mContext.getContentResolver();
+
+ mAmPmStyle = (Settings.System.getInt(resolver,
+ Settings.System.STATUS_BAR_AM_PM, 2));
+
+ if (mAmPmStyle != AM_PM_STYLE) {
+ AM_PM_STYLE = mAmPmStyle;
+ mClockFormatString = "";
+
+ if (mAttached) {
+ updateClock();
+ }
+ }
+
+ mShowClock = (Settings.System.getInt(resolver,
+ Settings.System.STATUS_BAR_CLOCK, 1) == 1);
+
+ if(mShowClock)
+ setVisibility(View.VISIBLE);
+ else
+ setVisibility(View.GONE);
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
index 028528c..246c7b5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
@@ -24,6 +24,7 @@ import android.app.Notification;
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;
@@ -39,6 +40,8 @@ import android.inputmethodservice.InputMethodService;
import android.os.IBinder;
import android.os.Message;
import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.provider.Settings;
import android.text.TextUtils;
import android.util.Pair;
import android.util.Slog;
@@ -177,6 +180,9 @@ public class TabletStatusBar extends BaseStatusBar implements
private InputMethodsPanel mInputMethodsPanel;
private CompatModePanel mCompatModePanel;
+ // clock
+ private boolean mShowClock;
+
private int mSystemUiVisibility = 0;
private int mNavigationIconHints = 0;
@@ -931,10 +937,13 @@ public class TabletStatusBar extends BaseStatusBar implements
}
public void showClock(boolean show) {
+ ContentResolver resolver = mContext.getContentResolver();
View clock = mBarContents.findViewById(R.id.clock);
View network_text = mBarContents.findViewById(R.id.network_text);
+ mShowClock = (Settings.System.getInt(resolver,
+ Settings.System.STATUS_BAR_CLOCK, 1) == 1);
if (clock != null) {
- clock.setVisibility(show ? View.VISIBLE : View.GONE);
+ clock.setVisibility(show ? (mShowClock ? View.VISIBLE : View.GONE) : View.GONE);
}
if (network_text != null) {
network_text.setVisibility((!show) ? View.VISIBLE : View.GONE);