diff options
| author | DvTonder <david.vantonder@gmail.com> | 2013-02-27 22:15:56 -0500 |
|---|---|---|
| committer | DvTonder <david.vantonder@gmail.com> | 2013-02-28 18:46:32 -0500 |
| commit | b6739b5bb2816b9daf68e79f1bf4f7c839efcac5 (patch) | |
| tree | 396cdc929d72e74a082ba7b91c4993fad515d32d | |
| parent | 775d25e6f5e3112aab32537a4a7877d2132bda09 (diff) | |
| download | frameworks_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.java | 8 | ||||
| -rw-r--r-- | packages/SystemUI/res/drawable-hdpi/ic_qs_lte_off.png | bin | 0 -> 3007 bytes | |||
| -rw-r--r-- | packages/SystemUI/res/drawable-hdpi/ic_qs_lte_on.png | bin | 0 -> 3015 bytes | |||
| -rw-r--r-- | packages/SystemUI/res/drawable-mdpi/ic_qs_lte_off.png | bin | 0 -> 2944 bytes | |||
| -rw-r--r-- | packages/SystemUI/res/drawable-mdpi/ic_qs_lte_on.png | bin | 0 -> 2955 bytes | |||
| -rw-r--r-- | packages/SystemUI/res/drawable-xhdpi/ic_qs_lte_off.png | bin | 0 -> 2983 bytes | |||
| -rw-r--r-- | packages/SystemUI/res/drawable-xhdpi/ic_qs_lte_on.png | bin | 0 -> 2991 bytes | |||
| -rw-r--r-- | packages/SystemUI/res/values/strings.xml | 2 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/quicksettings/LteTile.java | 113 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsController.java | 9 |
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 Binary files differnew file mode 100644 index 0000000..ae7ca39 --- /dev/null +++ b/packages/SystemUI/res/drawable-hdpi/ic_qs_lte_off.png diff --git a/packages/SystemUI/res/drawable-hdpi/ic_qs_lte_on.png b/packages/SystemUI/res/drawable-hdpi/ic_qs_lte_on.png Binary files differnew file mode 100644 index 0000000..158c7de --- /dev/null +++ b/packages/SystemUI/res/drawable-hdpi/ic_qs_lte_on.png diff --git a/packages/SystemUI/res/drawable-mdpi/ic_qs_lte_off.png b/packages/SystemUI/res/drawable-mdpi/ic_qs_lte_off.png Binary files differnew file mode 100644 index 0000000..285d3d1 --- /dev/null +++ b/packages/SystemUI/res/drawable-mdpi/ic_qs_lte_off.png diff --git a/packages/SystemUI/res/drawable-mdpi/ic_qs_lte_on.png b/packages/SystemUI/res/drawable-mdpi/ic_qs_lte_on.png Binary files differnew file mode 100644 index 0000000..2b0ac32 --- /dev/null +++ b/packages/SystemUI/res/drawable-mdpi/ic_qs_lte_on.png diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_qs_lte_off.png b/packages/SystemUI/res/drawable-xhdpi/ic_qs_lte_off.png Binary files differnew file mode 100644 index 0000000..7f1c7cb --- /dev/null +++ b/packages/SystemUI/res/drawable-xhdpi/ic_qs_lte_off.png diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_qs_lte_on.png b/packages/SystemUI/res/drawable-xhdpi/ic_qs_lte_on.png Binary files differnew file mode 100644 index 0000000..57b59a5 --- /dev/null +++ b/packages/SystemUI/res/drawable-xhdpi/ic_qs_lte_on.png 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); } |
