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

Commit 0d89767b authored by Fabian Kozynski's avatar Fabian Kozynski Committed by Android (Google) Code Review
Browse files

Merge "Add dumpable to QSTile. Dump QSTileHost, QSPanel, QuickQSPanel" into qt-dev

parents e0b95fbe 00d494d2
Loading
Loading
Loading
Loading
+32 −1
Original line number Original line Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.qs;
package com.android.systemui.qs;


import static com.android.systemui.qs.tileimpl.QSTileImpl.getColorForState;
import static com.android.systemui.qs.tileimpl.QSTileImpl.getColorForState;
import static com.android.systemui.util.InjectionInflationController.VIEW_CONTEXT;


import android.annotation.Nullable;
import android.annotation.Nullable;
import android.content.ComponentName;
import android.content.ComponentName;
@@ -37,6 +38,8 @@ import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settingslib.Utils;
import com.android.settingslib.Utils;
import com.android.systemui.Dependency;
import com.android.systemui.Dependency;
import com.android.systemui.DumpController;
import com.android.systemui.Dumpable;
import com.android.systemui.R;
import com.android.systemui.R;
import com.android.systemui.plugins.qs.DetailAdapter;
import com.android.systemui.plugins.qs.DetailAdapter;
import com.android.systemui.plugins.qs.QSTile;
import com.android.systemui.plugins.qs.QSTile;
@@ -51,11 +54,17 @@ import com.android.systemui.statusbar.policy.BrightnessMirrorController.Brightne
import com.android.systemui.tuner.TunerService;
import com.android.systemui.tuner.TunerService;
import com.android.systemui.tuner.TunerService.Tunable;
import com.android.systemui.tuner.TunerService.Tunable;


import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collection;


import javax.inject.Inject;
import javax.inject.Named;

/** View that represents the quick settings tile panel (when expanded/pulled down). **/
/** View that represents the quick settings tile panel (when expanded/pulled down). **/
public class QSPanel extends LinearLayout implements Tunable, Callback, BrightnessMirrorListener {
public class QSPanel extends LinearLayout implements Tunable, Callback, BrightnessMirrorListener,
        Dumpable {


    public static final String QS_SHOW_BRIGHTNESS = "qs_show_brightness";
    public static final String QS_SHOW_BRIGHTNESS = "qs_show_brightness";
    public static final String QS_SHOW_HEADER = "qs_show_header";
    public static final String QS_SHOW_HEADER = "qs_show_header";
@@ -74,6 +83,7 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne


    private QSDetail.Callback mCallback;
    private QSDetail.Callback mCallback;
    private BrightnessController mBrightnessController;
    private BrightnessController mBrightnessController;
    private DumpController mDumpController;
    protected QSTileHost mHost;
    protected QSTileHost mHost;


    protected QSSecurityFooter mFooter;
    protected QSSecurityFooter mFooter;
@@ -93,6 +103,12 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne
    }
    }


    public QSPanel(Context context, AttributeSet attrs) {
    public QSPanel(Context context, AttributeSet attrs) {
        this(context, attrs, null);
    }

    @Inject
    public QSPanel(@Named(VIEW_CONTEXT) Context context, AttributeSet attrs,
            DumpController dumpController) {
        super(context, attrs);
        super(context, attrs);
        mContext = context;
        mContext = context;


@@ -119,6 +135,7 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne


        mBrightnessController = new BrightnessController(getContext(),
        mBrightnessController = new BrightnessController(getContext(),
                findViewById(R.id.brightness_slider));
                findViewById(R.id.brightness_slider));
        mDumpController = dumpController;
    }
    }


    protected void addDivider() {
    protected void addDivider() {
@@ -170,6 +187,7 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne
        if (mBrightnessMirrorController != null) {
        if (mBrightnessMirrorController != null) {
            mBrightnessMirrorController.addCallback(this);
            mBrightnessMirrorController.addCallback(this);
        }
        }
        if (mDumpController != null) mDumpController.addListener(this);
    }
    }


    @Override
    @Override
@@ -184,6 +202,7 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne
        if (mBrightnessMirrorController != null) {
        if (mBrightnessMirrorController != null) {
            mBrightnessMirrorController.removeCallback(this);
            mBrightnessMirrorController.removeCallback(this);
        }
        }
        if (mDumpController != null) mDumpController.removeListener(this);
        super.onDetachedFromWindow();
        super.onDetachedFromWindow();
    }
    }


