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

Commit e06b065f authored by Jason Monk's avatar Jason Monk
Browse files

Fix QS edit state being out of sync

Do this by making SignalCallbacks send out initial state immediately
rather than posting this state.  This requires a little refactoring
to how SignalControllers work.

Bug: 27061469
Change-Id: Iba6b91a4a5d1d13cce0f0d308b6f85f0340bff39
parent 1aeb31bd
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -221,6 +221,7 @@ public class SignalClusterView

        apply();
        applyIconTint();
        mNC.addSignalCallback(this);
    }

    @Override
+0 −1
Original line number Diff line number Diff line
@@ -995,7 +995,6 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
        SignalClusterView signalCluster =
                (SignalClusterView) containerView.findViewById(R.id.signal_cluster);
        if (signalCluster != null) {
            mNetworkController.addSignalCallback(signalCluster);
            signalCluster.setSecurityController(mSecurityController);
            signalCluster.setNetworkController(mNetworkController);
        }
+3 −2
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ import android.content.Context;
import android.net.NetworkCapabilities;

import com.android.systemui.statusbar.policy.NetworkController.IconState;
import com.android.systemui.statusbar.policy.NetworkController.SignalCallback;

import java.util.BitSet;

@@ -46,12 +47,12 @@ public class EthernetSignalController extends
    }

    @Override
    public void notifyListeners() {
    public void notifyListeners(SignalCallback callback) {
        boolean ethernetVisible = mCurrentState.connected;
        String contentDescription = getStringIfExists(getContentDescription());

        // TODO: wire up data transfer using WifiSignalPoller.
        mCallbackHandler.setEthernetIndicators(new IconState(ethernetVisible, getCurrentIconId(),
        callback.setEthernetIndicators(new IconState(ethernetVisible, getCurrentIconId(),
                contentDescription));
    }

+3 −2
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import com.android.internal.telephony.TelephonyIntents;
import com.android.internal.telephony.cdma.EriInfo;
import com.android.systemui.R;
import com.android.systemui.statusbar.policy.NetworkController.IconState;
import com.android.systemui.statusbar.policy.NetworkController.SignalCallback;
import com.android.systemui.statusbar.policy.NetworkControllerImpl.Config;
import com.android.systemui.statusbar.policy.NetworkControllerImpl.SubscriptionDefaults;

@@ -198,7 +199,7 @@ public class MobileSignalController extends SignalController<
    }

    @Override
    public void notifyListeners() {
    public void notifyListeners(SignalCallback callback) {
        MobileIconGroup icons = getIcons();

        String contentDescription = getStringIfExists(getContentDescription());
@@ -231,7 +232,7 @@ public class MobileSignalController extends SignalController<
                || mCurrentState.iconGroup == TelephonyIcons.ROAMING
                || mCurrentState.iconGroup == TelephonyIcons.DATA_DISABLED;
        int typeIcon = showDataIcon ? icons.mDataType : 0;
        mCallbackHandler.setMobileDataIndicators(statusIcon, qsIcon, typeIcon, qsTypeIcon,
        callback.setMobileDataIndicators(statusIcon, qsIcon, typeIcon, qsTypeIcon,
                activityIn, activityOut, dataContentDescription, description, icons.mIsWide,
                mSubscriptionInfo.getSubscriptionId());
    }
+7 −7
Original line number Diff line number Diff line
@@ -322,16 +322,16 @@ public class NetworkControllerImpl extends BroadcastReceiver
    }

    public void addSignalCallback(SignalCallback cb) {
        mCallbackHandler.setListening(cb, true);
        mCallbackHandler.setSubs(mCurrentSubscriptions);
        mCallbackHandler.setIsAirplaneMode(new IconState(mAirplaneMode,
        cb.setSubs(mCurrentSubscriptions);
        cb.setIsAirplaneMode(new IconState(mAirplaneMode,
                TelephonyIcons.FLIGHT_MODE_ICON, R.string.accessibility_airplane_mode, mContext));
        mCallbackHandler.setNoSims(mHasNoSims);
        mWifiSignalController.notifyListeners();
        mEthernetSignalController.notifyListeners();
        cb.setNoSims(mHasNoSims);
        mWifiSignalController.notifyListeners(cb);
        mEthernetSignalController.notifyListeners(cb);
        for (MobileSignalController mobileSignalController : mMobileSignalControllers.values()) {
            mobileSignalController.notifyListeners();
            mobileSignalController.notifyListeners(cb);
        }
        mCallbackHandler.setListening(cb, true);
    }

    @Override
Loading