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

Commit 091a6db7 authored by Jordan Demeulenaere's avatar Jordan Demeulenaere
Browse files

Animate the QS gear button click.

See b/172050985#comment4 for videos.

Fixes: 172050985
Test: Click the QS gear button
Change-Id: I7a8607e41d4cb8d7734c66c1a601f942e5597796
parent 60f71b5b
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@ import android.graphics.PorterDuffXfermode
import android.graphics.Rect
import android.graphics.drawable.Drawable
import android.graphics.drawable.GradientDrawable
import android.graphics.drawable.InsetDrawable
import android.graphics.drawable.LayerDrawable
import android.view.GhostView
import android.view.View
@@ -186,6 +187,10 @@ open class GhostedViewLaunchAnimatorController(
                return drawable
            }

            if (drawable is InsetDrawable) {
                return drawable.drawable?.let { findGradientDrawable(it) }
            }

            if (drawable is LayerDrawable) {
                for (i in 0 until drawable.numberOfLayers) {
                    val maybeGradient = drawable.getDrawable(i)
@@ -255,6 +260,11 @@ open class GhostedViewLaunchAnimatorController(
        }

        private fun setXfermode(background: Drawable, mode: PorterDuffXfermode?) {
            if (background is InsetDrawable) {
                background.drawable?.let { setXfermode(it, mode) }
                return
            }

            if (background !is LayerDrawable) {
                background.setXfermode(mode)
                return
@@ -323,6 +333,11 @@ open class GhostedViewLaunchAnimatorController(
                return
            }

            if (drawable is InsetDrawable) {
                drawable.drawable?.let { applyBackgroundRadii(it, radii) }
                return
            }

            if (drawable !is LayerDrawable) {
                return
            }
+2 −0
Original line number Diff line number Diff line
@@ -60,6 +60,8 @@ public interface ActivityStarter {
     */
    void startActivity(Intent intent, boolean onlyProvisioned, boolean dismissShade, int flags);
    void startActivity(Intent intent, boolean dismissShade);
    void startActivity(Intent intent, boolean dismissShade,
            @Nullable ActivityLaunchAnimator.Controller animationController);
    void startActivity(Intent intent, boolean onlyProvisioned, boolean dismissShade);
    void startActivity(Intent intent, boolean dismissShade, Callback callback);
    void postStartActivityDismissingKeyguard(Intent intent, int delay);
+7 −2
Original line number Diff line number Diff line
@@ -23,13 +23,18 @@
        <item android:id="@android:id/mask">
            <shape android:shape="rectangle">
                <solid android:color="@android:color/white"/>
                <corners android:radius="@dimen/screenshot_button_corner_radius"/>
            </shape>
        </item>
        <item>
            <shape android:shape="rectangle">
                <solid android:color="?attr/underSurfaceColor"/>
                <corners android:radius="@dimen/qs_footer_action_corner_radius"/>
            </shape>
        </item>
        <item>
            <shape android:shape="rectangle">
                <stroke android:width="1dp" android:color="@color/qs_footer_action_border"/>
                <solid android:color="@android:color/transparent"/>
                <corners android:radius="@dimen/qs_footer_action_corner_radius"/>
            </shape>
        </item>
+7 −0
Original line number Diff line number Diff line
@@ -90,6 +90,13 @@ public class ActivityStarterDelegate implements ActivityStarter {
        mActualStarter.ifPresent(starter -> starter.get().startActivity(intent, dismissShade));
    }

    @Override
    public void startActivity(Intent intent, boolean dismissShade,
            @Nullable ActivityLaunchAnimator.Controller animationController) {
        mActualStarter.ifPresent(
                starter -> starter.get().startActivity(intent, dismissShade, animationController));
    }

    @Override
    public void startActivity(Intent intent, boolean onlyProvisioned, boolean dismissShade) {
        mActualStarter.ifPresent(
+7 −2
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.R;
import com.android.systemui.animation.ActivityLaunchAnimator;
import com.android.systemui.globalactions.GlobalActionsDialogLite;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.FalsingManager;
@@ -65,6 +66,7 @@ public class QSFooterViewController extends ViewController<QSFooterView> impleme
    private final MetricsLogger mMetricsLogger;
    private final FalsingManager mFalsingManager;
    private final SettingsButton mSettingsButton;
    private final View mSettingsButtonContainer;
    private final TextView mBuildText;
    private final View mEdit;
    private final MultiUserSwitch mMultiUserSwitch;
@@ -152,6 +154,7 @@ public class QSFooterViewController extends ViewController<QSFooterView> impleme
        mFalsingManager = falsingManager;

        mSettingsButton = mView.findViewById(R.id.settings_button);
        mSettingsButtonContainer = mView.findViewById(R.id.settings_button_container);
        mBuildText = mView.findViewById(R.id.build);
        mEdit = mView.findViewById(android.R.id.edit);
        mMultiUserSwitch = mView.findViewById(R.id.multi_user_switch);
@@ -258,10 +261,12 @@ public class QSFooterViewController extends ViewController<QSFooterView> impleme
        mView.disable(state2, isTunerEnabled());
    }


    private void startSettingsActivity() {
        ActivityLaunchAnimator.Controller animationController =
                mSettingsButtonContainer != null ? ActivityLaunchAnimator.Controller.fromView(
                        mSettingsButtonContainer) : null;
        mActivityStarter.startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS),
                true /* dismissShade */);
                true /* dismissShade */, animationController);
    }

    private boolean isTunerEnabled() {
Loading