@@ -649,6 +668,18 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne
        }
        }
    }
    }


    @Override
    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
        pw.println(getClass().getSimpleName() + ":");
        pw.println("  Tile records:");
        for (TileRecord record : mRecords) {
            if (record.tile instanceof Dumpable) {
                pw.print("    "); ((Dumpable) record.tile).dump(fd, pw, args);
                pw.print("    "); pw.println(record.tileView.toString());
            }
        }
    }

    protected static class Record {
    protected static class Record {
        DetailAdapter detailAdapter;
        DetailAdapter detailAdapter;
        int x;
        int x;
+18 −2
Original line number Original line Diff line number Diff line
@@ -30,6 +30,8 @@ import android.text.TextUtils;
import android.util.Log;
import android.util.Log;


import com.android.systemui.Dependency;
import com.android.systemui.Dependency;
import com.android.systemui.DumpController;
import com.android.systemui.Dumpable;
import com.android.systemui.R;
import com.android.systemui.R;
import com.android.systemui.SysUiServiceProvider;
import com.android.systemui.SysUiServiceProvider;
import com.android.systemui.plugins.PluginListener;
import com.android.systemui.plugins.PluginListener;
@@ -47,6 +49,8 @@ import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.tuner.TunerService;
import com.android.systemui.tuner.TunerService;
import com.android.systemui.tuner.TunerService.Tunable;
import com.android.systemui.tuner.TunerService.Tunable;


import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collection;
@@ -61,7 +65,7 @@ import javax.inject.Singleton;


/** Platform implementation of the quick settings tile host **/
/** Platform implementation of the quick settings tile host **/
@Singleton
@Singleton
public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory> {
public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, Dumpable {
    private static final String TAG = "QSTileHost";
    private static final String TAG = "QSTileHost";
    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);


@@ -73,6 +77,7 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory> {
    private final TileServices mServices;
    private final TileServices mServices;
    private final TunerService mTunerService;
    private final TunerService mTunerService;
    private final PluginManager mPluginManager;
    private final PluginManager mPluginManager;
    private final DumpController mDumpController;


    private final List<Callback> mCallbacks = new ArrayList<>();
    private final List<Callback> mCallbacks = new ArrayList<>();
    private AutoTileManager mAutoTiles;
    private AutoTileManager mAutoTiles;
@@ -89,17 +94,20 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory> {
            @Named(Dependency.BG_LOOPER_NAME) Looper bgLooper,
            @Named(Dependency.BG_LOOPER_NAME) Looper bgLooper,
            PluginManager pluginManager,
            PluginManager pluginManager,
            TunerService tunerService,
            TunerService tunerService,
            Provider<AutoTileManager> autoTiles) {
            Provider<AutoTileManager> autoTiles,
            DumpController dumpController) {
        mIconController = iconController;
        mIconController = iconController;
        mContext = context;
        mContext = context;
        mTunerService = tunerService;
        mTunerService = tunerService;
        mPluginManager = pluginManager;
        mPluginManager = pluginManager;
        mDumpController = dumpController;


        mServices = new TileServices(this, bgLooper);
        mServices = new TileServices(this, bgLooper);


        defaultFactory.setHost(this);
        defaultFactory.setHost(this);
        mQsFactories.add(defaultFactory);
        mQsFactories.add(defaultFactory);
        pluginManager.addPluginListener(this, QSFactory.class, true);
        pluginManager.addPluginListener(this, QSFactory.class, true);
        mDumpController.addListener(this);


        mainHandler.post(() -> {
        mainHandler.post(() -> {
            // This is technically a hack to avoid circular dependency of
            // This is technically a hack to avoid circular dependency of
@@ -121,6 +129,7 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory> {
        mTunerService.removeTunable(this);
        mTunerService.removeTunable(this);
        mServices.destroy();
        mServices.destroy();
        mPluginManager.removePluginListener(this);
        mPluginManager.removePluginListener(this);
        mDumpController.removeListener(this);
    }
    }


    @Override
    @Override
@@ -363,4 +372,11 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory> {
        }
        }
        return tiles;
        return tiles;
    }
    }

    @Override
    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
        pw.println("QSTileHost:");
        mTiles.values().stream().filter(obj -> obj instanceof Dumpable)
                .forEach(o -> ((Dumpable) o).dump(fd, pw, args));
    }
}
}
+10 −2
Original line number Original line Diff line number Diff line
@@ -16,6 +16,8 @@


package com.android.systemui.qs;
package com.android.systemui.qs;


import static com.android.systemui.util.InjectionInflationController.VIEW_CONTEXT;

import android.content.Context;
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Configuration;
import android.graphics.Rect;
import android.graphics.Rect;
@@ -25,6 +27,7 @@ import android.view.View;
import android.widget.LinearLayout;
import android.widget.LinearLayout;


import com.android.systemui.Dependency;
import com.android.systemui.Dependency;
import com.android.systemui.DumpController;
import com.android.systemui.R;
import com.android.systemui.R;
import com.android.systemui.plugins.qs.QSTile;
import com.android.systemui.plugins.qs.QSTile;
import com.android.systemui.plugins.qs.QSTile.SignalState;
import com.android.systemui.plugins.qs.QSTile.SignalState;
@@ -36,6 +39,9 @@ import com.android.systemui.tuner.TunerService.Tunable;
import java.util.ArrayList;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collection;


import javax.inject.Inject;
import javax.inject.Named;

/**
/**
 * Version of QSPanel that only shows N Quick Tiles in the QS Header.
 * Version of QSPanel that only shows N Quick Tiles in the QS Header.
 */
 */
@@ -49,8 +55,10 @@ public class QuickQSPanel extends QSPanel {
    private int mMaxTiles;
    private int mMaxTiles;
    protected QSPanel mFullPanel;
    protected QSPanel mFullPanel;


    public QuickQSPanel(Context context, AttributeSet attrs) {
    @Inject
        super(context, attrs);
    public QuickQSPanel(@Named(VIEW_CONTEXT) Context context, AttributeSet attrs,
            DumpController dumpController) {
        super(context, attrs, dumpController);
        if (mFooter != null) {
        if (mFooter != null) {
            removeView(mFooter.getView());
            removeView(mFooter.getView());
        }
        }
+12 −0
Original line number Original line Diff line number Diff line
@@ -47,6 +47,7 @@ public class QSIconViewImpl extends QSIconView {
    private boolean mAnimationEnabled = true;
    private boolean mAnimationEnabled = true;
    private int mState = -1;
    private int mState = -1;
    private int mTint;
    private int mTint;
    private QSTile.Icon mLastIcon;


    public QSIconViewImpl(Context context) {
    public QSIconViewImpl(Context context) {
        super(context);
        super(context);
@@ -74,6 +75,16 @@ public class QSIconViewImpl extends QSIconView {
        setMeasuredDimension(w, mIcon.getMeasuredHeight());
        setMeasuredDimension(w, mIcon.getMeasuredHeight());
    }
    }


    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder(getClass().getSimpleName()).append('[');
        sb.append("state=" + mState);
        sb.append(", tint=" + mTint);
        if (mLastIcon != null) sb.append(", lastIcon=" + mLastIcon.toString());
        sb.append("]");
        return sb.toString();
    }

    @Override
    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        final int w = getMeasuredWidth();
        final int w = getMeasuredWidth();
@@ -91,6 +102,7 @@ public class QSIconViewImpl extends QSIconView {
        if (!Objects.equals(icon, iv.getTag(R.id.qs_icon_tag))
        if (!Objects.equals(icon, iv.getTag(R.id.qs_icon_tag))
                || !Objects.equals(state.slash, iv.getTag(R.id.qs_slash_tag))) {
                || !Objects.equals(state.slash, iv.getTag(R.id.qs_slash_tag))) {
            boolean shouldAnimate = allowAnimations && shouldAnimate(iv);
            boolean shouldAnimate = allowAnimations && shouldAnimate(iv);
            mLastIcon = icon;
            Drawable d = icon != null
            Drawable d = icon != null
                    ? shouldAnimate ? icon.getDrawable(mContext)
                    ? shouldAnimate ? icon.getDrawable(mContext)
                    : icon.getInvisibleDrawable(mContext) : null;
                    : icon.getInvisibleDrawable(mContext) : null;
+10 −0
Original line number Original line Diff line number Diff line
@@ -318,6 +318,16 @@ public class QSTileBaseView extends com.android.systemui.plugins.qs.QSTileView {
        }
        }
    }
    }


    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder(getClass().getSimpleName()).append('[');
        sb.append("locInScreen=(" + mLocInScreen[0] + ", " + mLocInScreen[1] + ")");
        sb.append(", iconView=" + mIcon.toString());
        sb.append(", tileState=" + mTileState);
        sb.append("]");
        return sb.toString();
    }

    private class H extends Handler {
    private class H extends Handler {
        private static final int STATE_CHANGED = 1;
        private static final int STATE_CHANGED = 1;


Loading