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

Commit 1d1720fd authored by John Spurlock's avatar John Spurlock Committed by Android (Google) Code Review
Browse files

Merge "QS: Fix some QS layout issues." into lmp-dev

parents 186b8690 bceed060
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -90,6 +90,14 @@
    <!-- The number of columns that the top level tiles span in the QuickSettings -->
    <integer name="quick_settings_user_time_settings_tile_span">1</integer>

    <!-- The default tiles to display in QuickSettings -->
    <string name="quick_settings_tiles_default" translatable="false">
        wifi,bt,inversion,cell,airplane,rotation,flashlight,location,cast
    </string>

    <!-- The tiles to display in QuickSettings -->
    <string name="quick_settings_tiles" translatable="false">default</string>

    <!-- Whether or not the RSSI tile is capitalized or not. -->
    <bool name="quick_settings_rssi_tile_capitalization">true</bool>

+20 −3
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ import com.android.systemui.settings.ToggleSlider;
import com.android.systemui.statusbar.phone.QSTileHost;

import java.util.ArrayList;
import java.util.Collection;

/** View that represents the quick settings tile panel. **/
public class QSPanel extends ViewGroup {
@@ -186,12 +187,25 @@ public class QSPanel extends ViewGroup {
        v.setVisibility(visible ? VISIBLE : GONE);
    }

