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

Commit 2db5a337 authored by Paul Keith's avatar Paul Keith Committed by Bruno Martins
Browse files

SignalClusterView: Hide signal icons for disabled SIMs

Change-Id: If79814cb6bd77150640f977764dfd59b87448c64
parent 8a3e140f
Loading
Loading
Loading
Loading
+29 −2
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.graphics.Color;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.util.ArraySet;
import android.util.AttributeSet;
import android.util.Log;
@@ -49,6 +50,9 @@ import com.android.systemui.statusbar.policy.SecurityController;
import com.android.systemui.tuner.TunerService;
import com.android.systemui.tuner.TunerService.Tunable;

import org.lineageos.internal.util.TelephonyExtUtils;
import org.lineageos.internal.util.TelephonyExtUtils.ProvisioningChangedListener;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@@ -56,7 +60,7 @@ import java.util.Objects;
// Intimately tied to the design of res/layout/signal_cluster_view.xml
public class SignalClusterView extends LinearLayout implements NetworkControllerImpl.SignalCallback,
        SecurityController.SecurityControllerCallback, Tunable,
        DarkReceiver {
        DarkReceiver, ProvisioningChangedListener {

    static final String TAG = "SignalClusterView";
    static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
@@ -149,6 +153,23 @@ public class SignalClusterView extends LinearLayout implements NetworkController
        mNetworkController = Dependency.get(NetworkController.class);
        mSecurityController = Dependency.get(SecurityController.class);
        updateActivityEnabled();

        TelephonyExtUtils.getInstance(context).addListener(this);
    }

    @Override
    public void onProvisioningChanged(int slotId, boolean isProvisioned) {
        int[] subId = SubscriptionManager.getSubId(slotId);
        if (subId != null) {
            PhoneState state = getState(subId[0]);
            if (state != null) {
                state.mProvisioned = isProvisioned;
                if (!isProvisioned) {
                    state.mMobileVisible = false;
                }
            }
            apply();
        }
    }

    public void setForceBlockWifi() {
@@ -304,7 +325,7 @@ public class SignalClusterView extends LinearLayout implements NetworkController
        if (state == null) {
            return;
        }
        state.mMobileVisible = statusIcon.visible && !mBlockMobile;
        state.mMobileVisible = statusIcon.visible && !mBlockMobile && state.mProvisioned;
        state.mMobileStrengthId = statusIcon.icon;
        state.mMobileTypeId = statusType;
        state.mMobileDescription = statusIcon.contentDescription;
@@ -641,6 +662,7 @@ public class SignalClusterView extends LinearLayout implements NetworkController
    private class PhoneState {
        private final int mSubId;
        private boolean mMobileVisible = false;
        private boolean mProvisioned = true;
        private int mMobileStrengthId = 0, mMobileTypeId = 0;
        private int mLastMobileStrengthId = -1;
        private int mLastMobileTypeId = -1;
@@ -660,6 +682,11 @@ public class SignalClusterView extends LinearLayout implements NetworkController
                    .inflate(R.layout.mobile_signal_group, null);
            setViews(root);
            mSubId = subId;

            TelephonyExtUtils extTelephony = TelephonyExtUtils.getInstance(context);
            if (extTelephony.hasService()) {
                mProvisioned = extTelephony.isSubProvisioned(subId);
            }
        }

        public void setViews(ViewGroup root) {