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

Commit bd15112a authored by Mike Corrigan's avatar Mike Corrigan Committed by Daniel Sandler
Browse files

Fix the display priority of the airplane mode icon.

The airplane icon is used as a fallback when no
other radios are available *and* the AIRPLANE_MODE_ON system
setting is set to 1. (NetworkController now tracks changes to
the setting via ACTION_AIRPLANE_MODE_CHANGED broadcasts.)

This fixes wifi-only devices, for which the previous logic
did not correctly and consistently detect airplane mode.

Bug: 3489820
Change-Id: I226bb0e977f6a5fd3f2d829ba51ca54c5c910ef3
parent 0eb6af89
Loading
Loading
Loading
Loading
+24 −10
Original line number Diff line number Diff line
@@ -98,6 +98,8 @@ public class NetworkController extends BroadcastReceiver {
    private int mInetCondition = 0;
    private static final int INET_CONDITION_THRESHOLD = 50;

    private boolean mAirplaneMode = false;

    // our ui
    Context mContext;
    ArrayList<ImageView> mPhoneSignalIconViews = new ArrayList<ImageView>();
@@ -155,8 +157,12 @@ public class NetworkController extends BroadcastReceiver {
        filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
        filter.addAction(ConnectivityManager.INET_CONDITION_ACTION);
        filter.addAction(Intent.ACTION_CONFIGURATION_CHANGED);
        filter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED);
        context.registerReceiver(this, filter);

        // AIRPLANE_MODE_CHANGED is sent at boot; we've probably already missed it
        updateAirplaneMode();

        // yuck
        mBatteryStats = BatteryStatsService.getService();
    }
@@ -212,6 +218,9 @@ public class NetworkController extends BroadcastReceiver {
            refreshViews();
        } else if (action.equals(Intent.ACTION_CONFIGURATION_CHANGED)) {
            refreshViews();
        } else if (action.equals(Intent.ACTION_AIRPLANE_MODE_CHANGED)) {
            updateAirplaneMode();
            refreshViews();
        }
    }

@@ -379,18 +388,16 @@ public class NetworkController extends BroadcastReceiver {
        return (levelEvdoDbm < levelEvdoSnr) ? levelEvdoDbm : levelEvdoSnr;
    }

    private void updateAirplaneMode() {
        mAirplaneMode = (Settings.System.getInt(mContext.getContentResolver(),
            Settings.System.AIRPLANE_MODE_ON, 0) == 1);
    }

    private final void updateTelephonySignalStrength() {
        // Display signal strength while in "emergency calls only" mode
        if (mServiceState == null || (!hasService() && !mServiceState.isEmergencyOnly())) {
        if (!hasService()) {
            //Slog.d(TAG, "updateTelephonySignalStrength: no service");
            if (Settings.System.getInt(mContext.getContentResolver(),
                    Settings.System.AIRPLANE_MODE_ON, 0) == 1) {
                mPhoneSignalIconId = R.drawable.stat_sys_signal_flightmode;
                mDataSignalIconId = R.drawable.stat_sys_signal_flightmode;
            } else {
            mPhoneSignalIconId = R.drawable.stat_sys_signal_null;
            mDataSignalIconId = R.drawable.stat_sys_signal_0; // note we use 0 instead of null
            }
        } else {
            if (mSignalStrength == null) {
                mPhoneSignalIconId = R.drawable.stat_sys_signal_null;
@@ -734,6 +741,12 @@ public class NetworkController extends BroadcastReceiver {
            label = mContext.getString(R.string.bluetooth_tethered);
            combinedSignalIconId = mBluetoothTetherIconId;
            dataTypeIconId = 0;
        } else if (mAirplaneMode &&
                (mServiceState == null || (!hasService() && !mServiceState.isEmergencyOnly()))) {
            // Only display the flight-mode icon if not in "emergency calls only" mode.
            label = context.getString(R.string.status_bar_settings_signal_meter_disconnected);
            combinedSignalIconId = R.drawable.stat_sys_signal_flightmode;
            dataTypeIconId = 0;
        } else {
            label = context.getString(R.string.status_bar_settings_signal_meter_disconnected);
            // On devices without mobile radios, we want to show the wifi icon
@@ -747,6 +760,7 @@ public class NetworkController extends BroadcastReceiver {
                    + Integer.toHexString(combinedSignalIconId)
                    + "/" + getResourceName(combinedSignalIconId)
                    + " dataDirectionOverlayIconId=0x" + Integer.toHexString(dataDirectionOverlayIconId)
                    + " mAirplaneMode=" + mAirplaneMode
                    + " mDataActivity=" + mDataActivity
                    + " mPhoneSignalIconId=0x" + Integer.toHexString(mPhoneSignalIconId)
                    + " mDataDirectionIconId=0x" + Integer.toHexString(mDataDirectionIconId)