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

Commit 49bcc0d1 authored by Jordan Demeulenaere's avatar Jordan Demeulenaere
Browse files

Animate QuickSettings long press (1/2).

See b/172063474#comment3 for before/after videos.

Bug: 172063474
Test: Long press any QS tile
Change-Id: I75e4784bd6db92a1aea6ffd0eabb648e82376a09
parent b796cfec
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -15,10 +15,12 @@
package com.android.systemui.plugins.qs;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.metrics.LogMaker;
import android.service.quicksettings.Tile;
import android.view.View;

import com.android.internal.logging.InstanceId;
import com.android.systemui.plugins.annotations.DependsOn;
@@ -56,7 +58,13 @@ public interface QSTile {

    void click();
    void secondaryClick();
    void longClick();

    /**
     * The tile was long clicked.
     *
     * @param view The view that was clicked.
     */
    void longClick(@Nullable View view);

    void userSwitch(int currentUser);
    int getMetricsCategory();
+1 −1
Original line number Diff line number Diff line
@@ -173,7 +173,7 @@ public class QSTileBaseView extends com.android.systemui.plugins.qs.QSTileView {
    @Override
    public void init(QSTile tile) {
        init(v -> tile.click(), v -> tile.secondaryClick(), view -> {
            tile.longClick();
            tile.longClick(this);
            return true;
        });
    }
+15 −6
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;

import android.annotation.CallSuper;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
@@ -43,6 +44,7 @@ import android.text.format.DateUtils;
import android.util.ArraySet;
import android.util.Log;
import android.util.SparseArray;
import android.view.View;

import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleOwner;
@@ -58,6 +60,7 @@ import com.android.settingslib.Utils;
import com.android.systemui.Dumpable;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.plugins.animation.ActivityLaunchAnimator;
import com.android.systemui.plugins.qs.DetailAdapter;
import com.android.systemui.plugins.qs.QSIconView;
import com.android.systemui.plugins.qs.QSTile;
@@ -290,14 +293,15 @@ public abstract class QSTileImpl<TState extends State> implements QSTile, Lifecy
        mHandler.sendEmptyMessage(H.SECONDARY_CLICK);
    }

    public void longClick() {
    @Override
    public void longClick(@Nullable View view) {
        mMetricsLogger.write(populate(new LogMaker(ACTION_QS_LONG_PRESS).setType(TYPE_ACTION)
                .addTaggedData(FIELD_STATUS_BAR_STATE,
                        mStatusBarStateController.getState())));
        mUiEventLogger.logWithInstanceId(QSEvent.QS_ACTION_LONG_PRESS, 0, getMetricsSpec(),
                getInstanceId());
        mQSLogger.logTileLongClick(mTileSpec, mStatusBarStateController.getState(), mState.state);
        mHandler.sendEmptyMessage(H.LONG_CLICK);
        mHandler.obtainMessage(H.LONG_CLICK, view).sendToTarget();
    }

    public LogMaker populate(LogMaker logMaker) {
@@ -372,10 +376,15 @@ public abstract class QSTileImpl<TState extends State> implements QSTile, Lifecy

    /**
     * Handles long click on the tile by launching the {@link Intent} defined in
     * {@link QSTileImpl#getLongClickIntent}
     * {@link QSTileImpl#getLongClickIntent}.
     *
     * @param view The view from which the opening window will be animated.
     */
    protected void handleLongClick() {
        mActivityStarter.postStartActivityDismissingKeyguard(getLongClickIntent(), 0);
    protected void handleLongClick(@Nullable View view) {
        ActivityLaunchAnimator.Controller animationController =
                view != null ? ActivityLaunchAnimator.Controller.fromView(view) : null;
        mActivityStarter.postStartActivityDismissingKeyguard(getLongClickIntent(), 0,
                animationController);
    }

    /**
@@ -614,7 +623,7 @@ public abstract class QSTileImpl<TState extends State> implements QSTile, Lifecy
                    handleSecondaryClick();
                } else if (msg.what == LONG_CLICK) {
                    name = "handleLongClick";
                    handleLongClick();
                    handleLongClick((View) msg.obj);
                } else if (msg.what == REFRESH_STATE) {
                    name = "handleRefreshState";
                    handleRefreshState(msg.obj);
+1 −1
Original line number Diff line number Diff line
@@ -142,7 +142,7 @@ public class CastTile extends QSTileImpl<BooleanState> {
    }

    @Override
    protected void handleLongClick() {
    protected void handleLongClick(View view) {
        handleClick();
    }

+2 −1
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.os.Handler;
import android.os.Looper;
import android.provider.MediaStore;
import android.service.quicksettings.Tile;
import android.view.View;
import android.widget.Switch;

import com.android.internal.logging.MetricsLogger;
@@ -107,7 +108,7 @@ public class FlashlightTile extends QSTileImpl<BooleanState> implements
    }

    @Override
    protected void handleLongClick() {
    protected void handleLongClick(View view) {
        handleClick();
    }

Loading