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

Commit b38edbb5 authored by Fabian Kozynski's avatar Fabian Kozynski
Browse files

Fix "No Service" in QS when Airplane Mode

QSCarrierGroup now accounts for the device being on airplane mode when
deciding what to display. In particular, in QS, it marks the view as
GONE.

Test: visual, in phone with DSDS
Test: atest CarrierTextControllerTest
Fixes: 129839626
Change-Id: I54d03f6a00e6e9604fc646b8993a04429881552a
parent bd39e731
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -311,20 +311,23 @@ public class CarrierTextController {

        displayText = updateCarrierTextWithSimIoError(displayText, carrierNames, subOrderBySlot,
                allSimsMissing);
        boolean airplaneMode = false;
        // APM (airplane mode) != no carrier state. There are carrier services
        // (e.g. WFC = Wi-Fi calling) which may operate in APM.
        if (!anySimReadyAndInService && WirelessUtils.isAirplaneModeOn(mContext)) {
            displayText = getAirplaneModeMessage();
            airplaneMode = true;
        }

        if (TextUtils.isEmpty(displayText)) {
        if (TextUtils.isEmpty(displayText) && !airplaneMode) {
            displayText = TextUtils.join(mSeparator, carrierNames);
        }
        final CarrierTextCallbackInfo info = new CarrierTextCallbackInfo(
                displayText,
                carrierNames,
                !allSimsMissing,
                subsIds);
                subsIds,
                airplaneMode);
        postToCallback(info);
    }

@@ -525,14 +528,22 @@ public class CarrierTextController {
        public final CharSequence[] listOfCarriers;
        public final boolean anySimReady;
        public final int[] subscriptionIds;
        public boolean airplaneMode;

        @VisibleForTesting
        public CarrierTextCallbackInfo(CharSequence carrierText, CharSequence[] listOfCarriers,
                boolean anySimReady, int[] subscriptionIds) {
            this(carrierText, listOfCarriers, anySimReady, subscriptionIds, false);
        }

        @VisibleForTesting
        public CarrierTextCallbackInfo(CharSequence carrierText, CharSequence[] listOfCarriers,
                boolean anySimReady, int[] subscriptionIds, boolean airplaneMode) {
            this.carrierText = carrierText;
            this.listOfCarriers = listOfCarriers;
            this.anySimReady = anySimReady;
            this.subscriptionIds = subscriptionIds;
            this.airplaneMode = airplaneMode;
        }
    }

+39 −33
Original line number Diff line number Diff line
@@ -139,6 +139,10 @@ public class QSCarrierGroup extends LinearLayout implements

    @Override
    public void updateCarrierInfo(CarrierTextController.CarrierTextCallbackInfo info) {
        if (info.airplaneMode) {
            setVisibility(View.GONE);
        } else {
            setVisibility(View.VISIBLE);
            if (info.anySimReady) {
                boolean[] slotSeen = new boolean[SIM_SLOTS];
                if (info.listOfCarriers.length == info.subscriptionIds.length) {
@@ -156,7 +160,8 @@ public class QSCarrierGroup extends LinearLayout implements
                        }
                        mInfos[slot].visible = true;
                        slotSeen[slot] = true;
                    mCarrierGroups[slot].setCarrierText(info.listOfCarriers[i].toString().trim());
                        mCarrierGroups[slot].setCarrierText(
                                info.listOfCarriers[i].toString().trim());
                        mCarrierGroups[slot].setVisibility(View.VISIBLE);
                    }
                    for (int i = 0; i < SIM_SLOTS; i++) {
@@ -178,6 +183,7 @@ public class QSCarrierGroup extends LinearLayout implements
                    mCarrierGroups[i].setVisibility(View.GONE);
                }
            }
        }
        handleUpdateState();
    }