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 {
+ SignalController {
private final boolean mHasMobileDataFeature;
private final WifiStatusTracker mWifiTracker;
@@ -156,7 +159,7 @@ public class WifiSignalController extends
}
}
- static class WifiState extends SignalController.State {
+ static class WifiState extends State {
String ssid;
boolean isTransient;
boolean isDefault;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/CallbackHandlerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/CallbackHandlerTest.java
index 18e7840f12012..ebc45f41ce617 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/CallbackHandlerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/CallbackHandlerTest.java
@@ -26,7 +26,8 @@ import android.test.suitebuilder.annotation.SmallTest;
import androidx.test.runner.AndroidJUnit4;
-import com.android.systemui.R;
+import com.android.settingslib.R;
+import com.android.settingslib.mobile.TelephonyIcons;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.statusbar.policy.NetworkController.EmergencyListener;
import com.android.systemui.statusbar.policy.NetworkController.IconState;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
index ce9ca9d633fd9..6adf94e180a59 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
@@ -60,17 +60,18 @@ import android.util.Log;
import androidx.test.InstrumentationRegistry;
+import com.android.settingslib.R;
import com.android.settingslib.graph.SignalDrawable;
+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.R;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.demomode.DemoModeController;
import com.android.systemui.statusbar.policy.DeviceProvisionedController.DeviceProvisionedListener;
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 org.junit.Before;
import org.junit.Rule;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java
index 68992179de592..d11aee8a5194e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java
@@ -19,6 +19,7 @@ import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
import android.testing.TestableLooper.RunWithLooper;
+import com.android.settingslib.mobile.TelephonyIcons;
import com.android.settingslib.net.DataUsageController;
import org.junit.Test;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java
index 61f71b758d808..da35de926e70d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java
@@ -38,6 +38,7 @@ import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper.RunWithLooper;
import com.android.settingslib.graph.SignalDrawable;
+import com.android.settingslib.mobile.TelephonyIcons;
import com.android.settingslib.net.DataUsageController;
import com.android.systemui.R;