diff --git a/packages/SystemUI/res/drawable/ic_qs_data_disabled.xml b/packages/SystemUI/res/drawable/ic_qs_data_disabled.xml new file mode 100644 index 0000000000000..b4144a3474fd9 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_qs_data_disabled.xml @@ -0,0 +1,24 @@ + + + + diff --git a/packages/SystemUI/res/drawable/stat_sys_data_disabled.xml b/packages/SystemUI/res/drawable/stat_sys_data_disabled.xml new file mode 100644 index 0000000000000..4e2a0245ab2a2 --- /dev/null +++ b/packages/SystemUI/res/drawable/stat_sys_data_disabled.xml @@ -0,0 +1,24 @@ + + + + diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index 02158ac8a7323..a490635c35470 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -359,6 +359,9 @@ No SIM. + + Cellular Data Off + Bluetooth tethering. diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java index ad8e3bde58b53..8fd4d9cd326a5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java @@ -206,7 +206,8 @@ public class MobileSignalController extends SignalController< // Show icon in QS when we are connected or need to show roaming. boolean showDataIcon = mCurrentState.dataConnected - || mCurrentState.iconGroup == TelephonyIcons.ROAMING; + || mCurrentState.iconGroup == TelephonyIcons.ROAMING + || mCurrentState.iconGroup == TelephonyIcons.DATA_DISABLED; IconState statusIcon = new IconState(mCurrentState.enabled && !mCurrentState.airplaneMode, getCurrentIconId(), contentDescription); @@ -227,7 +228,8 @@ public class MobileSignalController extends SignalController< && !mCurrentState.carrierNetworkChangeMode && mCurrentState.activityOut; showDataIcon &= mCurrentState.isDefault - || mCurrentState.iconGroup == TelephonyIcons.ROAMING; + || mCurrentState.iconGroup == TelephonyIcons.ROAMING + || mCurrentState.iconGroup == TelephonyIcons.DATA_DISABLED; int typeIcon = showDataIcon ? icons.mDataType : 0; mCallbackHandler.setMobileDataIndicators(statusIcon, qsIcon, typeIcon, qsTypeIcon, activityIn, activityOut, dataContentDescription, description, icons.mIsWide, @@ -385,6 +387,8 @@ public class MobileSignalController extends SignalController< mCurrentState.iconGroup = TelephonyIcons.CARRIER_NETWORK_CHANGE; } else if (isRoaming()) { mCurrentState.iconGroup = TelephonyIcons.ROAMING; + } else if (isDataDisabled()) { + mCurrentState.iconGroup = TelephonyIcons.DATA_DISABLED; } if (isEmergencyOnly() != mCurrentState.isEmergency) { mCurrentState.isEmergency = isEmergencyOnly(); @@ -399,6 +403,10 @@ public class MobileSignalController extends SignalController< notifyListenersIfNecessary(); } + private boolean isDataDisabled() { + return !mPhone.getDataEnabled(mSubscriptionInfo.getSubscriptionId()); + } + @VisibleForTesting void setActivity(int activity) { mCurrentState.activityIn = activity == TelephonyManager.DATA_ACTIVITY_INOUT diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java index 83e044612e03a..6ff8f77bff4ee 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java @@ -208,6 +208,8 @@ class TelephonyIcons { static final int ICON_CARRIER_NETWORK_CHANGE = R.drawable.stat_sys_signal_carrier_network_change_animation; + static final int ICON_DATA_DISABLED = R.drawable.stat_sys_data_disabled; + static final int QS_ICON_LTE = R.drawable.ic_qs_signal_lte; static final int QS_ICON_3G = R.drawable.ic_qs_signal_3g; static final int QS_ICON_4G = R.drawable.ic_qs_signal_4g; @@ -215,6 +217,8 @@ class TelephonyIcons { static final int QS_ICON_CARRIER_NETWORK_CHANGE = R.drawable.ic_qs_signal_carrier_network_change_animation; + static final int QS_ICON_DATA_DISABLED = R.drawable.ic_qs_data_disabled; + static final MobileIconGroup CARRIER_NETWORK_CHANGE = new MobileIconGroup( "CARRIER_NETWORK_CHANGE", TelephonyIcons.TELEPHONY_CARRIER_NETWORK_CHANGE, @@ -373,5 +377,20 @@ class TelephonyIcons { false, TelephonyIcons.QS_DATA_R ); + + static final MobileIconGroup DATA_DISABLED = new MobileIconGroup( + "DataDisabled", + TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH, + TelephonyIcons.QS_TELEPHONY_SIGNAL_STRENGTH, + AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH, + 0, 0, + TelephonyIcons.TELEPHONY_NO_NETWORK, + TelephonyIcons.QS_TELEPHONY_NO_NETWORK, + AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH[0], + R.string.accessibility_cell_data_off, + TelephonyIcons.ICON_DATA_DISABLED, + false, + TelephonyIcons.QS_ICON_DATA_DISABLED + ); }