diff options
| author | 2017-09-29 19:00:13 +0000 | |
|---|---|---|
| committer | 2017-09-29 19:00:13 +0000 | |
| commit | b3d059764b8266c6570f596036a9ae82cf946e95 (patch) | |
| tree | ffbcc6a4b40c924e111ee0d90a42f5597fc3861f | |
| parent | 9753b4aab0a7f140c2604971b62e6efc500f6ff5 (diff) | |
| parent | 5eea2700b5caa16456f3e6b4a34f5fd01f77afcf (diff) | |
Merge "Don't show no sim when a sim has been detected." into oc-mr1-dev am: dddbb2261c
am: 5eea2700b5
Change-Id: I0a3b744623f5c372ae3be24064c63d455bd1a2c1
7 files changed, 55 insertions, 25 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java index 2e389ba151bd..0ce3e6aa9211 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java @@ -266,7 +266,7 @@ public class CellularTile extends QSTileImpl<SignalState> { } @Override - public void setNoSims(boolean show) { + public void setNoSims(boolean show, boolean simDetected) { mInfo.noSim = show; if (mInfo.noSim) { // Make sure signal gets cleared out when no sims. diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java b/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java index 181931e12441..a7fb61a1d5ca 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java @@ -55,6 +55,7 @@ import com.android.systemui.util.Utils.DisableStateTracker; import java.util.ArrayList; import java.util.List; +import java.util.Objects; // Intimately tied to the design of res/layout/signal_cluster_view.xml public class SignalClusterView extends LinearLayout implements NetworkControllerImpl.SignalCallback, @@ -74,6 +75,7 @@ public class SignalClusterView extends LinearLayout implements NetworkController private boolean mNoSimsVisible = false; private boolean mVpnVisible = false; + private boolean mSimDetected; private int mVpnIconId = 0; private int mLastVpnIconId = -1; private boolean mEthernetVisible = false; @@ -330,8 +332,9 @@ public class SignalClusterView extends LinearLayout implements NetworkController } @Override - public void setNoSims(boolean show) { + public void setNoSims(boolean show, boolean simDetected) { mNoSimsVisible = show && !mBlockMobile; + mSimDetected = simDetected; apply(); } @@ -551,6 +554,23 @@ public class SignalClusterView extends LinearLayout implements NetworkController if (mNoSimsVisible) { mIconLogger.onIconShown(SLOT_MOBILE); 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 { mIconLogger.onIconHidden(SLOT_MOBILE); mNoSimsCombo.setVisibility(View.GONE); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java index a456786d712f..5159e8d0cff0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java @@ -71,7 +71,7 @@ public class CallbackHandler extends Handler implements EmergencyListener, Signa break; case MSG_NO_SIM_VISIBLE_CHANGED: for (SignalCallback signalCluster : mSignalCallbacks) { - signalCluster.setNoSims(msg.arg1 != 0); + signalCluster.setNoSims(msg.arg1 != 0, msg.arg2 != 0); } break; case MSG_ETHERNET_CHANGED: @@ -144,8 +144,8 @@ public class CallbackHandler extends Handler implements EmergencyListener, Signa } @Override - public void setNoSims(boolean show) { - obtainMessage(MSG_NO_SIM_VISIBLE_CHANGED, show ? 1 : 0, 0).sendToTarget(); + public void setNoSims(boolean show, boolean simDetected) { + obtainMessage(MSG_NO_SIM_VISIBLE_CHANGED, show ? 1 : 0, simDetected ? 1 : 0).sendToTarget(); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java index 2771011c6997..9eee906bd71c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java @@ -52,7 +52,7 @@ public interface NetworkController extends CallbackController<SignalCallback>, D int qsType, boolean activityIn, boolean activityOut, String typeContentDescription, String description, boolean isWide, int subId, boolean roaming) {} default void setSubs(List<SubscriptionInfo> subs) {} - default void setNoSims(boolean show) {} + default void setNoSims(boolean show, boolean simDetected) {} default void setEthernetIndicators(IconState icon) {} 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 9d6fc5e9094e..3e9d0004560d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java @@ -58,10 +58,8 @@ import java.util.ArrayList; import java.util.BitSet; import java.util.Collections; import java.util.Comparator; -import java.util.HashMap; import java.util.List; import java.util.Locale; -import java.util.Map; import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED; @@ -116,7 +114,7 @@ public class NetworkControllerImpl extends BroadcastReceiver // States that don't belong to a subcontroller. private boolean mAirplaneMode = false; - private boolean mHasNoSims; + private boolean mHasNoSubs; private Locale mLocale = null; // This list holds our ordering. private List<SubscriptionInfo> mCurrentSubscriptions = new ArrayList<>(); @@ -140,6 +138,7 @@ public class NetworkControllerImpl extends BroadcastReceiver @VisibleForTesting ServiceState mLastServiceState; private boolean mUserSetup; + private boolean mSimDetected; /** * Construct this controller object and register for updates. @@ -363,7 +362,7 @@ public class NetworkControllerImpl extends BroadcastReceiver cb.setSubs(mCurrentSubscriptions); cb.setIsAirplaneMode(new IconState(mAirplaneMode, TelephonyIcons.FLIGHT_MODE_ICON, R.string.accessibility_airplane_mode, mContext)); - cb.setNoSims(mHasNoSims); + cb.setNoSims(mHasNoSubs, mSimDetected); mWifiSignalController.notifyListeners(cb); mEthernetSignalController.notifyListeners(cb); for (int i = 0; i < mMobileSignalControllers.size(); i++) { @@ -498,11 +497,25 @@ public class NetworkControllerImpl extends BroadcastReceiver @VisibleForTesting protected void updateNoSims() { - boolean hasNoSims = mHasMobileDataFeature && mMobileSignalControllers.size() == 0; - if (hasNoSims != mHasNoSims) { - mHasNoSims = hasNoSims; - mCallbackHandler.setNoSims(mHasNoSims); + boolean hasNoSubs = mHasMobileDataFeature && mMobileSignalControllers.size() == 0; + boolean simDetected = hasAnySim(); + if (hasNoSubs != mHasNoSubs || simDetected != mSimDetected) { + 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 @@ -631,7 +644,7 @@ public class NetworkControllerImpl extends BroadcastReceiver private void notifyListeners() { mCallbackHandler.setIsAirplaneMode(new IconState(mAirplaneMode, TelephonyIcons.FLIGHT_MODE_ICON, R.string.accessibility_airplane_mode, mContext)); - mCallbackHandler.setNoSims(mHasNoSims); + mCallbackHandler.setNoSims(mHasNoSubs, mSimDetected); } /** @@ -826,8 +839,8 @@ public class NetworkControllerImpl extends BroadcastReceiver } String nosim = args.getString("nosim"); if (nosim != null) { - mHasNoSims = nosim.equals("show"); - mCallbackHandler.setNoSims(mHasNoSims); + mHasNoSubs = nosim.equals("show"); + mCallbackHandler.setNoSims(mHasNoSubs, mSimDetected); } String mobile = args.getString("mobile"); if (mobile != null) { 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 51bd7bccbe71..e3558d46992a 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 @@ -161,12 +161,11 @@ public class CallbackHandlerTest extends SysuiTestCase { @Test public void testSignalCallback_setNoSims() { boolean noSims = true; - mHandler.setNoSims(noSims); + boolean simDetected = false; + mHandler.setNoSims(noSims, simDetected); waitForCallbacks(); - ArgumentCaptor<Boolean> noSimsArg = ArgumentCaptor.forClass(Boolean.class); - Mockito.verify(mSignalCallback).setNoSims(noSimsArg.capture()); - assertEquals(noSims, (boolean) noSimsArg.getValue()); + Mockito.verify(mSignalCallback).setNoSims(eq(noSims), eq(simDetected)); } @Test 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 b7e6a40c6880..f685b1fe6889 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 @@ -292,10 +292,8 @@ public class NetworkControllerBaseTest extends SysuiTestCase { } protected void verifyHasNoSims(boolean hasNoSimsVisible) { - ArgumentCaptor<Boolean> hasNoSimsArg = ArgumentCaptor.forClass(Boolean.class); - - Mockito.verify(mCallbackHandler, Mockito.atLeastOnce()).setNoSims(hasNoSimsArg.capture()); - assertEquals("No sims", hasNoSimsVisible, (boolean) hasNoSimsArg.getValue()); + Mockito.verify(mCallbackHandler, Mockito.atLeastOnce()).setNoSims( + eq(hasNoSimsVisible), eq(false)); } protected void verifyLastQsMobileDataIndicators(boolean visible, int icon, int typeIcon, |