summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDvTonder <david.vantonder@gmail.com>2013-02-27 22:15:56 -0500
committerDvTonder <david.vantonder@gmail.com>2013-02-28 18:46:32 -0500
commitb6739b5bb2816b9daf68e79f1bf4f7c839efcac5 (patch)
tree396cdc929d72e74a082ba7b91c4993fad515d32d
parent775d25e6f5e3112aab32537a4a7877d2132bda09 (diff)
downloadframeworks_base-b6739b5bb2816b9daf68e79f1bf4f7c839efcac5.zip
frameworks_base-b6739b5bb2816b9daf68e79f1bf4f7c839efcac5.tar.gz
frameworks_base-b6739b5bb2816b9daf68e79f1bf4f7c839efcac5.tar.bz2
QuickSettings: Add LTE Tile (1 of 2)
Patchset 3 - Add proper drawables and update logic Patchset 4 - Rebase Patchset 5 - Fix build errors Thank you to Bjorn Lunden for the drawables Change-Id: Ia25d098020586e06d38589f84d3d1a581e7cbd9a
-rw-r--r--core/java/com/android/internal/util/cm/QSUtils.java8
-rw-r--r--packages/SystemUI/res/drawable-hdpi/ic_qs_lte_off.pngbin0 -> 3007 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/ic_qs_lte_on.pngbin0 -> 3015 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/ic_qs_lte_off.pngbin0 -> 2944 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/ic_qs_lte_on.pngbin0 -> 2955 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/ic_qs_lte_off.pngbin0 -> 2983 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/ic_qs_lte_on.pngbin0 -> 2991 bytes
-rw-r--r--packages/SystemUI/res/values/strings.xml2
-rw-r--r--packages/SystemUI/src/com/android/systemui/quicksettings/LteTile.java113
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsController.java9
10 files changed, 131 insertions, 1 deletions
diff --git a/core/java/com/android/internal/util/cm/QSUtils.java b/core/java/com/android/internal/util/cm/QSUtils.java
index 905c0b6..977d603 100644
--- a/core/java/com/android/internal/util/cm/QSUtils.java
+++ b/core/java/com/android/internal/util/cm/QSUtils.java
@@ -9,6 +9,9 @@ import android.hardware.display.WifiDisplayStatus;
import android.net.ConnectivityManager;
import android.nfc.NfcAdapter;
import android.provider.Settings;
+import android.telephony.TelephonyManager;
+
+import com.android.internal.telephony.PhoneConstants;
public class QSUtils {
public static boolean deviceSupportsUsbTether(Context ctx) {
@@ -37,4 +40,9 @@ public class QSUtils {
public static boolean deviceSupportsNfc(Context ctx) {
return NfcAdapter.getDefaultAdapter(ctx) != null;
}
+
+ public static boolean deviceSupportsLte(Context ctx) {
+ final TelephonyManager tm = (TelephonyManager) ctx.getSystemService(Context.TELEPHONY_SERVICE);
+ return (tm.getLteOnCdmaMode() == PhoneConstants.LTE_ON_CDMA_TRUE) || tm.getLteOnGsmMode() != 0;
+ }
}
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_qs_lte_off.png b/packages/SystemUI/res/drawable-hdpi/ic_qs_lte_off.png
new file mode 100644
index 0000000..ae7ca39
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/ic_qs_lte_off.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_qs_lte_on.png b/packages/SystemUI/res/drawable-hdpi/ic_qs_lte_on.png
new file mode 100644
index 0000000..158c7de
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/ic_qs_lte_on.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_qs_lte_off.png b/packages/SystemUI/res/drawable-mdpi/ic_qs_lte_off.png
new file mode 100644
index 0000000..285d3d1
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/ic_qs_lte_off.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_qs_lte_on.png b/packages/SystemUI/res/drawable-mdpi/ic_qs_lte_on.png
new file mode 100644
index 0000000..2b0ac32
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/ic_qs_lte_on.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_qs_lte_off.png b/packages/SystemUI/res/drawable-xhdpi/ic_qs_lte_off.png
new file mode 100644
index 0000000..7f1c7cb
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_qs_lte_off.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_qs_lte_on.png b/packages/SystemUI/res/drawable-xhdpi/ic_qs_lte_on.png
new file mode 100644
index 0000000..57b59a5
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_qs_lte_on.png
Binary files differ
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index 82a8ee0..da03a4c 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -556,6 +556,8 @@
<string name="quick_settings_wifiap_off">Wi-Fi AP off</string>
<string name="quick_settings_quiethours">Quiet hours</string>
<string name="quick_settings_quiethours_off">Quiet hours off</string>
+ <string name="quick_settings_lte">LTE</string>
+ <string name="quick_settings_lte_off">LTE off</string>
<!-- Text to display next to the minimal graphical battery meter. [CHAR LIMIT=3] -->
<string name="status_bar_settings_battery_meter_min_format" translatable="false">
diff --git a/packages/SystemUI/src/com/android/systemui/quicksettings/LteTile.java b/packages/SystemUI/src/com/android/systemui/quicksettings/LteTile.java
new file mode 100644
index 0000000..6c79ad9
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/quicksettings/LteTile.java
@@ -0,0 +1,113 @@
+package com.android.systemui.quicksettings;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.provider.Settings;
+import android.telephony.TelephonyManager;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.View.OnClickListener;
+
+import com.android.internal.telephony.Phone;
+import com.android.systemui.R;
+import com.android.systemui.statusbar.phone.QuickSettingsContainerView;
+import com.android.systemui.statusbar.phone.QuickSettingsController;
+
+import java.util.List;
+
+public class LteTile extends QuickSettingsTile {
+
+ private Context mContext;
+
+ public LteTile(Context context,
+ LayoutInflater inflater, QuickSettingsContainerView container,
+ QuickSettingsController qsc) {
+ super(context, inflater, container, qsc);
+
+ mContext = context;
+
+ mOnClick = new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ toggleLteState();
+ updateResources();
+ }
+ };
+
+ mOnLongClick = new View.OnLongClickListener() {
+ @Override
+ public boolean onLongClick(View v) {
+ Intent intent = new Intent(Intent.ACTION_MAIN);
+ intent.setClassName("com.android.phone", "com.android.phone.Settings");
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ startSettingsActivity(intent);
+ return true;
+ }
+ };
+
+ qsc.registerObservedContent(Settings.Global.getUriFor(Settings.Global.PREFERRED_NETWORK_MODE), this);
+ }
+
+ @Override
+ void onPostCreate() {
+ updateTile();
+ super.onPostCreate();
+ }
+
+ @Override
+ public void onChangeUri(ContentResolver resolver, Uri uri) {
+ updateResources();
+ }
+
+ @Override
+ public void updateResources() {
+ updateTile();
+ super.updateResources();
+ }
+
+ private synchronized void updateTile() {
+ int network = getCurrentPreferredNetworkMode(mContext);
+ switch(network) {
+ case Phone.NT_MODE_GLOBAL:
+ case Phone.NT_MODE_LTE_CDMA_AND_EVDO:
+ case Phone.NT_MODE_LTE_GSM_WCDMA:
+ case Phone.NT_MODE_LTE_CMDA_EVDO_GSM_WCDMA:
+ case Phone.NT_MODE_LTE_ONLY:
+ case Phone.NT_MODE_LTE_WCDMA:
+ mDrawable = R.drawable.ic_qs_lte_on;
+ mLabel = mContext.getString(R.string.quick_settings_lte);
+ break;
+ default:
+ mDrawable = R.drawable.ic_qs_lte_off;
+ mLabel = mContext.getString(R.string.quick_settings_lte_off);
+ break;
+ }
+ }
+
+ private void toggleLteState() {
+ TelephonyManager tm = (TelephonyManager)
+ mContext.getSystemService(Context.TELEPHONY_SERVICE);
+ int network = getCurrentPreferredNetworkMode(mContext);
+ switch(network) {
+ case Phone.NT_MODE_GLOBAL:
+ case Phone.NT_MODE_LTE_CDMA_AND_EVDO:
+ case Phone.NT_MODE_LTE_GSM_WCDMA:
+ case Phone.NT_MODE_LTE_CMDA_EVDO_GSM_WCDMA:
+ case Phone.NT_MODE_LTE_ONLY:
+ case Phone.NT_MODE_LTE_WCDMA:
+ tm.toggleLTE(false);
+ break;
+ default:
+ tm.toggleLTE(true);
+ break;
+ }
+ }
+
+ private static int getCurrentPreferredNetworkMode(Context context) {
+ int network = Settings.Global.getInt(context.getContentResolver(),
+ Settings.Global.PREFERRED_NETWORK_MODE, -1);
+ return network;
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsController.java
index 8ef8a56..93ee320 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsController.java
@@ -45,6 +45,7 @@ import static com.android.internal.util.cm.QSUtils.deviceSupportsBluetooth;
import static com.android.internal.util.cm.QSUtils.deviceSupportsTelephony;
import static com.android.internal.util.cm.QSUtils.deviceSupportsUsbTether;
import static com.android.internal.util.cm.QSUtils.systemProfilesEnabled;
+import static com.android.internal.util.cm.QSUtils.deviceSupportsLte;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
@@ -68,6 +69,7 @@ import com.android.systemui.quicksettings.BrightnessTile;
import com.android.systemui.quicksettings.BugReportTile;
import com.android.systemui.quicksettings.GPSTile;
import com.android.systemui.quicksettings.InputMethodTile;
+import com.android.systemui.quicksettings.LteTile;
import com.android.systemui.quicksettings.MobileNetworkTile;
import com.android.systemui.quicksettings.MobileNetworkTypeTile;
import com.android.systemui.quicksettings.NfcTile;
@@ -124,6 +126,7 @@ public class QuickSettingsController {
// Filter items not compatible with device
boolean bluetoothSupported = deviceSupportsBluetooth();
boolean telephonySupported = deviceSupportsTelephony(mContext);
+ boolean lteSupported = deviceSupportsLte(mContext);
if (!bluetoothSupported) {
TILES_DEFAULT.remove(TILE_BLUETOOTH);
@@ -135,6 +138,10 @@ public class QuickSettingsController {
TILES_DEFAULT.remove(TILE_NETWORKMODE);
}
+ if (!lteSupported) {
+ TILES_DEFAULT.remove(TILE_LTE);
+ }
+
// Read the stored list of tiles
ContentResolver resolver = mContext.getContentResolver();
LayoutInflater inflater = LayoutInflater.from(mContext);
@@ -194,7 +201,7 @@ public class QuickSettingsController {
} else if (tile.equals(TILE_WIMAX)) {
// Not available yet
} else if (tile.equals(TILE_LTE)) {
- // Not available yet
+ qs = new LteTile(mContext, inflater, mContainerView, this);
} else if (tile.equals(TILE_QUIETHOURS)) {
qs = new QuietHoursTile(mContext, inflater, mContainerView, this);
}