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

Commit 7539d764 authored by Federico Baron's avatar Federico Baron
Browse files

Change delightful pagination flag and use it for workspace

Before the flag name would only fit 'delightful pagination' for folders, but now we're adding that feature to workspace also, hence the flag rename.
The flag is now also used in launcher to show the new XML file that uses PageIndicatorDots rather than WorkspacePageIndicator

Bug: 249773534
Test: manual
Change-Id: I6cf6d52e76ad1ec60ecb54c5cca204e9ac35cc39
parent d7a7bfc3
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2022 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->

<com.android.launcher3.pageindicators.PageIndicatorDots xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/page_indicator"
    android:layout_width="match_parent"
    android:layout_height="@dimen/workspace_page_indicator_height"
    android:layout_gravity="bottom | center_horizontal"
    android:theme="@style/HomeScreenElementTheme" />
 No newline at end of file
+13 −0
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ import static com.android.launcher3.LauncherState.SPRING_LOADED;
import static com.android.launcher3.Utilities.postAsyncCallback;
import static com.android.launcher3.accessibility.LauncherAccessibilityDelegate.getSupportedActions;
import static com.android.launcher3.anim.Interpolators.EMPHASIZED;
import static com.android.launcher3.config.FeatureFlags.SHOW_DELIGHTFUL_PAGINATION;
import static com.android.launcher3.logging.StatsLogManager.EventEnum;
import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_BACKGROUND;
import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_HOME;
@@ -97,6 +98,7 @@ import android.os.Trace;
import android.os.UserHandle;
import android.text.TextUtils;
import android.text.method.TextKeyListener;
import android.util.AttributeSet;
import android.util.FloatProperty;
import android.util.Log;
import android.util.SparseArray;
@@ -163,6 +165,7 @@ import com.android.launcher3.model.data.ItemInfo;
import com.android.launcher3.model.data.LauncherAppWidgetInfo;
import com.android.launcher3.model.data.WorkspaceItemInfo;
import com.android.launcher3.notification.NotificationListener;
import com.android.launcher3.pageindicators.WorkspacePageIndicator;
import com.android.launcher3.pm.PinRequestHelper;
import com.android.launcher3.pm.UserCache;
import com.android.launcher3.popup.ArrowPopup;
@@ -1291,6 +1294,16 @@ public class Launcher extends StatefulActivity<LauncherState>
        mAllAppsController.setupViews(mScrimView, mAppsView);
    }

    @Override
    public View onCreateView(View parent, String name, Context context, AttributeSet attrs) {
        if (SHOW_DELIGHTFUL_PAGINATION.get()
                && WorkspacePageIndicator.class.getName().equals(name)) {
            return LayoutInflater.from(context).inflate(R.layout.page_indicator_dots,
                    (ViewGroup) parent, false);
        }
        return super.onCreateView(parent, name, context, attrs);
    }

    /**
     * Creates a view representing a shortcut.
     *
+10 −10
Original line number Diff line number Diff line
@@ -37,7 +37,8 @@ public final class FeatureFlags {

    public static final String FLAGS_PREF_NAME = "featureFlags";

    private FeatureFlags() { }
    private FeatureFlags() {
    }

    public static boolean showFlagTogglerUi(Context context) {
        return Utilities.IS_DEBUG_DEVICE && Utilities.isDevelopersOptionsEnabled(context);
@@ -281,11 +282,10 @@ public final class FeatureFlags {
    public static final BooleanFlag ENABLE_WIDGET_PICKER_DEPTH = new DeviceFlag(
            "ENABLE_WIDGET_PICKER_DEPTH", false, "Enable changing depth in widget picker.");

    public static final BooleanFlag SHOW_DELIGHTFUL_PAGINATION_FOLDER = new DeviceFlag(
            "SHOW_DELIGHTFUL_PAGINATION_FOLDER", false,
            "Enable showing the new 'delightful pagination'"
                    + " which is a brand new animation for folder pagination");

    public static final BooleanFlag SHOW_DELIGHTFUL_PAGINATION = new DeviceFlag(
            "SHOW_DELIGHTFUL_PAGINATION", false,
            "Enable showing the new 'delightful pagination' which is a brand"
                    + " new animation for folder pagination and workspace pagination");
    public static final BooleanFlag POPUP_MATERIAL_U = new DeviceFlag(
            "POPUP_MATERIAL_U", false, "Switch popup UX to use material U");

+8 −8
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@

package com.android.launcher3.pageindicators;

import static com.android.launcher3.config.FeatureFlags.SHOW_DELIGHTFUL_PAGINATION_FOLDER;
import static com.android.launcher3.config.FeatureFlags.SHOW_DELIGHTFUL_PAGINATION;

import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
@@ -129,7 +129,7 @@ public class PageIndicatorDots extends View implements PageIndicator {
        mDotRadius = getResources().getDimension(R.dimen.page_indicator_dot_size) / 2;


        if (SHOW_DELIGHTFUL_PAGINATION_FOLDER.get()) {
        if (SHOW_DELIGHTFUL_PAGINATION.get()) {
            mPageIndicatorSize = getResources().getDimension(
                    R.dimen.page_indicator_size);
            mPageIndicatorRadius = mPageIndicatorSize / 2;
@@ -144,7 +144,7 @@ public class PageIndicatorDots extends View implements PageIndicator {
            mPageIndicatorDrawable = null;
            mCircleGap = DOT_GAP_FACTOR * mDotRadius;
        }
        if (!SHOW_DELIGHTFUL_PAGINATION_FOLDER.get()) {
        if (!SHOW_DELIGHTFUL_PAGINATION.get()) {
            setOutlineProvider(new MyOutlineProver());
        }
        mIsRtl = Utilities.isRtl(getResources());
@@ -161,7 +161,7 @@ public class PageIndicatorDots extends View implements PageIndicator {
            currentScroll = totalScroll - currentScroll;
        }

        if (SHOW_DELIGHTFUL_PAGINATION_FOLDER.get()) {
        if (SHOW_DELIGHTFUL_PAGINATION.get()) {
            mCurrentScroll = currentScroll;
            mTotalScroll = totalScroll;
            invalidate();
@@ -296,7 +296,7 @@ public class PageIndicatorDots extends View implements PageIndicator {
            }
            for (int i = 0; i < mEntryAnimationRadiusFactors.length; i++) {
                mPaginationPaint.setAlpha(i == mActivePage ? PAGE_INDICATOR_ALPHA : DOT_ALPHA);
                if (SHOW_DELIGHTFUL_PAGINATION_FOLDER.get()) {
                if (SHOW_DELIGHTFUL_PAGINATION.get()) {
                    if (i != mActivePage) {
                        canvas.drawCircle(x, y, mDotRadius * mEntryAnimationRadiusFactors[i],
                                mPaginationPaint);
@@ -313,7 +313,7 @@ public class PageIndicatorDots extends View implements PageIndicator {
            // Here we draw the dots
            mPaginationPaint.setAlpha(DOT_ALPHA);
            for (int i = 0; i < mNumPages; i++) {
                if (SHOW_DELIGHTFUL_PAGINATION_FOLDER.get()) {
                if (SHOW_DELIGHTFUL_PAGINATION.get()) {
                    canvas.drawCircle(x, y, getRadius(x), mPaginationPaint);
                } else {
                    canvas.drawCircle(x, y, mDotRadius, mPaginationPaint);
@@ -323,7 +323,7 @@ public class PageIndicatorDots extends View implements PageIndicator {

            // Here we draw the current page indicator
            mPaginationPaint.setAlpha(PAGE_INDICATOR_ALPHA);
            if (SHOW_DELIGHTFUL_PAGINATION_FOLDER.get()) {
            if (SHOW_DELIGHTFUL_PAGINATION.get()) {
                drawPageIndicator(canvas, 1);
            } else {
                canvas.drawRoundRect(getActiveRect(), mDotRadius, mDotRadius, mPaginationPaint);
@@ -389,7 +389,7 @@ public class PageIndicatorDots extends View implements PageIndicator {
        float diameter = 2 * mDotRadius;
        float startX;

        if (SHOW_DELIGHTFUL_PAGINATION_FOLDER.get()) {
        if (SHOW_DELIGHTFUL_PAGINATION.get()) {
            startX = ((getWidth() - (mNumPages * mCircleGap) + mDotRadius) / 2) - getOffset();
            sTempRect.top = (getHeight() - mPageIndicatorSize) * 0.5f;
            sTempRect.bottom = (getHeight() + mPageIndicatorSize) * 0.5f;