summaryrefslogtreecommitdiffstats
path: root/services/java/com/android/server/status/widget/MobileDataButton.java
diff options
context:
space:
mode:
authorPedlar <pedlar88@gmail.com>2010-10-05 00:51:57 -0400
committerSteve Kondik <shade@chemlab.org>2010-10-17 01:04:47 -0400
commiteb0e39732842151e947f27cf64a00480d75e5631 (patch)
tree0dd9204ba0593c58ff964fdb49c5502591b5e42f /services/java/com/android/server/status/widget/MobileDataButton.java
parentc5efffd3ea508745ceba287e1444e69b36b7d6e9 (diff)
downloadframeworks_base-eb0e39732842151e947f27cf64a00480d75e5631.zip
frameworks_base-eb0e39732842151e947f27cf64a00480d75e5631.tar.gz
frameworks_base-eb0e39732842151e947f27cf64a00480d75e5631.tar.bz2
Galaxy S Style Power Widget
- Finally Ready - Review at will - This Depends on the following: CMParts: http://review.cyanogenmod.com/2063
Diffstat (limited to 'services/java/com/android/server/status/widget/MobileDataButton.java')
-rwxr-xr-xservices/java/com/android/server/status/widget/MobileDataButton.java85
1 files changed, 85 insertions, 0 deletions
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 0000000..69aa304
--- /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;
+ }
+ }
+
+}