summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/OperatorNameView.java45
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/OperatorNameViewController.java74
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;
+ }
+ }
}