diff --git a/packages/SystemUI/res/drawable/ic_1x_mobiledata.xml b/packages/SettingsLib/res/drawable/ic_1x_mobiledata.xml similarity index 100% rename from packages/SystemUI/res/drawable/ic_1x_mobiledata.xml rename to packages/SettingsLib/res/drawable/ic_1x_mobiledata.xml diff --git a/packages/SystemUI/res/drawable/ic_3g_mobiledata.xml b/packages/SettingsLib/res/drawable/ic_3g_mobiledata.xml similarity index 100% rename from packages/SystemUI/res/drawable/ic_3g_mobiledata.xml rename to packages/SettingsLib/res/drawable/ic_3g_mobiledata.xml diff --git a/packages/SystemUI/res/drawable/ic_4g_mobiledata.xml b/packages/SettingsLib/res/drawable/ic_4g_mobiledata.xml similarity index 100% rename from packages/SystemUI/res/drawable/ic_4g_mobiledata.xml rename to packages/SettingsLib/res/drawable/ic_4g_mobiledata.xml diff --git a/packages/SystemUI/res/drawable/ic_4g_plus_mobiledata.xml b/packages/SettingsLib/res/drawable/ic_4g_plus_mobiledata.xml similarity index 100% rename from packages/SystemUI/res/drawable/ic_4g_plus_mobiledata.xml rename to packages/SettingsLib/res/drawable/ic_4g_plus_mobiledata.xml diff --git a/packages/SystemUI/res/drawable/ic_5g_e_mobiledata.xml b/packages/SettingsLib/res/drawable/ic_5g_e_mobiledata.xml similarity index 100% rename from packages/SystemUI/res/drawable/ic_5g_e_mobiledata.xml rename to packages/SettingsLib/res/drawable/ic_5g_e_mobiledata.xml diff --git a/packages/SystemUI/res/drawable/ic_5g_mobiledata.xml b/packages/SettingsLib/res/drawable/ic_5g_mobiledata.xml similarity index 100% rename from packages/SystemUI/res/drawable/ic_5g_mobiledata.xml rename to packages/SettingsLib/res/drawable/ic_5g_mobiledata.xml diff --git a/packages/SystemUI/res/drawable/ic_5g_plus_mobiledata.xml b/packages/SettingsLib/res/drawable/ic_5g_plus_mobiledata.xml similarity index 100% rename from packages/SystemUI/res/drawable/ic_5g_plus_mobiledata.xml rename to packages/SettingsLib/res/drawable/ic_5g_plus_mobiledata.xml diff --git a/packages/SystemUI/res/drawable/ic_e_mobiledata.xml b/packages/SettingsLib/res/drawable/ic_e_mobiledata.xml similarity index 100% rename from packages/SystemUI/res/drawable/ic_e_mobiledata.xml rename to packages/SettingsLib/res/drawable/ic_e_mobiledata.xml diff --git a/packages/SystemUI/res/drawable/ic_g_mobiledata.xml b/packages/SettingsLib/res/drawable/ic_g_mobiledata.xml similarity index 100% rename from packages/SystemUI/res/drawable/ic_g_mobiledata.xml rename to packages/SettingsLib/res/drawable/ic_g_mobiledata.xml diff --git a/packages/SystemUI/res/drawable/ic_h_mobiledata.xml b/packages/SettingsLib/res/drawable/ic_h_mobiledata.xml similarity index 100% rename from packages/SystemUI/res/drawable/ic_h_mobiledata.xml rename to packages/SettingsLib/res/drawable/ic_h_mobiledata.xml diff --git a/packages/SystemUI/res/drawable/ic_h_plus_mobiledata.xml b/packages/SettingsLib/res/drawable/ic_h_plus_mobiledata.xml similarity index 100% rename from packages/SystemUI/res/drawable/ic_h_plus_mobiledata.xml rename to packages/SettingsLib/res/drawable/ic_h_plus_mobiledata.xml diff --git a/packages/SystemUI/res/drawable/ic_lte_mobiledata.xml b/packages/SettingsLib/res/drawable/ic_lte_mobiledata.xml similarity index 100% rename from packages/SystemUI/res/drawable/ic_lte_mobiledata.xml rename to packages/SettingsLib/res/drawable/ic_lte_mobiledata.xml diff --git a/packages/SystemUI/res/drawable/ic_lte_plus_mobiledata.xml b/packages/SettingsLib/res/drawable/ic_lte_plus_mobiledata.xml similarity index 100% rename from packages/SystemUI/res/drawable/ic_lte_plus_mobiledata.xml rename to packages/SettingsLib/res/drawable/ic_lte_plus_mobiledata.xml diff --git a/packages/SystemUI/res/drawable/stat_sys_airplane_mode.xml b/packages/SettingsLib/res/drawable/stat_sys_airplane_mode.xml similarity index 100% rename from packages/SystemUI/res/drawable/stat_sys_airplane_mode.xml rename to packages/SettingsLib/res/drawable/stat_sys_airplane_mode.xml diff --git a/packages/SystemUI/res/values-mcc310-mnc004/strings.xml b/packages/SettingsLib/res/values-mcc310-mnc004/strings.xml similarity index 100% rename from packages/SystemUI/res/values-mcc310-mnc004/strings.xml rename to packages/SettingsLib/res/values-mcc310-mnc004/strings.xml diff --git a/packages/SystemUI/res/values-mcc311-mnc480/strings.xml b/packages/SettingsLib/res/values-mcc311-mnc480/strings.xml similarity index 100% rename from packages/SystemUI/res/values-mcc311-mnc480/strings.xml rename to packages/SettingsLib/res/values-mcc311-mnc480/strings.xml diff --git a/packages/SettingsLib/res/values/config.xml b/packages/SettingsLib/res/values/config.xml index 332d6c7bc0fad..45253bb7944af 100644 --- a/packages/SettingsLib/res/values/config.xml +++ b/packages/SettingsLib/res/values/config.xml @@ -21,4 +21,11 @@ 7500000 + + + false + + + false \ No newline at end of file diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml index 4e9721218a029..6f6b477787e93 100644 --- a/packages/SettingsLib/res/values/strings.xml +++ b/packages/SettingsLib/res/values/strings.xml @@ -1404,4 +1404,79 @@ On Off + + + Carrier network changing + + + 3G + + + EDGE + + + 1X + + + GPRS + + + H + + + H+ + + + 4G + + + 4G+ + + + LTE + + + LTE+ + + + <i>5G <small>E</small></i> + + + 5G + + + 5G+ + + + Mobile data off + + + Not set to use data + + + No phone. + + Phone one bar. + + Phone two bars. + + Phone three bars. + + Phone signal full. + + + No data. + + Data one bar. + + Data two bars. + + Data three bars. + + Data signal full. + + + Ethernet disconnected. + + Ethernet connected. diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessibilityContentDescriptions.java b/packages/SettingsLib/src/com/android/settingslib/AccessibilityContentDescriptions.java similarity index 50% rename from packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessibilityContentDescriptions.java rename to packages/SettingsLib/src/com/android/settingslib/AccessibilityContentDescriptions.java index 8f86e2d300daf..45028ff8f4f91 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessibilityContentDescriptions.java +++ b/packages/SettingsLib/src/com/android/settingslib/AccessibilityContentDescriptions.java @@ -1,8 +1,20 @@ -// Copyright 2011 Google Inc. All Rights Reserved. +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ -package com.android.systemui.statusbar.policy; - -import com.android.systemui.R; +package com.android.settingslib; /** * Content descriptions for accessibility support. @@ -10,7 +22,7 @@ import com.android.systemui.R; public class AccessibilityContentDescriptions { private AccessibilityContentDescriptions() {} - static final int[] PHONE_SIGNAL_STRENGTH = { + public static final int[] PHONE_SIGNAL_STRENGTH = { R.string.accessibility_no_phone, R.string.accessibility_phone_one_bar, R.string.accessibility_phone_two_bars, @@ -18,7 +30,7 @@ public class AccessibilityContentDescriptions { R.string.accessibility_phone_signal_full }; - static final int[] DATA_CONNECTION_STRENGTH = { + public static final int[] DATA_CONNECTION_STRENGTH = { R.string.accessibility_no_data, R.string.accessibility_data_one_bar, R.string.accessibility_data_two_bars, @@ -26,7 +38,7 @@ public class AccessibilityContentDescriptions { R.string.accessibility_data_signal_full }; - static final int[] WIFI_CONNECTION_STRENGTH = { + public static final int[] WIFI_CONNECTION_STRENGTH = { R.string.accessibility_no_wifi, R.string.accessibility_wifi_one_bar, R.string.accessibility_wifi_two_bars, @@ -34,9 +46,9 @@ public class AccessibilityContentDescriptions { R.string.accessibility_wifi_signal_full }; - static final int WIFI_NO_CONNECTION = R.string.accessibility_no_wifi; + public static final int WIFI_NO_CONNECTION = R.string.accessibility_no_wifi; - static final int[] ETHERNET_CONNECTION_VALUES = { + public static final int[] ETHERNET_CONNECTION_VALUES = { R.string.accessibility_ethernet_disconnected, R.string.accessibility_ethernet_connected, }; diff --git a/packages/SettingsLib/src/com/android/settingslib/SignalIcon.java b/packages/SettingsLib/src/com/android/settingslib/SignalIcon.java new file mode 100644 index 0000000000000..bc0c6f36e96ad --- /dev/null +++ b/packages/SettingsLib/src/com/android/settingslib/SignalIcon.java @@ -0,0 +1,224 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.settingslib; + +import java.text.SimpleDateFormat; +import java.util.Objects; + +/** + * Icons and states for SysUI and Settings. + */ +public class SignalIcon { + + /** + * Holds icons for a given state. Arrays are generally indexed as inet + * state (full connectivity or not) first, and second dimension as + * signal strength. + */ + public static class IconGroup { + public final int[][] sbIcons; + public final int[][] qsIcons; + public final int[] contentDesc; + public final int sbNullState; + public final int qsNullState; + public final int sbDiscState; + public final int qsDiscState; + public final int discContentDesc; + // For logging. + public final String name; + + public IconGroup(String name, int[][] sbIcons, int[][] qsIcons, int[] contentDesc, + int sbNullState, int qsNullState, int sbDiscState, int qsDiscState, + int discContentDesc) { + this.name = name; + this.sbIcons = sbIcons; + this.qsIcons = qsIcons; + this.contentDesc = contentDesc; + this.sbNullState = sbNullState; + this.qsNullState = qsNullState; + this.sbDiscState = sbDiscState; + this.qsDiscState = qsDiscState; + this.discContentDesc = discContentDesc; + } + + @Override + public String toString() { + return "IconGroup(" + name + ")"; + } + } + + /** + * Holds states for SysUI. + */ + public static class State { + // No locale as it's only used for logging purposes + private static SimpleDateFormat sSDF = new SimpleDateFormat("MM-dd HH:mm:ss.SSS"); + public boolean connected; + public boolean enabled; + public boolean activityIn; + public boolean activityOut; + public int level; + public IconGroup iconGroup; + public int inetCondition; + public int rssi; // Only for logging. + + // Not used for comparison, just used for logging. + public long time; + + /** + * Generates a copy of the source state. + */ + public void copyFrom(State state) { + connected = state.connected; + enabled = state.enabled; + level = state.level; + iconGroup = state.iconGroup; + inetCondition = state.inetCondition; + activityIn = state.activityIn; + activityOut = state.activityOut; + rssi = state.rssi; + time = state.time; + } + + @Override + public String toString() { + if (time != 0) { + StringBuilder builder = new StringBuilder(); + toString(builder); + return builder.toString(); + } else { + return "Empty " + getClass().getSimpleName(); + } + } + + protected void toString(StringBuilder builder) { + builder.append("connected=").append(connected).append(',') + .append("enabled=").append(enabled).append(',') + .append("level=").append(level).append(',') + .append("inetCondition=").append(inetCondition).append(',') + .append("iconGroup=").append(iconGroup).append(',') + .append("activityIn=").append(activityIn).append(',') + .append("activityOut=").append(activityOut).append(',') + .append("rssi=").append(rssi).append(',') + .append("lastModified=").append(sSDF.format(time)); + } + + @Override + public boolean equals(Object o) { + if (!o.getClass().equals(getClass())) { + return false; + } + State other = (State) o; + return other.connected == connected + && other.enabled == enabled + && other.level == level + && other.inetCondition == inetCondition + && other.iconGroup == iconGroup + && other.activityIn == activityIn + && other.activityOut == activityOut + && other.rssi == rssi; + } + } + + /** + * Holds icons for a given MobileState. + */ + public static class MobileIconGroup extends IconGroup { + public final int dataContentDescription; // mContentDescriptionDataType + public final int dataType; + public final boolean isWide; + public final int qsDataType; + + public MobileIconGroup(String name, int[][] sbIcons, int[][] qsIcons, int[] contentDesc, + int sbNullState, int qsNullState, int sbDiscState, int qsDiscState, + int discContentDesc, int dataContentDesc, int dataType, boolean isWide) { + super(name, sbIcons, qsIcons, contentDesc, sbNullState, qsNullState, sbDiscState, + qsDiscState, discContentDesc); + this.dataContentDescription = dataContentDesc; + this.dataType = dataType; + this.isWide = isWide; + this.qsDataType = dataType; // TODO: remove this field + } + } + + /** + * Holds mobile states for SysUI. + */ + public static class MobileState extends State { + public String networkName; + public String networkNameData; + public boolean dataSim; + public boolean dataConnected; + public boolean isEmergency; + public boolean airplaneMode; + public boolean carrierNetworkChangeMode; + public boolean isDefault; + public boolean userSetup; + public boolean roaming; + public boolean defaultDataOff; // Tracks the on/off state of the defaultDataSubscription + + @Override + public void copyFrom(State s) { + super.copyFrom(s); + MobileState state = (MobileState) s; + dataSim = state.dataSim; + networkName = state.networkName; + networkNameData = state.networkNameData; + dataConnected = state.dataConnected; + isDefault = state.isDefault; + isEmergency = state.isEmergency; + airplaneMode = state.airplaneMode; + carrierNetworkChangeMode = state.carrierNetworkChangeMode; + userSetup = state.userSetup; + roaming = state.roaming; + defaultDataOff = state.defaultDataOff; + } + + @Override + protected void toString(StringBuilder builder) { + super.toString(builder); + builder.append(','); + builder.append("dataSim=").append(dataSim).append(','); + builder.append("networkName=").append(networkName).append(','); + builder.append("networkNameData=").append(networkNameData).append(','); + builder.append("dataConnected=").append(dataConnected).append(','); + builder.append("roaming=").append(roaming).append(','); + builder.append("isDefault=").append(isDefault).append(','); + builder.append("isEmergency=").append(isEmergency).append(','); + builder.append("airplaneMode=").append(airplaneMode).append(','); + builder.append("carrierNetworkChangeMode=").append(carrierNetworkChangeMode) + .append(','); + builder.append("userSetup=").append(userSetup).append(','); + builder.append("defaultDataOff=").append(defaultDataOff); + } + + @Override + public boolean equals(Object o) { + return super.equals(o) + && Objects.equals(((MobileState) o).networkName, networkName) + && Objects.equals(((MobileState) o).networkNameData, networkNameData) + && ((MobileState) o).dataSim == dataSim + && ((MobileState) o).dataConnected == dataConnected + && ((MobileState) o).isEmergency == isEmergency + && ((MobileState) o).airplaneMode == airplaneMode + && ((MobileState) o).carrierNetworkChangeMode == carrierNetworkChangeMode + && ((MobileState) o).userSetup == userSetup + && ((MobileState) o).isDefault == isDefault + && ((MobileState) o).roaming == roaming + && ((MobileState) o).defaultDataOff == defaultDataOff; + } + } +} diff --git a/packages/SettingsLib/src/com/android/settingslib/mobile/MobileMappings.java b/packages/SettingsLib/src/com/android/settingslib/mobile/MobileMappings.java index 56898605ec940..09f285b445e94 100644 --- a/packages/SettingsLib/src/com/android/settingslib/mobile/MobileMappings.java +++ b/packages/SettingsLib/src/com/android/settingslib/mobile/MobileMappings.java @@ -15,10 +15,21 @@ */ package com.android.settingslib.mobile; +import android.content.Context; +import android.content.res.Resources; +import android.os.PersistableBundle; import android.telephony.Annotation; +import android.telephony.CarrierConfigManager; +import android.telephony.SubscriptionManager; import android.telephony.TelephonyDisplayInfo; import android.telephony.TelephonyManager; +import com.android.settingslib.R; +import com.android.settingslib.SignalIcon.MobileIconGroup; + +import java.util.HashMap; +import java.util.Map; + /** * Holds the utility functions to create the RAT to MobileIconGroup mappings. */ @@ -60,4 +71,165 @@ public class MobileMappings { return "unsupported"; } } + + /** + * Produce the default MobileIconGroup. + */ + public static MobileIconGroup getDefaultIcons(Config config) { + if (!config.showAtLeast3G) { + return TelephonyIcons.G; + } else { + return TelephonyIcons.THREE_G; + } + } + + /** + * Produce a mapping of data network types to icon groups for simple and quick use in + * updateTelephony. + */ + public static Map mapIconSets(Config config) { + final Map networkToIconLookup = new HashMap<>(); + + networkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_EVDO_0), + TelephonyIcons.THREE_G); + networkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_EVDO_A), + TelephonyIcons.THREE_G); + networkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_EVDO_B), + TelephonyIcons.THREE_G); + networkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_EHRPD), + TelephonyIcons.THREE_G); + if (config.show4gFor3g) { + networkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_UMTS), + TelephonyIcons.FOUR_G); + } else { + networkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_UMTS), + TelephonyIcons.THREE_G); + } + networkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_TD_SCDMA), + TelephonyIcons.THREE_G); + + if (!config.showAtLeast3G) { + networkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_UNKNOWN), + TelephonyIcons.UNKNOWN); + networkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_EDGE), + TelephonyIcons.E); + networkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_CDMA), + TelephonyIcons.ONE_X); + networkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_1xRTT), + TelephonyIcons.ONE_X); + } else { + networkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_UNKNOWN), + TelephonyIcons.THREE_G); + networkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_EDGE), + TelephonyIcons.THREE_G); + networkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_CDMA), + TelephonyIcons.THREE_G); + networkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_1xRTT), + TelephonyIcons.THREE_G); + } + + MobileIconGroup hGroup = TelephonyIcons.THREE_G; + MobileIconGroup hPlusGroup = TelephonyIcons.THREE_G; + if (config.show4gFor3g) { + hGroup = TelephonyIcons.FOUR_G; + hPlusGroup = TelephonyIcons.FOUR_G; + } else if (config.hspaDataDistinguishable) { + hGroup = TelephonyIcons.H; + hPlusGroup = TelephonyIcons.H_PLUS; + } + + networkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_HSDPA), hGroup); + networkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_HSUPA), hGroup); + networkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_HSPA), hGroup); + networkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_HSPAP), hPlusGroup); + + if (config.show4gForLte) { + networkToIconLookup.put(toIconKey( + TelephonyManager.NETWORK_TYPE_LTE), + TelephonyIcons.FOUR_G); + if (config.hideLtePlus) { + networkToIconLookup.put(toDisplayIconKey( + TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_CA), + TelephonyIcons.FOUR_G); + } else { + networkToIconLookup.put(toDisplayIconKey( + TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_CA), + TelephonyIcons.FOUR_G_PLUS); + } + } else { + networkToIconLookup.put(toIconKey( + TelephonyManager.NETWORK_TYPE_LTE), + TelephonyIcons.LTE); + if (config.hideLtePlus) { + networkToIconLookup.put(toDisplayIconKey( + TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_CA), + TelephonyIcons.LTE); + } else { + networkToIconLookup.put(toDisplayIconKey( + TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_CA), + TelephonyIcons.LTE_PLUS); + } + } + networkToIconLookup.put(toIconKey( + TelephonyManager.NETWORK_TYPE_IWLAN), + TelephonyIcons.WFC); + networkToIconLookup.put(toDisplayIconKey( + TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO), + TelephonyIcons.LTE_CA_5G_E); + networkToIconLookup.put(toDisplayIconKey( + TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA), + TelephonyIcons.NR_5G); + networkToIconLookup.put(toDisplayIconKey( + TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE), + TelephonyIcons.NR_5G_PLUS); + networkToIconLookup.put(toIconKey( + TelephonyManager.NETWORK_TYPE_NR), + TelephonyIcons.NR_5G); + return networkToIconLookup; + } + + /** + * Wrapper class of system configs and Carrier configs. + */ + public static class Config { + public boolean showAtLeast3G = false; + public boolean show4gFor3g = false; + public boolean alwaysShowCdmaRssi = false; + public boolean show4gForLte = false; + public boolean hideLtePlus = false; + public boolean hspaDataDistinguishable; + public boolean alwaysShowDataRatIcon = false; + + /** + * Reads the latest configs. + */ + public static Config readConfig(Context context) { + Config config = new Config(); + Resources res = context.getResources(); + + config.showAtLeast3G = res.getBoolean(R.bool.config_showMin3G); + config.alwaysShowCdmaRssi = + res.getBoolean(com.android.internal.R.bool.config_alwaysUseCdmaRssi); + config.hspaDataDistinguishable = + res.getBoolean(R.bool.config_hspa_data_distinguishable); + + CarrierConfigManager configMgr = (CarrierConfigManager) + context.getSystemService(Context.CARRIER_CONFIG_SERVICE); + // Handle specific carrier config values for the default data SIM + int defaultDataSubId = SubscriptionManager.from(context) + .getDefaultDataSubscriptionId(); + PersistableBundle b = configMgr.getConfigForSubId(defaultDataSubId); + if (b != null) { + config.alwaysShowDataRatIcon = b.getBoolean( + CarrierConfigManager.KEY_ALWAYS_SHOW_DATA_RAT_ICON_BOOL); + config.show4gForLte = b.getBoolean( + CarrierConfigManager.KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL); + config.show4gFor3g = b.getBoolean( + CarrierConfigManager.KEY_SHOW_4G_FOR_3G_DATA_ICON_BOOL); + config.hideLtePlus = b.getBoolean( + CarrierConfigManager.KEY_HIDE_LTE_PLUS_DATA_ICON_BOOL); + } + return config; + } + } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java b/packages/SettingsLib/src/com/android/settingslib/mobile/TelephonyIcons.java similarity index 74% rename from packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java rename to packages/SettingsLib/src/com/android/settingslib/mobile/TelephonyIcons.java index d9591cf5f5e93..c2613a5f4a4a1 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java +++ b/packages/SettingsLib/src/com/android/settingslib/mobile/TelephonyIcons.java @@ -14,33 +14,37 @@ * limitations under the License. */ -package com.android.systemui.statusbar.policy; +package com.android.settingslib.mobile; -import com.android.systemui.R; -import com.android.systemui.statusbar.policy.MobileSignalController.MobileIconGroup; +import com.android.settingslib.AccessibilityContentDescriptions; +import com.android.settingslib.R; +import com.android.settingslib.SignalIcon.MobileIconGroup; import java.util.HashMap; import java.util.Map; -class TelephonyIcons { +/** + * Telephony related icons and strings for SysUI and Settings. + */ +public class TelephonyIcons { //***** Data connection icons - static final int FLIGHT_MODE_ICON = R.drawable.stat_sys_airplane_mode; + public static final int FLIGHT_MODE_ICON = R.drawable.stat_sys_airplane_mode; - static final int ICON_LTE = R.drawable.ic_lte_mobiledata; - static final int ICON_LTE_PLUS = R.drawable.ic_lte_plus_mobiledata; - static final int ICON_G = R.drawable.ic_g_mobiledata; - static final int ICON_E = R.drawable.ic_e_mobiledata; - static final int ICON_H = R.drawable.ic_h_mobiledata; - static final int ICON_H_PLUS = R.drawable.ic_h_plus_mobiledata; - static final int ICON_3G = R.drawable.ic_3g_mobiledata; - static final int ICON_4G = R.drawable.ic_4g_mobiledata; - static final int ICON_4G_PLUS = R.drawable.ic_4g_plus_mobiledata; - static final int ICON_5G_E = R.drawable.ic_5g_e_mobiledata; - static final int ICON_1X = R.drawable.ic_1x_mobiledata; - static final int ICON_5G = R.drawable.ic_5g_mobiledata; - static final int ICON_5G_PLUS = R.drawable.ic_5g_plus_mobiledata; + public static final int ICON_LTE = R.drawable.ic_lte_mobiledata; + public static final int ICON_LTE_PLUS = R.drawable.ic_lte_plus_mobiledata; + public static final int ICON_G = R.drawable.ic_g_mobiledata; + public static final int ICON_E = R.drawable.ic_e_mobiledata; + public static final int ICON_H = R.drawable.ic_h_mobiledata; + public static final int ICON_H_PLUS = R.drawable.ic_h_plus_mobiledata; + public static final int ICON_3G = R.drawable.ic_3g_mobiledata; + public static final int ICON_4G = R.drawable.ic_4g_mobiledata; + public static final int ICON_4G_PLUS = R.drawable.ic_4g_plus_mobiledata; + public static final int ICON_5G_E = R.drawable.ic_5g_e_mobiledata; + public static final int ICON_1X = R.drawable.ic_1x_mobiledata; + public static final int ICON_5G = R.drawable.ic_5g_mobiledata; + public static final int ICON_5G_PLUS = R.drawable.ic_5g_plus_mobiledata; - static final MobileIconGroup CARRIER_NETWORK_CHANGE = new MobileIconGroup( + public static final MobileIconGroup CARRIER_NETWORK_CHANGE = new MobileIconGroup( "CARRIER_NETWORK_CHANGE", null, null, @@ -53,7 +57,7 @@ class TelephonyIcons { 0, false); - static final MobileIconGroup THREE_G = new MobileIconGroup( + public static final MobileIconGroup THREE_G = new MobileIconGroup( "3G", null, null, @@ -66,7 +70,7 @@ class TelephonyIcons { TelephonyIcons.ICON_3G, true); - static final MobileIconGroup WFC = new MobileIconGroup( + public static final MobileIconGroup WFC = new MobileIconGroup( "WFC", null, null, @@ -77,7 +81,7 @@ class TelephonyIcons { AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH[0], 0, 0, false); - static final MobileIconGroup UNKNOWN = new MobileIconGroup( + public static final MobileIconGroup UNKNOWN = new MobileIconGroup( "Unknown", null, null, @@ -88,7 +92,7 @@ class TelephonyIcons { AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH[0], 0, 0, false); - static final MobileIconGroup E = new MobileIconGroup( + public static final MobileIconGroup E = new MobileIconGroup( "E", null, null, @@ -101,7 +105,7 @@ class TelephonyIcons { TelephonyIcons.ICON_E, false); - static final MobileIconGroup ONE_X = new MobileIconGroup( + public static final MobileIconGroup ONE_X = new MobileIconGroup( "1X", null, null, @@ -114,7 +118,7 @@ class TelephonyIcons { TelephonyIcons.ICON_1X, true); - static final MobileIconGroup G = new MobileIconGroup( + public static final MobileIconGroup G = new MobileIconGroup( "G", null, null, @@ -127,7 +131,7 @@ class TelephonyIcons { TelephonyIcons.ICON_G, false); - static final MobileIconGroup H = new MobileIconGroup( + public static final MobileIconGroup H = new MobileIconGroup( "H", null, null, @@ -140,7 +144,7 @@ class TelephonyIcons { TelephonyIcons.ICON_H, false); - static final MobileIconGroup H_PLUS = new MobileIconGroup( + public static final MobileIconGroup H_PLUS = new MobileIconGroup( "H+", null, null, @@ -153,7 +157,7 @@ class TelephonyIcons { TelephonyIcons.ICON_H_PLUS, false); - static final MobileIconGroup FOUR_G = new MobileIconGroup( + public static final MobileIconGroup FOUR_G = new MobileIconGroup( "4G", null, null, @@ -166,12 +170,12 @@ class TelephonyIcons { TelephonyIcons.ICON_4G, true); - static final MobileIconGroup FOUR_G_PLUS = new MobileIconGroup( + public static final MobileIconGroup FOUR_G_PLUS = new MobileIconGroup( "4G+", null, null, AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH, - 0,0, + 0, 0, 0, 0, AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH[0], @@ -179,7 +183,7 @@ class TelephonyIcons { TelephonyIcons.ICON_4G_PLUS, true); - static final MobileIconGroup LTE = new MobileIconGroup( + public static final MobileIconGroup LTE = new MobileIconGroup( "LTE", null, null, @@ -192,7 +196,7 @@ class TelephonyIcons { TelephonyIcons.ICON_LTE, true); - static final MobileIconGroup LTE_PLUS = new MobileIconGroup( + public static final MobileIconGroup LTE_PLUS = new MobileIconGroup( "LTE+", null, null, @@ -205,7 +209,7 @@ class TelephonyIcons { TelephonyIcons.ICON_LTE_PLUS, true); - static final MobileIconGroup LTE_CA_5G_E = new MobileIconGroup( + public static final MobileIconGroup LTE_CA_5G_E = new MobileIconGroup( "5Ge", null, null, @@ -218,7 +222,7 @@ class TelephonyIcons { TelephonyIcons.ICON_5G_E, true); - static final MobileIconGroup NR_5G = new MobileIconGroup( + public static final MobileIconGroup NR_5G = new MobileIconGroup( "5G", null, null, @@ -232,7 +236,7 @@ class TelephonyIcons { TelephonyIcons.ICON_5G, true); - static final MobileIconGroup NR_5G_PLUS = new MobileIconGroup( + public static final MobileIconGroup NR_5G_PLUS = new MobileIconGroup( "5G_PLUS", null, null, @@ -246,7 +250,7 @@ class TelephonyIcons { TelephonyIcons.ICON_5G_PLUS, true); - static final MobileIconGroup DATA_DISABLED = new MobileIconGroup( + public static final MobileIconGroup DATA_DISABLED = new MobileIconGroup( "DataDisabled", null, null, @@ -259,7 +263,7 @@ class TelephonyIcons { 0, false); - static final MobileIconGroup NOT_DEFAULT_DATA = new MobileIconGroup( + public static final MobileIconGroup NOT_DEFAULT_DATA = new MobileIconGroup( "NotDefaultData", null, null, @@ -276,7 +280,7 @@ class TelephonyIcons { // in QSCarrier#hasValidTypeContentDescription /** Mapping icon name(lower case) to the icon object. */ - static final Map ICON_NAME_TO_ICON; + public static final Map ICON_NAME_TO_ICON; static { ICON_NAME_TO_ICON = new HashMap<>(); ICON_NAME_TO_ICON.put("carrier_network_change", CARRIER_NETWORK_CHANGE); diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index 2bf513c604bd7..53b5de2b2d473 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -24,10 +24,6 @@ certain GPU's and thus can be turned off with only minimal visual impact. --> true - - false - com.android.systemui.statusbar.phone.StatusBar @@ -56,9 +52,6 @@ false - - false - true diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index 7989b7a08fc85..ce481baff89b6 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -450,28 +450,6 @@ Battery percentage unknown. - - No phone. - - Phone one bar. - - Phone two bars. - - Phone three bars. - - Phone signal full. - - - No data. - - Data one bar. - - Data two bars. - - Data three bars. - - Data signal full. - Connected to %s. @@ -493,11 +471,6 @@ WiMAX signal full. - - Ethernet disconnected. - - Ethernet connected. - No signal. @@ -522,54 +495,16 @@ Connecting. - - GPRS - HSPA - - 3G - - - H - - - H+ - - - 4G - - - 4G+ - - - LTE - - - LTE+ - 5Ge - - <i>5G <small>E</small></i> - - - 5G - - - 5G+ - - - 1X Roaming - - EDGE - Wi-Fi @@ -582,12 +517,6 @@ Mobile Data On - - Mobile data off - - - Not set to use data - Off @@ -603,9 +532,6 @@ No SIM card. - - Carrier network changing - Open battery details diff --git a/packages/SystemUI/src/com/android/systemui/qs/carrier/QSCarrier.java b/packages/SystemUI/src/com/android/systemui/qs/carrier/QSCarrier.java index ad275f1fa6ab3..39b92dc4f6628 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/carrier/QSCarrier.java +++ b/packages/SystemUI/src/com/android/systemui/qs/carrier/QSCarrier.java @@ -116,9 +116,11 @@ public class QSCarrier extends LinearLayout { return TextUtils.equals(typeContentDescription, mContext.getString(R.string.data_connection_no_internet)) || TextUtils.equals(typeContentDescription, - mContext.getString(R.string.cell_data_off_content_description)) + mContext.getString( + com.android.settingslib.R.string.cell_data_off_content_description)) || TextUtils.equals(typeContentDescription, - mContext.getString(R.string.not_default_data_content_description)); + mContext.getString( + com.android.settingslib.R.string.not_default_data_content_description)); } public void setCarrierText(CharSequence text) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/EthernetSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/EthernetSignalController.java index 4fbf5ff3d35fc..2eff04eb66f66 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/EthernetSignalController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/EthernetSignalController.java @@ -18,6 +18,9 @@ package com.android.systemui.statusbar.policy; import android.content.Context; import android.net.NetworkCapabilities; +import com.android.settingslib.AccessibilityContentDescriptions; +import com.android.settingslib.SignalIcon.IconGroup; +import com.android.settingslib.SignalIcon.State; import com.android.systemui.statusbar.policy.NetworkController.IconState; import com.android.systemui.statusbar.policy.NetworkController.SignalCallback; @@ -25,7 +28,7 @@ import java.util.BitSet; public class EthernetSignalController extends - SignalController { + SignalController { public EthernetSignalController(Context context, CallbackHandler callbackHandler, NetworkControllerImpl networkController) { @@ -57,7 +60,7 @@ public class EthernetSignalController extends } @Override - public SignalController.State cleanState() { - return new SignalController.State(); + public State cleanState() { + return new State(); } } 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 dd9165d0697b8..947b91825f292 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java @@ -15,9 +15,9 @@ */ package com.android.systemui.statusbar.policy; +import static com.android.settingslib.mobile.MobileMappings.getDefaultIcons; import static com.android.settingslib.mobile.MobileMappings.getIconKey; -import static com.android.settingslib.mobile.MobileMappings.toDisplayIconKey; -import static com.android.settingslib.mobile.MobileMappings.toIconKey; +import static com.android.settingslib.mobile.MobileMappings.mapIconSets; import android.content.Context; import android.content.Intent; @@ -39,25 +39,28 @@ import android.text.TextUtils; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; +import com.android.settingslib.SignalIcon.MobileIconGroup; +import com.android.settingslib.SignalIcon.MobileState; import com.android.settingslib.Utils; import com.android.settingslib.graph.SignalDrawable; +import com.android.settingslib.mobile.MobileMappings.Config; import com.android.settingslib.mobile.MobileStatusTracker; import com.android.settingslib.mobile.MobileStatusTracker.SubscriptionDefaults; +import com.android.settingslib.mobile.TelephonyIcons; import com.android.settingslib.net.SignalStrengthUtil; import com.android.systemui.R; import com.android.systemui.statusbar.policy.NetworkController.IconState; import com.android.systemui.statusbar.policy.NetworkController.SignalCallback; -import com.android.systemui.statusbar.policy.NetworkControllerImpl.Config; import java.io.PrintWriter; import java.util.BitSet; -import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Objects; -public class MobileSignalController extends SignalController< - MobileSignalController.MobileState, MobileSignalController.MobileIconGroup> { +/** + * Monitors the mobile signal changes and update the SysUI icons. + */ +public class MobileSignalController extends SignalController { private final TelephonyManager mPhone; private final SubscriptionDefaults mDefaults; private final String mNetworkNameDefault; @@ -66,7 +69,8 @@ public class MobileSignalController extends SignalController< // Save entire info for logging, we only use the id. final SubscriptionInfo mSubscriptionInfo; // @VisibleForDemoMode - final Map mNetworkToIconLookup; + Map mNetworkToIconLookup; + // Since some pieces of the phone state are interdependent we store it locally, // this could potentially become part of MobileState for simplification/complication // of code. @@ -93,7 +97,6 @@ public class MobileSignalController extends SignalController< super("MobileSignalController(" + info.getSubscriptionId() + ")", context, NetworkCapabilities.TRANSPORT_CELLULAR, callbackHandler, networkController); - mNetworkToIconLookup = new HashMap<>(); mConfig = config; mPhone = phone; mDefaults = defaults; @@ -102,7 +105,10 @@ public class MobileSignalController extends SignalController< .toString(); mNetworkNameDefault = getTextIfExists( com.android.internal.R.string.lockscreen_carrier_default).toString(); - mapIconSets(); + + mNetworkToIconLookup = mapIconSets(mConfig); + mDefaultIcons = getDefaultIcons(mConfig); + String networkName = info.getCarrierName() != null ? info.getCarrierName().toString() : mNetworkNameDefault; mLastState.networkName = mCurrentState.networkName = networkName; @@ -139,7 +145,8 @@ public class MobileSignalController extends SignalController< public void setConfiguration(Config config) { mConfig = config; updateInflateSignalStrength(); - mapIconSets(); + mNetworkToIconLookup = mapIconSets(mConfig); + mDefaultIcons = getDefaultIcons(mConfig); updateTelephony(); } @@ -187,113 +194,6 @@ public class MobileSignalController extends SignalController< mContext.getContentResolver().unregisterContentObserver(mObserver); } - /** - * Produce a mapping of data network types to icon groups for simple and quick use in - * updateTelephony. - */ - private void mapIconSets() { - mNetworkToIconLookup.clear(); - - mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_EVDO_0), - TelephonyIcons.THREE_G); - mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_EVDO_A), - TelephonyIcons.THREE_G); - mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_EVDO_B), - TelephonyIcons.THREE_G); - mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_EHRPD), - TelephonyIcons.THREE_G); - if (mConfig.show4gFor3g) { - mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_UMTS), - TelephonyIcons.FOUR_G); - } else { - mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_UMTS), - TelephonyIcons.THREE_G); - } - mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_TD_SCDMA), - TelephonyIcons.THREE_G); - - if (!mConfig.showAtLeast3G) { - mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_UNKNOWN), - TelephonyIcons.UNKNOWN); - mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_EDGE), - TelephonyIcons.E); - mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_CDMA), - TelephonyIcons.ONE_X); - mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_1xRTT), - TelephonyIcons.ONE_X); - - mDefaultIcons = TelephonyIcons.G; - } else { - mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_UNKNOWN), - TelephonyIcons.THREE_G); - mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_EDGE), - TelephonyIcons.THREE_G); - mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_CDMA), - TelephonyIcons.THREE_G); - mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_1xRTT), - TelephonyIcons.THREE_G); - mDefaultIcons = TelephonyIcons.THREE_G; - } - - MobileIconGroup hGroup = TelephonyIcons.THREE_G; - MobileIconGroup hPlusGroup = TelephonyIcons.THREE_G; - if (mConfig.show4gFor3g) { - hGroup = TelephonyIcons.FOUR_G; - hPlusGroup = TelephonyIcons.FOUR_G; - } else if (mConfig.hspaDataDistinguishable) { - hGroup = TelephonyIcons.H; - hPlusGroup = TelephonyIcons.H_PLUS; - } - - mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_HSDPA), hGroup); - mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_HSUPA), hGroup); - mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_HSPA), hGroup); - mNetworkToIconLookup.put(toIconKey(TelephonyManager.NETWORK_TYPE_HSPAP), hPlusGroup); - - if (mConfig.show4gForLte) { - mNetworkToIconLookup.put(toIconKey( - TelephonyManager.NETWORK_TYPE_LTE), - TelephonyIcons.FOUR_G); - if (mConfig.hideLtePlus) { - mNetworkToIconLookup.put(toDisplayIconKey( - TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_CA), - TelephonyIcons.FOUR_G); - } else { - mNetworkToIconLookup.put(toDisplayIconKey( - TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_CA), - TelephonyIcons.FOUR_G_PLUS); - } - } else { - mNetworkToIconLookup.put(toIconKey( - TelephonyManager.NETWORK_TYPE_LTE), - TelephonyIcons.LTE); - if (mConfig.hideLtePlus) { - mNetworkToIconLookup.put(toDisplayIconKey( - TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_CA), - TelephonyIcons.LTE); - } else { - mNetworkToIconLookup.put(toDisplayIconKey( - TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_CA), - TelephonyIcons.LTE_PLUS); - } - } - mNetworkToIconLookup.put(toIconKey( - TelephonyManager.NETWORK_TYPE_IWLAN), - TelephonyIcons.WFC); - mNetworkToIconLookup.put(toDisplayIconKey( - TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO), - TelephonyIcons.LTE_CA_5G_E); - mNetworkToIconLookup.put(toDisplayIconKey( - TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA), - TelephonyIcons.NR_5G); - mNetworkToIconLookup.put(toDisplayIconKey( - TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE), - TelephonyIcons.NR_5G_PLUS); - mNetworkToIconLookup.put(toIconKey( - TelephonyManager.NETWORK_TYPE_NR), - TelephonyIcons.NR_5G); - } - private void updateInflateSignalStrength() { mInflateSignalStrengths = SignalStrengthUtil.shouldInflateSignalStrength(mContext, mSubscriptionInfo.getSubscriptionId()); @@ -339,7 +239,7 @@ public class MobileSignalController extends SignalController< MobileIconGroup icons = getIcons(); String contentDescription = getTextIfExists(getContentDescription()).toString(); - CharSequence dataContentDescriptionHtml = getTextIfExists(icons.mDataContentDescription); + CharSequence dataContentDescriptionHtml = getTextIfExists(icons.dataContentDescription); //TODO: Hacky // The data content description can sometimes be shown in a text view and might come to us @@ -363,7 +263,7 @@ public class MobileSignalController extends SignalController< CharSequence description = null; // Only send data sim callbacks to QS. if (mCurrentState.dataSim) { - qsTypeIcon = (showDataIcon || mConfig.alwaysShowDataRatIcon) ? icons.mQsDataType : 0; + qsTypeIcon = (showDataIcon || mConfig.alwaysShowDataRatIcon) ? icons.qsDataType : 0; qsIcon = new IconState(mCurrentState.enabled && !mCurrentState.isEmergency, getQsCurrentIconId(), contentDescription); description = mCurrentState.isEmergency ? null : mCurrentState.networkName; @@ -375,10 +275,10 @@ public class MobileSignalController extends SignalController< && !mCurrentState.carrierNetworkChangeMode && mCurrentState.activityOut; showDataIcon &= mCurrentState.isDefault || dataDisabled; - int typeIcon = (showDataIcon || mConfig.alwaysShowDataRatIcon) ? icons.mDataType : 0; + int typeIcon = (showDataIcon || mConfig.alwaysShowDataRatIcon) ? icons.dataType : 0; callback.setMobileDataIndicators(statusIcon, qsIcon, typeIcon, qsTypeIcon, activityIn, activityOut, dataContentDescription, dataContentDescriptionHtml, - description, icons.mIsWide, mSubscriptionInfo.getSubscriptionId(), + description, icons.isWide, mSubscriptionInfo.getSubscriptionId(), mCurrentState.roaming); } @@ -610,87 +510,4 @@ public class MobileSignalController extends SignalController< pw.println(" mInflateSignalStrengths=" + mInflateSignalStrengths + ","); pw.println(" isDataDisabled=" + isDataDisabled() + ","); } - - static class MobileIconGroup extends SignalController.IconGroup { - final int mDataContentDescription; // mContentDescriptionDataType - final int mDataType; - final boolean mIsWide; - final int mQsDataType; - - public MobileIconGroup(String name, int[][] sbIcons, int[][] qsIcons, int[] contentDesc, - int sbNullState, int qsNullState, int sbDiscState, int qsDiscState, - int discContentDesc, int dataContentDesc, int dataType, boolean isWide) { - super(name, sbIcons, qsIcons, contentDesc, sbNullState, qsNullState, sbDiscState, - qsDiscState, discContentDesc); - mDataContentDescription = dataContentDesc; - mDataType = dataType; - mIsWide = isWide; - mQsDataType = dataType; // TODO: remove this field - } - } - - static class MobileState extends SignalController.State { - String networkName; - String networkNameData; - boolean dataSim; - boolean dataConnected; - boolean isEmergency; - boolean airplaneMode; - boolean carrierNetworkChangeMode; - boolean isDefault; - boolean userSetup; - boolean roaming; - boolean defaultDataOff; // Tracks the on/off state of the defaultDataSubscription - - @Override - public void copyFrom(State s) { - super.copyFrom(s); - MobileState state = (MobileState) s; - dataSim = state.dataSim; - networkName = state.networkName; - networkNameData = state.networkNameData; - dataConnected = state.dataConnected; - isDefault = state.isDefault; - isEmergency = state.isEmergency; - airplaneMode = state.airplaneMode; - carrierNetworkChangeMode = state.carrierNetworkChangeMode; - userSetup = state.userSetup; - roaming = state.roaming; - defaultDataOff = state.defaultDataOff; - } - - @Override - protected void toString(StringBuilder builder) { - super.toString(builder); - builder.append(','); - builder.append("dataSim=").append(dataSim).append(','); - builder.append("networkName=").append(networkName).append(','); - builder.append("networkNameData=").append(networkNameData).append(','); - builder.append("dataConnected=").append(dataConnected).append(','); - builder.append("roaming=").append(roaming).append(','); - builder.append("isDefault=").append(isDefault).append(','); - builder.append("isEmergency=").append(isEmergency).append(','); - builder.append("airplaneMode=").append(airplaneMode).append(','); - builder.append("carrierNetworkChangeMode=").append(carrierNetworkChangeMode) - .append(','); - builder.append("userSetup=").append(userSetup).append(','); - builder.append("defaultDataOff=").append(defaultDataOff); - } - - @Override - public boolean equals(Object o) { - return super.equals(o) - && Objects.equals(((MobileState) o).networkName, networkName) - && Objects.equals(((MobileState) o).networkNameData, networkNameData) - && ((MobileState) o).dataSim == dataSim - && ((MobileState) o).dataConnected == dataConnected - && ((MobileState) o).isEmergency == isEmergency - && ((MobileState) o).airplaneMode == airplaneMode - && ((MobileState) o).carrierNetworkChangeMode == carrierNetworkChangeMode - && ((MobileState) o).userSetup == userSetup - && ((MobileState) o).isDefault == isDefault - && ((MobileState) o).roaming == roaming - && ((MobileState) o).defaultDataOff == defaultDataOff; - } - } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java index a3abb31a36e49..0ca2b4a967595 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java @@ -30,7 +30,6 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.res.Configuration; -import android.content.res.Resources; import android.net.ConnectivityManager; import android.net.Network; import android.net.NetworkCapabilities; @@ -40,7 +39,6 @@ import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.Looper; -import android.os.PersistableBundle; import android.provider.Settings; import android.telephony.CarrierConfigManager; import android.telephony.CellSignalStrength; @@ -59,7 +57,9 @@ import androidx.annotation.NonNull; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; +import com.android.settingslib.mobile.MobileMappings.Config; import com.android.settingslib.mobile.MobileStatusTracker.SubscriptionDefaults; +import com.android.settingslib.mobile.TelephonyIcons; import com.android.settingslib.net.DataUsageController; import com.android.systemui.Dumpable; import com.android.systemui.R; @@ -1201,45 +1201,4 @@ public class NetworkControllerImpl extends BroadcastReceiver registerListeners(); } }; - - @VisibleForTesting - static class Config { - boolean showAtLeast3G = false; - boolean show4gFor3g = false; - boolean alwaysShowCdmaRssi = false; - boolean show4gForLte = false; - boolean hideLtePlus = false; - boolean hspaDataDistinguishable; - boolean alwaysShowDataRatIcon = false; - - static Config readConfig(Context context) { - Config config = new Config(); - Resources res = context.getResources(); - - config.showAtLeast3G = res.getBoolean(R.bool.config_showMin3G); - config.alwaysShowCdmaRssi = - res.getBoolean(com.android.internal.R.bool.config_alwaysUseCdmaRssi); - config.hspaDataDistinguishable = - res.getBoolean(R.bool.config_hspa_data_distinguishable); - - CarrierConfigManager configMgr = (CarrierConfigManager) - context.getSystemService(Context.CARRIER_CONFIG_SERVICE); - // Handle specific carrier config values for the default data SIM - int defaultDataSubId = SubscriptionManager.from(context) - .getDefaultDataSubscriptionId(); - PersistableBundle b = configMgr.getConfigForSubId(defaultDataSubId); - if (b != null) { - config.alwaysShowDataRatIcon = b.getBoolean( - CarrierConfigManager.KEY_ALWAYS_SHOW_DATA_RAT_ICON_BOOL); - config.show4gForLte = b.getBoolean( - CarrierConfigManager.KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL); - config.show4gFor3g = b.getBoolean( - CarrierConfigManager.KEY_SHOW_4G_FOR_3G_DATA_ICON_BOOL); - config.hideLtePlus = b.getBoolean( - CarrierConfigManager.KEY_HIDE_LTE_PLUS_DATA_ICON_BOOL); - } - - return config; - } - } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalController.java index 3a456918a49ba..a05fe1f1b0c26 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalController.java @@ -21,18 +21,21 @@ import android.annotation.NonNull; import android.content.Context; import android.util.Log; +import com.android.settingslib.SignalIcon.IconGroup; +import com.android.settingslib.SignalIcon.State; import com.android.systemui.statusbar.policy.NetworkController.SignalCallback; import java.io.PrintWriter; -import java.text.SimpleDateFormat; import java.util.BitSet; /** * Common base class for handling signal for both wifi and mobile data. + * + * @param State of the SysUI controller. + * @param Icon groups of the SysUI controller for a given State. */ -public abstract class SignalController { +public abstract class SignalController { // Save the previous SignalController.States of all SignalControllers for dumps. static final boolean RECORD_HISTORY = true; // If RECORD_HISTORY how many to save, must be a power of 2. @@ -124,11 +127,11 @@ public abstract class SignalController