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 Original line Diff line number Diff line
@@ -45,6 +45,8 @@ public class CellularTile extends QSTile<QSTile.SignalState> {
    private final MobileDataController mDataController;
    private final MobileDataController mDataController;
    private final CellularDetailAdapter mDetailAdapter;
    private final CellularDetailAdapter mDetailAdapter;


    private final CellSignalCallback mSignalCallback = new CellSignalCallback();

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


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


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


    private Intent mLastIntent;

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


    @Override
    @Override
    protected void handleUpdateState(State state, Object arg) {
    protected void handleUpdateState(State state, Object arg) {
        if (!(arg instanceof Intent)) return;
        Intent intent = (Intent) arg;
        final 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.visible = intent.getBooleanExtra("visible", true);
        state.contentDescription = intent.getStringExtra("contentDescription");
        state.contentDescription = intent.getStringExtra("contentDescription");
        state.label = intent.getStringExtra("label");
        state.label = intent.getStringExtra("label");
+16 −12
Original line number Original line 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;
import com.android.systemui.statusbar.policy.NetworkController.AccessPointController;
import com.android.systemui.statusbar.policy.NetworkController.AccessPointController;
import com.android.systemui.statusbar.policy.NetworkController.IconState;
import com.android.systemui.statusbar.policy.NetworkController.IconState;
import com.android.systemui.statusbar.policy.NetworkController.SignalCallback;
import com.android.systemui.statusbar.policy.SignalCallbackAdapter;
import com.android.systemui.statusbar.policy.SignalCallbackAdapter;


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


    private final WifiSignalCallback mSignalCallback = new WifiSignalCallback();

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


        boolean wifiConnected = cb.enabled && (cb.wifiSignalIconId > 0) && (cb.enabledDesc != null);
        boolean wifiConnected = cb.enabled && (cb.wifiSignalIconId > 0) && (cb.enabledDesc != null);
        boolean wifiNotConnected = (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
        @Override
        public void setWifiIndicators(boolean enabled, IconState statusIcon, IconState qsIcon,
        public void setWifiIndicators(boolean enabled, IconState statusIcon, IconState qsIcon,
                boolean activityIn, boolean activityOut, String description) {
                boolean activityIn, boolean activityOut, String description) {
            if (DEBUG) Log.d(TAG, "onWifiSignalChanged enabled=" + enabled);
            if (DEBUG) Log.d(TAG, "onWifiSignalChanged enabled=" + enabled);
            final CallbackInfo info = new CallbackInfo();
            mInfo.enabled = enabled;
            info.enabled = enabled;
            mInfo.connected = qsIcon.visible;
            info.connected = qsIcon.visible;
            mInfo.wifiSignalIconId = qsIcon.icon;
            info.wifiSignalIconId = qsIcon.icon;
            mInfo.enabledDesc = description;
            info.enabledDesc = description;
            mInfo.activityIn = activityIn;
            info.activityIn = activityIn;
            mInfo.activityOut = activityOut;
            info.activityOut = activityOut;
            mInfo.wifiSignalContentDescription = qsIcon.contentDescription;
            info.wifiSignalContentDescription = qsIcon.contentDescription;
            refreshState(mInfo);
            refreshState(info);
        }
        }
    };
    };