Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 87b5fbae authored by Dave Mankoff's avatar Dave Mankoff
Browse files

5/N Move KeyguardUpdateMonitor to OperatorNameViewController.

Bug: 196625757
Test: manual
Change-Id: Ib9181eeac5eda86b3a2701b08bbde21bdffe56fc
parent cbf35131
Loading
Loading
Loading
Loading
+8 −37
Original line number Diff line number Diff line
@@ -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;
                }
            }
+70 −4
Original line number Diff line number Diff line
@@ -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;
        }
    }
}