From 6ec18b7fe383ba54de08df6d6d76b74361491ddd Mon Sep 17 00:00:00 2001 From: Danny Lin Date: Mon, 25 Oct 2021 19:32:33 -0700 Subject: [PATCH 21/22] SystemUI: Allow Wi-Fi/cell tiles to co-exist with provider model The dedicated Wi-Fi/cellular data QS tiles are partially working now that we've exposed them in the list of tile options, but they're very buggy and somewhat broken when the provider model (unified internet) is enabled. Allow the tiles to co-exist with InternetTile and the provider model (including both settings_provider_model and combined signal icons) by always including QS icons in Wi-Fi/data indicator callbacks, and add a new flag to indicate whether they should be shown in the internet tile. Change-Id: I10af134b35dfabdb9275f1aca8ca8512e1db6d27 --- .../systemui/qs/tiles/InternetTile.java | 4 +- .../policy/MobileSignalController.java | 32 ++++-------- .../statusbar/policy/NetworkController.java | 10 +++- .../policy/WifiSignalController.java | 49 +++++++------------ 4 files changed, 37 insertions(+), 58 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java index cc9e7485dcff..4bf8053017f1 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java @@ -255,7 +255,7 @@ public class InternetTile extends QSTileImpl { Log.d(TAG, "setWifiIndicators: " + indicators); } mWifiInfo.mEnabled = indicators.enabled; - if (indicators.qsIcon == null) { + if (indicators.qsIcon == null || !indicators.isDefault) { return; } mWifiInfo.mConnected = indicators.qsIcon.visible; @@ -275,7 +275,7 @@ public class InternetTile extends QSTileImpl { if (DEBUG) { Log.d(TAG, "setMobileDataIndicators: " + indicators); } - if (indicators.qsIcon == null) { + if (indicators.qsIcon == null || !indicators.isDefault) { // Not data sim, don't display. return; } 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 43781f3941ba..cf89cabf6ab9 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java @@ -397,7 +397,7 @@ public class MobileSignalController extends SignalController, D public String description; public boolean isTransient; public String statusLabel; + public boolean isDefault; public WifiIndicators(boolean enabled, IconState statusIcon, IconState qsIcon, boolean activityIn, boolean activityOut, String description, - boolean isTransient, String statusLabel) { + boolean isTransient, String statusLabel, boolean isDefault) { this.enabled = enabled; this.statusIcon = statusIcon; this.qsIcon = qsIcon; @@ -71,6 +72,7 @@ public interface NetworkController extends CallbackController, D this.description = description; this.isTransient = isTransient; this.statusLabel = statusLabel; + this.isDefault = isDefault; } @Override @@ -84,6 +86,7 @@ public interface NetworkController extends CallbackController, D .append(",description=").append(description) .append(",isTransient=").append(isTransient) .append(",statusLabel=").append(statusLabel) + .append(",isDefault=").append(isDefault) .append(']').toString(); } } @@ -105,12 +108,13 @@ public interface NetworkController extends CallbackController, D public int subId; public boolean roaming; public boolean showTriangle; + public boolean isDefault; public MobileDataIndicators(IconState statusIcon, IconState qsIcon, int statusType, int qsType, boolean activityIn, boolean activityOut, CharSequence typeContentDescription, CharSequence typeContentDescriptionHtml, CharSequence description, boolean isWide, int subId, boolean roaming, - boolean showTriangle) { + boolean showTriangle, boolean isDefault) { this.statusIcon = statusIcon; this.qsIcon = qsIcon; this.statusType = statusType; @@ -124,6 +128,7 @@ public interface NetworkController extends CallbackController, D this.subId = subId; this.roaming = roaming; this.showTriangle = showTriangle; + this.isDefault = isDefault; } @Override @@ -142,6 +147,7 @@ public interface NetworkController extends CallbackController, D .append(",subId=").append(subId) .append(",roaming=").append(roaming) .append(",showTriangle=").append(showTriangle) + .append(",isDefault=").append(isDefault) .append(']').toString(); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java index f8e36476c4a6..1513544eb22b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java @@ -112,37 +112,21 @@ public class WifiSignalController extends if (mCurrentState.inetCondition == 0) { contentDescription += ("," + mContext.getString(R.string.data_connection_no_internet)); } - if (mProviderModelSetting) { - IconState statusIcon = new IconState( - wifiVisible, getCurrentIconId(), contentDescription); - IconState qsIcon = null; - if (mCurrentState.isDefault || (!mNetworkController.isRadioOn() - && !mNetworkController.isEthernetDefault())) { - qsIcon = new IconState(mCurrentState.connected, - mWifiTracker.isCaptivePortal ? R.drawable.ic_qs_wifi_disconnected - : getQsCurrentIconId(), contentDescription); - } - WifiIndicators wifiIndicators = new WifiIndicators( - mCurrentState.enabled, statusIcon, qsIcon, - ssidPresent && mCurrentState.activityIn, - ssidPresent && mCurrentState.activityOut, - wifiDesc, mCurrentState.isTransient, mCurrentState.statusLabel - ); - callback.setWifiIndicators(wifiIndicators); - } else { - IconState statusIcon = new IconState( - wifiVisible, getCurrentIconId(), contentDescription); - IconState qsIcon = new IconState(mCurrentState.connected, - mWifiTracker.isCaptivePortal ? R.drawable.ic_qs_wifi_disconnected - : getQsCurrentIconId(), contentDescription); - WifiIndicators wifiIndicators = new WifiIndicators( - mCurrentState.enabled, statusIcon, qsIcon, - ssidPresent && mCurrentState.activityIn, - ssidPresent && mCurrentState.activityOut, - wifiDesc, mCurrentState.isTransient, mCurrentState.statusLabel - ); - callback.setWifiIndicators(wifiIndicators); - } + IconState statusIcon = new IconState( + wifiVisible, getCurrentIconId(), contentDescription); + IconState qsIcon = new IconState(mCurrentState.connected, + mWifiTracker.isCaptivePortal ? R.drawable.ic_qs_wifi_disconnected + : getQsCurrentIconId(), contentDescription); + boolean isDefault = mCurrentState.isDefault || + (!mNetworkController.isRadioOn() && !mNetworkController.isEthernetDefault()); + WifiIndicators wifiIndicators = new WifiIndicators( + mCurrentState.enabled, statusIcon, qsIcon, + ssidPresent && mCurrentState.activityIn, + ssidPresent && mCurrentState.activityOut, + wifiDesc, mCurrentState.isTransient, mCurrentState.statusLabel, + isDefault + ); + callback.setWifiIndicators(wifiIndicators); } private void notifyListenersForCarrierWifi(SignalCallback callback) { @@ -173,7 +157,8 @@ public class WifiSignalController extends statusIcon, qsIcon, typeIcon, qsTypeIcon, mCurrentState.activityIn, mCurrentState.activityOut, dataContentDescription, dataContentDescriptionHtml, description, icons.isWide, - mCurrentState.subId, /* roaming= */ false, /* showTriangle= */ true + mCurrentState.subId, /* roaming= */ false, /* showTriangle= */ true, + /* isDefault= */ qsIcon != null ); callback.setMobileDataIndicators(mobileDataIndicators); } -- 2.25.1