diff options
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/OperatorNameView.java | 45 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/OperatorNameViewController.java | 74 |
2 files changed, 78 insertions, 41 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/OperatorNameView.java b/packages/SystemUI/src/com/android/systemui/statusbar/OperatorNameView.java index 9b2d2b6f8189..4a6d7e184ec2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/OperatorNameView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/OperatorNameView.java @@ -15,32 +15,18 @@ package com.android.systemui.statusbar; import android.content.Context; -import android.telephony.ServiceState; -import android.telephony.SubscriptionInfo; -import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.AttributeSet; import android.widget.TextView; -import com.android.keyguard.KeyguardUpdateMonitor; -import com.android.keyguard.KeyguardUpdateMonitorCallback; import com.android.settingslib.WirelessUtils; -import com.android.systemui.Dependency; import java.util.List; /** Shows the operator name */ public class OperatorNameView extends TextView { - private KeyguardUpdateMonitor mKeyguardUpdateMonitor; private boolean mDemoMode; - private final KeyguardUpdateMonitorCallback mCallback = new KeyguardUpdateMonitorCallback() { - @Override - public void onRefreshCarrierInfo() { - updateText(); - } - }; - public OperatorNameView(Context context) { this(context, null); } @@ -53,24 +39,12 @@ public class OperatorNameView extends TextView { super(context, attrs, defStyle); } - @Override - protected void onAttachedToWindow() { - super.onAttachedToWindow(); - mKeyguardUpdateMonitor = Dependency.get(KeyguardUpdateMonitor.class); - } - - @Override - protected void onDetachedFromWindow() { - super.onDetachedFromWindow(); - mKeyguardUpdateMonitor.removeCallback(mCallback); - } - - void setDemoMode(boolean demoMode) { mDemoMode = demoMode; } - void update(boolean showOperatorName, boolean hasMobile) { + void update(boolean showOperatorName, boolean hasMobile, + List<OperatorNameViewController.SubInfo> subs) { setVisibility(showOperatorName ? VISIBLE : GONE); boolean airplaneMode = WirelessUtils.isAirplaneModeOn(mContext); @@ -81,22 +55,19 @@ public class OperatorNameView extends TextView { } if (!mDemoMode) { - updateText(); + updateText(subs); } } - private void updateText() { + void updateText(List<OperatorNameViewController.SubInfo> subs) { CharSequence displayText = null; - List<SubscriptionInfo> subs = mKeyguardUpdateMonitor.getFilteredSubscriptionInfo(false); final int N = subs.size(); for (int i = 0; i < N; i++) { - int subId = subs.get(i).getSubscriptionId(); - int simState = mKeyguardUpdateMonitor.getSimState(subId); + OperatorNameViewController.SubInfo subInfo = subs.get(i); CharSequence carrierName = subs.get(i).getCarrierName(); - if (!TextUtils.isEmpty(carrierName) && simState == TelephonyManager.SIM_STATE_READY) { - ServiceState ss = mKeyguardUpdateMonitor.getServiceState(subId); - if (ss != null && ss.getState() == ServiceState.STATE_IN_SERVICE) { - displayText = carrierName; + if (!TextUtils.isEmpty(carrierName) && subInfo.simReady()) { + if (subInfo.stateInService()) { + displayText = subInfo.getCarrierName(); break; } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/OperatorNameViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/OperatorNameViewController.java index 9c7fed435bea..e49f48f2cf49 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/OperatorNameViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/OperatorNameViewController.java @@ -17,15 +17,22 @@ package com.android.systemui.statusbar; import android.os.Bundle; +import android.telephony.ServiceState; +import android.telephony.SubscriptionInfo; import android.telephony.TelephonyManager; import android.view.View; +import com.android.keyguard.KeyguardUpdateMonitor; +import com.android.keyguard.KeyguardUpdateMonitorCallback; import com.android.systemui.demomode.DemoModeCommandReceiver; import com.android.systemui.plugins.DarkIconDispatcher; import com.android.systemui.statusbar.policy.NetworkController; import com.android.systemui.tuner.TunerService; import com.android.systemui.util.ViewController; +import java.util.ArrayList; +import java.util.List; + import javax.inject.Inject; /** Controller for {@link OperatorNameView}. */ @@ -36,17 +43,20 @@ public class OperatorNameViewController extends ViewController<OperatorNameView> private final NetworkController mNetworkController; private final TunerService mTunerService; private final TelephonyManager mTelephonyManager; + private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; private OperatorNameViewController(OperatorNameView view, DarkIconDispatcher darkIconDispatcher, NetworkController networkController, TunerService tunerService, - TelephonyManager telephonyManager) { + TelephonyManager telephonyManager, + KeyguardUpdateMonitor keyguardUpdateMonitor) { super(view); mDarkIconDispatcher = darkIconDispatcher; mNetworkController = networkController; mTunerService = tunerService; mTelephonyManager = telephonyManager; + mKeyguardUpdateMonitor = keyguardUpdateMonitor; } @Override @@ -54,6 +64,7 @@ public class OperatorNameViewController extends ViewController<OperatorNameView> mDarkIconDispatcher.addDarkReceiver(mDarkReceiver); mNetworkController.addCallback(mSignalCallback); mTunerService.addTunable(mTunable, KEY_SHOW_OPERATOR_NAME); + mKeyguardUpdateMonitor.registerCallback(mKeyguardUpdateMonitorCallback); } @Override @@ -61,11 +72,28 @@ public class OperatorNameViewController extends ViewController<OperatorNameView> mDarkIconDispatcher.removeDarkReceiver(mDarkReceiver); mNetworkController.removeCallback(mSignalCallback); mTunerService.removeTunable(mTunable); + mKeyguardUpdateMonitor.removeCallback(mKeyguardUpdateMonitorCallback); } private void update() { mView.update(mTunerService.getValue(KEY_SHOW_OPERATOR_NAME, 1) != 0, - mTelephonyManager.isDataCapable()); + mTelephonyManager.isDataCapable(), getSubInfos()); + } + + private List<SubInfo> getSubInfos() { + List<SubInfo> result = new ArrayList<>(); + List<SubscriptionInfo> subscritionInfos = + mKeyguardUpdateMonitor.getFilteredSubscriptionInfo(false); + + for (SubscriptionInfo subscriptionInfo : subscritionInfos) { + int subId = subscriptionInfo.getSubscriptionId(); + result.add(new SubInfo( + subscriptionInfo.getCarrierName(), + mKeyguardUpdateMonitor.getSimState(subId), + mKeyguardUpdateMonitor.getServiceState(subId))); + } + + return result; } /** Factory for constructing an {@link OperatorNameViewController}. */ @@ -74,20 +102,23 @@ public class OperatorNameViewController extends ViewController<OperatorNameView> private final NetworkController mNetworkController; private final TunerService mTunerService; private final TelephonyManager mTelephonyManager; + private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; @Inject public Factory(DarkIconDispatcher darkIconDispatcher, NetworkController networkController, - TunerService tunerService, TelephonyManager telephonyManager) { + TunerService tunerService, TelephonyManager telephonyManager, + KeyguardUpdateMonitor keyguardUpdateMonitor) { mDarkIconDispatcher = darkIconDispatcher; mNetworkController = networkController; mTunerService = tunerService; mTelephonyManager = telephonyManager; + mKeyguardUpdateMonitor = keyguardUpdateMonitor; } /** Create an {@link OperatorNameViewController}. */ public OperatorNameViewController create(OperatorNameView view) { return new OperatorNameViewController(view, mDarkIconDispatcher, mNetworkController, - mTunerService, mTelephonyManager); + mTunerService, mTelephonyManager, mKeyguardUpdateMonitor); } } @@ -114,6 +145,15 @@ public class OperatorNameViewController extends ViewController<OperatorNameView> private final TunerService.Tunable mTunable = (key, newValue) -> update(); + + private final KeyguardUpdateMonitorCallback mKeyguardUpdateMonitorCallback = + new KeyguardUpdateMonitorCallback() { + @Override + public void onRefreshCarrierInfo() { + mView.updateText(getSubInfos()); + } + }; + // TODO: do we even register this anywhere? private final DemoModeCommandReceiver mDemoModeCommandReceiver = new DemoModeCommandReceiver() { @Override @@ -132,4 +172,30 @@ public class OperatorNameViewController extends ViewController<OperatorNameView> mView.setText(args.getString("name")); } }; + + static class SubInfo { + private final CharSequence mCarrierName; + private final int mSimState; + private final ServiceState mServiceState; + + private SubInfo(CharSequence carrierName, + int simState, ServiceState serviceState) { + mCarrierName = carrierName; + mSimState = simState; + mServiceState = serviceState; + } + + boolean simReady() { + return mSimState == TelephonyManager.SIM_STATE_READY; + } + + CharSequence getCarrierName() { + return mCarrierName; + } + + boolean stateInService() { + return mServiceState != null + && mServiceState.getState() == ServiceState.STATE_IN_SERVICE; + } + } } |