Loading packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -263,7 +263,7 @@ public class CellularTile extends QSTileImpl<SignalState> { } } @Override @Override public void setNoSims(boolean show) { public void setNoSims(boolean show, boolean simDetected) { mInfo.noSim = show; mInfo.noSim = show; if (mInfo.noSim) { if (mInfo.noSim) { // Make sure signal gets cleared out when no sims. // Make sure signal gets cleared out when no sims. Loading packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java +21 −3 Original line number Original line Diff line number Diff line Loading @@ -22,8 +22,6 @@ import android.content.res.ColorStateList; import android.content.res.Resources; import android.content.res.Resources; import android.graphics.Color; import android.graphics.Color; import android.graphics.Rect; import android.graphics.Rect; import android.graphics.drawable.Animatable; import android.graphics.drawable.AnimatedVectorDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionInfo; import android.util.ArraySet; import android.util.ArraySet; Loading Loading @@ -53,6 +51,7 @@ import com.android.systemui.tuner.TunerService.Tunable; import java.util.ArrayList; import java.util.ArrayList; import java.util.List; import java.util.List; import java.util.Objects; // Intimately tied to the design of res/layout/signal_cluster_view.xml // Intimately tied to the design of res/layout/signal_cluster_view.xml public class SignalClusterView extends LinearLayout implements NetworkControllerImpl.SignalCallback, public class SignalClusterView extends LinearLayout implements NetworkControllerImpl.SignalCallback, Loading @@ -73,6 +72,7 @@ public class SignalClusterView extends LinearLayout implements NetworkController private boolean mNoSimsVisible = false; private boolean mNoSimsVisible = false; private boolean mVpnVisible = false; private boolean mVpnVisible = false; private boolean mSimDetected; private int mVpnIconId = 0; private int mVpnIconId = 0; private int mLastVpnIconId = -1; private int mLastVpnIconId = -1; private boolean mEthernetVisible = false; private boolean mEthernetVisible = false; Loading Loading @@ -327,8 +327,9 @@ public class SignalClusterView extends LinearLayout implements NetworkController } } @Override @Override public void setNoSims(boolean show) { public void setNoSims(boolean show, boolean simDetected) { mNoSimsVisible = show && !mBlockMobile; mNoSimsVisible = show && !mBlockMobile; mSimDetected = simDetected; apply(); apply(); } } Loading Loading @@ -548,6 +549,23 @@ public class SignalClusterView extends LinearLayout implements NetworkController if (mNoSimsVisible) { if (mNoSimsVisible) { mIconLogger.onIconShown(SLOT_MOBILE); mIconLogger.onIconShown(SLOT_MOBILE); mNoSimsCombo.setVisibility(View.VISIBLE); mNoSimsCombo.setVisibility(View.VISIBLE); if (!Objects.equals(mSimDetected, mNoSimsCombo.getTag())) { mNoSimsCombo.setTag(mSimDetected); if (mSimDetected) { SignalDrawable d = new SignalDrawable(mNoSims.getContext()); d.setDarkIntensity(0); mNoSims.setImageDrawable(d); mNoSims.setImageLevel(SignalDrawable.getEmptyState(4)); SignalDrawable dark = new SignalDrawable(mNoSims.getContext()); dark.setDarkIntensity(1); mNoSimsDark.setImageDrawable(dark); mNoSimsDark.setImageLevel(SignalDrawable.getEmptyState(4)); } else { mNoSims.setImageResource(R.drawable.stat_sys_no_sims); mNoSimsDark.setImageResource(R.drawable.stat_sys_no_sims); } } } else { } else { mIconLogger.onIconHidden(SLOT_MOBILE); mIconLogger.onIconHidden(SLOT_MOBILE); mNoSimsCombo.setVisibility(View.GONE); mNoSimsCombo.setVisibility(View.GONE); Loading packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java +3 −3 Original line number Original line Diff line number Diff line Loading @@ -71,7 +71,7 @@ public class CallbackHandler extends Handler implements EmergencyListener, Signa break; break; case MSG_NO_SIM_VISIBLE_CHANGED: case MSG_NO_SIM_VISIBLE_CHANGED: for (SignalCallback signalCluster : mSignalCallbacks) { for (SignalCallback signalCluster : mSignalCallbacks) { signalCluster.setNoSims(msg.arg1 != 0); signalCluster.setNoSims(msg.arg1 != 0, msg.arg2 != 0); } } break; break; case MSG_ETHERNET_CHANGED: case MSG_ETHERNET_CHANGED: Loading Loading @@ -144,8 +144,8 @@ public class CallbackHandler extends Handler implements EmergencyListener, Signa } } @Override @Override public void setNoSims(boolean show) { public void setNoSims(boolean show, boolean simDetected) { obtainMessage(MSG_NO_SIM_VISIBLE_CHANGED, show ? 1 : 0, 0).sendToTarget(); obtainMessage(MSG_NO_SIM_VISIBLE_CHANGED, show ? 1 : 0, simDetected ? 1 : 0).sendToTarget(); } } @Override @Override Loading packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -52,7 +52,7 @@ public interface NetworkController extends CallbackController<SignalCallback>, D int qsType, boolean activityIn, boolean activityOut, String typeContentDescription, int qsType, boolean activityIn, boolean activityOut, String typeContentDescription, String description, boolean isWide, int subId, boolean roaming) {} String description, boolean isWide, int subId, boolean roaming) {} default void setSubs(List<SubscriptionInfo> subs) {} default void setSubs(List<SubscriptionInfo> subs) {} default void setNoSims(boolean show) {} default void setNoSims(boolean show, boolean simDetected) {} default void setEthernetIndicators(IconState icon) {} default void setEthernetIndicators(IconState icon) {} Loading packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java +24 −11 Original line number Original line Diff line number Diff line Loading @@ -58,10 +58,8 @@ import java.util.ArrayList; import java.util.BitSet; import java.util.BitSet; import java.util.Collections; import java.util.Collections; import java.util.Comparator; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.List; import java.util.Locale; import java.util.Locale; import java.util.Map; import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED; import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED; Loading Loading @@ -116,7 +114,7 @@ public class NetworkControllerImpl extends BroadcastReceiver // States that don't belong to a subcontroller. // States that don't belong to a subcontroller. private boolean mAirplaneMode = false; private boolean mAirplaneMode = false; private boolean mHasNoSims; private boolean mHasNoSubs; private Locale mLocale = null; private Locale mLocale = null; // This list holds our ordering. // This list holds our ordering. private List<SubscriptionInfo> mCurrentSubscriptions = new ArrayList<>(); private List<SubscriptionInfo> mCurrentSubscriptions = new ArrayList<>(); Loading @@ -140,6 +138,7 @@ public class NetworkControllerImpl extends BroadcastReceiver @VisibleForTesting @VisibleForTesting ServiceState mLastServiceState; ServiceState mLastServiceState; private boolean mUserSetup; private boolean mUserSetup; private boolean mSimDetected; /** /** * Construct this controller object and register for updates. * Construct this controller object and register for updates. Loading Loading @@ -363,7 +362,7 @@ public class NetworkControllerImpl extends BroadcastReceiver cb.setSubs(mCurrentSubscriptions); cb.setSubs(mCurrentSubscriptions); cb.setIsAirplaneMode(new IconState(mAirplaneMode, cb.setIsAirplaneMode(new IconState(mAirplaneMode, TelephonyIcons.FLIGHT_MODE_ICON, R.string.accessibility_airplane_mode, mContext)); TelephonyIcons.FLIGHT_MODE_ICON, R.string.accessibility_airplane_mode, mContext)); cb.setNoSims(mHasNoSims); cb.setNoSims(mHasNoSubs, mSimDetected); mWifiSignalController.notifyListeners(cb); mWifiSignalController.notifyListeners(cb); mEthernetSignalController.notifyListeners(cb); mEthernetSignalController.notifyListeners(cb); for (int i = 0; i < mMobileSignalControllers.size(); i++) { for (int i = 0; i < mMobileSignalControllers.size(); i++) { Loading Loading @@ -498,13 +497,27 @@ public class NetworkControllerImpl extends BroadcastReceiver @VisibleForTesting @VisibleForTesting protected void updateNoSims() { protected void updateNoSims() { boolean hasNoSims = mHasMobileDataFeature && mMobileSignalControllers.size() == 0; boolean hasNoSubs = mHasMobileDataFeature && mMobileSignalControllers.size() == 0; if (hasNoSims != mHasNoSims) { boolean simDetected = hasAnySim(); mHasNoSims = hasNoSims; if (hasNoSubs != mHasNoSubs || simDetected != mSimDetected) { mCallbackHandler.setNoSims(mHasNoSims); mHasNoSubs = hasNoSubs; mSimDetected = simDetected; mCallbackHandler.setNoSims(mHasNoSubs, mSimDetected); } } } } private boolean hasAnySim() { int simCount = mPhone.getSimCount(); for (int i = 0; i < simCount; i++) { int state = mPhone.getSimState(i); if (state != TelephonyManager.SIM_STATE_ABSENT && state != TelephonyManager.SIM_STATE_UNKNOWN) { return true; } } return false; } @VisibleForTesting @VisibleForTesting void setCurrentSubscriptions(List<SubscriptionInfo> subscriptions) { void setCurrentSubscriptions(List<SubscriptionInfo> subscriptions) { Collections.sort(subscriptions, new Comparator<SubscriptionInfo>() { Collections.sort(subscriptions, new Comparator<SubscriptionInfo>() { Loading Loading @@ -631,7 +644,7 @@ public class NetworkControllerImpl extends BroadcastReceiver private void notifyListeners() { private void notifyListeners() { mCallbackHandler.setIsAirplaneMode(new IconState(mAirplaneMode, mCallbackHandler.setIsAirplaneMode(new IconState(mAirplaneMode, TelephonyIcons.FLIGHT_MODE_ICON, R.string.accessibility_airplane_mode, mContext)); TelephonyIcons.FLIGHT_MODE_ICON, R.string.accessibility_airplane_mode, mContext)); mCallbackHandler.setNoSims(mHasNoSims); mCallbackHandler.setNoSims(mHasNoSubs, mSimDetected); } } /** /** Loading Loading @@ -822,8 +835,8 @@ public class NetworkControllerImpl extends BroadcastReceiver } } String nosim = args.getString("nosim"); String nosim = args.getString("nosim"); if (nosim != null) { if (nosim != null) { mHasNoSims = nosim.equals("show"); mHasNoSubs = nosim.equals("show"); mCallbackHandler.setNoSims(mHasNoSims); mCallbackHandler.setNoSims(mHasNoSubs, mSimDetected); } } String mobile = args.getString("mobile"); String mobile = args.getString("mobile"); if (mobile != null) { if (mobile != null) { Loading Loading
packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -263,7 +263,7 @@ public class CellularTile extends QSTileImpl<SignalState> { } } @Override @Override public void setNoSims(boolean show) { public void setNoSims(boolean show, boolean simDetected) { mInfo.noSim = show; mInfo.noSim = show; if (mInfo.noSim) { if (mInfo.noSim) { // Make sure signal gets cleared out when no sims. // Make sure signal gets cleared out when no sims. Loading
packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java +21 −3 Original line number Original line Diff line number Diff line Loading @@ -22,8 +22,6 @@ import android.content.res.ColorStateList; import android.content.res.Resources; import android.content.res.Resources; import android.graphics.Color; import android.graphics.Color; import android.graphics.Rect; import android.graphics.Rect; import android.graphics.drawable.Animatable; import android.graphics.drawable.AnimatedVectorDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionInfo; import android.util.ArraySet; import android.util.ArraySet; Loading Loading @@ -53,6 +51,7 @@ import com.android.systemui.tuner.TunerService.Tunable; import java.util.ArrayList; import java.util.ArrayList; import java.util.List; import java.util.List; import java.util.Objects; // Intimately tied to the design of res/layout/signal_cluster_view.xml // Intimately tied to the design of res/layout/signal_cluster_view.xml public class SignalClusterView extends LinearLayout implements NetworkControllerImpl.SignalCallback, public class SignalClusterView extends LinearLayout implements NetworkControllerImpl.SignalCallback, Loading @@ -73,6 +72,7 @@ public class SignalClusterView extends LinearLayout implements NetworkController private boolean mNoSimsVisible = false; private boolean mNoSimsVisible = false; private boolean mVpnVisible = false; private boolean mVpnVisible = false; private boolean mSimDetected; private int mVpnIconId = 0; private int mVpnIconId = 0; private int mLastVpnIconId = -1; private int mLastVpnIconId = -1; private boolean mEthernetVisible = false; private boolean mEthernetVisible = false; Loading Loading @@ -327,8 +327,9 @@ public class SignalClusterView extends LinearLayout implements NetworkController } } @Override @Override public void setNoSims(boolean show) { public void setNoSims(boolean show, boolean simDetected) { mNoSimsVisible = show && !mBlockMobile; mNoSimsVisible = show && !mBlockMobile; mSimDetected = simDetected; apply(); apply(); } } Loading Loading @@ -548,6 +549,23 @@ public class SignalClusterView extends LinearLayout implements NetworkController if (mNoSimsVisible) { if (mNoSimsVisible) { mIconLogger.onIconShown(SLOT_MOBILE); mIconLogger.onIconShown(SLOT_MOBILE); mNoSimsCombo.setVisibility(View.VISIBLE); mNoSimsCombo.setVisibility(View.VISIBLE); if (!Objects.equals(mSimDetected, mNoSimsCombo.getTag())) { mNoSimsCombo.setTag(mSimDetected); if (mSimDetected) { SignalDrawable d = new SignalDrawable(mNoSims.getContext()); d.setDarkIntensity(0); mNoSims.setImageDrawable(d); mNoSims.setImageLevel(SignalDrawable.getEmptyState(4)); SignalDrawable dark = new SignalDrawable(mNoSims.getContext()); dark.setDarkIntensity(1); mNoSimsDark.setImageDrawable(dark); mNoSimsDark.setImageLevel(SignalDrawable.getEmptyState(4)); } else { mNoSims.setImageResource(R.drawable.stat_sys_no_sims); mNoSimsDark.setImageResource(R.drawable.stat_sys_no_sims); } } } else { } else { mIconLogger.onIconHidden(SLOT_MOBILE); mIconLogger.onIconHidden(SLOT_MOBILE); mNoSimsCombo.setVisibility(View.GONE); mNoSimsCombo.setVisibility(View.GONE); Loading
packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java +3 −3 Original line number Original line Diff line number Diff line Loading @@ -71,7 +71,7 @@ public class CallbackHandler extends Handler implements EmergencyListener, Signa break; break; case MSG_NO_SIM_VISIBLE_CHANGED: case MSG_NO_SIM_VISIBLE_CHANGED: for (SignalCallback signalCluster : mSignalCallbacks) { for (SignalCallback signalCluster : mSignalCallbacks) { signalCluster.setNoSims(msg.arg1 != 0); signalCluster.setNoSims(msg.arg1 != 0, msg.arg2 != 0); } } break; break; case MSG_ETHERNET_CHANGED: case MSG_ETHERNET_CHANGED: Loading Loading @@ -144,8 +144,8 @@ public class CallbackHandler extends Handler implements EmergencyListener, Signa } } @Override @Override public void setNoSims(boolean show) { public void setNoSims(boolean show, boolean simDetected) { obtainMessage(MSG_NO_SIM_VISIBLE_CHANGED, show ? 1 : 0, 0).sendToTarget(); obtainMessage(MSG_NO_SIM_VISIBLE_CHANGED, show ? 1 : 0, simDetected ? 1 : 0).sendToTarget(); } } @Override @Override Loading
packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -52,7 +52,7 @@ public interface NetworkController extends CallbackController<SignalCallback>, D int qsType, boolean activityIn, boolean activityOut, String typeContentDescription, int qsType, boolean activityIn, boolean activityOut, String typeContentDescription, String description, boolean isWide, int subId, boolean roaming) {} String description, boolean isWide, int subId, boolean roaming) {} default void setSubs(List<SubscriptionInfo> subs) {} default void setSubs(List<SubscriptionInfo> subs) {} default void setNoSims(boolean show) {} default void setNoSims(boolean show, boolean simDetected) {} default void setEthernetIndicators(IconState icon) {} default void setEthernetIndicators(IconState icon) {} Loading
packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java +24 −11 Original line number Original line Diff line number Diff line Loading @@ -58,10 +58,8 @@ import java.util.ArrayList; import java.util.BitSet; import java.util.BitSet; import java.util.Collections; import java.util.Collections; import java.util.Comparator; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.List; import java.util.Locale; import java.util.Locale; import java.util.Map; import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED; import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED; Loading Loading @@ -116,7 +114,7 @@ public class NetworkControllerImpl extends BroadcastReceiver // States that don't belong to a subcontroller. // States that don't belong to a subcontroller. private boolean mAirplaneMode = false; private boolean mAirplaneMode = false; private boolean mHasNoSims; private boolean mHasNoSubs; private Locale mLocale = null; private Locale mLocale = null; // This list holds our ordering. // This list holds our ordering. private List<SubscriptionInfo> mCurrentSubscriptions = new ArrayList<>(); private List<SubscriptionInfo> mCurrentSubscriptions = new ArrayList<>(); Loading @@ -140,6 +138,7 @@ public class NetworkControllerImpl extends BroadcastReceiver @VisibleForTesting @VisibleForTesting ServiceState mLastServiceState; ServiceState mLastServiceState; private boolean mUserSetup; private boolean mUserSetup; private boolean mSimDetected; /** /** * Construct this controller object and register for updates. * Construct this controller object and register for updates. Loading Loading @@ -363,7 +362,7 @@ public class NetworkControllerImpl extends BroadcastReceiver cb.setSubs(mCurrentSubscriptions); cb.setSubs(mCurrentSubscriptions); cb.setIsAirplaneMode(new IconState(mAirplaneMode, cb.setIsAirplaneMode(new IconState(mAirplaneMode, TelephonyIcons.FLIGHT_MODE_ICON, R.string.accessibility_airplane_mode, mContext)); TelephonyIcons.FLIGHT_MODE_ICON, R.string.accessibility_airplane_mode, mContext)); cb.setNoSims(mHasNoSims); cb.setNoSims(mHasNoSubs, mSimDetected); mWifiSignalController.notifyListeners(cb); mWifiSignalController.notifyListeners(cb); mEthernetSignalController.notifyListeners(cb); mEthernetSignalController.notifyListeners(cb); for (int i = 0; i < mMobileSignalControllers.size(); i++) { for (int i = 0; i < mMobileSignalControllers.size(); i++) { Loading Loading @@ -498,13 +497,27 @@ public class NetworkControllerImpl extends BroadcastReceiver @VisibleForTesting @VisibleForTesting protected void updateNoSims() { protected void updateNoSims() { boolean hasNoSims = mHasMobileDataFeature && mMobileSignalControllers.size() == 0; boolean hasNoSubs = mHasMobileDataFeature && mMobileSignalControllers.size() == 0; if (hasNoSims != mHasNoSims) { boolean simDetected = hasAnySim(); mHasNoSims = hasNoSims; if (hasNoSubs != mHasNoSubs || simDetected != mSimDetected) { mCallbackHandler.setNoSims(mHasNoSims); mHasNoSubs = hasNoSubs; mSimDetected = simDetected; mCallbackHandler.setNoSims(mHasNoSubs, mSimDetected); } } } } private boolean hasAnySim() { int simCount = mPhone.getSimCount(); for (int i = 0; i < simCount; i++) { int state = mPhone.getSimState(i); if (state != TelephonyManager.SIM_STATE_ABSENT && state != TelephonyManager.SIM_STATE_UNKNOWN) { return true; } } return false; } @VisibleForTesting @VisibleForTesting void setCurrentSubscriptions(List<SubscriptionInfo> subscriptions) { void setCurrentSubscriptions(List<SubscriptionInfo> subscriptions) { Collections.sort(subscriptions, new Comparator<SubscriptionInfo>() { Collections.sort(subscriptions, new Comparator<SubscriptionInfo>() { Loading Loading @@ -631,7 +644,7 @@ public class NetworkControllerImpl extends BroadcastReceiver private void notifyListeners() { private void notifyListeners() { mCallbackHandler.setIsAirplaneMode(new IconState(mAirplaneMode, mCallbackHandler.setIsAirplaneMode(new IconState(mAirplaneMode, TelephonyIcons.FLIGHT_MODE_ICON, R.string.accessibility_airplane_mode, mContext)); TelephonyIcons.FLIGHT_MODE_ICON, R.string.accessibility_airplane_mode, mContext)); mCallbackHandler.setNoSims(mHasNoSims); mCallbackHandler.setNoSims(mHasNoSubs, mSimDetected); } } /** /** Loading Loading @@ -822,8 +835,8 @@ public class NetworkControllerImpl extends BroadcastReceiver } } String nosim = args.getString("nosim"); String nosim = args.getString("nosim"); if (nosim != null) { if (nosim != null) { mHasNoSims = nosim.equals("show"); mHasNoSubs = nosim.equals("show"); mCallbackHandler.setNoSims(mHasNoSims); mCallbackHandler.setNoSims(mHasNoSubs, mSimDetected); } } String mobile = args.getString("mobile"); String mobile = args.getString("mobile"); if (mobile != null) { if (mobile != null) { Loading