From eb0e39732842151e947f27cf64a00480d75e5631 Mon Sep 17 00:00:00 2001 From: Pedlar Date: Tue, 5 Oct 2010 00:51:57 -0400 Subject: [PATCH] Galaxy S Style Power Widget - Finally Ready - Review at will - This Depends on the following: CMParts: http://review.cyanogenmod.com/2063 --- api/current.xml | 2 +- .../java/android/content/ContentResolver.java | 5 + core/java/android/content/ContentService.java | 1 + core/java/android/content/res/Resources.java | 14 +- .../android/database/ContentObserver.java | 32 +- .../android/database/IContentObserver.aidl | 3 + core/java/android/provider/Settings.java | 56 ++- core/java/android/view/KeyEvent.java | 6 + core/res/res/drawable-hdpi/stat_2g3g_off.png | Bin 0 -> 2787 bytes core/res/res/drawable-hdpi/stat_2g3g_on.png | Bin 0 -> 2949 bytes core/res/res/drawable-hdpi/stat_3g_on.png | Bin 0 -> 2704 bytes .../res/drawable-hdpi/stat_airplane_off.png | Bin 0 -> 3202 bytes .../res/drawable-hdpi/stat_airplane_on.png | Bin 0 -> 3165 bytes core/res/res/drawable-hdpi/stat_bgoff.9.png | Bin 0 -> 1074 bytes core/res/res/drawable-hdpi/stat_bgon.9.png | Bin 0 -> 1099 bytes .../res/drawable-hdpi/stat_bgon_custom.9.png | Bin 0 -> 1085 bytes .../res/drawable-hdpi/stat_bluetooth_off.png | Bin 0 -> 3086 bytes .../res/drawable-hdpi/stat_bluetooth_on.png | Bin 0 -> 2859 bytes .../drawable-hdpi/stat_brightness_auto.png | Bin 0 -> 3970 bytes .../res/drawable-hdpi/stat_brightness_mid.png | Bin 0 -> 3632 bytes .../res/drawable-hdpi/stat_brightness_off.png | Bin 0 -> 3463 bytes .../res/drawable-hdpi/stat_brightness_on.png | Bin 0 -> 3415 bytes core/res/res/drawable-hdpi/stat_data_off.png | Bin 0 -> 2721 bytes core/res/res/drawable-hdpi/stat_data_on.png | Bin 0 -> 2427 bytes .../res/drawable-hdpi/stat_flashlight_off.png | Bin 0 -> 2916 bytes .../res/drawable-hdpi/stat_flashlight_on.png | Bin 0 -> 3092 bytes core/res/res/drawable-hdpi/stat_gps_off.png | Bin 0 -> 3329 bytes core/res/res/drawable-hdpi/stat_gps_on.png | Bin 0 -> 3127 bytes core/res/res/drawable-hdpi/stat_ing_off.png | Bin 0 -> 3568 bytes .../res/drawable-hdpi/stat_inner_focus.9.png | Bin 0 -> 1082 bytes .../res/drawable-hdpi/stat_inner_press.9.png | Bin 0 -> 1080 bytes .../drawable-hdpi/stat_lock_screen_off.png | Bin 0 -> 3151 bytes .../res/drawable-hdpi/stat_lock_screen_on.png | Bin 0 -> 3078 bytes .../drawable-hdpi/stat_orientation_off.png | Bin 0 -> 3456 bytes .../res/drawable-hdpi/stat_orientation_on.png | Bin 0 -> 3349 bytes .../drawable-hdpi/stat_power_background.9.png | Bin 0 -> 932 bytes core/res/res/drawable-hdpi/stat_ring_on.png | Bin 0 -> 3359 bytes .../drawable-hdpi/stat_screen_timeout_off.png | Bin 0 -> 3894 bytes .../drawable-hdpi/stat_screen_timeout_on.png | Bin 0 -> 3841 bytes core/res/res/drawable-hdpi/stat_silent.png | Bin 0 -> 2915 bytes core/res/res/drawable-hdpi/stat_sync_off.png | Bin 0 -> 3464 bytes core/res/res/drawable-hdpi/stat_sync_on.png | Bin 0 -> 2828 bytes .../res/drawable-hdpi/stat_vibrate_off.png | Bin 0 -> 4165 bytes .../res/res/drawable-hdpi/stat_vibrate_on.png | Bin 0 -> 4476 bytes .../res/drawable-hdpi/stat_wifi_ap_off.png | Bin 0 -> 3798 bytes .../res/res/drawable-hdpi/stat_wifi_ap_on.png | Bin 0 -> 3727 bytes core/res/res/drawable-hdpi/stat_wifi_off.png | Bin 0 -> 2902 bytes core/res/res/drawable-hdpi/stat_wifi_on.png | Bin 0 -> 2914 bytes core/res/res/drawable-mdpi/stat_2g3g_off.png | Bin 0 -> 2189 bytes core/res/res/drawable-mdpi/stat_2g3g_on.png | Bin 0 -> 2433 bytes core/res/res/drawable-mdpi/stat_3g_on.png | Bin 0 -> 2168 bytes .../res/drawable-mdpi/stat_airplane_off.png | Bin 0 -> 2365 bytes .../res/drawable-mdpi/stat_airplane_on.png | Bin 0 -> 2166 bytes core/res/res/drawable-mdpi/stat_bgoff.9.png | Bin 0 -> 1074 bytes core/res/res/drawable-mdpi/stat_bgon.9.png | Bin 0 -> 1099 bytes .../res/drawable-mdpi/stat_bgon_custom.9.png | Bin 0 -> 1085 bytes .../res/drawable-mdpi/stat_bluetooth_off.png | Bin 0 -> 2179 bytes .../res/drawable-mdpi/stat_bluetooth_on.png | Bin 0 -> 2239 bytes .../drawable-mdpi/stat_brightness_auto.png | Bin 0 -> 2759 bytes .../res/drawable-mdpi/stat_brightness_mid.png | Bin 0 -> 2588 bytes .../res/drawable-mdpi/stat_brightness_off.png | Bin 0 -> 2498 bytes .../res/drawable-mdpi/stat_brightness_on.png | Bin 0 -> 2477 bytes core/res/res/drawable-mdpi/stat_data_off.png | Bin 0 -> 2193 bytes core/res/res/drawable-mdpi/stat_data_on.png | Bin 0 -> 2093 bytes .../res/drawable-mdpi/stat_flashlight_off.png | Bin 0 -> 2044 bytes .../res/drawable-mdpi/stat_flashlight_on.png | Bin 0 -> 2124 bytes core/res/res/drawable-mdpi/stat_gps_off.png | Bin 0 -> 2370 bytes core/res/res/drawable-mdpi/stat_gps_on.png | Bin 0 -> 2294 bytes .../res/drawable-mdpi/stat_inner_focus.9.png | Bin 0 -> 1082 bytes .../res/drawable-mdpi/stat_inner_press.9.png | Bin 0 -> 1080 bytes .../drawable-mdpi/stat_lock_screen_off.png | Bin 0 -> 1905 bytes .../res/drawable-mdpi/stat_ock_screen_on.png | Bin 0 -> 1591 bytes .../drawable-mdpi/stat_orientation_off.png | Bin 0 -> 2341 bytes .../res/drawable-mdpi/stat_orientation_on.png | Bin 0 -> 2393 bytes .../drawable-mdpi/stat_power_background.9.png | Bin 0 -> 932 bytes .../res/res/drawable-mdpi/stat_power_bg.9.png | Bin 0 -> 245 bytes core/res/res/drawable-mdpi/stat_ring_off.png | Bin 0 -> 2630 bytes core/res/res/drawable-mdpi/stat_ring_on.png | Bin 0 -> 2681 bytes .../drawable-mdpi/stat_screen_timeout_off.png | Bin 0 -> 2504 bytes .../drawable-mdpi/stat_screen_timeout_on.png | Bin 0 -> 2592 bytes core/res/res/drawable-mdpi/stat_silent.png | Bin 0 -> 2398 bytes .../drawable-mdpi/stat_sound_vibrate_on.png | Bin 0 -> 2835 bytes core/res/res/drawable-mdpi/stat_sync_off.png | Bin 0 -> 2417 bytes core/res/res/drawable-mdpi/stat_sync_on.png | Bin 0 -> 2099 bytes .../res/drawable-mdpi/stat_vibrate_off.png | Bin 0 -> 2700 bytes .../res/res/drawable-mdpi/stat_vibrate_on.png | Bin 0 -> 4074 bytes .../res/drawable-mdpi/stat_wifi_ap_off.png | Bin 0 -> 2620 bytes .../res/res/drawable-mdpi/stat_wifi_ap_on.png | Bin 0 -> 2706 bytes core/res/res/drawable-mdpi/stat_wifi_off.png | Bin 0 -> 2146 bytes core/res/res/drawable-mdpi/stat_wifi_on.png | Bin 0 -> 2265 bytes core/res/res/drawable/stat_power_bg.xml | 28 ++ core/res/res/layout/status_bar_expanded.xml | 226 +++++++++-- .../server/status/StatusBarService.java | 375 +++++++++++++++++- .../server/status/widget/AirplaneButton.java | 63 +++ .../status/widget/AutoRotateButton.java | 50 +++ .../server/status/widget/BluetoothButton.java | 141 +++++++ .../status/widget/BrightnessButton.java | 253 ++++++++++++ .../server/status/widget/GPSButton.java | 50 +++ .../status/widget/LockScreenButton.java | 92 +++++ .../status/widget/MobileDataButton.java | 85 ++++ .../status/widget/NetworkModeButton.java | 195 +++++++++ .../server/status/widget/PowerButton.java | 135 +++++++ .../status/widget/ScreenTimeoutButton.java | 104 +++++ .../server/status/widget/SoundButton.java | 220 ++++++++++ .../server/status/widget/StateTracker.java | 160 ++++++++ .../server/status/widget/SyncButton.java | 104 +++++ .../server/status/widget/WifiApButton.java | 152 +++++++ .../server/status/widget/WifiButton.java | 159 ++++++++ 108 files changed, 2638 insertions(+), 73 deletions(-) create mode 100644 core/res/res/drawable-hdpi/stat_2g3g_off.png create mode 100644 core/res/res/drawable-hdpi/stat_2g3g_on.png create mode 100644 core/res/res/drawable-hdpi/stat_3g_on.png create mode 100644 core/res/res/drawable-hdpi/stat_airplane_off.png create mode 100644 core/res/res/drawable-hdpi/stat_airplane_on.png create mode 100644 core/res/res/drawable-hdpi/stat_bgoff.9.png create mode 100644 core/res/res/drawable-hdpi/stat_bgon.9.png create mode 100644 core/res/res/drawable-hdpi/stat_bgon_custom.9.png create mode 100644 core/res/res/drawable-hdpi/stat_bluetooth_off.png create mode 100644 core/res/res/drawable-hdpi/stat_bluetooth_on.png create mode 100644 core/res/res/drawable-hdpi/stat_brightness_auto.png create mode 100644 core/res/res/drawable-hdpi/stat_brightness_mid.png create mode 100644 core/res/res/drawable-hdpi/stat_brightness_off.png create mode 100644 core/res/res/drawable-hdpi/stat_brightness_on.png create mode 100644 core/res/res/drawable-hdpi/stat_data_off.png create mode 100644 core/res/res/drawable-hdpi/stat_data_on.png create mode 100644 core/res/res/drawable-hdpi/stat_flashlight_off.png create mode 100644 core/res/res/drawable-hdpi/stat_flashlight_on.png create mode 100644 core/res/res/drawable-hdpi/stat_gps_off.png create mode 100644 core/res/res/drawable-hdpi/stat_gps_on.png create mode 100644 core/res/res/drawable-hdpi/stat_ing_off.png create mode 100644 core/res/res/drawable-hdpi/stat_inner_focus.9.png create mode 100644 core/res/res/drawable-hdpi/stat_inner_press.9.png create mode 100644 core/res/res/drawable-hdpi/stat_lock_screen_off.png create mode 100644 core/res/res/drawable-hdpi/stat_lock_screen_on.png create mode 100644 core/res/res/drawable-hdpi/stat_orientation_off.png create mode 100644 core/res/res/drawable-hdpi/stat_orientation_on.png create mode 100644 core/res/res/drawable-hdpi/stat_power_background.9.png create mode 100644 core/res/res/drawable-hdpi/stat_ring_on.png create mode 100644 core/res/res/drawable-hdpi/stat_screen_timeout_off.png create mode 100644 core/res/res/drawable-hdpi/stat_screen_timeout_on.png create mode 100644 core/res/res/drawable-hdpi/stat_silent.png create mode 100644 core/res/res/drawable-hdpi/stat_sync_off.png create mode 100644 core/res/res/drawable-hdpi/stat_sync_on.png create mode 100644 core/res/res/drawable-hdpi/stat_vibrate_off.png create mode 100644 core/res/res/drawable-hdpi/stat_vibrate_on.png create mode 100644 core/res/res/drawable-hdpi/stat_wifi_ap_off.png create mode 100644 core/res/res/drawable-hdpi/stat_wifi_ap_on.png create mode 100644 core/res/res/drawable-hdpi/stat_wifi_off.png create mode 100644 core/res/res/drawable-hdpi/stat_wifi_on.png create mode 100644 core/res/res/drawable-mdpi/stat_2g3g_off.png create mode 100644 core/res/res/drawable-mdpi/stat_2g3g_on.png create mode 100644 core/res/res/drawable-mdpi/stat_3g_on.png create mode 100644 core/res/res/drawable-mdpi/stat_airplane_off.png create mode 100644 core/res/res/drawable-mdpi/stat_airplane_on.png create mode 100644 core/res/res/drawable-mdpi/stat_bgoff.9.png create mode 100644 core/res/res/drawable-mdpi/stat_bgon.9.png create mode 100644 core/res/res/drawable-mdpi/stat_bgon_custom.9.png create mode 100644 core/res/res/drawable-mdpi/stat_bluetooth_off.png create mode 100644 core/res/res/drawable-mdpi/stat_bluetooth_on.png create mode 100644 core/res/res/drawable-mdpi/stat_brightness_auto.png create mode 100644 core/res/res/drawable-mdpi/stat_brightness_mid.png create mode 100644 core/res/res/drawable-mdpi/stat_brightness_off.png create mode 100644 core/res/res/drawable-mdpi/stat_brightness_on.png create mode 100644 core/res/res/drawable-mdpi/stat_data_off.png create mode 100644 core/res/res/drawable-mdpi/stat_data_on.png create mode 100644 core/res/res/drawable-mdpi/stat_flashlight_off.png create mode 100644 core/res/res/drawable-mdpi/stat_flashlight_on.png create mode 100644 core/res/res/drawable-mdpi/stat_gps_off.png create mode 100644 core/res/res/drawable-mdpi/stat_gps_on.png create mode 100644 core/res/res/drawable-mdpi/stat_inner_focus.9.png create mode 100644 core/res/res/drawable-mdpi/stat_inner_press.9.png create mode 100644 core/res/res/drawable-mdpi/stat_lock_screen_off.png create mode 100644 core/res/res/drawable-mdpi/stat_ock_screen_on.png create mode 100644 core/res/res/drawable-mdpi/stat_orientation_off.png create mode 100644 core/res/res/drawable-mdpi/stat_orientation_on.png create mode 100644 core/res/res/drawable-mdpi/stat_power_background.9.png create mode 100644 core/res/res/drawable-mdpi/stat_power_bg.9.png create mode 100644 core/res/res/drawable-mdpi/stat_ring_off.png create mode 100644 core/res/res/drawable-mdpi/stat_ring_on.png create mode 100644 core/res/res/drawable-mdpi/stat_screen_timeout_off.png create mode 100644 core/res/res/drawable-mdpi/stat_screen_timeout_on.png create mode 100644 core/res/res/drawable-mdpi/stat_silent.png create mode 100644 core/res/res/drawable-mdpi/stat_sound_vibrate_on.png create mode 100644 core/res/res/drawable-mdpi/stat_sync_off.png create mode 100644 core/res/res/drawable-mdpi/stat_sync_on.png create mode 100644 core/res/res/drawable-mdpi/stat_vibrate_off.png create mode 100644 core/res/res/drawable-mdpi/stat_vibrate_on.png create mode 100644 core/res/res/drawable-mdpi/stat_wifi_ap_off.png create mode 100644 core/res/res/drawable-mdpi/stat_wifi_ap_on.png create mode 100644 core/res/res/drawable-mdpi/stat_wifi_off.png create mode 100644 core/res/res/drawable-mdpi/stat_wifi_on.png create mode 100644 core/res/res/drawable/stat_power_bg.xml create mode 100755 services/java/com/android/server/status/widget/AirplaneButton.java create mode 100755 services/java/com/android/server/status/widget/AutoRotateButton.java create mode 100755 services/java/com/android/server/status/widget/BluetoothButton.java create mode 100755 services/java/com/android/server/status/widget/BrightnessButton.java create mode 100644 services/java/com/android/server/status/widget/GPSButton.java create mode 100755 services/java/com/android/server/status/widget/LockScreenButton.java create mode 100755 services/java/com/android/server/status/widget/MobileDataButton.java create mode 100755 services/java/com/android/server/status/widget/NetworkModeButton.java create mode 100644 services/java/com/android/server/status/widget/PowerButton.java create mode 100755 services/java/com/android/server/status/widget/ScreenTimeoutButton.java create mode 100755 services/java/com/android/server/status/widget/SoundButton.java create mode 100644 services/java/com/android/server/status/widget/StateTracker.java create mode 100755 services/java/com/android/server/status/widget/SyncButton.java create mode 100755 services/java/com/android/server/status/widget/WifiApButton.java create mode 100644 services/java/com/android/server/status/widget/WifiButton.java diff --git a/api/current.xml b/api/current.xml index a327a5c352d83..0678df4c5e747 100644 --- a/api/current.xml +++ b/api/current.xml @@ -74892,7 +74892,7 @@ type="float" transient="false" volatile="false" - value="0.0010f" + value="0.001f" static="true" final="true" deprecated="not deprecated" diff --git a/core/java/android/content/ContentResolver.java b/core/java/android/content/ContentResolver.java index b4718ab6ef2b8..70fe960a97b34 100644 --- a/core/java/android/content/ContentResolver.java +++ b/core/java/android/content/ContentResolver.java @@ -173,6 +173,11 @@ public ContentResolver(Context context) { mContext = context; } + /** @hide */ + public final Context getContext() { + return mContext; + } + /** @hide */ protected abstract IContentProvider acquireProvider(Context c, String name); /** @hide */ diff --git a/core/java/android/content/ContentService.java b/core/java/android/content/ContentService.java index 377e38373cb6e..9b8f349b2cee9 100644 --- a/core/java/android/content/ContentService.java +++ b/core/java/android/content/ContentService.java @@ -139,6 +139,7 @@ public void notifyChange(Uri uri, IContentObserver observer, ObserverCall oc = calls.get(i); try { oc.mObserver.onChange(oc.mSelfNotify); + oc.mObserver.onChangeUri(uri, oc.mSelfNotify); if (Log.isLoggable(TAG, Log.VERBOSE)) { Log.v(TAG, "Notified " + oc.mObserver + " of " + "update at " + uri); } diff --git a/core/java/android/content/res/Resources.java b/core/java/android/content/res/Resources.java index 44e589d723971..61faa732442a5 100755 --- a/core/java/android/content/res/Resources.java +++ b/core/java/android/content/res/Resources.java @@ -595,22 +595,22 @@ public Drawable getDrawable(int id) throws NotFoundException { * Various types of objects will be returned depending on the underlying * resource -- for example, a solid color, PNG image, scalable image, etc. * The Drawable API hides these implementation details. - * + * * mtwebster: - * This version also applies a Porter Duff color mask onto the object before + * This version also applies a Porter Duff color mask onto the object before * returning the object. Put in Resources to give reusability, I plan on * applying this to other parts of the gui - * + * * @param id The desired resource identifier, as generated by the aapt * tool. This integer encodes the package, type, and resource * entry. The value 0 is an invalid identifier. * * @param mask The color mask to use (alpha-r-g-b) - * + * * @param masktype The Porter Duff filter mode - * + * * @throws NotFoundException Throws NotFoundException if the given ID does not exist. - * + * * @return Drawable An object that can be used to draw this resource. * @hide */ @@ -623,7 +623,7 @@ public Drawable getDrawable(int id, int mask, Mode maskType) throws NotFoundExce return tmpDrawable; } } - + /** * Return a movie object associated with the particular resource ID. * @param id The desired resource identifier, as generated by the aapt diff --git a/core/java/android/database/ContentObserver.java b/core/java/android/database/ContentObserver.java index 3b829a3d3f1d1..f8a9a1a862a80 100644 --- a/core/java/android/database/ContentObserver.java +++ b/core/java/android/database/ContentObserver.java @@ -17,6 +17,7 @@ package android.database; import android.os.Handler; +import android.net.Uri; /** * Receives call backs for changes to content. Must be implemented by objects which are added @@ -34,13 +35,23 @@ public abstract class ContentObserver { private final class NotificationRunnable implements Runnable { private boolean mSelf; + private Uri mUri = null; public NotificationRunnable(boolean self) { mSelf = self; } + public NotificationRunnable(Uri uri, boolean self) { + mSelf = self; + mUri = uri; + } + public void run() { - ContentObserver.this.onChange(mSelf); + if(mUri != null) { + ContentObserver.this.onChangeUri(mUri, mSelf); + } else { + ContentObserver.this.onChange(mSelf); + } } } @@ -66,6 +77,13 @@ public void onChange(boolean selfChange) { } } + public void onChangeUri(Uri uri, boolean selfChange) { + ContentObserver contentObserver = mContentObserver; + if (contentObserver != null) { + contentObserver.dispatchChange(uri, selfChange); + } + } + public void releaseContentObserver() { mContentObserver = null; } @@ -127,6 +145,8 @@ public boolean deliverSelfNotifications() { * cursor that is being observed. */ public void onChange(boolean selfChange) {} + /** @hide */ + public void onChangeUri(Uri uri, boolean selfChange) {} public final void dispatchChange(boolean selfChange) { if (mHandler == null) { @@ -135,4 +155,14 @@ public final void dispatchChange(boolean selfChange) { mHandler.post(new NotificationRunnable(selfChange)); } } + /** @hide */ + public final void dispatchChange(Uri uri, boolean selfChange) { + if (mHandler == null) { + onChangeUri(uri, selfChange); + } else { + mHandler.post(new NotificationRunnable(uri, selfChange)); + } + } + + } diff --git a/core/java/android/database/IContentObserver.aidl b/core/java/android/database/IContentObserver.aidl index ac2f9754959e3..f66c29d42f987 100755 --- a/core/java/android/database/IContentObserver.aidl +++ b/core/java/android/database/IContentObserver.aidl @@ -17,6 +17,8 @@ package android.database; +import android.net.Uri; + /** * @hide */ @@ -28,4 +30,5 @@ interface IContentObserver * commit on the cursor that is being observed. */ oneway void onChange(boolean selfUpdate); + oneway void onChangeUri(in Uri uri, boolean selfUpdate); } diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 264b22b1fe829..610310ca256a6 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -27,6 +27,7 @@ import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; +import android.content.ContextWrapper; import android.content.IContentProvider; import android.content.Intent; import android.content.pm.ActivityInfo; @@ -57,8 +58,14 @@ * The Settings provider contains global system-level device preferences. */ public final class Settings { + /** Intent actions for Settings + * @hide + */ + public static final String SETTINGS_CHANGED = "android.settings.SETTINGS_CHANGED_ACTION"; - // Intent actions for Settings + public Settings() { + /* Empty for API conflicts */ + } /** * Activity Action: Show system settings. @@ -2150,13 +2157,13 @@ public static void setShowGTalkServiceStatus(ContentResolver cr, boolean flag) { * Trackball Notification Colors. The value is String pkg=color|pkg=color * @hide */ - public static final String NOTIFICATION_PACKAGE_COLORS = "|"; + public static final String NOTIFICATION_PACKAGE_COLORS = "pref_package_colors"; /** * Trackball Notification List. The value is String pkg|pkg * @hide */ - public static final String NOTIFICATION_PACKAGE_LIST = "|"; + public static final String NOTIFICATION_PACKAGE_LIST = "pref_package_list"; /** * Trackball Notification Colors Debugging. The value is boolean (1 or 0) @@ -2213,6 +2220,36 @@ public static void setShowGTalkServiceStatus(ContentResolver cr, boolean flag) { */ public static final String NOTIF_EXPANDED_BAR_CUSTOM = "notif_expanded_bar_custom"; + /** + * Use the Notification Power Widget? (Who wouldn't!) + * @hide + */ + public static final String EXPANDED_VIEW_WIDGET = "expanded_view_widget"; + + /** + * Notification Indicator Color + * @hide + */ + public static final String EXPANDED_VIEW_WIDGET_COLOR = "expanded_widget_color"; + + /** + * Widget Buttons to Use + * @hide + */ + public static final String WIDGET_BUTTONS = "expanded_widget_buttons"; + + /** @hide */ + public static final String EXPANDED_BRIGHTNESS_MODE = "expanded_brightness_mode"; + + /** @hide */ + public static final String EXPANDED_NETWORK_MODE = "expanded_network_mode"; + + /** @hide */ + public static final String EXPANDED_SCREENTIMEOUT_MODE = "expanded_screentimeout_mode"; + + /** @hide */ + public static final String EXPANDED_RING_MODE = "expanded_ring_mode"; + /** * Whether to keep the home app at a higher OOM adjustement * @hide @@ -4104,12 +4141,13 @@ public static final boolean isLocationProviderEnabled(ContentResolver cr, String /** * Thread-safe method for enabling or disabling a single location provider. - * @param cr the content resolver to use + * @param cr the content resolver from the calling application * @param provider the location provider to enable or disable * @param enabled true if the provider should be enabled */ public static final void setLocationProviderEnabled(ContentResolver cr, String provider, boolean enabled) { + Context context = cr.getContext(); // to ensure thread safety, we write the provider name with a '+' or '-' // and let the SettingsProvider handle it rather than reading and modifying // the list of enabled providers. @@ -4119,6 +4157,16 @@ public static final void setLocationProviderEnabled(ContentResolver cr, provider = "-" + provider; } putString(cr, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, provider); + try { + Intent i = new Intent(); + i.setAction(Settings.SETTINGS_CHANGED); + i.putExtra("SETTING", "GPS"); + i.putExtra("GPS_STATUS_CHANGE", enabled); + context.sendBroadcast(i); + } catch(Exception e) { + //This is ignored, as this try-catch is just incase this is called + //Before the system is read. + } } } diff --git a/core/java/android/view/KeyEvent.java b/core/java/android/view/KeyEvent.java index b543b2c68f379..75b0b973faa3a 100644 --- a/core/java/android/view/KeyEvent.java +++ b/core/java/android/view/KeyEvent.java @@ -129,10 +129,16 @@ public class KeyEvent implements Parcelable { public static final int KEYCODE_FUNC_7 = 98; public static final int KEYCODE_FUNC_8 = 99; public static final int KEYCODE_QUECHAR = 100; + + /** @hide */ public static final int KEYCODE_USER1 = 101; + /** @hide */ public static final int KEYCODE_USER2 = 102; + /** @hide */ public static final int KEYCODE_USER3 = 103; + /** @hide */ public static final int KEYCODE_USER4 = 104; + /** @hide */ public static final int KEYCODE_USER5 = 105; // NOTE: If you add a new keycode here you must also add it to: diff --git a/core/res/res/drawable-hdpi/stat_2g3g_off.png b/core/res/res/drawable-hdpi/stat_2g3g_off.png new file mode 100644 index 0000000000000000000000000000000000000000..39255737a608443f863f43b28b01c97c5f1e992e GIT binary patch literal 2787 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 aT>vQ^Gw*GVeIpycoenlG_#3#ug#Q2=LZ-+7 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-hdpi/stat_2g3g_on.png b/core/res/res/drawable-hdpi/stat_2g3g_on.png new file mode 100644 index 0000000000000000000000000000000000000000..027713ec8c5c60dff6b44c51ed610287ed3218bd GIT binary patch literal 2949 zcmaJ@dpOhkA0OtD<(AM zk`kwODvl1htAwbu6ye8QN;zjb)%pGL>-T-0@Aq?gUa!~t{dvD%&*%AO`w;PJs`{z` z06@*t1LG$f;p?x8lI$BS|Mr+{_=bxmas65Qxrt;p4d6~?Mbf~YvE(S4AB{{+I(U!f z3;-yA8380N$%}xZuwt#r>lkZZY@Cb@064qy;>eU}8W$W%i()WcAhXT4AYca71rluM z1^0?W)94J3WH!w|nHWGxj;1(KA+Ec@&ODS%AeP1@gL$zrOb&|Y0{N(mlFiq*VG!^~ z2shdV@=sDEFCQ?P#ioJntl>}!+#U|Lx3RWC+B!HmSb-668#oM(fY~6RHV!Bx0tJVI zKRpmxG&XfV$`6D46ic>pfzY|!I1~()n3!mth_q(0qhK~pPEP9@2n1AyfO3+UTrv;J z;FSzW51v|TtC{s`TkE~PC!x|4dzGVu;SSiS>yH_uZN05q1iMtm&FcXv0^?~(TC3B zvN&{B92o6y2M%U1sjNiKN3@q0%9F|Al9?2mC&mRL<6AQrR1^|tk8!d`JEF06I2#)b z&d~vj+=Fw#;xJfyI}8H%nTugj;$vw{?q@FbU#`s-%}Wne?a;Y+yFA^H@d zk;v<>kj?)6z{sl7x~uW-R(6qEzSRK@iuv+&8c4C#>|(QYAIHcM=~!OA;q;+`KNgBt zyP7yNiCxQ=EwH|2e=Xqcw8R(y#gLyZ{FO|jU14pPm-VTT{VGQ z47sHy)RR z@FUnB-p?PQlhf5pba(`!BYm(bb!XVB4`7pG55DV~98`RPJBoIHblz$5wI00ZQq~KJ zgn5JgV(e)y34F z#pCfEYHDi1b1YYRMYrwZKB(b}MEa^<$HPwf@|c`oy60v2xU1Pttp$^h_Yx>O3MsZ* zCSSgc(iEC{7dy9)mY0{OKl>2YoM3myUAvZ`SDUY)mDR%g&$Eyc!Y^{xpn__^Hrs+M z(*|vk`DP%f{oq7{k_lwl^C_UOz1FI2oxOCC>sJRc7!_?Kv?`^=zUnKlPfk|S+lSB>`lY3<)wsL69~pTwJL^iVJEmdyt_P+k zdDfJ^r##qc>m(5nQYZ)IchRM_>F|d_v6bd6ECEklCU7N>N2cMOS2P0BYM03&zvw-TXW;h<~dxOK@$|Y;7^^ zjLzcp(>upz7v$|!n@8Q0PI^o{?KPEDl_k%Oryn?zQN{T1ZZYtW9}Jq0Sj?Q2qK(ab z@zIb=iyj(VJQOhX@0Fptg0_^#Q`}b%M@J2^zNf4eAfq5tuU~WN$N&$+Y~Q#;hgzId z-$`#yOiZkTkNVki^&&VL^op~|;?saF@kbT9 zkRDQXwBEnmq5m58gi7S$nyVf3xPhjAp!qwp+LH{2oASwM} z+ws^&@*%CcQJyaqnchkYQ}&zCN-owf6Ppy>4>~yeb#T`%jcfCil-nH z)mPAQ^f+jI2g`tDY2z$xI}NE#8oq7YeX zQDac0_UH;3EmKUHT7zOG>cT%8^jl6Y{uuB$_f}t&ccafElCT;zf$c|7R0aJQd3j!--w^;goF_b5LgMUWi1-JM9Aa4>^g5CWl9}w z-TFxub-gX;6D$F9JlCb)g9nsTHy#T2@$u=%DcZGU1%35f&(usnWFkrX2MANIiRc$>FEe$ghHV^^P6o=bSz9#81bK6YWj!rRI0fy$WoE;HTk n0+-!p#Va*R+H%)d-kXR4eUjl0MrLQ``j4?EmWa8$CnDo-ANu($ literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-hdpi/stat_3g_on.png b/core/res/res/drawable-hdpi/stat_3g_on.png new file mode 100644 index 0000000000000000000000000000000000000000..3e6fd22a08c38741c5a01e15357ef51c090d904d GIT binary patch literal 2704 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 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-hdpi/stat_airplane_on.png b/core/res/res/drawable-hdpi/stat_airplane_on.png new file mode 100644 index 0000000000000000000000000000000000000000..4439a92d5074581a8fa3b8d281ddbd1b62673414 GIT binary patch literal 3165 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 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-hdpi/stat_bgoff.9.png b/core/res/res/drawable-hdpi/stat_bgoff.9.png new file mode 100644 index 0000000000000000000000000000000000000000..e288cb2c58cf56ae8d36bfd1389e3ccc448ea439 GIT binary patch literal 1074 zcmbVLO=#3W6po6etyEMBML`@=5D(pCvOn2P*lkUdja_ip?e0PsyfjUw-OwhJCevPF%Q8x3eT)CsjO6nud=U#llkv6dYp)RghsV&3`~yhB;>0 zwK}O6ugWHNI3vPvq2p0D!(>N7&oE~Z0aIwkc602`<~tVHR*s!W6=Bg+QNtcv_EB}Y zR5O=nP032ArOZG;-2 z8D5YiDbk3?V-yh!mRw?lF*g|OC}=1!ecK~8c0r_QOyLERV`-#&DL7uSxG(Gm?LyI# z@uA`I0tb1=iSlZp15!bM!#EHf)RsKNS5SZ#e3QP%^k9cfYj?P#2uP!mulY886k|@q z=7NJx8MfEa81G@G$kcMNfA{sDX?v> z^*Y(Ny|(%q z?cUsayMBK0^2LvAccEvazjo$yW&PWefiKyffrr1h(W~o^FU@Zc^^I@cfZgsJ@xl0U zdt%_Jv$9z__0n8@^z-P8Pq%w^s%zxO*WC|yhL3bH-+v{-XG2?7G{uE{Nqaszx$*}n CyHxG~ literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-hdpi/stat_bgon.9.png b/core/res/res/drawable-hdpi/stat_bgon.9.png new file mode 100644 index 0000000000000000000000000000000000000000..b27a5cbf2dd0ae5afe77764ea81b6ec672f60ee4 GIT binary patch literal 1099 zcmbVL%}>){7;i!pof1JY28deA#Td7?`)Jo@gLLgGOB^g?3Dc9MeSrqrx3n*;pa#Ru zkCQQ;jL~?JXhahXCYW%*Xgv89qcO%mU{&Hz+phdn($r8Q&*U8$jG2A2E*PBc zFX^-6x?oVfJ!HxkF@Xh;M*7x-?TLPxs_}|g4xVX>teK$kG_@5}IbR@U=mIhkVZu7Y zF(k)E*jSwB`Lkq{VHui<(rh%$@?tD1G7MS&DD2HOM#Q3`)_q|uO^qSsh%{ZPR3epF z1iGU%D+ofs5sikiMcA9Mk>-bOue-sZ08e*K2bs_&14eBaPN6h~Bi%~Da`O3YV%w`1 z3YU!bHHT&+3~gCKUNvhE6~W&ycC_|NGY+7Oz=Kn+j{7mv-2mg-?d~Wr#L5Kc5EpfCmz^v0k= z%7Y1V$g~Yu@q*@T<*ESJoCb#KLW`_bS2TC<&T%}>l#2_hECpE$Qc_Z+1jh&xCv$O@ zs$-4+sThrep@Y%*XH*(bc>V%$d+@Qcy*j|g`{LroFsmPb;ibBoQ>2pr!zg?TT_X>s zvemB-Rv&N9ZFE=VGoeRiuQS~B^ZWX1VNctsdHHtx!rcC&bL*2UpYN}|>Rb9E-CAt* zmXqbRTHTT?86WojH#kT1~Wuy5{>y;Bvf46H-4!3D9pWpq!UP!)Ujx2&VZxo literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-hdpi/stat_bgon_custom.9.png b/core/res/res/drawable-hdpi/stat_bgon_custom.9.png new file mode 100644 index 0000000000000000000000000000000000000000..3c1439b1ce6824e46f6f7e8d1060bf72e4c9da44 GIT binary patch literal 1085 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

