diff options
author | Robert Burns <burnsra@gmail.com> | 2012-07-17 22:01:45 -0400 |
---|---|---|
committer | Robert Burns <burnsra@gmail.com> | 2012-11-26 21:17:14 -0500 |
commit | 1abc2dd1021793806ee3239994f4b3e1ca50233b (patch) | |
tree | 099655d338831e92cc8d445bf54b0a88ef170d6f | |
parent | ee52a8d30aa78ee98cc5f93cc330aac1add7fa02 (diff) | |
download | frameworks_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
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 Binary files differindex 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 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 Binary files differnew file mode 100644 index 0000000..a9dc546 --- /dev/null +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim0.png 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 Binary files differnew file mode 100644 index 0000000..ea49dd7 --- /dev/null +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim100.png 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 Binary files differnew file mode 100644 index 0000000..f1b97e1 --- /dev/null +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim15.png 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 Binary files differnew file mode 100644 index 0000000..7a9123e --- /dev/null +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim28.png 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 Binary files differnew file mode 100644 index 0000000..1b2d22c --- /dev/null +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim43.png 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 Binary files differnew file mode 100644 index 0000000..e4a3457 --- /dev/null +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim57.png 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 Binary files differnew file mode 100644 index 0000000..6ce4554 --- /dev/null +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim71.png 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 Binary files differnew file mode 100644 index 0000000..5685685 --- /dev/null +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_charge_min_anim85.png 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 Binary files differnew file mode 100644 index 0000000..bdfe108 --- /dev/null +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_0.png 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 Binary files differnew file mode 100644 index 0000000..9fdaf23 --- /dev/null +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_100.png 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 Binary files differnew file mode 100644 index 0000000..f424636 --- /dev/null +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_15.png 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 Binary files differnew file mode 100644 index 0000000..3237b05 --- /dev/null +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_28.png 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 Binary files differnew file mode 100644 index 0000000..6d72129 --- /dev/null +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_43.png 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 Binary files differnew file mode 100644 index 0000000..6e10476 --- /dev/null +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_57.png 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 Binary files differnew file mode 100644 index 0000000..fe0c8b3 --- /dev/null +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_71.png 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 Binary files differnew file mode 100644 index 0000000..172e00c --- /dev/null +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_battery_min_85.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_min.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_min.png Binary files differnew file mode 100644 index 0000000..c3f79ce --- /dev/null +++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_min.png diff --git a/packages/SystemUI/res/drawable-mdpi/ic_notification_overlay.9.png b/packages/SystemUI/res/drawable-mdpi/ic_notification_overlay.9.png Binary files differindex 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 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 Binary files differnew file mode 100644 index 0000000..78d2384 --- /dev/null +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim0.png 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 Binary files differnew file mode 100644 index 0000000..5aca171 --- /dev/null +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim100.png 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 Binary files differnew file mode 100644 index 0000000..7c06ef7 --- /dev/null +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim15.png 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 Binary files differnew file mode 100644 index 0000000..1fce2fc --- /dev/null +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim28.png 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 Binary files differnew file mode 100644 index 0000000..28294dd --- /dev/null +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim43.png 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 Binary files differnew file mode 100644 index 0000000..c905ddc --- /dev/null +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim57.png 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 Binary files differnew file mode 100644 index 0000000..dc5184b --- /dev/null +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim71.png 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 Binary files differnew file mode 100644 index 0000000..3af272c --- /dev/null +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_charge_min_anim85.png 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 Binary files differnew file mode 100644 index 0000000..cd042a7 --- /dev/null +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_0.png 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 Binary files differnew file mode 100644 index 0000000..1d506b2 --- /dev/null +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_100.png 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 Binary files differnew file mode 100644 index 0000000..cc3a01a --- /dev/null +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_15.png 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 Binary files differnew file mode 100644 index 0000000..937e384 --- /dev/null +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_28.png 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 Binary files differnew file mode 100644 index 0000000..41d02db --- /dev/null +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_43.png 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 Binary files differnew file mode 100644 index 0000000..ed90158 --- /dev/null +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_57.png 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 Binary files differnew file mode 100644 index 0000000..a195b26 --- /dev/null +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_71.png 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 Binary files differnew file mode 100644 index 0000000..690979d --- /dev/null +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_battery_min_85.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_min.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_min.png Binary files differnew file mode 100644 index 0000000..51a4c4c --- /dev/null +++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_min.png 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 Binary files differnew file mode 100644 index 0000000..979b733 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim0.png 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 Binary files differnew file mode 100644 index 0000000..599bd42 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim100.png 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 Binary files differnew file mode 100644 index 0000000..ed4dd8a --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim15.png 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 Binary files differnew file mode 100644 index 0000000..d4e1b5d --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim28.png 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 Binary files differnew file mode 100644 index 0000000..763eb3f --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim43.png 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 Binary files differnew file mode 100644 index 0000000..f2294d4 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim57.png 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 Binary files differnew file mode 100644 index 0000000..4fa3cea --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim71.png 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 Binary files differnew file mode 100644 index 0000000..1ed832f --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_charge_min_anim85.png 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 Binary files differnew file mode 100644 index 0000000..1b3d49e --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_0.png 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 Binary files differnew file mode 100644 index 0000000..a73398a --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_100.png 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 Binary files differnew file mode 100644 index 0000000..37cc5a2 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_15.png 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 Binary files differnew file mode 100644 index 0000000..f3b35d8 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_28.png 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 Binary files differnew file mode 100644 index 0000000..abdbec2 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_43.png 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 Binary files differnew file mode 100644 index 0000000..68da4b7 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_57.png 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 Binary files differnew file mode 100644 index 0000000..c0d35cb --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_71.png 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 Binary files differnew file mode 100644 index 0000000..72976dd --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_battery_min_85.png 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 Binary files differnew file mode 100644 index 0000000..5f17531 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/stat_sys_signal_min.png 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 Binary files differnew file mode 100644 index 0000000..24bb1e0 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim0.png 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 Binary files differnew file mode 100644 index 0000000..8115db1 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim100.png 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 Binary files differnew file mode 100644 index 0000000..b90f5e3 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim15.png 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 Binary files differnew file mode 100644 index 0000000..c0d3204 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim28.png 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 Binary files differnew file mode 100644 index 0000000..adc37d3 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim43.png 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 Binary files differnew file mode 100644 index 0000000..7c771c4 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim57.png 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 Binary files differnew file mode 100644 index 0000000..8f32043 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim71.png 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 Binary files differnew file mode 100644 index 0000000..42b71b2 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_charge_min_anim85.png 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 Binary files differnew file mode 100644 index 0000000..f3f1a19 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_0.png 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 Binary files differnew file mode 100644 index 0000000..23be933 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_100.png 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 Binary files differnew file mode 100644 index 0000000..9cb4909 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_15.png 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 Binary files differnew file mode 100644 index 0000000..80ec7c7 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_28.png 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 Binary files differnew file mode 100644 index 0000000..c892bd3 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_43.png 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 Binary files differnew file mode 100644 index 0000000..45822b0 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_57.png 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 Binary files differnew file mode 100644 index 0000000..465db1e --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_71.png 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 Binary files differnew file mode 100644 index 0000000..b3f08d4 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_battery_min_85.png 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 Binary files differnew file mode 100644 index 0000000..fd0f879 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/stat_sys_signal_min.png 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 Binary files differnew file mode 100644 index 0000000..5aebefc --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim0.png 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 Binary files differnew file mode 100644 index 0000000..1f556ab --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim100.png 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 Binary files differnew file mode 100644 index 0000000..7522d25 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim15.png 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 Binary files differnew file mode 100644 index 0000000..189305e --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim28.png 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 Binary files differnew file mode 100644 index 0000000..6cb2b3d --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim43.png 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 Binary files differnew file mode 100644 index 0000000..ac79f19 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim57.png 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 Binary files differnew file mode 100644 index 0000000..4073111 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim71.png 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 Binary files differnew file mode 100644 index 0000000..83f36cb --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_charge_min_anim85.png 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 Binary files differnew file mode 100644 index 0000000..7cf1065 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_0.png 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 Binary files differnew file mode 100644 index 0000000..041000b --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_100.png 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 Binary files differnew file mode 100644 index 0000000..7625a1a --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_15.png 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 Binary files differnew file mode 100644 index 0000000..122e4d5 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_28.png 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 Binary files differnew file mode 100644 index 0000000..761c280 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_43.png 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 Binary files differnew file mode 100644 index 0000000..58ed133 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_57.png 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 Binary files differnew file mode 100644 index 0000000..0423f11 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_71.png 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 Binary files differnew file mode 100644 index 0000000..fd41402 --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_battery_min_85.png 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 Binary files differnew file mode 100644 index 0000000..cd7d4db --- /dev/null +++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/stat_sys_signal_min.png diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_notification_overlay.9.png b/packages/SystemUI/res/drawable-xhdpi/ic_notification_overlay.9.png Binary files differindex 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 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 Binary files differnew file mode 100644 index 0000000..223c4d3 --- /dev/null +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim0.png 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 Binary files differnew file mode 100644 index 0000000..1a518c4 --- /dev/null +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim100.png 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 Binary files differnew file mode 100644 index 0000000..e32069a --- /dev/null +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim15.png 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 Binary files differnew file mode 100644 index 0000000..7eef777 --- /dev/null +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim28.png 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 Binary files differnew file mode 100644 index 0000000..359a020 --- /dev/null +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim43.png 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 Binary files differnew file mode 100644 index 0000000..15225e2 --- /dev/null +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim57.png 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 Binary files differnew file mode 100644 index 0000000..e401d01 --- /dev/null +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim71.png 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 Binary files differnew file mode 100644 index 0000000..147c51c --- /dev/null +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_charge_min_anim85.png 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 Binary files differnew file mode 100644 index 0000000..3389306 --- /dev/null +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_0.png 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 Binary files differnew file mode 100644 index 0000000..2176d9b --- /dev/null +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_100.png 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 Binary files differnew file mode 100644 index 0000000..f34033d --- /dev/null +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_15.png 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 Binary files differnew file mode 100644 index 0000000..fff6b28 --- /dev/null +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_28.png 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 Binary files differnew file mode 100644 index 0000000..17e4937 --- /dev/null +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_43.png 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 Binary files differnew file mode 100644 index 0000000..acc555f --- /dev/null +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_57.png 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 Binary files differnew file mode 100644 index 0000000..82127eb --- /dev/null +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_71.png 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 Binary files differnew file mode 100644 index 0000000..2ccba10 --- /dev/null +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_battery_min_85.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_min.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_min.png Binary files differnew file mode 100644 index 0000000..1203d7e --- /dev/null +++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_min.png 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); |