    public void addTile(final QSTile<?> tile) {
    public void setTiles(Collection<QSTile<?>> tiles) {
        for (TileRecord record : mRecords) {
            removeView(record.tileView);
        }
        mRecords.clear();
        for (QSTile<?> tile : tiles) {
            addTile(tile);
        }
        if (isShowingDetail()) {
            mDetail.bringToFront();
        }
    }

    private void addTile(final QSTile<?> tile) {
        final TileRecord r = new TileRecord();
        r.tile = tile;
        r.tileView = tile.createTileView(mContext);
        r.tileView.setVisibility(View.GONE);
        r.tile.setCallback(new QSTile.Callback() {
        final QSTile.Callback callback = new QSTile.Callback() {
            @Override
            public void onStateChanged(QSTile.State state) {
                setTileVisibility(r.tileView, state.visible);
@@ -213,7 +227,8 @@ public class QSPanel extends ViewGroup {
                    fireScanStateChanged(state);
                }
            }
        });
        };
        r.tile.setCallback(callback);
        final View.OnClickListener click = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
@@ -227,6 +242,8 @@ public class QSPanel extends ViewGroup {
            }
        };
        r.tileView.init(click, clickSecondary);
        r.tile.setListening(mListening);
        callback.onStateChanged(r.tile.getState());
        r.tile.refreshState();
        mRecords.add(r);

+26 −3
Original line number Diff line number Diff line
@@ -37,9 +37,8 @@ import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.statusbar.policy.RotationLockController;
import com.android.systemui.statusbar.policy.HotspotController;
import com.android.systemui.statusbar.policy.ZenModeController;
import com.android.systemui.volume.VolumeComponent;

import java.util.List;
import java.util.Collection;
import java.util.Objects;

/**
@@ -134,6 +133,14 @@ public abstract class QSTile<TState extends State> implements Listenable {
        mHandler.obtainMessage(H.SCAN_STATE_CHANGED, state ? 1 : 0, 0).sendToTarget();
    }

    public void destroy() {
        mHandler.sendEmptyMessage(H.DESTROY);
    }

    public TState getState() {
        return mState;
    }

    // call only on tile worker looper

    private void handleSetCallback(Callback callback) {
@@ -181,6 +188,11 @@ public abstract class QSTile<TState extends State> implements Listenable {
        handleRefreshState(null);
    }

    protected void handleDestroy() {
        setListening(false);
        mCallback = null;
    }

    protected final class H extends Handler {
        private static final int SET_CALLBACK = 1;
        private static final int CLICK = 2;
@@ -190,6 +202,7 @@ public abstract class QSTile<TState extends State> implements Listenable {
        private static final int USER_SWITCH = 6;
        private static final int TOGGLE_STATE_CHANGED = 7;
        private static final int SCAN_STATE_CHANGED = 8;
        private static final int DESTROY = 9;

        private H(Looper looper) {
            super(looper);
@@ -223,6 +236,11 @@ public abstract class QSTile<TState extends State> implements Listenable {
                } else if (msg.what == SCAN_STATE_CHANGED) {
                    name = "handleScanStateChanged";
                    handleScanStateChanged(msg.arg1 != 0);
                } else if (msg.what == DESTROY) {
                    name = "handleDestroy";
                    handleDestroy();
                } else {
                    throw new IllegalArgumentException("Unknown msg: " + msg.what);
                }
            } catch (Throwable t) {
                final String error = "Error in " + name;
@@ -245,7 +263,8 @@ public abstract class QSTile<TState extends State> implements Listenable {
        void collapsePanels();
        Looper getLooper();
        Context getContext();
        List<QSTile<?>> getTiles();
        Collection<QSTile<?>> getTiles();
        void setCallback(Callback callback);
        BluetoothController getBluetoothController();
        LocationController getLocationController();
        RotationLockController getRotationLockController();
@@ -255,6 +274,10 @@ public abstract class QSTile<TState extends State> implements Listenable {
        CastController getCastController();
        FlashlightController getFlashlightController();
        KeyguardMonitor getKeyguardMonitor();

        public interface Callback {
            void onTilesChanged();
        }
    }

    public static class State {
+20 −13
Original line number Diff line number Diff line
@@ -23,8 +23,9 @@ import android.content.IntentFilter;
import android.content.SharedPreferences;

import com.android.systemui.R;
import com.android.systemui.statusbar.policy.Listenable;

public class UsageTracker {
public class UsageTracker implements Listenable {
    private static final long MILLIS_PER_DAY = 1000 * 60 * 60 * 24;

    private final Context mContext;
@@ -32,7 +33,7 @@ public class UsageTracker {
    private final String mPrefKey;
    private final String mResetAction;

    private BroadcastReceiver mReceiver;
    private boolean mRegistered;

    public UsageTracker(Context context, Class<?> tile) {
        mContext = context;
@@ -42,17 +43,14 @@ public class UsageTracker {
        mResetAction = "com.android.systemui.qs." + tile.getSimpleName() + ".usage_reset";
    }

    public void listenForReset() {
        if (mReceiver != null) {
            mReceiver = new BroadcastReceiver() {
    @Override
                public void onReceive(Context context, Intent intent) {
                    if (mResetAction.equals(intent.getAction())) {
                        reset();
                    }
                }
            };
    public void setListening(boolean listen) {
        if (listen && !mRegistered) {
             mContext.registerReceiver(mReceiver, new IntentFilter(mResetAction));
             mRegistered = true;
        } else if (!listen && mRegistered) {
            mContext.unregisterReceiver(mReceiver);
            mRegistered = false;
        }
    }

@@ -72,4 +70,13 @@ public class UsageTracker {
    private SharedPreferences getSharedPrefs() {
        return mContext.getSharedPreferences(mContext.getPackageName(), 0);
    }

    private BroadcastReceiver mReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (mResetAction.equals(intent.getAction())) {
                reset();
            }
        }
    };
}
+4 −0
Original line number Diff line number Diff line
@@ -31,6 +31,8 @@ import com.android.systemui.qs.QSTile;
public class AirplaneModeTile extends QSTile<QSTile.BooleanState> {
    private final GlobalSetting mSetting;

    private boolean mListening;

    public AirplaneModeTile(Host host) {
        super(host);

@@ -79,6 +81,8 @@ public class AirplaneModeTile extends QSTile<QSTile.BooleanState> {
    }

    public void setListening(boolean listening) {
        if (mListening == listening) return;
        mListening = listening;
        if (listening) {
            final IntentFilter filter = new IntentFilter();
            filter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED);
Loading