k^oFXZ zxpnicrJf6E5hrcI>ftw{XTAo7C$)NNqPno?mc@WI7l;J zd#*0TFeR1s*AXwuor)!Z^r3~`NHKP+=lz8FzN^V0Vf_kkTyo3$#eS8$v3lt*bg;iW zbE_M?-_(Ow7FMcjfT5HJ5$z@1VyTpGuHNDF@aB%c2g}OJz@Ui0EnD&npW1h)q@68g zF+vECnOvPjV%NJ<>f4w9rBrR4bjv5Sd^J7kw>6SIUF zKlx8q=N1l>^^|u-`PMgmSvT;dfw%oF^3uBn+%=werYAFX3fQK}03N$vwMsPZ>RG&@ NyKVF!op)mF_zzh}GJgO7 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-hdpi/stat_bluetooth_on.png b/core/res/res/drawable-hdpi/stat_bluetooth_on.png new file mode 100644 index 0000000000000000000000000000000000000000..72c38f42e6b1787fa57e066d7fea090ed53a630b GIT binary patch literal 2859 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 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-hdpi/stat_brightness_auto.png b/core/res/res/drawable-hdpi/stat_brightness_auto.png new file mode 100644 index 0000000000000000000000000000000000000000..89836c1be4bb5db108a4be272e1a3b98f6506fca GIT binary patch literal 3970 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 ZG8B;cu48tRn~wg9QAU=?M+P2o{{z$V06qW! literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-hdpi/stat_brightness_mid.png b/core/res/res/drawable-hdpi/stat_brightness_mid.png new file mode 100644 index 0000000000000000000000000000000000000000..b464c17cc977f852fd634074d53f1fcdb42d4618 GIT binary patch literal 3632 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 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-hdpi/stat_brightness_off.png b/core/res/res/drawable-hdpi/stat_brightness_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3568bd3ec2c0ea4650c9870fdf8eb03396b87a06 GIT binary patch literal 3463 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 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-hdpi/stat_data_off.png b/core/res/res/drawable-hdpi/stat_data_off.png new file mode 100644 index 0000000000000000000000000000000000000000..2ce87433d309ead48adea93804cbbfe20f5ae99d GIT binary patch literal 2721 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 RrQ?<_jqWa9lm>D{`rioVb@%`P literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-hdpi/stat_data_on.png b/core/res/res/drawable-hdpi/stat_data_on.png new file mode 100644 index 0000000000000000000000000000000000000000..8a6b0bc46b726bcf484fb141f562ed78d4813ad6 GIT binary patch literal 2427 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 E0Efj$QUCw| literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-hdpi/stat_ing_off.png b/core/res/res/drawable-hdpi/stat_ing_off.png new file mode 100644 index 0000000000000000000000000000000000000000..1e856a8babd749315f7bc6335217157a38227189 GIT binary patch literal 3568 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 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-hdpi/stat_inner_focus.9.png b/core/res/res/drawable-hdpi/stat_inner_focus.9.png new file mode 100644 index 0000000000000000000000000000000000000000..ed79969280fd1d5bfb8a9e305a1618532b0512f3 GIT binary patch literal 1082 zcmbVLO=#0l9FHH2Ih}{0;5|hwCGc%;+=-NhKp*{T09C`GEF5P6XNb-1`)C?aniiJyv%{WFG<&a@D&c8!_470%LM2!#=tveoNGfZE9-80NdMA#B4+isfs{^~Wy+E$tyO=LmVQ&Ghpn)XqC zdbnUtPnwd&^`Bt->M|8@5HZ-gQ*{Hmp61qdWx5Zqd5&F&kjXT+;Z!j@!m8LuY$6IG zCP)G{38OF;Po+}FSOGx51A&J^1g7MeAOpZQAC6k{t#LW0=}lYol;$dgcrwq|YPD!B z7R7#3Yw@v_-XVK-%Y~OJghUAWS4cOcgXB zh!ASJ0u-nZKtYTrq?7=~7B}Mt#Bfd2vTIYjO)mT=S5|#w5bPH)uC_X0q=E?!D%fMy ze1aXdT?^NOus9pBYRI=QAWQeL!>(snwzsgJ6jL95g_BrI-yPfOm8d}KBT^|3sZ~Mz_w~q3{uR9fXb-6h8bm{)= z{Pp3t55LSD%A9-lqT~6M<@vqI&o{ciJ#O30kG-F0EcE_7oVTWr?>xY)J}6lq)~=Pq OY0eA|YfA%Tmwp4A1z4*9 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-hdpi/stat_inner_press.9.png b/core/res/res/drawable-hdpi/stat_inner_press.9.png new file mode 100644 index 0000000000000000000000000000000000000000..b1b6cabe293f111d826a8299cf4147a699c1c1a1 GIT binary patch literal 1080 zcmbVL&ui0A91jeCFq{a=m?9XnIZg>gzqx zOHou`WH;!|)-cSZEf~8ONx?0yM1F&3ABwqIxX5 zRL14(71=}%YlIlK>3D=qQ6pnb&oJj8re|T*c2mr^m#-Mwwo=SgBFkqz71r#D1s@g{ zawT(N&Xg=>Y?K~p%0$3{*r1zE-3{bsifQZ0WFKC04Bdv{xfHYQR5_ccRpdiD!SWH4 z7kF9#EQrOE$>aq($^)L`qa27vKvIrHWuB)y4@0c^Rz)soddC(yrI;GVp3HHLMuTm{ zSmakZAW2fF5sgL&A`-M*Y&0WoFxXYlU|{;Thi&B2p`tO1=5dN4o^FTWc-icZup4v| zMN-B!4UYpX&pA#QR~sGR0{rX7uIQlD@*r1$0h;$sQjf}DmrQcEx1kV7ypgZ^HYtix z*N{2yKo@7U6hr>7mTk$Brt7L0*Tv+xs_6iT3P>w_ToH8*@F1pjHFo3byr=_F5Hvn2 z0-))HnoJA2s)&*bVxrXLX50W9t_iz#ZDO~>P3*~)RUaA{`6Yzv-44jt5Jo`_d9+$g z&{MW+p+*oEXFFC6`t~ho={|Dkc6McZ7wdwUB#{bni8vcZEh(a+DG7m>6hRf@fa!3p z|H&9foZ-UO_@`C6SET>K?M~y9!_MeHm&}V#2II`uvuQF^H!_-1YJS=(DZPvQp~>}! zzp`JxZmdLL-CR1#CGv0Ie!O_@@zB7;bV*xePaZq(_4HT2A6Pwd{q9Vz@pJr5%vfAo zy|?_kHT1mJIQ(IGWAZ+HajNou?Q;L<>uZ~z9}KUbE>4O22B;OwjHiY-ABD4=N$0eu I<1DqTc@(rmPVT8 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 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-hdpi/stat_lock_screen_on.png b/core/res/res/drawable-hdpi/stat_lock_screen_on.png new file mode 100644 index 0000000000000000000000000000000000000000..1a63f37e36eea701c2830f2c0fac84a1c068f61d GIT binary patch literal 3078 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 V34J}&cVz3I$i>lvc*h|){@?vU<#hl6 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-hdpi/stat_orientation_on.png b/core/res/res/drawable-hdpi/stat_orientation_on.png new file mode 100644 index 0000000000000000000000000000000000000000..9595f10603fdafde7cf0bf3c9fa4373c716bd92a GIT binary patch literal 3349 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 G^70Sf7$C*~ literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-hdpi/stat_ring_on.png b/core/res/res/drawable-hdpi/stat_ring_on.png new file mode 100644 index 0000000000000000000000000000000000000000..ad227af6f34a0555db2355dc6aecb2bbc2ed4fbc GIT binary patch literal 3359 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 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-hdpi/stat_screen_timeout_off.png b/core/res/res/drawable-hdpi/stat_screen_timeout_off.png new file mode 100644 index 0000000000000000000000000000000000000000..a1381a336b7511f1e30d1a79b6a9f8a79b91dd86 GIT binary patch literal 3894 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 BtCj!& literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-hdpi/stat_silent.png b/core/res/res/drawable-hdpi/stat_silent.png new file mode 100644 index 0000000000000000000000000000000000000000..f8db8e6b39303783dd50011c7c83d0af042d9d76 GIT binary patch literal 2915 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 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-hdpi/stat_sync_off.png b/core/res/res/drawable-hdpi/stat_sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..2c40fc387c3044863650d5d71a1cee12dc86dbdd GIT binary patch literal 3464 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 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-hdpi/stat_sync_on.png b/core/res/res/drawable-hdpi/stat_sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..f1f01522320622d9a01b1486f0255ea9351efdf8 GIT binary patch literal 2828 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 S%aYyvKXrC+$5q(}rTzz3AE)pD literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-hdpi/stat_vibrate_off.png b/core/res/res/drawable-hdpi/stat_vibrate_off.png new file mode 100644 index 0000000000000000000000000000000000000000..999a62d36febcda43f37f16c838d49c025927629 GIT binary patch literal 4165 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 R)oA}u)6B%exE$je`9D!`mQnx! literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-hdpi/stat_wifi_ap_on.png b/core/res/res/drawable-hdpi/stat_wifi_ap_on.png new file mode 100644 index 0000000000000000000000000000000000000000..0f2da2be1004141d3a7fd651e9b13494ffc7da5c GIT binary patch literal 3727 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 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-hdpi/stat_wifi_on.png b/core/res/res/drawable-hdpi/stat_wifi_on.png new file mode 100644 index 0000000000000000000000000000000000000000..1e30e4e683e4133fce511c810b2141eb93a037ec GIT binary patch literal 2914 zcmaJ@XIN8r9}Pn)L%@K5fEofR0zwi9D+C!~Ll9#mk)a705NUE_5=adn~};bDff|5(orZ z=k4W&m#&D_cddf-OO*Zlh;-S=cPH_80Svx?!li>;Xh0Yp;?1Ij)A4i)E#^Q69RmW% zL6`&*pM>*6QvsF*Wffx~WO1Zy5D4QW3L*O`A zdIZxemP_9i>rbG@MpEr*P^aw>j1VmqVA1&$h>-OYn}-%ULO<)GrTf)uI27_3!jE)> z{*x357XZNmTsp+s0%1-?*dQP_NDHJD%GTC)8^jWUM8FZ2aHOR<(iUxHiAEqGUmmD5 z8kfdEIn?N>D{EzP9}b6yOaPZ654d4^vV z+~_h_yyrH5~}r?aJA=Sodo;DbC10{!s7+s%a_ z9GVW=<3}LsoIXenV32;Ol=!4y#A~(crsjcHk0nAhYX<0e%* zklx4Ocf(Dv#e3k*MxV-So^769!)j@sDbgy6WJ1La2)e?y$ zZtAa#i`N#i=hR?UEsM8X$a`ej5E+6qCRG?&Yr{@uT*+|_m6yQ>;PpX7(HBGuYOUZbqhb9HfV zYvPvouUWGuFus~C-+wetFTSaFACR9~brI_!lAE`?Cv~u%m_+6WMwb9M}{TGN-Jv}|^x3iDc zUQADmvy_MIfkzmtPVAYJCkNEfo1P?W*}OSW-!XQGkOdO8#;lX*FKd~1%hZbry;uKO$h?6mZB^HM-gGn(9#v<6Gig$C}o1s-M8 z^CpguzaHx$k@ zP4NLr^#psub@lP?s+c$9M>4e9ocPafXX=QDdCTsXFh6(DG!!T}9Im-Ka-fe~+a>k1 z1FjiHTFbl4CU`mfSLwQV8-c+`3sBKFLzBqk&MwuHut8x~i;s%tOHyT6>Y=VYb2Trg z!$+Aqo7cy7M0RU`iVO8p|#t+Kh7j_yLJ}JrTQ7QQ!%K@?ifo>xs?Cva zNni)e%uG#n*Y9oboSb{|M_mSeq;f}SXy^}`q+<7hm;D!x6x4tQo%O3{h?qo)PdoGQ zQg@iM%LH|lol;`j1U*RB{oCm7DP;1g-u`}A&{f7A_~nrVUS5;)txx!qyJ^4dNE_2J z$jaw=2rZOk|-yy4bI?((T`0Ex{~r9X+D|W`TF8?G+IvBhDT@0TtOdzHj`! zG0Syfq~mw9UEkvWP%fA!%lnc-!%>FjnmRC8l6Ogss-EuS>wAe;GdLdIyd9^g0xkA@zce$o zut*`jFj#101s%{kyO*P&}5k4=5`{rRYcpp2LQ{EayTZ3}@dZN}}yn(DO zGaQx}PW|+{CI%TgENQk8=gMj=b;;*|*W(JW9Ykut=xRT{D|=+DRTH?O&y4F&S##$y zH&~+DYc^uM6!pjOeUG=|x`o9AYhjUdc3Xq23TT1^>o=?^SYG|>^>+7nt8gVJ{RbfX B;Ku*} literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/stat_2g3g_off.png b/core/res/res/drawable-mdpi/stat_2g3g_off.png new file mode 100644 index 0000000000000000000000000000000000000000..66a0d18cfbf04f979d202b10d607960a0498922b GIT binary patch literal 2189 zcmaJ@c~leU9v#^fgtk^KSV4zC*-pp?2_^(FBw-6-x8Q;IAY>+xBUwm738)B3eFapM zwN_B8MM0o!$}S=K`#L(8V-axP-0vs zOa%aKkRKc>3uXIIxFP|DqrqV00x`k{0II88%;D~ZWndH>%@?|$o;SCmKtAMx3L&y_ zY%v{<;d>@Y;GiVmU~bZ0E*V0(?gXiF3L+qYWgJj0h!sjHau?J)T?#VSY-3U2JBVzr z3+k_=LfQTxT_k})A_iyA#gT9z36H@$I665wp+N!;kHg{!SUkZV??iDRP;fZ#{ewcH zNgy62km3G57P4|d#mHo03KpA?kbp^Wz=$N#SUj0b)@Tq2_6WjWnkbZU2fe`B``-Ok_3xHv8!G5j}gg4(io8#qz4hf z5WWx+B}m_)*=&lJP%7gHxv&?*1%>c2d_F{RqT}71oOaOZOrkp;&v4&Cb|=&DJIFM5 zA`wTV(N?((5jS1{3uUWZ=x;9Lqg;&<1Y#sI1D5c=fgyK^NC3Von8N>fF0_y8z2`z7 z&&BPdTr83dR&%WXb}sX3IjlL1UtBv<(!1r%%O6LznH?bHS);GB`BL1O?W5O?Grenamy~D}%FZqoZP{>q z*G+Si0RHxX*>v`PxF>n!YJG9(&;7wd%WffQo6R(zynE7lcf^57o8mxQ759@j`qwrB zdb{dQxJ8)S@~jFDrd2|-_&wc*z#$*q{%f(0#;M}0HTe)PyYq{PqZ4)yI>7!xQ~UGP zK*L3|ZW`~WNG(8k5;)xJ)CP<;p$X2~=KWtj+8VvG!>~HlI}=l7inG=}`#Eq*i_tc1 zdz`kiXKdR#SLILh7#3 zs+N{zr^ECYLzj@|&vrpRd{&? ziHTo~kF_6Qu~?PO&CLfl06ZRVr?azj8F0-2IHIR)do?sP)H*CocsVoEbLr~Uf7aF4 zhurC~ZDRI?7DQGx^sBBsQLC34uUw&eQ^hyJyE;1)oyp`kU-2Hlcu}LXa{BPAk%td4 z*K=-6*jZv8_V&*1<#0GB7NXp`eu{jwyuAEsaBwiBT+knJv{s)Gq?(%gGu0Ea@K3ux zKKG_iN6}|w z?;jR8YPFiWv9{~Zoy>HZ)}ti=9I?&I%kwDzJsUlK?!o8zUo89SGf3)gFJ01uuR}tV ziZCXV8GYF|{Z`aBG|K30SGOW}50BPEMI}ADo-vynbuE1i4Gs6VKM3Y#+Z6?JPLAr$ zb^rS70Rx?G_UoT7+&WoM@b*X2W!Q4F9>ClN6`3TOH>JlPQvSP4D+LOm58q!up*@F1 zqp$o6BTubed$8sF`SI6FOG~V-liH*sZqY@L5$}xU<>n4Y6}GjtZD*Fx&d!QT%#5tW z88`2G$DU@Zll6*i74wS*LpJM*?_9s(NF)jnTc{muGsnlrm)X`i$R*C=Ya7R{wO`Ll z83!w3)YF|nhmHA#rTKXh4v(LGrBbP+Y779@*VYQ^>guMCFY52fq#Zuw4^{ng*8fS4 zQmF(|N3+o}Q8fjSkB`tZto5k`=i+tNO_;hND-jjj7 z{z!}m0wyLWBi59RJbn7q;`sEsTu+ab6Uj?8w>vfsRC~u{iLX{ySJT8V6y!B2r|uP< z-{h`^&Wy0h!c(b*_Y4~xsQvx@XSCO5c-6tQ?rtRjq(oe9ZGF3MA>GuirJ>#%k8yi8 zP|eG&`EHm7m{3Cd<_Q!3vpR5~u z>aD^W*lu=h-x@vO&ytIy(doQJ%@2YX)0a`<7OD6T*wvGA literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/stat_2g3g_on.png b/core/res/res/drawable-mdpi/stat_2g3g_on.png new file mode 100644 index 0000000000000000000000000000000000000000..028d22857fad9840c9f6fccd4fffc45faaef4816 GIT binary patch literal 2433 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 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/stat_airplane_off.png b/core/res/res/drawable-mdpi/stat_airplane_off.png new file mode 100644 index 0000000000000000000000000000000000000000..ba6d41d9d726fad0211446ae29b8bef26e05cd3d GIT binary patch literal 2365 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 CyHxG~ literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/stat_bgon.9.png b/core/res/res/drawable-mdpi/stat_bgon.9.png new file mode 100644 index 0000000000000000000000000000000000000000..b27a5cbf2dd0ae5afe77764ea81b6ec672f60ee4 GIT binary patch literal 1099 zcmbVL%}>){7;i!pof1JY28deA#Td7?`)Jo@gLLgGOB^g?3Dc9MeSrqrx3n*;pa#Ru zkCQQ;jL~?JXhahXCYW%*Xgv89qcO%mU{&Hz+phdn($r8Q&*U8$jG2A2E*PBc zFX^-6x?oVfJ!HxkF@Xh;M*7x-?TLPxs_}|g4xVX>teK$kG_@5}IbR@U=mIhkVZu7Y zF(k)E*jSwB`Lkq{VHui<(rh%$@?tD1G7MS&DD2HOM#Q3`)_q|uO^qSsh%{ZPR3epF z1iGU%D+ofs5sikiMcA9Mk>-bOue-sZ08e*K2bs_&14eBaPN6h~Bi%~Da`O3YV%w`1 z3YU!bHHT&+3~gCKUNvhE6~W&ycC_|NGY+7Oz=Kn+j{7mv-2mg-?d~Wr#L5Kc5EpfCmz^v0k= z%7Y1V$g~Yu@q*@T<*ESJoCb#KLW`_bS2TC<&T%}>l#2_hECpE$Qc_Z+1jh&xCv$O@ zs$-4+sThrep@Y%*XH*(bc>V%$d+@Qcy*j|g`{LroFsmPb;ibBoQ>2pr!zg?TT_X>s zvemB-Rv&N9ZFE=VGoeRiuQS~B^ZWX1VNctsdHHtx!rcC&bL*2UpYN}|>Rb9E-CAt* zmXqbRTHTT?86WojH#kT1~Wuy5{>y;Bvf46H-4!3D9pWpq!UP!)Ujx2&VZxo literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/stat_bgon_custom.9.png b/core/res/res/drawable-mdpi/stat_bgon_custom.9.png new file mode 100644 index 0000000000000000000000000000000000000000..3c1439b1ce6824e46f6f7e8d1060bf72e4c9da44 GIT binary patch literal 1085 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 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/stat_bluetooth_on.png b/core/res/res/drawable-mdpi/stat_bluetooth_on.png new file mode 100644 index 0000000000000000000000000000000000000000..1b59eacdfa3e640364c51d1d528fb4041549124a GIT binary patch literal 2239 zcmaJ@dpK0<9v;_5kzDE=I7B%HvLfhei~iU0wYm?s2-K%O8m zt_h@|PzHdA6AFj2{mFbtjOFPtScO=Muu&+=dWDq7j{#vI0u+iQo*3=TI~YJD@Wh0; zvGHuFHy9=INs@uVNdX*wQVicifLXr|peV?QfEa{%fI=KAk&_jkn9sUoWUhOS!vLQl zaEvGB4^yG+K)@T4fq)wp@65*&@c@y4CAh93kw~in7d!!v!@J-JF3toJ+0})N#{*w3 z3{p)dh$IKm7+-23D^E-m3`@y4TtY$uHo+AO$%Ht9hlhtw!^OoJK{(43B`{CnERipt zRiJ@#zDy*AMUVv0De@wqc-RwzIQ?S_V(C{|iTq2OkcQzDJSmQV#p|{-3uLqZKU6IK zik8Dc;Gcf~r?8xpCChU8I@6z~pq z142X+0hA#BjApaREQuWEN%$a(=7~Z0SdmCTCecVlH^K(IH{FdvAkY}@M20Kf74J@G ztYJ_+Nba*-8pMwmgA#a_EBKR3n3Jmuf>?@Frhzii_n?3wgT%n+4U`(7y#{<8qIcgOY`cBjKKL$xfQFX9IPL;tSdjaA~#~sZuIoGpPX3M9MiG% z6()mbi+SAX!)Zq9t}cdcepjB#PIx<8>p!#nVNORvZ(PQ)f7c#L9KKyRoYI zkzMD^2!p3qd6`Y4sqdSYzN$B&eHy%0`JER#V~y85Q?HF3TQkv-lSkc+SHj6d?E75( z$yFz)DT~l)`%sqmj0$u5yrrljy`}CLhtn%9iVV+-9vizv8Cw8<+q)+`yd;4mc;WHX zU?%m>zU`I`!h01WN_Np9%D(JgcD$cju(K54=|d-iN*adB}3 zm0B0gVl~lxeD3otwJYD5w+^Z!y^ISM8=&VU)ZKhO*4x|5mcHR4!+x)YlhviA!#MyNd;LmXUEQ;`wl=%>Qx+B$0WGZ^ zljC{{s~$s!ZDEMsR@>iVo~Kt-R4ntqR1l}GudlyEED&Q|UEA0+k?5sE4P-b$)kmMJ z+g>$14F2XEt3kd2p6aqDfh_yr!B(MAxVB_sp0TlhdwY9%xp@}g`EhU9d8c3axPn@< zA!&$XRzm~b)$~M0M#d7EOopW)hA*fa8+SH>t9~8)5w$1RbS$E6WMqV1^0=cztNQ6D ziQmrN&Q8LMp`qS}{CTG4<}-(t%9IC6&BKSxp!@l&5>0AaQ!}hzO^lDXdb3O0%5sk! z5xcp$9U8N6rO^GG^QTYuv;6$_Uo9@~i)bPeiIcMEraYyJQcE^Fi&mu8j~(c_NwBJ{si|52 zcG`iKY+l3f&}cLpk6{`ls+4~W+oxGSm=_IgIyK~a<<1=~F6DmY>07s^H>aeelyANm zkGfJ;_VOV7;!y_P&G-ADt0enCzZCi=>!aj`T5u zFDcNgUq1z_7Fif_naoCItfq5<$z*mRU0Qsd|32e`_-3@<=C16?a}NCj1{>8kZ`|nT z^ZDkjt*zS@ELf0p;J|_PKPE)S#4JCnEzm?3lmy0IH`yfJkmsUJov1sGZo2VZlJx+gd7#W+RAsQ#|)y}k2= z1t4azSW~|0E#G0WMZ(Vf3#a)b-7EE0mP|wbZ>o2d9w8Fn_^LPA*@acKD?{xccVu2# zoMVqhsp`U>4|H~RI*n!rUH&+op&6#_R&oRU{QREvcOUXHR@h8VZ9RPXI9zLLNnJJ> z8yy|Jc}H$TW8;3=fYe9C8egbb+;eI}qo%0z!ViCO+`~EAtA7c&=y+A7dS-89lW4N^ zKy6mgnV--5`ukfuFWDc;;e045FON0UR_@_m4&YX4+AOzm^A_Ct=2R7>&{w|T&Ab0t z)3NizhN7l&tES7!SBFrRZi~nFVc_c0v2+%Y>Ed(uDfOR=)_U~l+3fC1&)l{bSeyUS z(I{iTse4rZ$Ddo`emT>*e^~&%X(q-#U}kLm63PJO$Lr~_tt+(E{Zg>#0kp~u;c34E D-gdcj literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/stat_brightness_auto.png b/core/res/res/drawable-mdpi/stat_brightness_auto.png new file mode 100644 index 0000000000000000000000000000000000000000..ca6d92e95c91a94e8c49717518b9568616054add GIT binary patch literal 2759 zcmaJ@c|4T+9)2xl$&!PFQ>Kw*oyFkHWEsrZN6ySR5xFyFCgw1UnTfFzr*Z96;)n=Q zC?&h%B-uieHCa+8EsE2KP~Fj~&i&(d-_PfLf6M22p6~Yj@&4Q0%|TvPLlyu4c_&8< zUbKQXU+Jx)FE>0~C|cBcSWg~-b(9xM=Fk8eD$9=sa$=DEX?Pl$8W!A5vj6}I5S{4B z^TfHLC@h9Cc@tyIXRt+V0I;y;v&ob|8V}@0^QSW{!Ec&d!5})-5`4%M2gR}NXaRJ` za1M5=G%o8Hhawu>QSHr8Y?K{`M&_|NL>4RPYZu)ESUeUtfW-#c5llgc z=u9drl=~Tt!=ap*TppQ8p*dkJ!6LpfolZrWV{EW+TQj&F*3=#b!`RzkY%%s&DBRS{ z774?^?7wm`EXpwkjmi7UrT)V;`7U?U2n@C;GKR*XhtR0@92NugxnLCi`?)~BtM`RV z{eCX6?{XocWFVVk{jV{9y%Kq6bNkJ-qQf`a)0iT!b3~@*PP04#K+4hyV?*RmTtDRH zO7vGLc-mhrXQJI+J@hzni=X@Pq@b-T(qK$VZ~PMOywkMC^je{whE~dOj;EF!%L;L4 zhmU*Z_3cF2((`CQDYLe{KUM+SR#`t?^r^Ph+;gzR9GTnL8`B?J_hzFNuY&E+^>xm@ zr_)1S=&=$<>#ciqWBLjr_E_ca{|Wl|88DMtzEgTlb<8AAMsE?iy+AQ`)}~4(HcNdF zuC38uZQpb*CkHye9Dc^F%=^xbJTW$GyYIW{_NlN#$q9>Evu6NF=pfun3~FLhY#sV~ z(#zVqwZr9%aa3o@qHSSzj$^EfmPFwx^%a5SqvlXZZE

  • C?v#t$THJ#_305Vp=;E zLNp!s>FT!1DJqsdd%d={ww#)ps@~YxsG6IbYk4!rlf>3bIz$*Yk+_r_sj^BnR&H_V#8D4-c0L8G(T>cOUNMWf)su@a}u)5nNEw zkRfFw=lVyJP$)F6J!}MeHE3#T+T7*o>YAc4t0uQKJ^-Q7o%sIU!o!Z_3?-3xJ5JBK2;6@L*_RZ~;LUU~g!;XueMzFllrO=r3mYoMn` zBR@a?$mqyOT{M%K)|Ld+DIIK-^xKY~(hS zmzS&FSsof1YI-?(#sA&%G8V{@GNnkw+C(;Ym7KAS&g((P0DSYkPluy`!yt#T;1I>UOc!+I948yzKGY`xOnj*(bWa|L)^osQS0xPwcq@bkrB7W ziCi;&ys5dlxTm*wDBrD2fO;bGg>vBnYgMe%WVXl9VN1l+65`_=o^-VpfFx-~XDtSWOs z=&)3k@FSsGak=D1%%^ByAD>AV%%$vy2K-fNN1`EA|3Z-x-rGA*Mq&SNf+9PybILR5X!I@V zve&s3!}-Sq(BM^s(zIsh-e&{nAiLDn--~ZSCe8|_q7HJ!NRt6r*$Pd|n^FUJRchxt z(+^#9S6;YDJFzQhC(>(IqJ`qBXJYn~Z8p&0oRnF_a9jA5@_e*ga=`ej-ZK#Y_^j@S zUKl@}Cu8zDu_ZiLLB9IGNKKD6-rIC!W;_V#m3w|xQamqHo@$}5|0`g+ct8xjdV}=S z^u|Vu#qdZRIRoVrhE4dCwRTx9Q$^T3K5{P1}=pslzx6-vfFczI&l=X7lPwY-A z=8AB4kdt0DVGme1T^z-Qid9ex4mA4xYp4-Dan||#)A~OV*Za>R30t@Fd>YuZhNE*o zk-rX{9F)m*P-iT*4BC#)OhvMuTOe*g!V BunzzL literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/stat_brightness_mid.png b/core/res/res/drawable-mdpi/stat_brightness_mid.png new file mode 100644 index 0000000000000000000000000000000000000000..147681b0ba1f13ca02edd68b20d54ef4d4822667 GIT binary patch literal 2588 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 L)sIw8*d_P}twj^Y literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/stat_data_off.png b/core/res/res/drawable-mdpi/stat_data_off.png new file mode 100644 index 0000000000000000000000000000000000000000..178a1a78f0fadd3538d74783948f0647965ac18e GIT binary patch literal 2193 zcmaJ@X;>3?9u5f+!l41Q-Z};r6-XulLP89MKtf0%fDku8DHxK8WFZI1C;>qZ6$!2_ zAl8Bx6>y~>h**qJ4lfFHl}kj_1woF-VpX=TkXB14R_uOQcAjVEe?0H|{@&m5VRWIv zTx*Lp7AO?Tnis$hLsr1}nlC}Vn$*-+$g&#dM8M%nDV!`)LnxL+83zG8xo8&@28kpo zNu3ZAg~9+bK?EGZ4`PUwa+1i1A!+3*gpEQmy|pTlI01rzIB1tl;YE1S)Jgzk5-);~ z$|v(xeo(wDAXN>8rv?kesR?3F3BmhgfT?950&)lz0a|&YLc`E{5#H%CkiGF5BmnOq zaDo@%4^t8RP{2>Ah5#ywOcawn$bbihL~(Pc(P%D!E15zD$*v&9l}Mp6+*}!CGVuN( zAkowkDI<*S|2`IS@*>2;u!;eK$;rv2WH*vhy$hsxdU_f)TwRF>f~ZMRz#=VCp|M|3 zU_%Cz*WV)}vD~IMz z;ZW)R9t&KyQoLIZDc}XJmKoWnoQVzUJm?2x-3w2Sw_gu;1 zUOX1%f`}Q=*w+7Q^THJ}JI3vYp+ycK#vW22v#v&l8VgmDP$;Y!kIfQjAKVlMhS+oQ zufKaX<9t5>VCA!&V{9K-W&np&0ehC^MC9eur`k7m;UY1J{E8A?7e=Tj_Y()zG zFQu*~n7F@I4cMl|bl3c5_Sc{qpCs}{!%r>CGR4GkY-R$EefCAN96o?vn`VciBV zUB@=oszUm3KUabxX1*+uPfxe%kY^RITn4VFkR(Ox+Ov z@b~Pyoadas%+-_$cbGcyw_wjKJ3*i)Qdg1NZN6}37lI{MAofxrEyVD0tTUt1nN zg{y~#hK?nA1P;y+$8*|9Ab5u8;*xgoD;^FVTDpI>-e54)^0)+ytZtiv2&7E}OrEV8 zD8=~n*pC7*@1=rr@s{-7sH5FZscUh0DfK>DUR`0>L#5v2R~A(~P#YZ_@_% ze;W?9u-ghR_ttH$oK7ta2<=%i@389N@K*g$SDh((D}&mAUY}@3Z}Q5_ao>cN*ocUq zHbyN!$;cAB(__;1a9#9imS|nB^MR#1`PW$`O?@p7fr>+1w0)nG&a{TjJFlBJ^oqkK zFCZqq&V6y+B5cVHy7_JqHZ^{22uFcG%S$2jG>yyESZwLx6OS)$T~X4%CPR4t3Y??s z<^@MN+2LwEFC^j5r6lsMw)HnuM~V^SFpuoRJi}`v15g~gdMasM{eA>(c9eI46m*}^BmiS&*#L2xq+v`Fh|GQ&i+<6KQ}jrWmE`({Hcy*xYFuYlR0%rNO!_>`{`)z zNqvI$Ow66bk;3!b^5uy2w}mAuq7F>%$jmT%>8*!bF~dZge@)Fyl#uTA5Vz@ZM{eJ~ zEi~_HfAz{etM%HIsCC+CD`pP+emLM*V>6>PGc%jM6<0?(KD%Y^vw7?J=~n0M>hQ4C zrR6zyb(jn%boPN?zzpe=xT#Ka=G==nBWNqsc-|Xf=t}3$j6VrHPB6R1cW3tRMTvNu literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/stat_data_on.png b/core/res/res/drawable-mdpi/stat_data_on.png new file mode 100644 index 0000000000000000000000000000000000000000..bd7b32c693b04125629d6c880e630587cb2da6b7 GIT binary patch literal 2093 zcmaJ?c~nzp9t{Z~2v~@8ic94+AhrtGAY_rSC1I;Ugs@7%EDwm7g)9bwv{0bHQCSSg zR)K0oTZer7(}*FgoY8NWM*Eh*!g3acg}m?a_+sq?Vj`Uf&zUl zw(i^tgTXBP{pi8a3g}-GW9TbYDp#Oohl~*+3lYW16l@6y^Wup(AmA@x$AiHjo0pRG z1Ly{WApkxrLKeY1MB$1AXto}MP8NtEHVo$Gkt}9&6G0ik0ps~XD(YG5Z4|)gQBmOp zCYC9tfeCy+r34I72C}%yL@t?!@^A;-k|~gY0F<$TWWfocl#)zEz0##Xd;K*A1-ydD z5~-*^l8Rsk0W^^W1PExX6Bp}>1zd4xoU;p&NOT17SR59E#ba=ICmfODjHh6+!0QJE zMU(L2D8Y1}*Rh}z6_p^9i76P2LZLt_oY5jlJO)Q5ll2;Syc2|QlBNh{>|`gQ)NVt8 z4obNazF5W=2?4z#nK-! zR2B^WneYD;maLfHnF_b1nDQ?A|!0x=Ys4odhZL7tC9BmiC&OyO^y3vpAu*IeG_ zxsW#HVxVL&`mz4km^ZE<@94L0ObZ>}*d7!@UY9_o&XniG!eEA%{OMk-#Eh6f^s|}F}`TN^EtacpNsM8;0BYz!K7Y<&}-Q{S;Egci6dT*L-MD*?Lm97L3ZCl$^1CQP1&WlSutKP*~v4&CVTzhdo$*d>CggUK2E-(Mh`1;4hi_)v_*&T(^u5*B+v}cnU!v7&OA#5Kb^HqNu4c!7*t*TGt*v!*J=?vsMeBED zpCvd%HghwR8I(?c6W=s?VCl1Y`-axm-#@~a7l-Q1*U^zyN!n=2g^%x(o3C9Ph>D6* zR&t4Rc{xhd{-PrF?BPjtL)w{lA529=7G;$5eiY)gQyXyRt6#+q7m?al%ew<`@^a?> z-nVZ3mTGSc&q#P1-dK0!XKT&b^a5S1eNuIM;(^kEJop(*=4P4;*3a7o_$r?gL@;(R8@#zsZ?6u9kF#j zG+HqE5;iZdZ)sWW%g)Xoo|~Jy=lz8x>pPA>P&Z|t)yt&cgfql}57r>s=m~-EBOG(){9=n^dHzQ1(l#PzXdv z-`hp@f0=f@?1F4zG%VQns7;PqsVkO!z~~u@sR0H_>rCD6P_x(3q@rMX(Lp?NPkoNJ zuOoDMczEgDP^Yx2XFmDXrAv=mnwy&m=byB)Xhu)1M`IM-s&iMtFjg0h-v!@3UZr`V z0%}y^m^eY{z==C&*ZeI9>rXC3)yK|$7*$e-eO?Viz>@QW`0tckH|l@j{)|BSb?;-J F{s)hiWRL&= literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/stat_flashlight_off.png b/core/res/res/drawable-mdpi/stat_flashlight_off.png new file mode 100644 index 0000000000000000000000000000000000000000..1d80e45f1854cf4f69eac8d69557f68bbd292d47 GIT binary patch literal 2044 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 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/stat_gps_off.png b/core/res/res/drawable-mdpi/stat_gps_off.png new file mode 100644 index 0000000000000000000000000000000000000000..5720a783c363bc817d44e7e8f6b516fd07ae6179 GIT binary patch literal 2370 zcmaJ@XIK+?9-dGPf*yz-O3@ty?7B)w5r_mr4M>zA1_V?*2+1S_NG2wMP_jtxMNvTX z)K#%kZ3}{jfKpUIkkz2vqzVENSA12+?W9xEF15E$` zmQ&owH025|yc$cCUtx6ggmTdrx%i2^V3tTs7eIg`6Apqv3YX4?Xb_zlwf`Pu3jnGh z$Jaaar%kHO*5I0A7qo`}VQUmuh*nt;h7 z(#Wn~V<}H0RIo_ICt@&SvDjR^*&G(IF*s{$>je!w9<4;6g;6{aJrd0m8ZRo4At6J+ z;fpvh4_r{B2f^VY5=xorpCxel-(-2huWeE`3=>J`V{qo!g_0J5RO4qNP^XD}>+g~2c%boR0YeK|ZP zEEax2Q>jD>Pbi}E7!ZX_LMi#?91fF6Ah!T`XO3II^pw6OQa+VQGzbB4f#} z1pFeG3^T&H5KpwoW&Xvr{4RIF2wc80G8qzZA|R%#0Oo>U3MO*Cp9}uGdSAKB@8`1l zyIhPi8O*|1|7*;PS4!_JY`>XSdH7~~h^O?rKxt}QPp&Zls8>_Sj^2^7yS|}2R{5@B zvDlOSH6UR(AA#7usc;pgI4wVA`?SM^*UKM93a7Wv1rKabSEE{3sqNX2o}6TARiJ68 zChr)&I`yLHgq>oNG$8UXJ#+r>t)imM?2f2cQKzQx8PIOi`PZi`-cYQz-`F z014gByBQt}i@I0(P~D+#x#iKn3CDN8WM3~rJZKbzHKzhyb_uchue)EdpZ;@MTYvjK zTBU{Aov8%AY=tDF$w}nxVpYNg)U(bq(iP4zCwNV;%B^@IM zE{+m2)rlLk&#K^O;rqmmzjV0&cvdkqG$W3P*i%?gkcUR28{SDPkZ-IjP6hg0ZF0DH z!SlAPvr~sQZ*753y>mMBm}}fNUmu_H7q<`0x3ssnFKHtoZM4SShG}->q%o7s0MV7+ z2Z8z5ryCj^sauT7Wir_q92Pd+kfQZYPVKe;%$`W4Q{(ang#mP)TEt!VHEnlo0FR9Q znTit;Kqc)nkyQAAlbM;BjR~j=Q;E}6i65PAKTh~5Bs7%3Uz^h8_iGA2d6~nspIs() zv6KeN?HGRs>Y3R2yVAb;Qrs&&^4s0|QLL@Qvo?X14J(D<|jkHqF?v0g6pa^|kWyVSaG%;0}{h z+^l3DUtf%q;S-r`PdJB@E{Be!l(bw1Kaxvz^%=qg7I$aBFB`qCXPhaDjH^-%+9NIog>b4Af0ik_i zf_>QHPCHh8&{^b`avSF82(Bu5K>(AS?SYwa&6+j}3U+Bj%eL0Rd(&i(AuTPpHi9WD@v`+Lj%7d<`Y zi8eKTIRX5bdIifwC(2Nx3#U&*SH3sb0cf5h1|gsHB*#*0t`#Htw9Dg&4r*YVqFC+R zh{2hkSA2@YB03J%npkTN6f#CejjVQP=#cG`SF)>|W?Zg@IHbj5^7rmKW3#CXT@~_* zf?9>i19A^CoixgBhFKY=W*k;i0|jP8mHs#murrtW7%o{o>H65Lzd$?|XF8KNs5Lb? zX%5^q1IX$+m5x~hNqf^)OsIZfFc|i&>hF@Ce6p_%>YB2?8NKr@dTUB(N`Hl^Zu*|L zv4iil(hw?b;C(#h>Z3=G17>xvGH#0 z>a2?w^^^GYRQhQf8+L+b6=OE@v5OSZk_CQ-2PIsufGyD0{3qxg6POST?H`;FO zs=>TVznL7)Uj;vX94oUocG*Z9!xWj}Yh^pU=PrCcmj86yrJzkg1?_dMy`yaV&w7DC X+=NYH&s2Q+!e0%=#e-b#6qxWIbl36s literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/stat_gps_on.png b/core/res/res/drawable-mdpi/stat_gps_on.png new file mode 100644 index 0000000000000000000000000000000000000000..385e3acdcd94d9702dea0942dde702459e2daaa5 GIT binary patch literal 2294 zcmaJ@X;f2p9t~MggeZ(wC`x@MDs=|35|&5|OF$w7A#9PVNlad1fb5ZkK+CFzqNBJX zL=Z*B!HS_EuB@hY0TjgzC=gdTECb?#R*)uE?0gvKo%7y*IrrY*c0at_i10PYInHw+ z5D1bULSvd&!1B(vHh+~`?JM*0wJM0EijoRcYOVr=`17TkL4Ypi3PC2w<)_H6gT4?5 z3=l=LR4hgqnI{!vxE2gXBbJ%j5Qr~TBjfTCK^3qW6pADi)aa!K6d>YLP;n#%jv)&K zw}?Wt3NT6=9?jDx@_hIx>T1AOLpBSDK@}I!h?68rvW9~Cs7p5QE!S8S@DZX)q@eyx zip7Wk0;LKNAYpLsJe(&E@Wf;AL=P`7FE@aI!{e|x0v1nj$9s{91Tqc>e0oskXbQf7 z%%lZ>ie)}gP+L?g85xUJtJN4a5hGOyv3MUJABzTo;BH2^D^nyYuEt%WM9(PDKqXHh zlBq;e31Cs=ZkBFUQBdYg|13c)`z$L_erl7sVOR}UhQ(uWmXctxaSZ1_~7mG!I*HnEv3 zd&W}hSr-ukUG@aZc&Q+$wFTEOS+^^j3b~)<^y8Sky@<1T^7_z9+^O};WapsG?~<0W zHbzFip!0Z7el;46egOelR1)dlg~SJyrIge+uey?ITQtw-IKdvQq#1kWt_;{;p8Bbj8h9C4;$xDupA`M3>cScklg@?#!)kMTF zR;&hUgyms? zy@GV-1>g8;#^O@sef8h(J3sAoc@17Ve$gS#wiI^Yz=4j(b9?@V;v^^6y88H}^nTUW z)&|>h<`}qdU_8aj(_qEV9^ARp?vS?X=+Va9T5RUq7wF<{zeD5iJFA7*K~#KvJSH@i z!D!1#=x#`FfQd&tkh^7TZ`$h0N7+_O2K~!&_cRR~Zl0e!TyUwZ?CJg1*07RSF>!J0 zD*CIdt2f@c-`V*tFX2kqSm_9CjPRs!p_?Ccgw%d?nqknDmzPJ@u{QuCFc@q~>lRXE z%udM5&GnBm*;n&ItadXSg-r`tVenZ);~L*1e;-GqmzP2NfF%!OiuCf!h~obJ#Y+G4 z2VX41YnFx5^KD}CySls4wzjtF{f7>*eSesI>qN`3@vbavd){~B#tnXQ&R33(p-Y_& zEH^4@-LMa}0)xwv3XxcR);-#po7-7iTl>;=UGZ;r#P5cN zhPqi((eGZvV<_ihE4SJ7rbhd`i9FyD{`A?ijX4=&TO0dOQ%xXk%*B{~cKbQaLR z*4FU@#=_Zb_L<^v$AFgkI|}gUeom$ln@$6<y@-OEinqW&j_JJb^z=+o zHa9C>9o#ryyFI(zbgCo*j%~R&=(RTwx&GaX%-79_iNZ~W?vX{mzkiQ5I1|i+YTmPX zs;a80x3#tP(d6W0c}-2t>hS9};q+<61R?>kxM?;U`FQ1u;)$PK4db_@a>G!(vG4A| zO&>0G77VN^J@DH+qs;Ve{IzBwMIYax7euupEA4GW>sO)o36N)(N3m)s+e*?01yF@( z6{@f9;i5the6ViUzt{4AK=#%3>OTmtvY~d66Jt9U>*nmCTK+`nLE*H@08Z8)>FUQS literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/stat_inner_focus.9.png b/core/res/res/drawable-mdpi/stat_inner_focus.9.png new file mode 100644 index 0000000000000000000000000000000000000000..ed79969280fd1d5bfb8a9e305a1618532b0512f3 GIT binary patch literal 1082 zcmbVLO=#0l9FHH2Ih}{0;5|hwCGc%;+=-NhKp*{T09C`GEF5P6XNb-1`)C?aniiJyv%{WFG<&a@D&c8!_470%LM2!#=tveoNGfZE9-80NdMA#B4+isfs{^~Wy+E$tyO=LmVQ&Ghpn)XqC zdbnUtPnwd&^`Bt->M|8@5HZ-gQ*{Hmp61qdWx5Zqd5&F&kjXT+;Z!j@!m8LuY$6IG zCP)G{38OF;Po+}FSOGx51A&J^1g7MeAOpZQAC6k{t#LW0=}lYol;$dgcrwq|YPD!B z7R7#3Yw@v_-XVK-%Y~OJghUAWS4cOcgXB zh!ASJ0u-nZKtYTrq?7=~7B}Mt#Bfd2vTIYjO)mT=S5|#w5bPH)uC_X0q=E?!D%fMy ze1aXdT?^NOus9pBYRI=QAWQeL!>(snwzsgJ6jL95g_BrI-yPfOm8d}KBT^|3sZ~Mz_w~q3{uR9fXb-6h8bm{)= z{Pp3t55LSD%A9-lqT~6M<@vqI&o{ciJ#O30kG-F0EcE_7oVTWr?>xY)J}6lq)~=Pq OY0eA|YfA%Tmwp4A1z4*9 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/stat_inner_press.9.png b/core/res/res/drawable-mdpi/stat_inner_press.9.png new file mode 100644 index 0000000000000000000000000000000000000000..b1b6cabe293f111d826a8299cf4147a699c1c1a1 GIT binary patch literal 1080 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 NU|2|`q(Zzr`yXq?{apY6 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/stat_ock_screen_on.png b/core/res/res/drawable-mdpi/stat_ock_screen_on.png new file mode 100644 index 0000000000000000000000000000000000000000..3ac64484c4f06f5eb2726293e15158744832c72b GIT binary patch literal 1591 zcmaJ>drT8|953(soVZ1(iXJ7R4%^<9N9{pH=(SQt5lROg(T&nOq{7{`y~CF3nikzM z5r<}GaTH;)1zAug;!x0uGD1P|l@X28fef5eqku4tZo;kzxIe}&x%)lx`Fy^wPi}Wg z@`ib{7tdy~So0JKh>BSO_sjNWzLeEE$}AjOrlHfw9NMfkVXQcm%*Fr(uHAyEFfCeW z?8IVNEH6N>*3cSd609R}zSfQ5TW|xzX0c*oEe5SF52Jx>Y>S?da0kz{Z~;9k;bufC zL8U>8ENn(OSTQ=Mxlck#Hw;VP@~X7I1+H2%RV4 zzD`P`OaY{%2?HYeAWsKIfj|_*hr%O7BGDQ^2tuF$6bc|A4-&!QLKp;r$%o5CGod-K z3XxC7VonlnE=?O?fxv7w^UdLW(zHbYiN#{KhET|35Im}optTkrL4`~yAQ+`H=?%1= zBmlRfHk&M6pRggt$W)V5tey(xgdElKE3zOvxo_lFB6wfHW-<$j}ogX{IL7N+qly zC|XPCFa;vvGJL*XkHVt0VtG_JB$dh{ufTNRdd4$fQ$Tgwz$_7(q{Q z(KlRVMy}fkxPgg`U?%-G43(Qm9GEB=*3XCmYTy*AK;%DRvm}CU*vHok!Q&)_4 z+}ml>GKXo~V+7-M6JzSw^(Sc-%k!85iBnsC>CQ+ceqO)ea`WehLU~H#?Ud_k_U`4$ z7gk<`te+*8vvx}jB{h{2pV%GteJNo@hpTIp<=sziKTTiU^sMe}&bxAJX5Np{BinMe znbYqT_E-~A$Cr5c9QCNMf0=aGx5F8lHP;XEW8b=2b)5tHsHzt2hrLhwSIR|pW!9cv z4_EHa7Kiugfm5Lk!2ZPHyrY{+KR9wdD615&e3e<}m~%IJXfNJ6*7f_WmiC9y5$jl= zww+Tw)Xd+tviGpqtC<@imK@it@GcI!<6FVHY7YSazR@1|vghj;>>a*W9F?QUcfnWd zU)rIY#Pa5n-ukidoDQ+GyS_1z9n)tE8hO>4xbfhN%=kbX&-SPu8rs=p#KN;j>^)mc z?FsEm+g&BkSN>M=ar+!=ep^%DiDfC=7blBcqxJ)wj41!k8-kKseVdN;2Y`a;C1;EA z0HMuaC$0f(Ar)VA4;f5|(?=ie_w&sOy{JzlCga;d^ous>f=e9zi{;%TdIT7LUQU4d4?SnUGgxE~c(2Vlv=46^Yh3jMR{wyibS|_d zpK?WveS&w5buTL7+$tORYAEpWHT&uY$`};pQ94jfZ*RQ~9wuu2lHwK)Wj-msxv!99xml@jUy%nc)i`xlVb`Wi`~@S$L;|lj{DJD`d$? IU3^y2KZPG?U;qFB literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/stat_orientation_off.png b/core/res/res/drawable-mdpi/stat_orientation_off.png new file mode 100644 index 0000000000000000000000000000000000000000..fd5c9d064cc37d6594a5e1dce8fce7a64e2773a8 GIT binary patch literal 2341 zcmaJ@dpuNmA3l@I5EG?{lrg!amcIKa>;$fR%FZ^%xW&3Im4J}r$xnE zxpW~C(Qc)pW=kSlFS@WarJKr*3B45WOq=%oMAF;T8T z_#hz-Oyc@UAuvK3%w$WG+3p;S=Nhz!grXMUfiMd#;celIC=x2>vo1wF*KFf3=+6*1 znTq+_RCG`%nkIliv?~_x#Kx2GXc7TSa3PY(WJk0!o`A>UopA(bCjyz`;!MHg(O)i% zIvT`DpoG(Xzr<3nsF)-e7E*Ay)YMdLstZ;CCE^I~?(P~5XJ;oh!bz0IhglLQzG(TZ z0v!~wA+8YS3ixP^A}d}XhN&2})4x;T3BStnMPJIKE*MV265)6bZx-TYYc|%Qc~d6dDAwU;)Gw2)4{tF*Hd43q(l*A(|H9 zijLy)If7KtXLL{y#h)*NS$sC=Pp4wkd@PsCp^)9^1a~sYjmB{GB@pPoJ|wz3&D+(D zOmwHa`MUbda_IuLm2{+uv{`)x0zZ|Z&F za=z__{7o)SZ3d?~*8e)@*)4VNXr^DAR=xPz_8?!~>yWys>yO6N0Dw-3Ki!)td2}Oc zW1vlxap{#i8NV3BmOT`AC#8pK`=j;r5#H&SK|6|KRW7 zA2Ny1T6}N6+hMqIY7KfyM}A^=jYEAS!7wLj1UA0?Xjz38*ZXjOQ~Hak{7-wJN}IBZ z?(Z3>>$~aYVGZ|R(I3A}seib|F6jQA!REI{I+usNF6KQYvd=xp^kc}vET_ze&SU51 z&=!nIscGA{PxpWL@N3CBJ5;Zjed*FA&w>8_j_4v#OJ-h|w=1ogf8lXwLc>uKi8QS( ztBtmLiMTq-safCN`smKk&``<5$iUf_*L|a-qc`Pp`7Y?UkL=S-Y4xg!ET$y!RH8&? zt=E$2Zus7dmVMjEOTN+JZvUTuUZHw;e0()IDJ{LdtvUA1;9#6((UHeZM`UBLXWN@m zi@GJp7V5=55xV96wpIV6qTLu^P&Qbd915j0H#De_3J;2_tJuI`T^5E&rN+pRquD;J z!vR3Wg~rA)v;9ovgN5x+g`aMXkB^UBlXFdN&det*)V{W0*aV(ZDwQh_;GCR})YjHc zXC^xr__?W6szt^)Mm59IxM6?rNmX5ar+jdnSs8AvACu!}mE{@3J32L`w12|q^X;q+ zOiWBBm}^L+^_EMQHfJ}MN^XH$tXFmf0Fi*K>R$)vIfneT`dy7Io}}%ys080By~%=UBfmi@ZDDV6~n;Utp#T z%oG}C7X(yN>eBN!1l(x$jua)8#!6|3Gi2iUuH^-Oi;H$ftzVB_JW^a-d?`Cyr*PGd z5eM5tW;!dD$eea}Bqq$`(4XJFxEr7C56QHb12E>W~!0p_v^oC$l$DEJ6^W@Ah5mZ!0e^mp3#t48(0Z?7m$r z9@BbytMGOh@IE3pzzxcPb^wSo27>b>GI>T<=2rcTo%W$nMgcB5%t=<9+7hwi>_{AA zPi>@YjMu3HhC|Z4!dRNBuE(}_QC)59{?a*Kffz5#1B^%qadunYv&;4ay0!D%EGP-kR`x=jqb+q2RE= zfCawYCi4*J_H7DMY>)Z{D~UgMtMJa=%H_pg2|vHpZaH&YQ4!riZ7I;LsB3CUF>G(o zUy#y{sc_6-^%}{FTv9Tk{QDg7tF`pRvzHD0bZ8nlouer2 zDKeU8mx@v(?#RP6UVSZ`w8%b-P<4dd9QZgHB0~V3XI`C>)eClLeq8(+!Sq_6xF7!m D9RJK! literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/stat_orientation_on.png b/core/res/res/drawable-mdpi/stat_orientation_on.png new file mode 100644 index 0000000000000000000000000000000000000000..b98fc38f5341c6a2517d07caf9f695adff20b7c1 GIT binary patch literal 2393 zcmaJ@XH-*p9t~BBf^-$cM=bOdS|AVuDF`Eh3<(4@E`;O-BBYQ+5)cU@NO9JqqRTk4 z3JNNS2^b&w5?IP+oMcg}nNa_+sqc0asaa`28ddK>g0 z5XhRq079s01(shOZPizlk}|7W){BV|VhW!vmN0}M#E->~0f9g+BNhw=8LZ^Q+n^5w zq5*KI5#k6^5Sq#7!WhdKn3O9}u^|v2tW>~Y#)D!Y28`wKFwpmnH=zKBg@MxCNeGev z55{oV)n^TZ6PGf%X6MS%c{ zm_m*~%;EEZWkp5|f1elwRb~1|30%Q9S)S-?n^X;hOBn(<5{6hVX$43k{eLKz`wcA; zhk}3R`#*(6)MNn&4+Ta1eL|*caO};?p#*5W5M+q?LMor1u+l|x9AC^A#qk9Ip5hMB zI6M|#BKm?RkPqnUbj9Ob zQT{}P#|oFgXYS*IJn;&b^(PngUGB0GxB^vV0x0Apfh>O^p9_2`7|r>9E^gn|`^sf~ zKNt7!a^b3E;LBtE%a~WLRNh(MelxA=@XhuhPvv!?%G6O+fC&Vm)f-6gqe=&E(7c1r z&`jr-ZXmTSSJ8E@K}*X2?ob+}Lq30FwNpS9D~GCUAGtoDBcnqdU+Zuu^XD4YUDK_2 zDM7s>ee!|7-RQ=E+xpBHW9;;lvtlJTT#5PTao61>P?o zZ=T2}CMHUHUs4{tx*-t?YxXl3Hss9oT3bX#ZEbCHad9!W2okwzOpto9+Ce}2m}2da z`p(^Fv9h$pn3(5v&CSgghS8v~(HJIY`_5~0p z^|9s;kBsnS)6e{R`}(Mh_wF4{lS(IBhs25r63U5kukd;vuJgka&+Et3+vlv4lJCBL zy|@4B?z*(DgxT5I4x?LdK7Rby$l#!*e6dk3C&CwVj(M`#>~Mr_o1u5J%juss7-aYC zEPyShrluxL6_u9*6|m6oUM8lx@q{T*hfP&h?dNiP)>&Ek)F-_i7#JF&Yh;$7y}fTG zgu${G(`4ssYv&<)nvn+~Bj@glG6SN1+__zmp8q&FbMW!wdW5(4ZrO*KaZO!*LPDxL z0#TJmbl%hNXlP*2(lsZ;#_w9azDBocn_7-U)0}qFZf`@ojj(04p0ag5>fK25;2~vv zV`F3IZj56T!bIlIezd!$cLaOTB)f3RhAwMG9XAHOEcA_JsER9bTrNrb zkYB8wX(%05u!};;2PF7hy8YIW!hlU-VI_NCd5*Olb3BL6zojwd;ODV0H`V`?&*OQ_ z&dm|gX!OydpFKAio;L1D!B zs{j0AjZJ$aP8~#ac6F^;OYz#NL%m0`sF9*PdtnKD;x%PC6xGw69G=IXn%~oU zpa!M+XJo-MM<*s;CT(+q!wdYPP0ZlcA?ba2tY&$bOM5(vp!1>=*|TXtgHsmsDXW;R zk?E=CP{(mVR1NHqANKTpR9R7R*|$MyVST4aH}|>aK<(A}`S}9reBSOFX^Xlzzau-* ziG9=e_siN;M$|N5dMT;WG>Zn|1to-#U@ z5`{Z`z}(vVZ8S9R*l-RmcY}}jDrv57a&uZW#l-B2rkT_47KfiL0C4wn=N`|TBq&XG zxDwIn^`6Z`56X5p7W;m-w`=1aMH)LbMF$b9$)#fjlY?#z67R99EvQTKQG8|UC42Ja tC`t>t{z7YUU*a#%;Fyg|{IMuCZHP5&*4K+&61n`d6G#juRN|sD{tGcX;-3Hj literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/stat_power_background.9.png b/core/res/res/drawable-mdpi/stat_power_background.9.png new file mode 100644 index 0000000000000000000000000000000000000000..3204d1d1605a9c5b152ca09b348066bc7b39fdca GIT binary patch literal 932 zcmaJ=zl+mQ91k2Ea&RDScOX1+i-=9~(reR%#!{2kE0|K+;&n7lUaz5-yyttbChelQ zh_io%i<^_ffrH@c=;Y+6tAlX9^qQW7HSqF&@cDeczhC#d5BK*D_asT$@0_@OvG3&T z#;*83zVrSOWJ%Fr*&PPUSzv~8<36ZomJo;$ z_dyn)C(O!hd8KQKbN;N#ULqAcW!=&=u>NFWjfNAe@3z;r#LbqcoD)k`(==7mvV!TE3Qg0@HFUis5GA%qxSy30 zc2p?1hy^qvJi-ac75y=ub6XakUWE{ojcmf!X%Y!jGoPqX(ejWApy&M`8pj(n<9&4P z?>~jva6ypTM-0ztAPP4*%1sf=p~&Z$4lzD2ve=tqj@c9w;0!9@G)h98vK89%tWLtX zp9HAm+Ops)Q50Hk#dKJmAQBly^|j|O)D;&wnvHR zbt;G^JW@Is6p{dnug+X1_s&rPS*b>BUB G^70Sf7$C*~ literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/stat_power_bg.9.png b/core/res/res/drawable-mdpi/stat_power_bg.9.png new file mode 100644 index 0000000000000000000000000000000000000000..b54a91c1e3abf2026a1c8e7f7c526d523acf3686 GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Q+p0V3 z1$&oI28wVNctjR6FmMZlFeAgPITAoY_7YEDSN2<+vO*@jT-ptNK%r7k7sn8b(|4yF z5hIfKI-FE&35yO)tEmF6%hMf!l&C$>H>t}o&fULX3_8+JgW zQ^Yo}(UPf_Wg16|@h%P@--OxicUU*6EWLF3xNTYE>YV4w9~s-Wf7jT#t1N2%-8;Gm i*zFr)o^SnhTDvVpFYfreXg{C>7(8A5T-G@yGywoQkX57r literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/stat_ring_off.png b/core/res/res/drawable-mdpi/stat_ring_off.png new file mode 100644 index 0000000000000000000000000000000000000000..090b132da7bd6b776d870b19403bc67c84ae2a7b GIT binary patch literal 2630 zcmaJ@c{o)2A3nx%yJWj5gqlW0HOvelBm0a&O~asEYh&hMGMiZ#%dOEum=LK{*S_3} zD=FY@e$CM=rEo7N&k+`Fq?(dIZzw%k1>Mv~YdU{7HNflwDZDFh^fBuZ5HLvSYm$U>=} z-du0|ZZw%mHzqA%jQMnylnnqoZTTz`ISk}NgTN3f!x}brrv?V4QmkS7%pZi02!6${H5R<+9KSL}X;7aipm+lO2LUSz1~yX_%N8NfAbzCt3xKt(sx}-=7V)D4wFlna$lt5>Fmt}CiwMp7A1fRr0pp21AB`pK-`2P>3)4!uR zTq5{yzW-C0;~B*Q5k!!~gZtx z-A83mn30^XXgnV6!r*X83^M3~v4%WDRSLZL8DmOGp*usck! z7^IWA6V?H{%*8OtJUYnWE^{gWa<~7GyJQ49OBxvivZ)au#fi(`M`~FK zlv9)|MAO~n))`~WOJyB$aw@L7aAqE7I13ZviykGVdrDSyJ_wQb**0GDY*S7-OBJ9z za;hty!YXzi*9pBNlK`Gu8rnrfXD? zgR)cgSK-&Q>j>I2)|q|$>pu7!K4p}90fhDg*N@Y?c%twmLwMn{_pbXda&fLj#8W68 zYvX=p*{fUL$k)vt726D&WY>lgDqrZyi8M6Sewj1*7N~4E*HgPwl|E4LB7%LDzg9ce8VaJnq(dIm4vUbRq9l1+BFmkDwH)#tOavf3j6yRNqM3N6oK_suT$psu{)1w*@xNw9hFqhYpRUBMB<6OJ{c?|>N(so0 z)W_Qu$sZ3NOAM;m!CGASQi*(`+JjozxO*WK^)e{?`A0#%{``j*mFk_Jq^_vK;cz-3 zt=YdxUfn-p3Td8i%P=539_hNlT-{M6_U5c z`-YCl=$M#fBoR6B;7aaDM^yth4_A@rpS)Vo*Ln}iEyO?sR+vvp9lpW7bpy%nx}LdJ z@$vBy^JYm_DG?9=)%BrZ)$>+XXzKbfzXq)t``=isEBnu<0v#8Bi5a1p`>F_3G!>5t zX)p2+^XNC|h5+9>7wYWI6%3J(cf6#y20WlW0hvpdk+Y3by1wuwpB|2{!Pesr3ldGo zUb3qH^M|Fpxw>BCO$dBMCvH03`^m{oh8g#b$fdbD#Hd?kg+V_1f=qg{0X4TZF2O6+ zP6wV63Wc;wApCA+WyX|vW5&Z@e7!tetME=?hUL%9sXYAcm_(Vlgx75oZ(Bu$xVj4X zNw(N5!803rVkT>Lq`JCVw{e@Z*L|OY%9Y2IAqB3!MeU182bH>U01qO%a`74(g_3CW zKXtbae_g**;XqPy2_Yxt@>E)SwM-Qz_Eg$Awjf=!COt#bFf{AJt0JEwf-UZBp@s@D z-n4D<($-GPLksh05sL(ZgX5BZ(PE+PiMK}z-}TK@bukD80z+!VZI2MZZHM7giGQ8Y zv0%(ojP?D?ngpmKB9XRUJY;dpkC8L_GsmOTDX+wHwF-2it=i1e@>aYA>;2AaptYq1 z|FP@x>4EMFvS^_VTki)po+}WfS;dc*)$-s>vhXRZe%2yu~bUA_HSvL=EtJu|aj=CAGX6O)N^>EU%8 zxz1!-U_x#w(QL7_^pA}E{*WYbaU}LoK73{u$G}bRa%T&xphztNO84k1CBt)Ei<%T_ zNACb_s8!eW8iyC|)Seor51R&JBXZqNkiFxEfJVvFEmJn0`%Z)}f*Refy(wK&=%Lur zuC}3Q9kk5gLJZQdXV}3%^?45__)CJgLUrS0oH+dRVyxbw4;R;UUVidwCKZqcye9T) UTjks>Ui!0h!S2EQ>9GIs-!0jOvH$=8 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/stat_ring_on.png b/core/res/res/drawable-mdpi/stat_ring_on.png new file mode 100644 index 0000000000000000000000000000000000000000..5bd3ffaa3d0e3ac2556070ea94eded3603e3fece GIT binary patch literal 2681 zcmaJ@cUV(-7JY;=p$RAoqArgF1{6tyP(o3Y5Sn1pbMWB26;g&PTan3$PNJH zL7qT zXHfy}OpqoNLm(MPFk=%e37{nrM>Myvva;F?k_bcsoi7=DI31C*NnLvX5%0P!C zY%xy+^MnF$nUNJLjDqbkNTq+az!!a^6-d6wgb0R@Wr^@a9AUYouYvCF|38$^{}wHQ zy`aD9{h!1VpEwbO_ktwCC@~uu92dKsN<^WFAr>qY`v`@5zpBU#7s5hGxKISryvd+H zPrwnzNIplqyHi{Q5||}mLoRfC41&k;cpQqAjiZ$#-HJwYBr}LaI)h3j5a?t&kwm9i z)2Jk?uUNW}9mR(P@K-G7FD(7L*kvQ|MM!2kB<4j!9EMoP2R}DV;eEfBZQtelg5`X_ z7V3Agc%&Ho@>u_C%wMk%?<{Y>nHD*Gvppn0ye>veeF>^n1^}fQ7y34z*pV84w{Y*B zx_#2dIAiybj=NnW<-8g{UZz(f409MxCRDBZS|!Cd7d5pHVM<|`T$=in8iW@3G>LwF z7ZA{2b>N(L`M`^wp^*xg!RW%6!b$1dj|I6RwbIjf<+m6&P8NOov@|I@Qf!hHafTLR zm^$>UP;X~W&(ZeN8~>({)}Bz_8bUqz^ZJ9^L-dY^9%oV0F<#ap#hms@L;2!XWy|EA zDxYe@qs}Mm9@M1I*MMj(X|TS9u9{YjaRH!Q#tMroUTZmMvvVTz{az;3;P*RsawdnWyhjUqC+42tI$?V`(5$mF;Z=Sz*bfh!={VP(8 zBHF_A5}qe*P%dsp;meTbXpv^@eNJM16{ZeS20ql{G4- zPH8f)rCU8}jyW%T)}8zOPOWCKZeGY0g{vPscH~3mTZaxGKKu(+WGknxl(wbFHfA~u zeK$m?Vor2+>#1jOx$=XBHVI4>Qvg7`fysEPBaVITWeQ`D<+ zt?c~(+SzdZ#Ll(uVkU1J#_EAsc41+2u$pBPl6zZ@jBi96SJm{r(Rpe}%#$ zBUNhxFK<#9Te_C1;eX*iGw4cezhr8JYz1VeT;a$WD~~osMP7gQtgJY&HMt8loS}mc zZdjNZox$k%`uVj)?%i9Ys5v@Vv4fAMXKnP|vEzt^wRJ;jW1~z6Y+BX*x=cpR7);*E z;&K^I?Iqb+sGsZV>XZ_PO_&At2@BcRN@db&MA#vK0Qs%`yHQeJ^%~+>QfKJJvR%7& zdCP>(TgaQAf^E*jCU;4)%l_wsU&z&Jb2^*Cng1H@>I6W8*^2CdxXi}ckNxMIR){s8 z+o8_q)C)&jR8GS~{){v%rMB zDb{*pFy~^!wt$?)Ps4KL>Ysk8udfFyTUs0(rwv3{EH=ZMCRb{q9%`1?T+s$fbpiB` zDDW{Nr_EOFmh*eAI?$J{H@%zaT}NALzCM1Gm11%?6mzGy4Sv%Z2*~hH&Rm$d+W1HS zJ^Y2AJNNL_yxv*+1iuSvS9Y(N3}4vvN|xf_k$TwPH$#Qx`}kU679eM6*cbh7lH!}Ax}*LQdNn=AC8 z($DTzRvE8XRtYzFZ3Qz&H8eC14G$0Bd^3K%*>l~Z9E={>G5K_6?!}PGj>=9}&M zFg`wRx?%%mF0r?eY!46soopa{MRIGQ*HRuXvB@)Gg4$zo)<)7b z4pYn#pDt;Q?T@iuKP2)p&;$my1rc2ZiljDliVIMr#KebZX_w&w-_dvBNCOvw`&Af2 zwoG~2v#oJtR{p;JIqE}}ri|QGZ7Nm$t?OLK-L@>B)h~iHxihGUCxh*F!H$@FrKc*x z(v2#Ql<6E(%J)clvH7VXpmOnqXa1{8# QF8>U=IC{`)sUfL<0DlB-KL7v# literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/stat_screen_timeout_off.png b/core/res/res/drawable-mdpi/stat_screen_timeout_off.png new file mode 100644 index 0000000000000000000000000000000000000000..d3f8fb2c88162dc2c96aa8851e779738d7e530bd GIT binary patch literal 2504 zcmaJ@dpwi-AAe}cB_in;iN~m%!e$z6nd|0KTW%}s=9ullVtdy1U~|f)T%%H0?()s=I>-W4~&-1;!-tYJ4_Wt8Z_ucHNt!bnQ z0D!i)7ujFAg0ru>n(`}*js2)x3=s+g34lY97^VOMT-k641bTCsVURz>WQ+GafE)o} z9>}3H5C)A(WWih;<}AiW#N{j50O05>;xkzh5CVokVH_R_Jz80f203gJIuK98()jLB zIL9ki00qQurn6!rSOhlO*$H$M5tRa52w{REZX{1g6p_$hb&1OT>@@}reuW?rB=p}& zF=)P^J1l@eybacxg|)|m_O>>*cIzA*9IQYb))tGw;xM*2Yg-4R9gc{_g5MsrGMa!L zO7tgte2b+#k-QD$P9s_5E5FM>E9)A`QK%E!f$O-HVh+T@-enH*x8cifHd0whjO{!(L%%@ z`X}H2DJ-Om`4Gk*62egemU3{R=Ch&rM0WwiL|_3Oh9l>?=o=0rurM6vgYE%%Fp$Gz z!!g3IXc~>^%@ZO_9t-j&lh8`O4Tr-fIuMjCCg9!NDR>WCTe1gXojZj5^>fgRL5lh*|u+U6z5caJFE;J=~>TYUp+2VQv{lw$UQNgbA$Jk7Eaoa&o z-cmjO@W5Tx^*3Tk=}2x>Rn@VCj|Tki!VlF8z@5^LYzd?t85ud9d7w25RfkH$04@aN z7o7xq@LuX7(=W?`fF&a&K&0t~kLd!?SB=1wz`(%x`hAV-n$s*hZYsO6{sKi84>WkM z-~M~&h@O*=#;?WwwB_^-sP$HABaQj+N!Ll1i>rdik_F&YQq^(HRn0N49`OMk&ehakvM}SpVK@7|R43%7#>Ue*4+mEDR>xN-1itDVseQGy zcfpCKiHV82o}Qi>g+gJ(o|n>guK$IZufdf6Zdv5*y%U0TjrtkR*cs0wL7Ti(fw7Rw zC)_?!Rqw3pd2;2sg0d#JEU!6~&F5cIhdHUKsfH<`5fLK}NnN+&XW|ThFiPNfJO0B2U-oLP$Fg7+eyvJ@fzDuywgd!e#Uu~`=-V{MR#4M zwds<>`B=Tf?VX*Bc}Ik8yYcUbTF*CC#*8inhSMrq^%IOsF&NB@UQ$Bc$NmS|29h&1 zdZA9IO%om#_x1I8Hk{PV@w{9gG9KV%)cG_-rgti!-~F{hVYT+$?s1fEf6a$Ck7qp8 zy~>>)dE-#sU?FxPK)X??NuiA%D~eRlm&ab)ekhpsTF2#?TqES*{6nKV%zSs0Nm~>% zUHD5P-Lic5s$+3_UESR)Jd#rfE4*y zU%fOri`cXibL|U)?}^Z8i2P0%rwf& z*cTg{w@PRKOJRCpa#QL4ga(m;MYq-Ny(S|x#_&5w;INtVu}BZ#x}CFgwHjtcyh?)1 zCrFZ5oBilv(tD<#%AQj5#7XeCKa=%F!tLkZsM3ffQ5KMZwT~_v-gWmQ)S8%>^q~AM z`uO;a)=moTR~oorL$7ty%0r+G`-VRL&qj4e$xegx#@J9Ot6=Nat*aywiNI2dt2>pS zFT3|;%TU>{%d3r3T+5L8&1tsR%?vF2OFGV`Q^}T3}D+#{8 zr6I{RyErelN)zi`Z|%-<+*y%0wNQ5dL7D=xG(WlO?Rmj+lgUik`XvLochF*=`30Mw z-t97cz<8`N9#v-Ubc4xI<65AB@kHo|Rr3ik|jWIaStC z*_f)~UQk5sY(uIX*8X){7Mpvd)$~i$bZzMjY8mi0V1;R&&KJt;zm+#-Gr80)c>jL@ D>liIh literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/stat_screen_timeout_on.png b/core/res/res/drawable-mdpi/stat_screen_timeout_on.png new file mode 100644 index 0000000000000000000000000000000000000000..fe18abe2b229c57f72e47ac1f67752e60f435531 GIT binary patch literal 2592 zcmaJ@XH-+!8Vync66(aE3Ly$2LK+ZEBvKNZCZULe2tr6MAwrT%5(tD65s)HEQ8S`| zZAPUCii#p&p{P_*7z6|XMT*Y>nWthI@dZbn_v87_TKAr^_TFDP`^U-lp?hd7H(U;Z zKs3BODSq-9vGl2`$p1o#KxUl%)0K$vQU;};tgOw1|1~@_> ziU^K>peT?=B{KP36k`d4isyoIHU#466b~|(QGf^$4zM{q5^}EoCKAD6k&prQGz<+S z1Cbn0i2&Flq5Cr>QA`30>9i5y7*CW7Z~+km5zme035oF}1C@*N2oDH4H1G+Hbcqr|o-zJQI!5(tDP4IIu!j<69X@I;Jw8=i30Hw6kH zWC}Q-h{NY0mJ}J`{8$kQDbMup61d=ZS)TA~o8%2c$1^}Q7KK?V=^Kzn`~Ofb_d8lB z@&o?K_kRit{S!a{?FR_?u>z+2;v!Zpg#w9W0l*OP1^#?~^tUehMDj&^VI&_!khj<) z0ysPtUo8BBrqPIAJfVoeV**|j5>n1baX2iZ0|8GU*t+4!Zuah2EXCc`1y7(jkZs+` zWOuwh-t`-o!e_>E0iNg^m-P?V_J`ahBXB`^WC|eQ!~raK0iTQbQZSM8<6JO5)ceY1 z{Wurw54mW0GU%mi{jY2Ob|m-C((=1$<(u!e2Y7O?3*@FAbN_P~0#T89QC$4vhZ+Jx zsPF)I>0rqxKs;!3p)xDIJ@j(UsUwjU=JpmXD%A3e57P7XkHfU?IOv+b?t+HqZj5|5 zou=zbrRHkwD#z#i{?^6U)KbY(Sy?Y5WFSQLsc5h$g)ONzIJ3@@Lu_k%**#2{8lFp< zn#wtPMlAv58~EX2`sZog@!j`eK~ym|Z`Dy3|K5-tWs179c#F8Wv+QjLe;U@$Ue;!~ z`tHP~lKdmSdM%3cuFD6c^$HrZ&Ib&r``~7@m99#^Ow3rU1{qUPGNmBqgvZZzO}YeQ{y{!2RlN$qYVG zk#Fz@tGT_1d>K^GWz+8%@I`Eq?lQVV&s)LsxcZQDRaM(!9#PG-Gcz-7#?+9nk z^v;Gr<9)4^o1@j^i67kcjf{j(ZX|!~pdG_+H6{pHkOPjY8Lo5lf9SzY+VaE8eQjZ! z-G3TAyEH#P&yGOda`y7}_I`7CT|ky%)9p0qmVwv^iDYP7XsA;jxIHm3F`P-^@mQaFr+=l9mU-%ggw=}{>AK4K1a$vfYl!zP4d((e@$7oG-3_2TfY8eio?4{PgVuqQif)v7oV%Fq=s)X)P73x ztg*ILd{twGZA)~iqX#wCcon+47GIORDTm(cn;WjXG(XvOEXp!%J+Yy8Q%CvVHhpxhk54Uc#L!4zA3Wv1uQEEyGTe2&aaS+~KyXY=E{~UZ5;Tz* z_PCbo%c97Nm19CM!4F49{xH`(k&(I1%1ULPbI7phwa(iuskbN16$n(=eP8p_nvo{q zYa4wOKQJn1hpt2|USi+>+05qCxl>jd1@BxmV8qM){ryEUnG9-gZ=YOgHZ$Ygy4Pam zpxr0cjEoG!qu#8M>#_3%1qD`FM>5a-QSmr_VRpn2Y-;P($*-`yFT^~# zn*8zYXh(bd;;m;6ovEueR%>L5n_F5awkJO7tcZTllge%{-&z3|5!QIt-FsJL%YG6k z9~V+v6OkvWmcyHJ_$c8J&;A$_)MR(yaJ=h&RSo0*i zM7_ouzdWvWY6EY$kbPr{&MKp0rfrQM9yX@3nzPq%BAuIbGhrh-FQWI({eIZEi$czA sHK*Sj!fBp=*J7PA5x;mdM5>N~1S?CgF`>IoF1^{j+~|}l*RVbR0ZL;-JOBUy literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/stat_silent.png b/core/res/res/drawable-mdpi/stat_silent.png new file mode 100644 index 0000000000000000000000000000000000000000..ce206e86a2b40ef9879f53b53899191542a2df4d GIT binary patch literal 2398 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 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/stat_sync_off.png b/core/res/res/drawable-mdpi/stat_sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..2f7ffbd17651e1e104c7fb7c6e01eff2824849f6 GIT binary patch literal 2417 zcmaJ@dpy&7AD?UTLJ~V}N3#(Xb}^SNn{CDkXDoJ*6vJ<`W|y{QhI4GuamqO^U4#;H zS!XLfPZW_8IY`pQrG!RTbaQl+Tymc2r1Sjo^!#40-|u^Szu%wF=lgm8@jE~b`o>V- zQXd2Y8TxM}hp0!$@~fw-{t8o4X4Hd)$Tvb1%43McbO8V&#`9tUh(CwU1VR9Mykt)o z-~|F{L0Gg1Q3T~%Y#fi{LSM$XBy;#`HVEY9oy@1lu>lbz7GSctIOtT<6)1!ikAsH0 zQ4kcq50Jpxnj!!~Q-Wx5DeO2*Jk%Qx@k++31vr3+4oT)Da)sDr9Q30uRy|+dhC?AA zAtE*o`gc+h6e`4rCjcOBE(qs1ggXM_j&wn~qCGr3oFFI!5&=h`;7F7+(gW*?!Xglm zPY+ZbO%Tt(hLHU}#Zs?u&;*f)kA=gfG|$L;)_^3E@WAe9?RP+!a>!U{#^ox|5=tR{B%v~3xg-q`EaBQV!5OhAcgY( zp&ZUM@3h|Y}z{K+_|n(xA5#bZ5)B%+@u!qvyu%@2tr`w`tq z?tZQ$S2vQU2Zlt%tZ>P^xV;>JD_Y^k|HDOpk-KaJ4qqLa3Vj44=UmS0HsC&G^`Jto!?p~TH5pP%CB3H~+5TAQEYMSJm*t1v!XAS*F z=s{}dD*U~sVdjm?ue%HQGgLOKE=xRKG+V@cR`Q)wx8glK{kowh_5DQN&GtKoa;jgc zMvVw`D(WcZM7M^y0e9>8v+rb4V5z~&%Pmhp+WfU)(#f=%XtQfsn$*gH#u%HzV?8~y z+Uqn4(!&5<5|MLGXLGt{pNobVRk$W>wKBlYbsZS5l&#V0Zf_}4$ae*u3@5z z0v69lyxM_~A3Lp+`XoC|0AQ+YLW~IDvMnYDGADc^{GCclO6XTcOLs;`^T;Q?pB>G2 zYzA?POH0>xT<7Hz78VxjTf@$rJ^PD*yOHUAG%bK~#)+KetW$;3-ud>7DCHWd$akXQ z;>CAsU$c)`t_2lu!^yJs?~jZm+RMtlU^K;zeHm%zJG6uL@66n%V+K9tRRHs0!loU| z8V~l82qWvzH4D)2s?`t$RBNh|T-EFPB=pp-OFzlpfDf7#UtFR-&(jN_Dh3zo?Ta<% z*Xc;d3>uyK7P4*$OK#adFl7)3lIj|5qt>d~d9@*DDdb&w&u?nEEd=})zeaqzr#RbZ-j;h9RM;^?RF zc<1u>(qeT7rjOTAtiD3VywRGguCD%G&@mTEojvQ|;GjVx{`9(HZTp=(@a-vBV-3?$ zPrpp5WFH3(d%Av?6D; zJmY&8)8Jv}c}Y@i>?6YoyD~5A7+aD=7(Sb}v^du?J-r8aPG!d!8XgYsl5+@{@E;4% z1Gfu`NaLwE494P7&*@746UwZttbuyo=nwEsnUV0~Zy&U_5{)&)x361_K==r-Rv za&vRjvlpixHJh)>e+)UpUSn5VTU(KE$uKsK6!c4ZdAYq~^M1{;u)u+~5g`xXEI literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/stat_sync_on.png b/core/res/res/drawable-mdpi/stat_sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..aa56b82470dc2bbc85376f2c1cd986b1026e6399 GIT binary patch literal 2099 zcmaJ?c~nzp9*x2PGB9jn6>$gwMJXhC!2}XnLkMdK1zJ-mN|pzNki3vQA%KJI1{A2W z2~sLW5QU>`7E!iQOQ{h73KtS$*-8vnCKMxV6w2O7CT4R5AdKdK;e3$;X6{Z02F>R=V2%fJ^3KoE*{iG72If1YtH>CX5nEDKZDlJ6#GgS8n4l=ywoU z;DGr(DHg*I?FvaiG!cup=Hf|sGzq{0HivC(ZLQD*Jb=gH2{?dY4cJm_2oyXX{rQe}ZLp9e90!oeWTggyV2vQGrEwydEwdI$%{CQi zpp+}&i(x(_LMs*79Owk>fI%|-y#%57gRDsUzD-EOa5AZT=km79 z#f82l7l$N+Qy%M|j(Kwn@s4u(!L-QYgY7{P;&lmPYIU2N8YqhQwc*s`q~i42wCscIDEpY?x#ViE%kpNQEJYKQzOYA^ zS*u%_mb&ugL5l}+ogq0Z{qTH-jM18JH$4xx8v+D$nGut3QJQw9nqxWab7*hxuY;QN zAKf?6KOJQbHW|gMG|2XxiIY>tC4}Or3ne9Myy)oq$b^L8;h~|rh?20#$jE_6f#A`b zH*a|6`m0^DF-}$M&6(EYv7~c`LK<~rS|uI^r#48Vsq zKapP6_WCpU+lh=&_N_5x9ptw_*mxOazgro$Z9`T z=l`l}VsNgaq9TFL%-R2XZqBK+wA3d`B-&7o{%3D*Z$L%CC6;WTUd}Arx-qKrZeJ_y z!tRRYl`n9k!^6cRPoAv%?kX4_8CffDZ{O(6%FfQ7#T-z)X()6fh3>y57l>~+HZE2s z-b=sty!qO-E>qfLTu4X=G&3_p7&mk_zOrq3Bt6cFc{!K$H=k|v@HR?e=p-np}W(>_it z7MqL@4i0wA6xr_9s!F%(9PMm-7_sEst^?>@BwlZrzM4$9>;4q|dS+~5U|`?}jgcRJ ztlCA<<9scDY@Ta&fYX?fOJpvzIW7kunkb%H8tU&)f+K^1g9EZYZ7wJ<+<7Q(Y|bfP zL9Qww()5lHzmz^aK+y7auZ?&{kL;>E=rwH*q$gW_WLTPT^Y(2@_`=%Sn%i$`+mm5H z1!;}NvR{t)!Gv+ZqoZ`T^KTY2E74M^)T_+i$!V?&VltWjXXDyNwf65}K%t?bsK0b0 z*ZR-r6y#|@P+c3>&V3&o-cc8>Xj`aJLH6IjLZS3UJn)DHC} zF}eMRsTGPM#;AbXVj3O2nDoGq80nFgNmaX?F-cM^NPlV7&U||Qk$A7+bfHxSsplm; zeE}aNd78S=)023Ht7zI#(%n}LDBzIoYG#@o+cM3gm6SzB9| zC?+0K%lkzT1hrOGP3vh}$iweL=_LakVN2?h1uwPPRX0-j&ydPIJ7wc7bC;`4hXS)ETlwKVw4sm18E8^=%Wz@yeH3l;6Uj78;d N+|$jMcAXlU@?TKzYUls} literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/stat_vibrate_off.png b/core/res/res/drawable-mdpi/stat_vibrate_off.png new file mode 100644 index 0000000000000000000000000000000000000000..17773de79c0377f18f8b1b43041f852803854bd8 GIT binary patch literal 2700 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 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/stat_wifi_ap_off.png b/core/res/res/drawable-mdpi/stat_wifi_ap_off.png new file mode 100644 index 0000000000000000000000000000000000000000..cc1ff465702b8dfea26756cfbe21403b533e305d GIT binary patch literal 2620 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 E1FH~f9smFU literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/stat_wifi_on.png b/core/res/res/drawable-mdpi/stat_wifi_on.png new file mode 100644 index 0000000000000000000000000000000000000000..5b11ae8fb654a0f2ec4e5ac983ee9b78f88b2051 GIT binary patch literal 2265 zcmaJ@X;>3?9u9_ZaL-uL}o?}ynR%G+pZ zW^0B*p)7*}*LV=nAi`xbY!o;CSZXN5IC8M z{XMB@ZYbanDL}vjPjnL!sYHNE!jmZOo}Qkr0GUW45{P61iR?!5q*KUrA`$rbV3BAF zQ35@T9q=(0a$;hWU|3Ek5Yp1p@M#o0q(~%?Xf&E$gG_cq5N^tJ87xq_$&~9B71*Fs zs1VCxF(d=@ih_731!iKAOn)yyD*q%aQ+{j{(lCNbASaOUM14t%KrZ+HL#5JBXeAs5 z{*mwh6jny0%RxdIsDx4!LS%3W>-3@IbbkdXfFVT$1npexVrUWsL&_vb4)}+A08wI@ z2uf3aKy$hDAej;t$b?`Jn~6pEc(GVS_w-}?dy?2he~w20iNp@@A`@8w6t+Lbo$Bt# zqL3E3Y)F_Q1!eFeSM&#$^jWUn2vRu`nGGt$sh}u80ZD-m1=Gc!&BdSdS-p>3(Pwk< z5BMyXfFwiEkM+OCym*CpN5B1KTIBG__Mi;$x&krvjbkDw6biFBh|P*njrJTJ+q5oi zI9~1YfiOp3(dcStGoN{uLGxm-cjTK>?0w-3l8g)k8m$(~G>nsVU$kKy5;@wn)p(&GjxSE;h&5o*k*Z zH$L7*1YBL`820u(Hda-zkGja!}(w=e-b%{Zx>Vjeb9c zze>R2$Ok%|-Q0ez)o6B)Nm{%wFHDXPPEJBs`}*isx4`D2kmde#FII!Q(amr2ZeF`~ zj2{=*&kG7_@}N>}Zx0QPWc0P3JJ&KjJ$7p zHgeXc`;sMr30|}34;nNXn4K_U0ZaE-*hWQ0u8r@Xk23WQfMItZDplulgw_14aHq%Y z#etfF^OG#jbl%H1Cu(Y31OmZNideC@%Cf2PY+D<{*kGMS#WcKq`{YnxUvN$EYv@LO zLxaoIe(PY4L$9%eY$M#Vb>Wh^SX~YiJ}B!VBcllhTFUQeR?ln z&NzsP;5gwx!pt6w_maQbZ{jpJJeiJ#{bs`&Grsa7lNEO2^cChYb&dK>DNL?Zc$zjdp|_>tuN z{CY{}7RDtJxoUZdw%a5*Gc%LWJ76y1B@!-7QV{5(87yel%V zVs*0Ly?NJewB4yu?I3D1%US)%cljpG4-JDQYrj{kOB$Q)R<3+_qrbo9y45J#3DBJ516kh;HN`3tA_927@Yx literal 0 HcmV?d00001 diff --git a/core/res/res/drawable/stat_power_bg.xml b/core/res/res/drawable/stat_power_bg.xml new file mode 100644 index 0000000000000..a21b510e1bd3f --- /dev/null +++ b/core/res/res/drawable/stat_power_bg.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + diff --git a/core/res/res/layout/status_bar_expanded.xml b/core/res/res/layout/status_bar_expanded.xml index b20492a4fc427..2dac3a6ce1ff9 100644 --- a/core/res/res/layout/status_bar_expanded.xml +++ b/core/res/res/layout/status_bar_expanded.xml @@ -23,57 +23,205 @@ android:focusable="true" android:descendantFocusability="afterDescendants" > - - + + - - + + + + + + + + + + + + + + + + + + + + + + + - + + + android:orientation="horizontal" + android:gravity="center_vertical" + > + + + + + + mQueue = new ArrayList(); NotificationCallbacks mNotificationCallbacks; @@ -255,6 +279,8 @@ public boolean dispatchKeyEvent(KeyEvent event) { Drawable expBarNotifTitleDrawable; + private WifiManager mWifiManager = null; + private BluetoothAdapter mBluetoothAdapter = null; // for disabling the status bar ArrayList mDisableRecords = new ArrayList(); int mDisabled = 0; @@ -264,6 +290,7 @@ public boolean dispatchKeyEvent(KeyEvent event) { */ public StatusBarService(Context context) { mContext = context; + mHandler = new H(); notificationTitleColor = Settings.System.getInt(mContext.getContentResolver(), Settings.System.NOTIF_ITEM_TITLE_COLOR, blackColor); notificationTextColor = Settings.System.getInt(mContext.getContentResolver(), Settings.System.NOTIF_ITEM_TEXT_COLOR, blackColor); notificationTimeColor = Settings.System.getInt(mContext.getContentResolver(), Settings.System.NOTIF_ITEM_TIME_COLOR, blackColor); @@ -272,6 +299,8 @@ public StatusBarService(Context context) { makeStatusBarView(context); updateColors(); mUninstallReceiver = new UninstallReceiver(); + SettingsObserver observer = new SettingsObserver(mHandler); + observer.observe(); } public void setNotificationCallbacks(NotificationCallbacks listener) { @@ -332,15 +361,15 @@ private void makeStatusBarView(Context context) { mScrollView = (ScrollView)expanded.findViewById(R.id.scroll); mNotificationLinearLayout = expanded.findViewById(R.id.notificationLinearLayout); if (custExpBar) { - mExpandedView.findViewById(R.id.exp_view_lin_layout). - setBackgroundDrawable(expBarHeadDrawable); - mNoNotificationsTitle.setBackgroundDrawable(expBarNotifTitleDrawable); - mOngoingTitle.setBackgroundDrawable(expBarNotifTitleDrawable); - mLatestTitle.setBackgroundDrawable(expBarNotifTitleDrawable); - } + mExpandedView.findViewById(R.id.exp_view_lin_layout). + setBackgroundDrawable(expBarHeadDrawable); + mNoNotificationsTitle.setBackgroundDrawable(expBarNotifTitleDrawable); + mOngoingTitle.setBackgroundDrawable(expBarNotifTitleDrawable); + mLatestTitle.setBackgroundDrawable(expBarNotifTitleDrawable); + } mOngoingTitle.setVisibility(View.GONE); mLatestTitle.setVisibility(View.GONE); - + mTicker = new MyTicker(context, sb); tickerView = (TickerView)sb.findViewById(R.id.tickerText); @@ -384,6 +413,12 @@ private void makeStatusBarView(Context context) { filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); filter.addAction(Intent.ACTION_SCREEN_OFF); filter.addAction(Telephony.Intents.SPN_STRINGS_UPDATED_ACTION); + filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); + filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED); + filter.addAction(Settings.SETTINGS_CHANGED); + filter.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION); + filter.addAction(WifiManager.WIFI_AP_STATE_CHANGED_ACTION); + filter.addAction(NetworkModeButton.NETWORK_MODE_CHANGED); context.registerReceiver(mBroadcastReceiver, filter); } @@ -400,10 +435,13 @@ public void systemReady() { lp.gravity = Gravity.TOP | Gravity.FILL_HORIZONTAL; lp.setTitle("StatusBar"); lp.windowAnimations = R.style.Animation_StatusBar; - WindowManagerImpl.getDefault().addView(view, lp); + + mWifiManager = (WifiManager)mContext.getSystemService(Context.WIFI_SERVICE); + mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); + setupPowerWidget(); } - + // ================================================================================ // From IStatusBar // ================================================================================ @@ -1848,7 +1886,7 @@ void performDisableActions(int net) { } } } - + private void updateColors() { mDateView.setTextColor(Settings.System.getInt(mContext.getContentResolver(), Settings.System.DATE_COLOR, blackColor)); mNoNotificationsTitle.setTextColor(Settings.System.getInt(mContext.getContentResolver(), Settings.System.NO_NOTIF_COLOR, whiteColor)); @@ -1866,7 +1904,156 @@ public void onClick(View v) { addPendingOp(OP_EXPAND, null, false); } }; - + + /** Power Widget **/ + + private View.OnClickListener mPowerListener = new View.OnClickListener() { + public void onClick(View v) { + LinearLayout layout = (LinearLayout)v; + String type = (String)layout.getTag(); + if(PowerButton.TOGGLE_WIFI.equals(type)) { + WifiButton.getInstance().toggleState(mContext); + } else if(PowerButton.TOGGLE_GPS.equals(type)) { + GPSButton.getInstance().toggleState(mContext); + } else if(PowerButton.TOGGLE_BLUETOOTH.equals(type)) { + BluetoothButton.getInstance().toggleState(mContext); + } else if(PowerButton.TOGGLE_BRIGHTNESS.equals(type)) { + BrightnessButton.getInstance().toggleState(mContext); + } else if(PowerButton.TOGGLE_SOUND.equals(type)) { + SoundButton.getInstance().toggleState(mContext); + } else if(PowerButton.TOGGLE_SYNC.equals(type)) { + SyncButton.getInstance().toggleState(mContext); + } else if(PowerButton.TOGGLE_WIFIAP.equals(type)) { + WifiApButton.getInstance().toggleState(mContext); + } else if(PowerButton.TOGGLE_SCREENTIMEOUT.equals(type)) { + ScreenTimeoutButton.getInstance().toggleState(mContext); + } else if(PowerButton.TOGGLE_MOBILEDATA.equals(type)) { + MobileDataButton.getInstance().toggleState(mContext); + } else if(PowerButton.TOGGLE_LOCKSCREEN.equals(type)) { + LockScreenButton.getInstance().toggleState(mContext); + } else if(PowerButton.TOGGLE_NETWORKMODE.equals(type)) { + NetworkModeButton.getInstance().toggleState(mContext); + } else if(PowerButton.TOGGLE_AUTOROTATE.equals(type)) { + AutoRotateButton.getInstance().toggleState(mContext); + } else if(PowerButton.TOGGLE_AIRPLANE.equals(type)) { + AirplaneButton.getInstance().toggleState(mContext); + } + updateWidget(); + } + }; + + private void setupPowerWidget() { + LinearLayout layout; + String lists = Settings.System.getString(mContext.getContentResolver(), + Settings.System.WIDGET_BUTTONS); + Log.i("setupPowerWidget", "List: "+lists); + if(lists == null) { + lists = "toggleWifi|toggleBluetooth|toggleGPS|toggleSound"; + } + List list = Arrays.asList(lists.split("\\|")); + clearWidget(); + + int posi; + for(posi = 0; posi < list.size(); posi++) { + layout = (LinearLayout)mExpandedView.findViewById(PowerButton.getLayoutID(posi + 1)); + String buttonType = list.get(posi); + layout.setVisibility(View.VISIBLE); + layout.setTag(list.get(posi)); + layout.setOnClickListener(mPowerListener); + setupWidget(buttonType, posi + 1); + } + updateWidget(); + } + + private void setupWidget(String buttonType, int position) { + + if(PowerButton.TOGGLE_WIFI.equals(buttonType)) { + WifiButton.getInstance().setupButton(position); + } else if(PowerButton.TOGGLE_GPS.equals(buttonType)) { + GPSButton.getInstance().setupButton(position); + } else if(PowerButton.TOGGLE_BLUETOOTH.equals(buttonType)) { + BluetoothButton.getInstance().setupButton(position); + } else if(PowerButton.TOGGLE_BRIGHTNESS.equals(buttonType)) { + BrightnessButton.getInstance().setupButton(position); + } else if(PowerButton.TOGGLE_SOUND.equals(buttonType)) { + SoundButton.getInstance().setupButton(position); + } else if(PowerButton.TOGGLE_SYNC.equals(buttonType)) { + SyncButton.getInstance().setupButton(position); + } else if(PowerButton.TOGGLE_WIFIAP.equals(buttonType)) { + WifiApButton.getInstance().setupButton(position); + } else if(PowerButton.TOGGLE_SCREENTIMEOUT.equals(buttonType)) { + ScreenTimeoutButton.getInstance().setupButton(position); + } else if(PowerButton.TOGGLE_MOBILEDATA.equals(buttonType)) { + MobileDataButton.getInstance().setupButton(position); + } else if(PowerButton.TOGGLE_LOCKSCREEN.equals(buttonType)) { + LockScreenButton.getInstance().setupButton(position); + } else if(PowerButton.TOGGLE_NETWORKMODE.equals(buttonType)) { + NetworkModeButton.getInstance().setupButton(position); + } else if(PowerButton.TOGGLE_AUTOROTATE.equals(buttonType)) { + AutoRotateButton.getInstance().setupButton(position); + } else if(PowerButton.TOGGLE_AIRPLANE.equals(buttonType)) { + AirplaneButton.getInstance().setupButton(position); + } + + } + + private void clearWidget() { + for(int posi = 0; posi < 6; posi++) { + LinearLayout layout = (LinearLayout)mExpandedView.findViewById(PowerButton.getLayoutID(posi + 1)); + layout.setVisibility(View.GONE); + layout.setTag(""); + } + WifiButton.getInstance().setupButton(0); + GPSButton.getInstance().setupButton(0); + BluetoothButton.getInstance().setupButton(0); + BrightnessButton.getInstance().setupButton(0); + SoundButton.getInstance().setupButton(0); + SyncButton.getInstance().setupButton(0); + WifiApButton.getInstance().setupButton(0); + ScreenTimeoutButton.getInstance().setupButton(0); + MobileDataButton.getInstance().setupButton(0); + LockScreenButton.getInstance().setupButton(0); + NetworkModeButton.getInstance().setupButton(0); + AutoRotateButton.getInstance().setupButton(0); + AirplaneButton.getInstance().setupButton(0); + } + + private void updateStates() { + GPSButton.getInstance().updateState(mContext); + WifiButton.getInstance().updateState(mContext); + BluetoothButton.getInstance().updateState(mContext); + BrightnessButton.getInstance().updateState(mContext); + SoundButton.getInstance().updateState(mContext); + SyncButton.getInstance().updateState(mContext); + WifiApButton.getInstance().updateState(mContext); + ScreenTimeoutButton.getInstance().updateState(mContext); + MobileDataButton.getInstance().updateState(mContext); + LockScreenButton.getInstance().updateState(mContext); + NetworkModeButton.getInstance().updateState(mContext); + AutoRotateButton.getInstance().updateState(mContext); + AirplaneButton.getInstance().updateState(mContext); + } + private void updateViews() { + GPSButton.getInstance().updateView(mContext, mExpandedView); + WifiButton.getInstance().updateView(mContext, mExpandedView); + BluetoothButton.getInstance().updateView(mContext, mExpandedView); + BrightnessButton.getInstance().updateView(mContext, mExpandedView); + SoundButton.getInstance().updateView(mContext, mExpandedView); + SyncButton.getInstance().updateView(mContext, mExpandedView); + WifiApButton.getInstance().updateView(mContext, mExpandedView); + ScreenTimeoutButton.getInstance().updateView(mContext, mExpandedView); + MobileDataButton.getInstance().updateView(mContext, mExpandedView); + LockScreenButton.getInstance().updateView(mContext, mExpandedView); + NetworkModeButton.getInstance().updateView(mContext, mExpandedView); + AutoRotateButton.getInstance().updateView(mContext, mExpandedView); + AirplaneButton.getInstance().updateView(mContext, mExpandedView); + } + + private void updateWidget() { + updateStates(); + updateViews(); + } + private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() { public void onReceive(Context context, Intent intent) { String action = intent.getAction(); @@ -1883,6 +2070,16 @@ else if (Telephony.Intents.SPN_STRINGS_UPDATED_ACTION.equals(action)) { else if (Intent.ACTION_CONFIGURATION_CHANGED.equals(action)) { updateResources(); } + else if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action)) { + WifiButton.getInstance().onReceive(context, intent); + } else if (WifiManager.WIFI_AP_STATE_CHANGED_ACTION.equals(intent.getAction())) { + WifiApButton.getInstance().onReceive(context, intent); + } else if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(intent.getAction())) { + BluetoothButton.getInstance().onReceive(context, intent); + } else if (NetworkModeButton.NETWORK_MODE_CHANGED.equals(intent.getAction())) { + NetworkModeButton.getInstance().onReceive(context, intent); + } + updateWidget(); } }; @@ -1920,7 +2117,7 @@ void updateNetworkName(boolean showSpn, String spn, boolean showPlmn, String plm /** * Reload some of our resources when the configuration changes. - * + * * We don't reload everything when the configuration changes -- we probably * should, but getting that smooth is tough. Someday we'll fix that. In the * meantime, just update the things that we know change. @@ -1969,7 +2166,7 @@ public void run() { vibrate(); } }; - + class UninstallReceiver extends BroadcastReceiver { public UninstallReceiver() { IntentFilter filter = new IntentFilter(); @@ -1980,7 +2177,7 @@ public UninstallReceiver() { IntentFilter sdFilter = new IntentFilter(Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE); mContext.registerReceiver(this, sdFilter); } - + @Override public void onReceive(Context context, Intent intent) { String pkgList[] = null; @@ -2003,7 +2200,7 @@ public void onReceive(Context context, Intent intent) { } } } - + if (list != null) { final int N = list.size(); for (int i=0; i() { + @Override + protected Void doInBackground(Void... args) { + BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); + if(mBluetoothAdapter.isEnabled()) { + mBluetoothAdapter.disable(); + } else { + mBluetoothAdapter.enable(); + } + return null; + } + }.execute(); + } + + @Override + public void onActualStateChange(Context context, Intent intent) { + if (!BluetoothAdapter.ACTION_STATE_CHANGED.equals(intent + .getAction())) { + return; + } + int bluetoothState = intent.getIntExtra( + BluetoothAdapter.EXTRA_STATE, -1); + setCurrentState(context, bluetoothStateToFiveState(bluetoothState)); + } + + /** + * Converts BluetoothAdapter's state values into our + * Wifi/Bluetooth-common state values. + */ + private static int bluetoothStateToFiveState(int bluetoothState) { + switch (bluetoothState) { + case BluetoothAdapter.STATE_OFF: + return PowerButton.STATE_DISABLED; + case BluetoothAdapter.STATE_ON: + return PowerButton.STATE_ENABLED; + case BluetoothAdapter.STATE_TURNING_ON: + return PowerButton.STATE_TURNING_ON; + case BluetoothAdapter.STATE_TURNING_OFF: + return PowerButton.STATE_TURNING_OFF; + default: + return PowerButton.STATE_UNKNOWN; + } + } + } + + + + public static BluetoothButton getInstance() { + if (ownButton == null) ownButton = new BluetoothButton(); + + return ownButton; + } + + @Override + void initButton(int position) { + } + + @Override + public void toggleState(Context context) { + sBluetoothState.toggleState(context); + } + + @Override + public void updateState(Context context) { + currentState = sBluetoothState.getTriState(context); + switch (currentState) { + case PowerButton.STATE_DISABLED: + currentIcon = R.drawable.stat_bluetooth_off; + break; + case PowerButton.STATE_ENABLED: + currentIcon = R.drawable.stat_bluetooth_on; + break; + case PowerButton.STATE_INTERMEDIATE: + // In the transitional state, the bottom green bar + // shows the tri-state (on, off, transitioning), but + // the top dark-gray-or-bright-white logo shows the + // user's intent. This is much easier to see in + // sunlight. + if (sBluetoothState.isTurningOn()) { + currentIcon = R.drawable.stat_bluetooth_on; + } else { + currentIcon = R.drawable.stat_bluetooth_off; + } + break; + } + } + + public void onReceive(Context context, Intent intent) { + sBluetoothState.onActualStateChange(context, intent); + } + + public void toggleState(Context context, int newState) { + int curState = sBluetoothState.getTriState(context); + if (curState != PowerButton.STATE_INTERMEDIATE && + curState != newState) { + toggleState(context); + } + } +} diff --git a/services/java/com/android/server/status/widget/BrightnessButton.java b/services/java/com/android/server/status/widget/BrightnessButton.java new file mode 100755 index 0000000000000..9a4e098935588 --- /dev/null +++ b/services/java/com/android/server/status/widget/BrightnessButton.java @@ -0,0 +1,253 @@ +package com.android.server.status.widget; + +import com.android.internal.R; +import com.android.server.status.widget.PowerButton; + +import android.content.ContentResolver; +import android.content.Context; +import android.content.SharedPreferences; +import android.os.IPowerManager; +import android.os.RemoteException; +import android.os.ServiceManager; +import android.provider.Settings; +import android.util.Log; + +public class BrightnessButton extends PowerButton { + + /** + * Minimum and maximum brightnesses. Don't go to 0 since that makes the + * display unusable + */ + private static final int MINIMUM_BACKLIGHT = android.os.Power.BRIGHTNESS_DIM + 10; + private static final int MAXIMUM_BACKLIGHT = android.os.Power.BRIGHTNESS_ON; + private static int DEFAULT_BACKLIGHT = (int) (android.os.Power.BRIGHTNESS_ON * 0.4f); + + private static int LOW_BACKLIGHT = (int) (android.os.Power.BRIGHTNESS_ON * 0.25f); + private static int MID_BACKLIGHT = (int) (android.os.Power.BRIGHTNESS_ON * 0.5f); + private static int HIGH_BACKLIGHT = (int) (android.os.Power.BRIGHTNESS_ON * 0.75f); + + private static final int AUTO_BACKLIGHT = -1; + + private static final int MODE_AUTO_MIN_DEF_MAX=0; + private static final int MODE_AUTO_MIN_LOW_MID_HIGH_MAX=1; + private static final int MODE_AUTO_LOW_MAX=2; + private static final int MODE_MIN_MAX=3; + + private static final int DEFAULT_SETTING = 0; + + private static Boolean supportsAutomaticMode=null; + + static BrightnessButton ownButton=null; + + private static int currentMode; + + + /* + * +Auto_Min_Low_Max +Auto_Min . Max +Auto. Min . Low High. Max +Auto_Low / High +Auto_Low / High / Max + + +Min / Max +Min Low Max +Min Low High Max +Low High +Low High Max + + + */ + + public static int getMinBacklight(Context context) { + if (Settings.System.getInt(context.getContentResolver(), + Settings.System.LIGHT_SENSOR_CUSTOM, 0) != 0) { + return Settings.System.getInt(context.getContentResolver(), + Settings.System.LIGHT_SCREEN_DIM, MINIMUM_BACKLIGHT); + } else { + return MINIMUM_BACKLIGHT; + } + } + + + private static boolean isAutomaticModeSupported(Context context) { + if (supportsAutomaticMode == null) { + if (context + .getResources() + .getBoolean( + com.android.internal.R.bool.config_automatic_brightness_available)) { + supportsAutomaticMode=true; + } else { + supportsAutomaticMode=false; + } + } + return supportsAutomaticMode; + } + + /** + * Gets state of brightness mode. + * + * @param context + * @return true if auto brightness is on. + */ + private static boolean isBrightnessSetToAutomatic(Context context) { + try { + IPowerManager power = IPowerManager.Stub.asInterface(ServiceManager + .getService("power")); + if (power != null) { + int brightnessMode = Settings.System.getInt(context + .getContentResolver(), + Settings.System.SCREEN_BRIGHTNESS_MODE); + return brightnessMode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC; + } + } catch (Exception e) { + Log.d("PowerWidget", "getBrightnessMode: " + e); + } + return false; + } + + + + private int getNextBrightnessValue(Context context) { + int brightness = Settings.System.getInt(context.getContentResolver(), + Settings.System.SCREEN_BRIGHTNESS,0); + + if (isAutomaticModeSupported(context) && isBrightnessSetToAutomatic(context)) { + if (currentMode == MODE_AUTO_LOW_MAX) { + return LOW_BACKLIGHT; + } else { + return getMinBacklight(context); + } + } else if (brightness < LOW_BACKLIGHT) { + if (currentMode == MODE_AUTO_LOW_MAX) { + return LOW_BACKLIGHT; + } else if (currentMode == MODE_MIN_MAX) { + return MAXIMUM_BACKLIGHT; + } else { + return DEFAULT_BACKLIGHT; + } + } else if (brightness < DEFAULT_BACKLIGHT) { + if (currentMode == MODE_AUTO_MIN_DEF_MAX) { + return DEFAULT_BACKLIGHT; + } else if (currentMode == MODE_AUTO_LOW_MAX || currentMode == MODE_MIN_MAX) { + return MAXIMUM_BACKLIGHT; + } else { + return MID_BACKLIGHT; + } + } else if (brightness < MID_BACKLIGHT) { + if (currentMode == MODE_AUTO_MIN_LOW_MID_HIGH_MAX) { + return MID_BACKLIGHT; + } else { + return MAXIMUM_BACKLIGHT; + } + } else if (brightness < HIGH_BACKLIGHT) { + if (currentMode == MODE_AUTO_MIN_LOW_MID_HIGH_MAX) { + return HIGH_BACKLIGHT; + } else { + return MAXIMUM_BACKLIGHT; + } + } else if (brightness < MAXIMUM_BACKLIGHT) { + return MAXIMUM_BACKLIGHT; + } else if (isAutomaticModeSupported(context) && currentMode!=MODE_MIN_MAX) { + return AUTO_BACKLIGHT; + } else if(currentMode == MODE_AUTO_LOW_MAX){ + return LOW_BACKLIGHT; + } else { + return getMinBacklight(context); + } + } + + /** + * Increases or decreases the brightness. + * + * @param context + */ + public void toggleState(Context context) { + try { + IPowerManager power = IPowerManager.Stub.asInterface(ServiceManager + .getService("power")); + if (power != null) { + int brightness = getNextBrightnessValue(context); + ContentResolver contentResolver = context.getContentResolver(); + if (brightness == AUTO_BACKLIGHT) { + Settings.System.putInt(contentResolver, + Settings.System.SCREEN_BRIGHTNESS_MODE, + Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC); + } else { + if (isAutomaticModeSupported(context)) { + Settings.System.putInt(contentResolver, + Settings.System.SCREEN_BRIGHTNESS_MODE, + Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL); + } + power.setBacklightBrightness(brightness); + Settings.System.putInt(contentResolver, + Settings.System.SCREEN_BRIGHTNESS, brightness); + } + } + } catch (RemoteException e) { + Log.d("PowerWidget", "toggleBrightness: " + e); + } + } + + + public static BrightnessButton getInstance() { + if (ownButton == null) ownButton = new BrightnessButton(); + + return ownButton; + } + + @Override + void initButton(int position) { + } + + @Override + public void updateState(Context context) { + currentMode = Settings.System.getInt(context.getContentResolver(), + Settings.System.EXPANDED_BRIGHTNESS_MODE, DEFAULT_SETTING); + + if (isBrightnessSetToAutomatic(context)) { + currentIcon = R.drawable.stat_brightness_auto; + currentState = PowerButton.STATE_ENABLED; + } else if (getBrightnessState(context) == PowerButton.STATE_ENABLED) { + currentIcon = R.drawable.stat_brightness_on; + currentState = PowerButton.STATE_ENABLED; + } else if (getBrightnessState(context) == PowerButton.STATE_TURNING_ON) { + currentIcon = R.drawable.stat_brightness_on; + currentState = PowerButton.STATE_INTERMEDIATE; + } else if (getBrightnessState(context) == PowerButton.STATE_TURNING_OFF) { + currentIcon = R.drawable.stat_brightness_off; + currentState = PowerButton.STATE_INTERMEDIATE; + } else { + currentIcon = R.drawable.stat_brightness_off; + currentState = PowerButton.STATE_DISABLED; + } + } + + private int getBrightnessState(Context context) { + int brightness = Settings.System.getInt(context.getContentResolver(), + Settings.System.SCREEN_BRIGHTNESS,0); + + if (brightness < LOW_BACKLIGHT) { + return PowerButton.STATE_DISABLED; + } else if (brightness < DEFAULT_BACKLIGHT) { + return PowerButton.STATE_DISABLED; + } else if (brightness < MID_BACKLIGHT) { + if (currentMode == MODE_AUTO_MIN_LOW_MID_HIGH_MAX) { + return PowerButton.STATE_DISABLED; + } else { + return PowerButton.STATE_TURNING_OFF; + } + } else if (brightness < HIGH_BACKLIGHT) { + if (currentMode == MODE_AUTO_MIN_LOW_MID_HIGH_MAX) { + return PowerButton.STATE_TURNING_OFF; + } else { + return PowerButton.STATE_TURNING_ON; + } + } else if (brightness < MAXIMUM_BACKLIGHT) { + return PowerButton.STATE_TURNING_ON; + } else { + return PowerButton.STATE_ENABLED; + } + } +} diff --git a/services/java/com/android/server/status/widget/GPSButton.java b/services/java/com/android/server/status/widget/GPSButton.java new file mode 100644 index 0000000000000..0251745c4c05c --- /dev/null +++ b/services/java/com/android/server/status/widget/GPSButton.java @@ -0,0 +1,50 @@ +package com.android.server.status.widget; + +import com.android.internal.R; +import com.android.server.status.widget.PowerButton; + +import android.content.ContentResolver; +import android.content.Context; +import android.location.LocationManager; +import android.provider.Settings; +import android.util.Log; + +public class GPSButton extends PowerButton { + static GPSButton ownButton; + + public void updateState(Context context) { + Log.i("GPSButton", "Update State"); + if(getGpsState(context)) { + currentIcon = com.android.internal.R.drawable.stat_gps_on; + currentState = STATE_ENABLED; + } else { + currentIcon = com.android.internal.R.drawable.stat_gps_off; + currentState = STATE_DISABLED; + } + } + + public void toggleState(Context context) { + Log.i("GPSButton", "ToggleState"); + ContentResolver resolver = context.getContentResolver(); + boolean enabled = getGpsState(context); + Settings.Secure.setLocationProviderEnabled(resolver, + LocationManager.GPS_PROVIDER, !enabled); + } + + private static boolean getGpsState(Context context) { + ContentResolver resolver = context.getContentResolver(); + return Settings.Secure.isLocationProviderEnabled(resolver, + LocationManager.GPS_PROVIDER); + } + + public static GPSButton getInstance() { + if (ownButton==null) ownButton = new GPSButton(); + + return ownButton; + } + + @Override + void initButton(int position) { + } + +} diff --git a/services/java/com/android/server/status/widget/LockScreenButton.java b/services/java/com/android/server/status/widget/LockScreenButton.java new file mode 100755 index 0000000000000..e1b205d7b8339 --- /dev/null +++ b/services/java/com/android/server/status/widget/LockScreenButton.java @@ -0,0 +1,92 @@ +package com.android.server.status.widget; + +import com.android.internal.R; +import com.android.server.status.widget.PowerButton; + +import android.app.Activity; +import android.app.KeyguardManager; +import android.app.KeyguardManager.KeyguardLock; +import android.content.Context; +import android.content.SharedPreferences; +import android.view.Gravity; +import android.widget.Toast; + +public class LockScreenButton extends PowerButton { + + static Boolean lockScreen = null; + + public static final String LOCK_SCREEN = "lockScreen"; + static LockScreenButton ownButton = null; + KeyguardLock lock; + + private KeyguardLock getLock(Context context) { + if (lock == null) { + KeyguardManager keyguardManager = (KeyguardManager)context. + getSystemService(Activity.KEYGUARD_SERVICE); + lock = keyguardManager.newKeyguardLock(Context.KEYGUARD_SERVICE); + } + return lock; + } + + public void updateState(Context context) { + getState(context); + if (lockScreen == null) { + currentIcon = R.drawable.stat_lock_screen_off; + currentState = PowerButton.STATE_INTERMEDIATE; + } else if (lockScreen) { + currentIcon = R.drawable.stat_lock_screen_on; + currentState = PowerButton.STATE_ENABLED; + } else { + currentIcon = R.drawable.stat_lock_screen_off; + currentState = PowerButton.STATE_DISABLED; + } + } + + /** + * Toggles the state of GPS. + * + * @param context + */ + public void toggleState(Context context) { + getState(context); + if(lockScreen == null) { + Toast msg = Toast.makeText(context, "Not yet initialized", Toast.LENGTH_LONG); + msg.setGravity(Gravity.CENTER, msg.getXOffset() / 2, msg.getYOffset() / 2); + msg.show(); + } else { + getLock(context); + if (lockScreen && lock != null) { + lock.disableKeyguard(); + lockScreen = false; + } else if (lock != null) { + lock.reenableKeyguard(); + lockScreen = true; + } + } + } + + /** + * Gets the state of GPS location. + * + * @param context + * @return true if enabled. + */ + private static boolean getState(Context context) { + if (lockScreen == null) { + lockScreen = true; + } + return lockScreen; + } + + + public static LockScreenButton getInstance() { + if (ownButton==null) ownButton = new LockScreenButton(); + + return ownButton; + } + + @Override + void initButton(int position) { + } +} + diff --git a/services/java/com/android/server/status/widget/MobileDataButton.java b/services/java/com/android/server/status/widget/MobileDataButton.java new file mode 100755 index 0000000000000..69aa304cfdfda --- /dev/null +++ b/services/java/com/android/server/status/widget/MobileDataButton.java @@ -0,0 +1,85 @@ +package com.android.server.status.widget; + +import com.android.internal.R; +import com.android.server.status.widget.PowerButton; + +import android.content.Context; +import android.content.SharedPreferences; +import android.net.ConnectivityManager; +import android.provider.Settings; + +public class MobileDataButton extends PowerButton { + + public static final String MOBILE_DATA_CHANGED = "com.android.internal.telephony.MOBILE_DATA_CHANGED"; + + static MobileDataButton ownButton = null; + + static boolean stateChangeRequest = false; + + public static boolean getDataRomingEnabled(Context context) { + return Settings.Secure.getInt(context.getContentResolver(), + Settings.Secure.DATA_ROAMING,0) > 0; + } + + /** + * Gets the state of data + * + * @return true if enabled. + */ + private static boolean getDataState(Context context) { + ConnectivityManager cm = (ConnectivityManager) context + .getSystemService(Context.CONNECTIVITY_SERVICE); + return cm.getMobileDataEnabled(); + } + + /** + * Toggles the state of data. + * + */ + @Override + public void toggleState(Context context) { + boolean enabled = getDataState(context); + + ConnectivityManager cm = (ConnectivityManager) context + .getSystemService(Context.CONNECTIVITY_SERVICE); + if (enabled) { + cm.setMobileDataEnabled(false); + } else { + cm.setMobileDataEnabled(true); + } + } + + @Override + public void updateState(Context context) { + if (stateChangeRequest) { + currentIcon = R.drawable.stat_data_on; + currentState = PowerButton.STATE_INTERMEDIATE; + } else if (getDataState(context)) { + currentIcon = R.drawable.stat_data_on; + currentState = PowerButton.STATE_ENABLED; + } else { + currentIcon = R.drawable.stat_data_off; + currentState = PowerButton.STATE_DISABLED; + } + } + + public static MobileDataButton getInstance() { + if (ownButton == null) ownButton = new MobileDataButton(); + + return ownButton; + } + + @Override + void initButton(int position) { + } + + public void networkModeChanged(Context context, int networkMode) { + if (stateChangeRequest) { + ConnectivityManager cm = (ConnectivityManager) context + .getSystemService(Context.CONNECTIVITY_SERVICE); + cm.setMobileDataEnabled(true); + stateChangeRequest=false; + } + } + +} diff --git a/services/java/com/android/server/status/widget/NetworkModeButton.java b/services/java/com/android/server/status/widget/NetworkModeButton.java new file mode 100755 index 0000000000000..b735448cea19c --- /dev/null +++ b/services/java/com/android/server/status/widget/NetworkModeButton.java @@ -0,0 +1,195 @@ +package com.android.server.status.widget; + +import com.android.internal.R; +import com.android.server.status.widget.PowerButton; + +import android.content.Context; +import android.content.Intent; +import android.provider.Settings.SettingNotFoundException; +import android.widget.Toast; +import android.provider.Settings; + +import com.android.internal.telephony.Phone; + +public class NetworkModeButton extends PowerButton{ + + public static final String NETWORK_MODE_CHANGED = "com.android.internal.telephony.NETWORK_MODE_CHANGED"; + public static final String REQUEST_NETWORK_MODE = "com.android.internal.telephony.REQUEST_NETWORK_MODE"; + public static final String MODIFY_NETWORK_MODE = "com.android.internal.telephony.MODIFY_NETWORK_MODE"; + + public static final String NETWORK_MODE = "networkMode"; + + private static final int NO_NETWORK_MODE_YET = -99; + private static final int NETWORK_MODE_UNKNOWN = -100; + + private static final int MODE_3G2G = 0; + private static final int MODE_3GONLY = 1; + private static final int MODE_BOTH = 2; + + private static final int DEFAULT_SETTING = 0; + + static NetworkModeButton ownButton = null; + + private static int networkMode = NO_NETWORK_MODE_YET; + private static int intendedNetworkMode = NO_NETWORK_MODE_YET; + private static int currentInternalState = PowerButton.STATE_INTERMEDIATE; + private int currentMode; + + + private int networkModeToState(Context context) { + if (currentInternalState == PowerButton.STATE_TURNING_ON || + currentInternalState == PowerButton.STATE_TURNING_OFF) + return PowerButton.STATE_INTERMEDIATE; + + switch(networkMode) { + case Phone.NT_MODE_WCDMA_PREF: + case Phone.NT_MODE_WCDMA_ONLY: + return PowerButton.STATE_ENABLED; + case Phone.NT_MODE_GSM_ONLY: + return PowerButton.STATE_DISABLED; + } + return PowerButton.STATE_INTERMEDIATE; + } + + + /** + * Gets the state of 2G3g // NOT working + * + * @param context + * @return true if enabled. + */ + + private int get2G3G(Context context) { + int state = 99; + try { + state = android.provider.Settings.Secure.getInt(context + .getContentResolver(), + android.provider.Settings.Secure.PREFERRED_NETWORK_MODE); + } catch (SettingNotFoundException e) { + } + return state; + } + + + public static NetworkModeButton getInstance() { + if (ownButton == null) ownButton = new NetworkModeButton(); + return ownButton; + } + + @Override + void initButton(int position) { + } + + @Override + public void toggleState(Context context) { + toggleState(context, false); + } + + public void toggleState(Context context, int newState) { + if (currentState != PowerButton.STATE_INTERMEDIATE && currentState != newState) { + toggleState(context,true); + } else if (currentState == PowerButton.STATE_INTERMEDIATE){ + Toast toast = Toast.makeText(context, "Network mode state unknown. Please change it manually!",Toast.LENGTH_SHORT); + toast.show(); + } + } + + public void toggleState(Context context, boolean switchModes) { + Intent intent = new Intent(MODIFY_NETWORK_MODE); + switch (networkMode ) { + case Phone.NT_MODE_WCDMA_PREF: + intent.putExtra(NETWORK_MODE, Phone.NT_MODE_GSM_ONLY); + currentInternalState = PowerButton.STATE_TURNING_OFF; + intendedNetworkMode=Phone.NT_MODE_GSM_ONLY; + break; + case Phone.NT_MODE_WCDMA_ONLY: + if (currentMode == MODE_3GONLY || switchModes) { + intent.putExtra(NETWORK_MODE, Phone.NT_MODE_GSM_ONLY); + currentInternalState = PowerButton.STATE_TURNING_OFF; + intendedNetworkMode=Phone.NT_MODE_GSM_ONLY; + } else { + intent.putExtra(NETWORK_MODE, Phone.NT_MODE_WCDMA_PREF); + currentInternalState = PowerButton.STATE_TURNING_ON; + intendedNetworkMode = Phone.NT_MODE_WCDMA_PREF; + } + break; + case Phone.NT_MODE_GSM_ONLY: + if (currentMode == MODE_3GONLY || currentMode == MODE_BOTH ) { + intent.putExtra(NETWORK_MODE, Phone.NT_MODE_WCDMA_ONLY); + currentInternalState = PowerButton.STATE_TURNING_ON; + intendedNetworkMode = Phone.NT_MODE_WCDMA_ONLY; + } else { + intent.putExtra(NETWORK_MODE, Phone.NT_MODE_WCDMA_PREF); + currentInternalState = PowerButton.STATE_TURNING_ON; + intendedNetworkMode = Phone.NT_MODE_WCDMA_PREF; + } + break; + } + + networkMode = NETWORK_MODE_UNKNOWN; + context.sendBroadcast(intent); + } + + + + + @Override + public void updateState(Context context) { + currentMode = Settings.System.getInt(context.getContentResolver(), + Settings.System.EXPANDED_NETWORK_MODE, DEFAULT_SETTING); + networkMode = get2G3G(context); + currentState = networkModeToState(context); + + switch (currentState) { + case PowerButton.STATE_DISABLED: + currentIcon = R.drawable.stat_2g3g_off; + break; + case PowerButton.STATE_ENABLED: + if (networkMode == Phone.NT_MODE_WCDMA_ONLY) { + currentIcon = R.drawable.stat_3g_on; + } else { + currentIcon = R.drawable.stat_2g3g_on; + } + break; + case PowerButton.STATE_INTERMEDIATE: + // In the transitional state, the bottom green bar + // shows the tri-state (on, off, transitioning), but + // the top dark-gray-or-bright-white logo shows the + // user's intent. This is much easier to see in + // sunlight. + if (currentInternalState == PowerButton.STATE_TURNING_ON) { + if (intendedNetworkMode == Phone.NT_MODE_WCDMA_ONLY) { + currentIcon = R.drawable.stat_3g_on; + } else { + currentIcon = R.drawable.stat_2g3g_on; + } + } else { + currentIcon = R.drawable.stat_2g3g_off; + } + break; + } + } + + + public void onReceive(Context context, Intent intent) { + if (intent.getExtras() != null) { + networkMode = intent.getExtras().getInt(NETWORK_MODE); + //Update to actual state + intendedNetworkMode=networkMode; + } + + //need to clear intermediate states + currentInternalState=PowerButton.STATE_ENABLED; + + int widgetState = networkModeToState(context); + currentInternalState = widgetState; + if (widgetState == PowerButton.STATE_ENABLED) { + MobileDataButton.getInstance().networkModeChanged(context, networkMode); + } + } + + public boolean isDisabled(Context context) { + return networkModeToState(context)==PowerButton.STATE_DISABLED; + } + +} diff --git a/services/java/com/android/server/status/widget/PowerButton.java b/services/java/com/android/server/status/widget/PowerButton.java new file mode 100644 index 0000000000000..0e61bda1fbcc1 --- /dev/null +++ b/services/java/com/android/server/status/widget/PowerButton.java @@ -0,0 +1,135 @@ +package com.android.server.status.widget; + +import com.android.internal.R; + +import android.content.ContentResolver; +import android.content.Context; +import android.content.res.Resources; +import android.graphics.drawable.Drawable; +import android.graphics.PorterDuff.Mode; +import android.widget.ImageView; +import android.widget.RemoteViews; +import android.widget.LinearLayout; +import android.util.Log; +import android.provider.Settings; +import android.view.View; + +import com.android.server.status.ExpandedView; + +public abstract class PowerButton { + public static final String TOGGLE_WIFI = "toggleWifi"; + public static final String TOGGLE_GPS = "toggleGPS"; + public static final String TOGGLE_BLUETOOTH = "toggleBluetooth"; + public static final String TOGGLE_BRIGHTNESS = "toggleBrightness"; + public static final String TOGGLE_SOUND = "toggleSound"; + public static final String TOGGLE_SYNC = "toggleSync"; + public static final String TOGGLE_WIFIAP = "toggleWifiAp"; + public static final String TOGGLE_SCREENTIMEOUT = "toggleScreenTimeout"; + public static final String TOGGLE_MOBILEDATA = "toggleMobileData"; + public static final String TOGGLE_LOCKSCREEN = "toggleLockScreen"; + public static final String TOGGLE_NETWORKMODE = "toggleNetworkMode"; + public static final String TOGGLE_AUTOROTATE = "toggleAutoRotate"; + public static final String TOGGLE_FLASHLIGHT = "toggleFlashlight"; + public static final String TOGGLE_AIRPLANE = "toggleAirplane"; + + private Mode expPDMode = Mode.SCREEN; + public static final int STATE_ENABLED = 1; + public static final int STATE_DISABLED = 2; + public static final int STATE_TURNING_ON = 3; + public static final int STATE_TURNING_OFF = 4; + public static final int STATE_INTERMEDIATE = 5; + public static final int STATE_UNKNOWN = 6; + + public int currentIcon; + public int currentState; + public int currentPosition; + + abstract void initButton(int position); + abstract public void toggleState(Context context); + public abstract void updateState(Context context); + + public void setupButton(int position) { + currentPosition = position; + } + + public void updateView(Context context, ExpandedView views) { + if(currentPosition > 0) { + Resources res = context.getResources(); + int buttonLayer = getLayoutID(currentPosition); + int buttonIcon = getImageID(currentPosition); + int buttonState = getStatusInd(currentPosition); + + views.findViewById(buttonLayer).setVisibility(View.VISIBLE); + + updateImageView(views, buttonIcon, currentIcon); + + /* Button State */ + int sColorMaskBase = Settings.System.getInt(context.getContentResolver(), + Settings.System.EXPANDED_VIEW_WIDGET_COLOR, 0xFF00EFFF); + int sColorMaskOn = (sColorMaskBase & 0x00FFFFFF) | 0xA0000000; + int sColorMaskOff = (sColorMaskBase & 0x00FFFFFF) | 0x33000000; + int sColorMaskInter = (sColorMaskBase & 0x00FFFFFF) | 0x60000000; + + switch(currentState) { + case STATE_ENABLED: + updateImageView(views, buttonState, + res.getDrawable(com.android.internal.R.drawable.stat_bgon_custom, sColorMaskOn, expPDMode)); + break; + case STATE_DISABLED: + updateImageView(views, buttonState, + res.getDrawable(com.android.internal.R.drawable.stat_bgon_custom, sColorMaskOff, expPDMode)); + break; + default: + updateImageView(views, buttonState, + res.getDrawable(com.android.internal.R.drawable.stat_bgon_custom, sColorMaskInter, expPDMode)); + break; + } + } + } + + private void updateImageView(ExpandedView view, int id, int resId) { + ImageView imageIcon = (ImageView)view.findViewById(id); + imageIcon.setImageResource(resId); + } + private void updateImageView(ExpandedView view, int id, Drawable resDraw) { + ImageView statusInd = (ImageView)view.findViewById(id); + statusInd.setImageResource(com.android.internal.R.drawable.stat_bgon_custom); + statusInd.setImageDrawable(resDraw); + } + + public static int getLayoutID(int posi) { + switch(posi) { + case 1: return R.id.exp_power_stat_1; + case 2: return R.id.exp_power_stat_2; + case 3: return R.id.exp_power_stat_3; + case 4: return R.id.exp_power_stat_4; + case 5: return R.id.exp_power_stat_5; + case 6: return R.id.exp_power_stat_6; + } + return 0; + } + + private int getImageID(int posi) { + switch(posi) { + case 1: return R.id.exp_power_image_1; + case 2: return R.id.exp_power_image_2; + case 3: return R.id.exp_power_image_3; + case 4: return R.id.exp_power_image_4; + case 5: return R.id.exp_power_image_5; + case 6: return R.id.exp_power_image_6; + } + return 0; + } + + private int getStatusInd(int posi) { + switch(posi) { + case 1: return R.id.exp_power_indic_1; + case 2: return R.id.exp_power_indic_2; + case 3: return R.id.exp_power_indic_3; + case 4: return R.id.exp_power_indic_4; + case 5: return R.id.exp_power_indic_5; + case 6: return R.id.exp_power_indic_6; + } + return 0; + } +} diff --git a/services/java/com/android/server/status/widget/ScreenTimeoutButton.java b/services/java/com/android/server/status/widget/ScreenTimeoutButton.java new file mode 100755 index 0000000000000..c64e4fbe632a4 --- /dev/null +++ b/services/java/com/android/server/status/widget/ScreenTimeoutButton.java @@ -0,0 +1,104 @@ +package com.android.server.status.widget; + +import com.android.internal.R; +import com.android.server.status.widget.PowerButton; +import com.android.server.status.widget.StateTracker; + +import android.content.Context; +import android.content.SharedPreferences; +import android.provider.Settings; + +public class ScreenTimeoutButton extends PowerButton { + + public static final int SCREEN_MINIMUM_TIMEOUT = 15000; + public static final int SCREEN_LOW_TIMEOUT = 30000; + public static final int SCREEN_NORMAL_TIMEOUT = 60000; + public static final int SCREEN_HI_TIMEOUT = 120000; + public static final int SCREEN_MAX_TIMEOUT = 300000; + + + private static final int MODE_15_60_300 = 0; + private static final int MODE_30_120_300 = 1; + + private static final int DEFAULT_SETTING = 0; + + static ScreenTimeoutButton ownButton = null; + + private int currentMode; + + public static int getScreenTtimeout(Context context) { + return Settings.System.getInt( + context.getContentResolver(), + Settings.System.SCREEN_OFF_TIMEOUT, 0); + } + + + public void toggleState(Context context) { + int screentimeout = getScreenTtimeout(context); + if (screentimeout < SCREEN_MINIMUM_TIMEOUT) { + if (currentMode == MODE_15_60_300) { + screentimeout = SCREEN_MINIMUM_TIMEOUT; + } else { + screentimeout = SCREEN_LOW_TIMEOUT; + } + } else if (screentimeout < SCREEN_LOW_TIMEOUT) { + if (currentMode == MODE_15_60_300) { + screentimeout = SCREEN_NORMAL_TIMEOUT; + } else { + screentimeout = SCREEN_LOW_TIMEOUT; + } + } else if (screentimeout < SCREEN_NORMAL_TIMEOUT) { + if (currentMode == MODE_15_60_300) { + screentimeout = SCREEN_NORMAL_TIMEOUT; + } else { + screentimeout = SCREEN_HI_TIMEOUT; + } + } else if (screentimeout < SCREEN_HI_TIMEOUT) { + if (currentMode == MODE_15_60_300) { + screentimeout = SCREEN_MAX_TIMEOUT; + } else { + screentimeout=SCREEN_HI_TIMEOUT; + } + } else if (screentimeout < SCREEN_MAX_TIMEOUT) { + screentimeout = SCREEN_MAX_TIMEOUT; + } else if (currentMode == MODE_30_120_300) { + screentimeout = SCREEN_LOW_TIMEOUT; + } else { + screentimeout = SCREEN_MINIMUM_TIMEOUT; + } + Settings.System.putInt( + context.getContentResolver(), + Settings.System.SCREEN_OFF_TIMEOUT, screentimeout); + } + + public static ScreenTimeoutButton getInstance() { + if (ownButton == null) ownButton = new ScreenTimeoutButton(); + return ownButton; + } + + @Override + void initButton(int position) { + } + + @Override + public void updateState(Context context) { + + currentMode = Settings.System.getInt(context.getContentResolver(), + Settings.System.EXPANDED_SCREENTIMEOUT_MODE, DEFAULT_SETTING); + + int timeout=getScreenTtimeout(context); + //TODO: ADD support for the possible values + if (timeout <= SCREEN_LOW_TIMEOUT) { + currentIcon = R.drawable.stat_screen_timeout_off; + currentState = PowerButton.STATE_DISABLED; + } else if (timeout <= SCREEN_HI_TIMEOUT) { + currentIcon = R.drawable.stat_screen_timeout_off; + currentState = PowerButton.STATE_INTERMEDIATE; + } else { + currentIcon = R.drawable.stat_screen_timeout_on; + currentState = PowerButton.STATE_ENABLED; + } + } +} + + diff --git a/services/java/com/android/server/status/widget/SoundButton.java b/services/java/com/android/server/status/widget/SoundButton.java new file mode 100755 index 0000000000000..bd96bd754e965 --- /dev/null +++ b/services/java/com/android/server/status/widget/SoundButton.java @@ -0,0 +1,220 @@ +package com.android.server.status.widget; + +import com.android.internal.R; +import com.android.server.status.widget.PowerButton; + +import android.content.Context; +import android.content.SharedPreferences; +import android.media.AudioManager; +import android.provider.Settings; + +public class SoundButton extends PowerButton { + + static SoundButton ownButton = null; + + public static final int RINGER_MODE_UNKNOWN = 0; + public static final int RINGER_MODE_SILENT = 1; + public static final int RINGER_MODE_VIBRATE_ONLY = 2; + public static final int RINGER_MODE_SOUND_ONLY = 3; + public static final int RINGER_MODE_SOUND_AND_VIBRATE = 4; + + public static final int MODE_SOUNDVIB_VIB = 0; + public static final int MODE_SOUND_VIB = 1; + public static final int MODE_SOUND_SILENT = 2; + public static final int MODE_SOUNDVIB_VIB_SILENT = 3; + public static final int MODE_SOUND_VIB_SILENT = 4; + + private static final int DEFAULT_SETTING = 0; + private static int currentMode; + + private static int getSoundState(Context context) { + AudioManager mAudioManager = (AudioManager) context + .getSystemService(Context.AUDIO_SERVICE); + + int ringMode = mAudioManager.getRingerMode(); + int vibrateMode = mAudioManager.getVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER); + + if (ringMode == AudioManager.RINGER_MODE_NORMAL && vibrateMode == AudioManager.VIBRATE_SETTING_ON) { + return RINGER_MODE_SOUND_AND_VIBRATE; + } else if (ringMode == AudioManager.RINGER_MODE_NORMAL) { + return RINGER_MODE_SOUND_ONLY; + } else if (ringMode == AudioManager.RINGER_MODE_VIBRATE) { + return RINGER_MODE_VIBRATE_ONLY; + } else if (ringMode == AudioManager.RINGER_MODE_SILENT) { + return RINGER_MODE_SILENT; + } + return RINGER_MODE_UNKNOWN; + } + + /** + * Toggles the state of 2G3G. + * + * @param context + */ + public void toggleState(Context context) { + int currentMode = getSoundState(context); + AudioManager mAudioManager = (AudioManager) context + .getSystemService(Context.AUDIO_SERVICE); + + switch (currentMode) { + case RINGER_MODE_SOUND_AND_VIBRATE: + if(supports(RINGER_MODE_SOUND_ONLY)) { + Settings.System.putInt(context.getContentResolver(),Settings.System.VIBRATE_IN_SILENT,1); + mAudioManager. + setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_ONLY_SILENT); + mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); + } else if(supports(RINGER_MODE_VIBRATE_ONLY)) { + Settings.System.putInt(context.getContentResolver(),Settings.System.VIBRATE_IN_SILENT,1); + mAudioManager. + setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_ONLY_SILENT); + mAudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE); + } else if(supports(RINGER_MODE_SILENT)) { + Settings.System.putInt(context.getContentResolver(),Settings.System.VIBRATE_IN_SILENT,0); + mAudioManager. + setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_OFF); + mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT); + } else { //Fall Back + Settings.System.putInt(context.getContentResolver(),Settings.System.VIBRATE_IN_SILENT,1); + mAudioManager. + setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_ON); + mAudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE); + } + break; + case RINGER_MODE_SOUND_ONLY: + if(supports(RINGER_MODE_VIBRATE_ONLY)) { + Settings.System.putInt(context.getContentResolver(),Settings.System.VIBRATE_IN_SILENT,1); + mAudioManager. + setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_ONLY_SILENT); + mAudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE); + } else if(supports(RINGER_MODE_SILENT)) { + Settings.System.putInt(context.getContentResolver(),Settings.System.VIBRATE_IN_SILENT,0); + mAudioManager. + setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_OFF); + mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT); + } else if(supports(RINGER_MODE_SOUND_AND_VIBRATE)) { + Settings.System.putInt(context.getContentResolver(),Settings.System.VIBRATE_IN_SILENT,1); + mAudioManager. + setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_ON); + mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); + } else { //Fall back + Settings.System.putInt(context.getContentResolver(),Settings.System.VIBRATE_IN_SILENT,1); + mAudioManager. + setRingerMode(AudioManager.RINGER_MODE_VIBRATE); + mAudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_ON); + } + break; + + case RINGER_MODE_VIBRATE_ONLY: + if(supports(RINGER_MODE_SILENT)) { + Settings.System.putInt(context.getContentResolver(),Settings.System.VIBRATE_IN_SILENT,0); + mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT); + mAudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_OFF); + } else if(supports(RINGER_MODE_SOUND_AND_VIBRATE)) { + Settings.System.putInt(context.getContentResolver(),Settings.System.VIBRATE_IN_SILENT,1); + mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); + mAudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_ON); + } else if(supports(RINGER_MODE_SOUND_ONLY)) { + Settings.System.putInt(context.getContentResolver(),Settings.System.VIBRATE_IN_SILENT,1); + mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); + mAudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_ONLY_SILENT); + } else { //Fall Back + Settings.System.putInt(context.getContentResolver(),Settings.System.VIBRATE_IN_SILENT,1); + mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); + mAudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_ON); + } + break; + case RINGER_MODE_SILENT: + if(supports(RINGER_MODE_SOUND_AND_VIBRATE)) { + Settings.System.putInt(context.getContentResolver(),Settings.System.VIBRATE_IN_SILENT,1); + mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); + mAudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_ON); + } else if(supports(RINGER_MODE_SOUND_ONLY)) { + Settings.System.putInt(context.getContentResolver(),Settings.System.VIBRATE_IN_SILENT,1); + mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); + mAudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_ONLY_SILENT); + } else if(supports(RINGER_MODE_VIBRATE_ONLY)) { + Settings.System.putInt(context.getContentResolver(),Settings.System.VIBRATE_IN_SILENT,1); + mAudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE); + mAudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_ONLY_SILENT); + } else { //Fall Back + Settings.System.putInt(context.getContentResolver(),Settings.System.VIBRATE_IN_SILENT,1); + mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); + mAudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_ON); + } + break; + default: + Settings.System.putInt(context.getContentResolver(),Settings.System.VIBRATE_IN_SILENT,1); + mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); + mAudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_ON); + + } + } + + private boolean supports(int ringerMode) { + switch (ringerMode) { + case RINGER_MODE_SILENT: + if (currentMode == MODE_SOUND_SILENT || + currentMode == MODE_SOUNDVIB_VIB_SILENT || + currentMode == MODE_SOUND_VIB_SILENT) + return true; + break; + case RINGER_MODE_VIBRATE_ONLY: + if (currentMode == MODE_SOUND_VIB || + currentMode == MODE_SOUNDVIB_VIB || + currentMode == MODE_SOUNDVIB_VIB_SILENT || + currentMode == MODE_SOUND_VIB_SILENT) + return true; + break; + case RINGER_MODE_SOUND_ONLY: + if (currentMode == MODE_SOUND_VIB || + currentMode == MODE_SOUND_SILENT || + currentMode == MODE_SOUND_VIB_SILENT) + return true; + break; + case RINGER_MODE_SOUND_AND_VIBRATE: + if (currentMode == MODE_SOUNDVIB_VIB || + currentMode == MODE_SOUNDVIB_VIB_SILENT) + return true; + } + + return false; + } + + public static SoundButton getInstance() { + if (ownButton == null) + ownButton = new SoundButton(); + + return ownButton; + } + + @Override + void initButton(int position) { + } + + @Override + public void updateState(Context context) { + int soundState = getSoundState(context); + currentMode = Settings.System.getInt(context.getContentResolver(), + Settings.System.EXPANDED_RING_MODE, DEFAULT_SETTING); + + switch (soundState) { + case RINGER_MODE_SOUND_AND_VIBRATE: + currentIcon = R.drawable.stat_ring_on; + currentState = PowerButton.STATE_ENABLED; + break; + case RINGER_MODE_SOUND_ONLY: + currentIcon = R.drawable.stat_ring_on; + currentState = PowerButton.STATE_INTERMEDIATE; + break; + case RINGER_MODE_VIBRATE_ONLY: + currentIcon = R.drawable.stat_vibrate_off; + currentState = PowerButton.STATE_DISABLED; + break; + case RINGER_MODE_SILENT: + currentIcon = R.drawable.stat_silent; + currentState = PowerButton.STATE_DISABLED; + break; + + } + } +} diff --git a/services/java/com/android/server/status/widget/StateTracker.java b/services/java/com/android/server/status/widget/StateTracker.java new file mode 100644 index 0000000000000..fd476b6a0ae04 --- /dev/null +++ b/services/java/com/android/server/status/widget/StateTracker.java @@ -0,0 +1,160 @@ +package com.android.server.status.widget; + +import com.android.server.status.widget.PowerButton; +import android.content.Context; +import android.content.Intent; +import android.util.Log; + + +/** + * The state machine for Wifi and Bluetooth toggling, tracking reality + * versus the user's intent. + * + * This is necessary because reality moves relatively slowly (turning on + * & off radio drivers), compared to user's expectations. + */ +public abstract class StateTracker { + // Is the state in the process of changing? + private boolean mInTransition = false; + private Boolean mActualState = null; // initially not set + private Boolean mIntendedState = null; // initially not set + + // Did a toggle request arrive while a state update was + // already in-flight? If so, the mIntendedState needs to be + // requested when the other one is done, unless we happened to + // arrive at that state already. + private boolean mDeferredStateChangeRequestNeeded = false; + + /** + * User pressed a button to change the state. Something should + * immediately appear to the user afterwards, even if we effectively do + * nothing. Their press must be heard. + */ + public final void toggleState(Context context) { + int currentState = getTriState(context); + boolean newState = false; + switch (currentState) { + case PowerButton.STATE_ENABLED: + newState = false; + break; + case PowerButton.STATE_DISABLED: + newState = true; + break; + case PowerButton.STATE_INTERMEDIATE: + if (mIntendedState != null) { + newState = !mIntendedState; + } + break; + } + mIntendedState = newState; + if (mInTransition) { + // We don't send off a transition request if we're + // already transitioning. Makes our state tracking + // easier, and is probably nicer on lower levels. + // (even though they should be able to take it...) + mDeferredStateChangeRequestNeeded = true; + } else { + mInTransition = true; + requestStateChange(context, newState); + } + } + + /** + * Update internal state from a broadcast state change. + */ + public abstract void onActualStateChange(Context context, Intent intent); + + /** + * Sets the value that we're now in. To be called from + * onActualStateChange. + * + * @param newState + * one of STATE_DISABLED, STATE_ENABLED, STATE_TURNING_ON, + * STATE_TURNING_OFF, STATE_UNKNOWN + */ + protected final void setCurrentState(Context context, int newState) { + final boolean wasInTransition = mInTransition; + switch (newState) { + case PowerButton.STATE_DISABLED: + mInTransition = false; + mActualState = false; + break; + case PowerButton.STATE_ENABLED: + mInTransition = false; + mActualState = true; + break; + case PowerButton.STATE_TURNING_ON: + mInTransition = true; + mActualState = false; + break; + case PowerButton.STATE_TURNING_OFF: + mInTransition = true; + mActualState = true; + break; + } + + if (wasInTransition && !mInTransition) { + if (mDeferredStateChangeRequestNeeded) { + Log.v("StateTracker", "processing deferred state change"); + if (mActualState != null && mIntendedState != null + && mIntendedState.equals(mActualState)) { + Log.v("StateTracker", "... but intended state matches, so no changes."); + } else if (mIntendedState != null) { + mInTransition = true; + requestStateChange(context, mIntendedState); + } + mDeferredStateChangeRequestNeeded = false; + } + } + } + + /** + * If we're in a transition mode, this returns true if we're + * transitioning towards being enabled. + */ + public final boolean isTurningOn() { + return mIntendedState != null && mIntendedState; + } + + /** + * Returns simplified 3-state value from underlying 5-state. + * + * @param context + * @return STATE_ENABLED, STATE_DISABLED, or STATE_INTERMEDIATE + */ + public final int getTriState(Context context) { + /*if (mInTransition) { + // If we know we just got a toggle request recently + // (which set mInTransition), don't even ask the + // underlying interface for its state. We know we're + // changing. This avoids blocking the UI thread + // during UI refresh post-toggle if the underlying + // service state accessor has coarse locking on its + // state (to be fixed separately). + return PowerButton.STATE_INTERMEDIATE; + }*/ + switch (getActualState(context)) { + case PowerButton.STATE_DISABLED: + return PowerButton.STATE_DISABLED; + case PowerButton.STATE_ENABLED: + return PowerButton.STATE_ENABLED; + default: + return PowerButton.STATE_INTERMEDIATE; + } + } + + /** + * Gets underlying actual state. + * + * @param context + * @return STATE_ENABLED, STATE_DISABLED, STATE_ENABLING, + * STATE_DISABLING, or or STATE_UNKNOWN. + */ + public abstract int getActualState(Context context); + + /** + * Actually make the desired change to the underlying radio API. + */ + protected abstract void requestStateChange(Context context, + boolean desiredState); +} diff --git a/services/java/com/android/server/status/widget/SyncButton.java b/services/java/com/android/server/status/widget/SyncButton.java new file mode 100755 index 0000000000000..f7de2264f4dda --- /dev/null +++ b/services/java/com/android/server/status/widget/SyncButton.java @@ -0,0 +1,104 @@ +package com.android.server.status.widget; + +import com.android.internal.R; +import com.android.server.status.widget.PowerButton; + +import android.content.ContentResolver; +import android.content.Context; +import android.content.SharedPreferences; +import android.net.ConnectivityManager; + +public class SyncButton extends PowerButton { + + static SyncButton ownButton=null; + + /** + * Toggle auto-sync + * + * @param context + */ + public void toggleState(Context context) { + ConnectivityManager connManager = (ConnectivityManager) context + .getSystemService(Context.CONNECTIVITY_SERVICE); + boolean backgroundData = getBackgroundDataState(context); + boolean sync = ContentResolver.getMasterSyncAutomatically(); + + // four cases to handle: + // setting toggled from off to on: + // 1. background data was off, sync was off: turn on both + if (!backgroundData && !sync) { + connManager.setBackgroundDataSetting(true); + ContentResolver.setMasterSyncAutomatically(true); + } + + // 2. background data was off, sync was on: turn on background data + if (!backgroundData && sync) { + connManager.setBackgroundDataSetting(true); + } + + // 3. background data was on, sync was off: turn on sync + if (backgroundData && !sync) { + ContentResolver.setMasterSyncAutomatically(true); + } + + // setting toggled from on to off: + // 4. background data was on, sync was on: turn off sync + if (backgroundData && sync) { + ContentResolver.setMasterSyncAutomatically(false); + } + } + + public void toggleState(Context context, int newState) { + if(getSync(context) && newState==PowerButton.STATE_DISABLED) { + toggleState(context); + } else if(!getSync(context) && newState==PowerButton.STATE_ENABLED) { + toggleState(context); + } + } + + /** + * Gets the state of background data. + * + * @param context + * @return true if enabled + */ + private static boolean getBackgroundDataState(Context context) { + ConnectivityManager connManager = (ConnectivityManager) context + .getSystemService(Context.CONNECTIVITY_SERVICE); + return connManager.getBackgroundDataSetting(); + } + + /** + * Gets the state of auto-sync. + * + * @param context + * @return true if enabled + */ + private static boolean getSync(Context context) { + boolean backgroundData = getBackgroundDataState(context); + boolean sync = ContentResolver.getMasterSyncAutomatically(); + return backgroundData && sync; + } + + + + public void updateState(Context context) { + if (getSync(context)) { + currentIcon = R.drawable.stat_sync_on; + currentState = PowerButton.STATE_ENABLED; + } else { + currentIcon = R.drawable.stat_sync_off; + currentState = PowerButton.STATE_DISABLED; + } + } + + public static SyncButton getInstance() { + if (ownButton == null) ownButton = new SyncButton(); + return ownButton; + } + + @Override + void initButton(int poisition) { + } + +} diff --git a/services/java/com/android/server/status/widget/WifiApButton.java b/services/java/com/android/server/status/widget/WifiApButton.java new file mode 100755 index 0000000000000..d0b73940dd962 --- /dev/null +++ b/services/java/com/android/server/status/widget/WifiApButton.java @@ -0,0 +1,152 @@ +package com.android.server.status.widget; + +import com.android.internal.R; +import com.android.server.status.widget.PowerButton; +import com.android.server.status.widget.StateTracker; + +import android.content.Context; +import android.content.Intent; +import android.content.SharedPreferences; +import android.net.wifi.WifiManager; +import android.os.AsyncTask; +import android.util.Log; + +public class WifiApButton extends PowerButton { + + static WifiApButton ownButton = null; + + + private static final StateTracker sWifiApState = new WifiApStateTracker(); + + /** + * Subclass of StateTracker to get/set Wifi AP state. + */ + private static final class WifiApStateTracker extends StateTracker { + @Override + public int getActualState(Context context) { + WifiManager wifiManager = (WifiManager) context + .getSystemService(Context.WIFI_SERVICE); + if (wifiManager != null) { + return wifiApStateToFiveState(wifiManager.getWifiApState()); + } + return PowerButton.STATE_UNKNOWN; + } + + @Override + protected void requestStateChange(Context context, + final boolean desiredState) { + + final WifiManager wifiManager = (WifiManager) context + .getSystemService(Context.WIFI_SERVICE); + if (wifiManager == null) { + Log.d("WifiAPManager", "No wifiManager."); + return; + } + Log.i("WifiAp", "Setting: " + desiredState); + + // Actually request the Wi-Fi AP change and persistent + // settings write off the UI thread, as it can take a + // user-noticeable amount of time, especially if there's + // disk contention. + new AsyncTask() { + @Override + protected Void doInBackground(Void... args) { + /** + * Disable Wif if enabling tethering + */ + int wifiState = wifiManager.getWifiState(); + if (desiredState + && ((wifiState == WifiManager.WIFI_STATE_ENABLING) || (wifiState == WifiManager.WIFI_STATE_ENABLED))) { + wifiManager.setWifiEnabled(false); + } + + wifiManager.setWifiApEnabled(null, desiredState); + Log.i("WifiAp", "Async Setting: " + desiredState); + return null; + } + }.execute(); + } + + @Override + public void onActualStateChange(Context context, Intent intent) { + + if (!WifiManager.WIFI_AP_STATE_CHANGED_ACTION.equals(intent + .getAction())) { + return; + } + int wifiState = intent + .getIntExtra(WifiManager.EXTRA_WIFI_AP_STATE, -1); + int widgetState=wifiApStateToFiveState(wifiState); + setCurrentState(context, widgetState); + } + + /** + * Converts WifiManager's state values into our Wifi/WifiAP/Bluetooth-common + * state values. + */ + private static int wifiApStateToFiveState(int wifiState) { + switch (wifiState) { + case WifiManager.WIFI_AP_STATE_DISABLED: + return PowerButton.STATE_DISABLED; + case WifiManager.WIFI_AP_STATE_ENABLED: + return PowerButton.STATE_ENABLED; + case WifiManager.WIFI_AP_STATE_DISABLING: + return PowerButton.STATE_TURNING_OFF; + case WifiManager.WIFI_AP_STATE_ENABLING: + return PowerButton.STATE_TURNING_ON; + default: + return PowerButton.STATE_UNKNOWN; + } + } + } + + + + public void updateState(Context context) { + + currentState = sWifiApState.getTriState(context); + switch (currentState) { + case PowerButton.STATE_DISABLED: + currentIcon = R.drawable.stat_wifi_ap_off; + break; + case PowerButton.STATE_ENABLED: + currentIcon = R.drawable.stat_wifi_ap_on; + break; + case PowerButton.STATE_INTERMEDIATE: + // In the transitional state, the bottom green bar + // shows the tri-state (on, off, transitioning), but + // the top dark-gray-or-bright-white logo shows the + // user's intent. This is much easier to see in + // sunlight. + if (sWifiApState.isTurningOn()) { + currentIcon = R.drawable.stat_wifi_ap_on; + } else { + currentIcon = R.drawable.stat_wifi_ap_off; + } + break; + } + } + + + public void onReceive(Context context, Intent intent) { + sWifiApState.onActualStateChange(context, intent); + } + + + public void toggleState(Context context) { + sWifiApState.toggleState(context); + } + + + public static WifiApButton getInstance() { + if (ownButton == null) { + ownButton = new WifiApButton(); + } + + return ownButton; + } + + @Override + void initButton(int position) { + } +} diff --git a/services/java/com/android/server/status/widget/WifiButton.java b/services/java/com/android/server/status/widget/WifiButton.java new file mode 100644 index 0000000000000..bb89b6a6387c0 --- /dev/null +++ b/services/java/com/android/server/status/widget/WifiButton.java @@ -0,0 +1,159 @@ +package com.android.server.status.widget; + +import com.android.internal.R; +import com.android.server.status.widget.PowerButton; +import com.android.server.status.widget.StateTracker; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.Intent; +import android.content.IntentFilter; +import android.net.wifi.WifiManager; +import android.os.AsyncTask; +import android.util.Log; + +public class WifiButton extends PowerButton{ + + static WifiButton ownButton = null; + + private static final StateTracker sWifiState = new WifiStateTracker(); + + public void setupButton(Context context, int position) { + currentPosition = position; + } + + /** + * Subclass of StateTracker to get/set Wifi state. + */ + private static final class WifiStateTracker extends StateTracker { + @Override + public int getActualState(Context context) { + WifiManager wifiManager = (WifiManager) context + .getSystemService(Context.WIFI_SERVICE); + if (wifiManager != null) { + return wifiStateToFiveState(wifiManager.getWifiState()); + } + return STATE_UNKNOWN; + } + + @Override + protected void requestStateChange(Context context, + final boolean desiredState) { + final WifiManager wifiManager = (WifiManager) context + .getSystemService(Context.WIFI_SERVICE); + if (wifiManager == null) { + Log.d("WifiButton", "No wifiManager."); + return; + } + + // Actually request the wifi change and persistent + // settings write off the UI thread, as it can take a + // user-noticeable amount of time, especially if there's + // disk contention. + new AsyncTask() { + @Override + protected Void doInBackground(Void... args) { + /** + * Disable tethering if enabling Wifi + */ + int wifiApState = wifiManager.getWifiApState(); + if (desiredState + && ((wifiApState == WifiManager.WIFI_AP_STATE_ENABLING) || (wifiApState == WifiManager.WIFI_AP_STATE_ENABLED))) { + wifiManager.setWifiApEnabled(null, false); + } + + wifiManager.setWifiEnabled(desiredState); + return null; + } + }.execute(); + } + + @Override + public void onActualStateChange(Context context, Intent intent) { + if (!WifiManager.WIFI_STATE_CHANGED_ACTION.equals(intent + .getAction())) { + return; + } + int wifiState = intent + .getIntExtra(WifiManager.EXTRA_WIFI_STATE, -1); + int widgetState=wifiStateToFiveState(wifiState); + setCurrentState(context, widgetState); + } + + /** + * Converts WifiManager's state values into our Wifi/Bluetooth-common + * state values. + */ + private static int wifiStateToFiveState(int wifiState) { + switch (wifiState) { + case WifiManager.WIFI_STATE_DISABLED: + return STATE_DISABLED; + case WifiManager.WIFI_STATE_ENABLED: + return STATE_ENABLED; + case WifiManager.WIFI_STATE_DISABLING: + return STATE_TURNING_OFF; + case WifiManager.WIFI_STATE_ENABLING: + return STATE_TURNING_ON; + default: + return STATE_UNKNOWN; + } + } + } + + + + public void updateState(Context context) { + currentState = sWifiState.getTriState(context); + switch (currentState) { + case STATE_DISABLED: + currentIcon = com.android.internal.R.drawable.stat_wifi_off; + break; + case STATE_ENABLED: + currentIcon = com.android.internal.R.drawable.stat_wifi_on; + break; + case STATE_INTERMEDIATE: + // In the transitional state, the bottom green bar + // shows the tri-state (on, off, transitioning), but + // the top dark-gray-or-bright-white logo shows the + // user's intent. This is much easier to see in + // sunlight. + if (sWifiState.isTurningOn()) { + currentIcon = com.android.internal.R.drawable.stat_wifi_on; + } else { + currentIcon = com.android.internal.R.drawable.stat_wifi_off; + } + break; + } + } + + public void onReceive(Context context, Intent intent) { + sWifiState.onActualStateChange(context, intent); + } + + public void toggleState(Context context) { + int realstate = sWifiState.getActualState(context); + sWifiState.toggleState(context); + } + + + public static WifiButton getInstance() { + if (ownButton == null) { + ownButton = new WifiButton(); + } + + return ownButton; + } + + @Override + void initButton(int position) { + } + + public void toggleState(Context context, int newState) { + int curState = sWifiState.getTriState(context); + if (curState != STATE_INTERMEDIATE && + curState != newState) { + toggleState(context); + } + } +}