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

Commit 878c0933 authored by Jason Monk's avatar Jason Monk
Browse files

Fix blank tiles on QS rotate

Some tiles were skipping updates due to lack of information, make
these tiles handle a clear state better.

Bug: 22531578
Change-Id: I7bd75b3e032592a496fcaf080ce9cbe3b5cf20da
parent b2eed1d6
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -45,6 +45,8 @@ public class CellularTile extends QSTile<QSTile.SignalState> {
    private final MobileDataController mDataController;
    private final CellularDetailAdapter mDetailAdapter;

    private final CellSignalCallback mSignalCallback = new CellSignalCallback();

    public CellularTile(Host host) {
        super(host);
        mController = host.getNetworkController();
@@ -90,8 +92,10 @@ public class CellularTile extends QSTile<QSTile.SignalState> {
    protected void handleUpdateState(SignalState state, Object arg) {
        state.visible = mController.hasMobileDataFeature();
        if (!state.visible) return;
        final CallbackInfo cb = (CallbackInfo) arg;
        if (cb == null) return;
        CallbackInfo cb = (CallbackInfo) arg;
        if (cb == null) {
            cb = mSignalCallback.mInfo;
        }

        final Resources r = mContext.getResources();
        final int iconId = cb.noSim ? R.drawable.ic_qs_no_sim
@@ -152,7 +156,7 @@ public class CellularTile extends QSTile<QSTile.SignalState> {
        boolean isDataTypeIconWide;
    }

    private final SignalCallback mSignalCallback = new SignalCallbackAdapter() {
    private final class CellSignalCallback extends SignalCallbackAdapter {
        private final CallbackInfo mInfo = new CallbackInfo();
        @Override
        public void setWifiIndicators(boolean enabled, IconState statusIcon, IconState qsIcon,
+12 −2
Original line number Diff line number Diff line
@@ -45,6 +45,8 @@ public class IntentTile extends QSTile<QSTile.State> {
    private int mCurrentUserId;
    private String mIntentPackage;

    private Intent mLastIntent;

    private IntentTile(Host host, String action) {
        super(host);
        mContext.registerReceiver(mReceiver, new IntentFilter(action));
@@ -112,8 +114,16 @@ public class IntentTile extends QSTile<QSTile.State> {

    @Override
    protected void handleUpdateState(State state, Object arg) {
        if (!(arg instanceof Intent)) return;
        final Intent intent = (Intent) arg;
        Intent intent = (Intent) arg;
        if (intent == null) {
            if (mLastIntent == null) {
                return;
            }
            // No intent but need to refresh state, just use the last one.
            intent = mLastIntent;
        }
        // Save the last one in case we need it later.
        mLastIntent = intent;
        state.visible = intent.getBooleanExtra("visible", true);
        state.contentDescription = intent.getStringExtra("contentDescription");
        state.label = intent.getStringExtra("label");
+16 −12
Original line number Diff line number Diff line
@@ -35,7 +35,6 @@ import com.android.systemui.qs.SignalTileView;
import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.statusbar.policy.NetworkController.AccessPointController;
import com.android.systemui.statusbar.policy.NetworkController.IconState;
import com.android.systemui.statusbar.policy.NetworkController.SignalCallback;
import com.android.systemui.statusbar.policy.SignalCallbackAdapter;

import java.util.List;
@@ -49,6 +48,8 @@ public class WifiTile extends QSTile<QSTile.SignalState> {
    private final WifiDetailAdapter mDetailAdapter;
    private final QSTile.SignalState mStateBeforeClick = newTileState();

    private final WifiSignalCallback mSignalCallback = new WifiSignalCallback();

    public WifiTile(Host host) {
        super(host);
        mController = host.getNetworkController();
@@ -118,8 +119,10 @@ public class WifiTile extends QSTile<QSTile.SignalState> {
    protected void handleUpdateState(SignalState state, Object arg) {
        state.visible = true;
        if (DEBUG) Log.d(TAG, "handleUpdateState arg=" + arg);
        if (arg == null) return;
        CallbackInfo cb = (CallbackInfo) arg;
        if (cb == null) {
            cb = mSignalCallback.mInfo;
        }

        boolean wifiConnected = cb.enabled && (cb.wifiSignalIconId > 0) && (cb.enabledDesc != null);
        boolean wifiNotConnected = (cb.wifiSignalIconId > 0) && (cb.enabledDesc == null);
@@ -213,20 +216,21 @@ public class WifiTile extends QSTile<QSTile.SignalState> {
        }
    }

    private final SignalCallback mSignalCallback = new SignalCallbackAdapter() {
    private final class WifiSignalCallback extends SignalCallbackAdapter {
        final CallbackInfo mInfo = new CallbackInfo();

        @Override
        public void setWifiIndicators(boolean enabled, IconState statusIcon, IconState qsIcon,
                boolean activityIn, boolean activityOut, String description) {
            if (DEBUG) Log.d(TAG, "onWifiSignalChanged enabled=" + enabled);
            final CallbackInfo info = new CallbackInfo();
            info.enabled = enabled;
            info.connected = qsIcon.visible;
            info.wifiSignalIconId = qsIcon.icon;
            info.enabledDesc = description;
            info.activityIn = activityIn;
            info.activityOut = activityOut;
            info.wifiSignalContentDescription = qsIcon.contentDescription;
            refreshState(info);
            mInfo.enabled = enabled;
            mInfo.connected = qsIcon.visible;
            mInfo.wifiSignalIconId = qsIcon.icon;
            mInfo.enabledDesc = description;
            mInfo.activityIn = activityIn;
            mInfo.activityOut = activityOut;
            mInfo.wifiSignalContentDescription = qsIcon.contentDescription;
            refreshState(mInfo);
        }
    };