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

Commit b0f42f03 authored by Alex Chau's avatar Alex Chau Committed by Android (Google) Code Review
Browse files

Merge "Adjust height of tablet AllApps base on row height" into tm-qpr-dev

parents 89b8f652 206ede9c
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -314,10 +314,10 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar
                int qsbEnd;
                if (layoutRtl) {
                    qsbStart = iconEnd + mItemMarginLeftRight;
                    qsbEnd = qsbStart + deviceProfile.qsbWidth;
                    qsbEnd = qsbStart + deviceProfile.hotseatQsbWidth;
                } else {
                    qsbEnd = iconEnd - mItemMarginLeftRight;
                    qsbStart = qsbEnd - deviceProfile.qsbWidth;
                    qsbStart = qsbEnd - deviceProfile.hotseatQsbWidth;
                }
                int qsbTop = (bottom - top - deviceProfile.hotseatQsbHeight) / 2;
                int qsbBottom = qsbTop + deviceProfile.hotseatQsbHeight;
+5 −4
Original line number Diff line number Diff line
@@ -295,10 +295,11 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar
                boolean isRtl = Utilities.isRtl(child.getResources());
                float hotseatIconCenter = isRtl
                        ? launcherDp.widthPx - hotseatPadding.right + borderSpacing
                        + launcherDp.qsbWidth / 2f
                        : hotseatPadding.left - borderSpacing - launcherDp.qsbWidth / 2f;
                        + launcherDp.hotseatQsbWidth / 2f
                        : hotseatPadding.left - borderSpacing - launcherDp.hotseatQsbWidth / 2f;
                float childCenter = (child.getLeft() + child.getRight()) / 2f;
                float halfQsbIconWidthDiff = (launcherDp.qsbWidth - taskbarDp.iconSizePx) / 2f;
                float halfQsbIconWidthDiff =
                        (launcherDp.hotseatQsbWidth - taskbarDp.iconSizePx) / 2f;
                setter.addFloat(child, ICON_TRANSLATE_X,
                        isRtl ? -halfQsbIconWidthDiff : halfQsbIconWidthDiff,
                        hotseatIconCenter - childCenter, LINEAR);
@@ -312,7 +313,7 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar
                                : Interpolators.clampToProgress(LINEAR, 0.84f, 1f));
                setter.addOnFrameListener(animator -> AlphaUpdateListener.updateVisibility(child));

                float qsbInsetFraction = halfQsbIconWidthDiff / launcherDp.qsbWidth;
                float qsbInsetFraction = halfQsbIconWidthDiff / launcherDp.hotseatQsbWidth;
                if (child instanceof  HorizontalInsettableView) {
                    setter.addFloat((HorizontalInsettableView) child,
                            HorizontalInsettableView.HORIZONTAL_INSETS, qsbInsetFraction, 0,
+16 −16
Original line number Diff line number Diff line
@@ -110,7 +110,7 @@ class DeviceProfileTest : DeviceProfileBaseTest() {
                "\tnumShownHotseatIcons: 4\n" +
                "\thotseatBorderSpace: 95.0px (36.190475dp)\n" +
                "\tisQsbInline: false\n" +
                "\tqsbWidth: 913.0px (347.8095dp)\n" +
                "\thotseatQsbWidth: 913.0px (347.8095dp)\n" +
                "\tisTaskbarPresent:false\n" +
                "\tisTaskbarPresentInApps:false\n" +
                "\ttaskbarSize: 0.0px (0.0dp)\n" +
@@ -229,7 +229,7 @@ class DeviceProfileTest : DeviceProfileBaseTest() {
                "\tnumShownHotseatIcons: 4\n" +
                "\thotseatBorderSpace: 95.0px (36.190475dp)\n" +
                "\tisQsbInline: false\n" +
                "\tqsbWidth: 913.0px (347.8095dp)\n" +
                "\thotseatQsbWidth: 913.0px (347.8095dp)\n" +
                "\tisTaskbarPresent:false\n" +
                "\tisTaskbarPresentInApps:false\n" +
                "\ttaskbarSize: 0.0px (0.0dp)\n" +
@@ -349,7 +349,7 @@ class DeviceProfileTest : DeviceProfileBaseTest() {
                "\tnumShownHotseatIcons: 5\n" +
                "\thotseatBorderSpace: 101.0px (50.5dp)\n" +
                "\tisQsbInline: true\n" +
                "\tqsbWidth: 855.0px (427.5dp)\n" +
                "\thotseatQsbWidth: 855.0px (427.5dp)\n" +
                "\tisTaskbarPresent:true\n" +
                "\tisTaskbarPresentInApps:true\n" +
                "\ttaskbarSize: 120.0px (60.0dp)\n" +
@@ -469,7 +469,7 @@ class DeviceProfileTest : DeviceProfileBaseTest() {
                "\tnumShownHotseatIcons: 6\n" +
                "\thotseatBorderSpace: 100.0px (50.0dp)\n" +
                "\tisQsbInline: true\n" +
                "\tqsbWidth: 640.0px (320.0dp)\n" +
                "\thotseatQsbWidth: 640.0px (320.0dp)\n" +
                "\tisTaskbarPresent:true\n" +
                "\tisTaskbarPresentInApps:true\n" +
                "\ttaskbarSize: 120.0px (60.0dp)\n" +
@@ -560,8 +560,8 @@ class DeviceProfileTest : DeviceProfileBaseTest() {
                "\tfolderCellLayoutBorderSpacePx Horizontal: 0.0px (0.0dp)\n" +
                "\tfolderCellLayoutBorderSpacePx Vertical: 0.0px (0.0dp)\n" +
                "\tbottomSheetTopPadding: 704.0px (352.0dp)\n" +
                "\tallAppsShiftRange: 1856.0px (928.0dp)\n" +
                "\tallAppsTopPadding: 704.0px (352.0dp)\n" +
                "\tallAppsShiftRange: 1936.0px (968.0dp)\n" +
                "\tallAppsTopPadding: 624.0px (312.0dp)\n" +
                "\tallAppsIconSizePx: 120.0px (60.0dp)\n" +
                "\tallAppsIconTextSizePx: 28.0px (14.0dp)\n" +
                "\tallAppsIconDrawablePaddingPx: 14.0px (7.0dp)\n" +
@@ -589,7 +589,7 @@ class DeviceProfileTest : DeviceProfileBaseTest() {
                "\tnumShownHotseatIcons: 5\n" +
                "\thotseatBorderSpace: 116.0px (58.0dp)\n" +
                "\tisQsbInline: false\n" +
                "\tqsbWidth: 1300.0px (650.0dp)\n" +
                "\thotseatQsbWidth: 1300.0px (650.0dp)\n" +
                "\tisTaskbarPresent:true\n" +
                "\tisTaskbarPresentInApps:true\n" +
                "\ttaskbarSize: 120.0px (60.0dp)\n" +
@@ -680,8 +680,8 @@ class DeviceProfileTest : DeviceProfileBaseTest() {
                "\tfolderCellLayoutBorderSpacePx Horizontal: 0.0px (0.0dp)\n" +
                "\tfolderCellLayoutBorderSpacePx Vertical: 0.0px (0.0dp)\n" +
                "\tbottomSheetTopPadding: 704.0px (352.0dp)\n" +
                "\tallAppsShiftRange: 1856.0px (928.0dp)\n" +
                "\tallAppsTopPadding: 704.0px (352.0dp)\n" +
                "\tallAppsShiftRange: 1936.0px (968.0dp)\n" +
                "\tallAppsTopPadding: 624.0px (312.0dp)\n" +
                "\tallAppsIconSizePx: 120.0px (60.0dp)\n" +
                "\tallAppsIconTextSizePx: 28.0px (14.0dp)\n" +
                "\tallAppsIconDrawablePaddingPx: 14.0px (7.0dp)\n" +
@@ -709,7 +709,7 @@ class DeviceProfileTest : DeviceProfileBaseTest() {
                "\tnumShownHotseatIcons: 6\n" +
                "\thotseatBorderSpace: 116.0px (58.0dp)\n" +
                "\tisQsbInline: false\n" +
                "\tqsbWidth: 1300.0px (650.0dp)\n" +
                "\thotseatQsbWidth: 1300.0px (650.0dp)\n" +
                "\tisTaskbarPresent:true\n" +
                "\tisTaskbarPresentInApps:true\n" +
                "\ttaskbarSize: 120.0px (60.0dp)\n" +
@@ -829,7 +829,7 @@ class DeviceProfileTest : DeviceProfileBaseTest() {
                "\tnumShownHotseatIcons: 6\n" +
                "\thotseatBorderSpace: 61.0px (23.238094dp)\n" +
                "\tisQsbInline: false\n" +
                "\tqsbWidth: 1467.0px (558.8571dp)\n" +
                "\thotseatQsbWidth: 1467.0px (558.8571dp)\n" +
                "\tisTaskbarPresent:true\n" +
                "\tisTaskbarPresentInApps:true\n" +
                "\ttaskbarSize: 158.0px (60.190475dp)\n" +
@@ -949,7 +949,7 @@ class DeviceProfileTest : DeviceProfileBaseTest() {
                "\tnumShownHotseatIcons: 6\n" +
                "\thotseatBorderSpace: 105.0px (40.0dp)\n" +
                "\tisQsbInline: false\n" +
                "\tqsbWidth: 1467.0px (558.8571dp)\n" +
                "\thotseatQsbWidth: 1467.0px (558.8571dp)\n" +
                "\tisTaskbarPresent:true\n" +
                "\tisTaskbarPresentInApps:true\n" +
                "\ttaskbarSize: 158.0px (60.190475dp)\n" +
@@ -1069,7 +1069,7 @@ class DeviceProfileTest : DeviceProfileBaseTest() {
                "\tnumShownHotseatIcons: 6\n" +
                "\thotseatBorderSpace: 47.0px (17.904762dp)\n" +
                "\tisQsbInline: false\n" +
                "\tqsbWidth: 1236.0px (470.85715dp)\n" +
                "\thotseatQsbWidth: 1236.0px (470.85715dp)\n" +
                "\tisTaskbarPresent:true\n" +
                "\tisTaskbarPresentInApps:true\n" +
                "\ttaskbarSize: 158.0px (60.190475dp)\n" +
@@ -1189,7 +1189,7 @@ class DeviceProfileTest : DeviceProfileBaseTest() {
                "\tnumShownHotseatIcons: 6\n" +
                "\thotseatBorderSpace: 84.0px (32.0dp)\n" +
                "\tisQsbInline: false\n" +
                "\tqsbWidth: 1236.0px (470.85715dp)\n" +
                "\thotseatQsbWidth: 1236.0px (470.85715dp)\n" +
                "\tisTaskbarPresent:true\n" +
                "\tisTaskbarPresentInApps:true\n" +
                "\ttaskbarSize: 158.0px (60.190475dp)\n" +
@@ -1308,7 +1308,7 @@ class DeviceProfileTest : DeviceProfileBaseTest() {
                "\tnumShownHotseatIcons: 4\n" +
                "\thotseatBorderSpace: 0.0px (0.0dp)\n" +
                "\tisQsbInline: false\n" +
                "\tqsbWidth: 1525.0px (580.9524dp)\n" +
                "\thotseatQsbWidth: 1525.0px (580.9524dp)\n" +
                "\tisTaskbarPresent:false\n" +
                "\tisTaskbarPresentInApps:false\n" +
                "\ttaskbarSize: 0.0px (0.0dp)\n" +
@@ -1427,7 +1427,7 @@ class DeviceProfileTest : DeviceProfileBaseTest() {
                "\tnumShownHotseatIcons: 4\n" +
                "\thotseatBorderSpace: 0.0px (0.0dp)\n" +
                "\tisQsbInline: false\n" +
                "\tqsbWidth: 1621.0px (617.5238dp)\n" +
                "\thotseatQsbWidth: 1621.0px (617.5238dp)\n" +
                "\tisTaskbarPresent:false\n" +
                "\tisTaskbarPresentInApps:false\n" +
                "\ttaskbarSize: 0.0px (0.0dp)\n" +
+21 −11
Original line number Diff line number Diff line
@@ -41,7 +41,6 @@ import androidx.annotation.NonNull;

import com.android.launcher3.CellLayout.ContainerType;
import com.android.launcher3.DevicePaddings.DevicePadding;
import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.icons.DotRenderer;
import com.android.launcher3.icons.IconNormalizer;
import com.android.launcher3.uioverrides.ApiWrapper;
@@ -56,6 +55,8 @@ import java.util.List;
public class DeviceProfile {

    private static final int DEFAULT_DOT_SIZE = 100;
    private static final float ALL_APPS_TABLET_MAX_ROWS = 5.5f;

    // Ratio of empty space, qsb should take up to appear visually centered.
    private final float mQsbCenterFactor;

@@ -169,13 +170,12 @@ public class DeviceProfile {
    // Start is the side next to the nav bar, end is the side next to the workspace
    public final int hotseatBarSidePaddingStartPx;
    public final int hotseatBarSidePaddingEndPx;
    public int hotseatQsbWidth; // only used when isQsbInline
    public final int hotseatQsbHeight;
    public final int hotseatQsbVisualHeight;
    private final int hotseatQsbShadowHeight;
    public int hotseatBorderSpace;

    public int qsbWidth; // only used when isQsbInline

    // All apps
    public Point allAppsBorderSpacePx;
    public int allAppsShiftRange;
@@ -311,10 +311,6 @@ public class DeviceProfile {
                + res.getDimensionPixelSize(R.dimen.bottom_sheet_extra_top_padding)
                + (isTablet ? 0 : edgeMarginPx); // phones need edgeMarginPx additional padding

        allAppsTopPadding = isTablet ? bottomSheetTopPadding : 0;
        allAppsShiftRange = isTablet
                ? heightPx - allAppsTopPadding
                : res.getDimensionPixelSize(R.dimen.all_apps_starting_vertical_translate);
        folderLabelTextScale = res.getFloat(R.dimen.folder_label_text_scale);
        folderContentPaddingLeftRight =
                res.getDimensionPixelSize(R.dimen.folder_content_padding_left_right);
@@ -465,7 +461,21 @@ public class DeviceProfile {

        // Hotseat and QSB width depends on updated cellSize and workspace padding
        hotseatBorderSpace = calculateHotseatBorderSpace();
        qsbWidth = calculateQsbWidth();
        hotseatQsbWidth = calculateQsbWidth();

        // AllApps height calculation depends on updated cellSize
        if (isTablet) {
            int collapseHandleHeight =
                    res.getDimensionPixelOffset(R.dimen.bottom_sheet_handle_area_height);
            int contentHeight = heightPx - collapseHandleHeight - hotseatQsbHeight;
            int targetContentHeight = (int) (allAppsCellHeightPx * ALL_APPS_TABLET_MAX_ROWS);
            allAppsTopPadding = Math.max(mInsets.top, contentHeight - targetContentHeight);
            allAppsShiftRange = heightPx - allAppsTopPadding;
        } else {
            allAppsTopPadding = 0;
            allAppsShiftRange =
                    res.getDimensionPixelSize(R.dimen.all_apps_starting_vertical_translate);
        }

        flingToDeleteThresholdVelocity = res.getDimensionPixelSize(
                R.dimen.drag_flingToDeleteMinVelocity);
@@ -1068,7 +1078,7 @@ public class DeviceProfile {
                    hotseatBarSizePx - hotseatBarBottomPadding - hotseatCellHeightPx;

            // Push icons to the side
            int additionalQsbSpace = isQsbInline ? qsbWidth + hotseatBorderSpace : 0;
            int additionalQsbSpace = isQsbInline ? hotseatQsbWidth + hotseatBorderSpace : 0;
            int requiredWidth = iconSizePx * numShownHotseatIcons
                    + hotseatBorderSpace * (numShownHotseatIcons - 1)
                    + additionalQsbSpace;
@@ -1093,7 +1103,7 @@ public class DeviceProfile {
                hotseatBarPadding.right += diff;
            }
        } else if (isScalableGrid) {
            int sideSpacing = (availableWidthPx - qsbWidth) / 2;
            int sideSpacing = (availableWidthPx - hotseatQsbWidth) / 2;
            hotseatBarPadding.set(sideSpacing,
                    0,
                    sideSpacing,
@@ -1366,7 +1376,7 @@ public class DeviceProfile {
        writer.println(prefix + "\tnumShownHotseatIcons: " + numShownHotseatIcons);
        writer.println(prefix + pxToDpStr("hotseatBorderSpace", hotseatBorderSpace));
        writer.println(prefix + "\tisQsbInline: " + isQsbInline);
        writer.println(prefix + pxToDpStr("qsbWidth", qsbWidth));
        writer.println(prefix + pxToDpStr("hotseatQsbWidth", hotseatQsbWidth));

        writer.println(prefix + "\tisTaskbarPresent:" + isTaskbarPresent);
        writer.println(prefix + "\tisTaskbarPresentInApps:" + isTaskbarPresentInApps);
+12 −15
Original line number Diff line number Diff line
@@ -47,7 +47,6 @@ public class Hotseat extends CellLayout implements Insettable {
    private Consumer<Boolean> mOnVisibilityAggregatedCallback;

    private final View mQsb;
    private final int mQsbHeight;

    public Hotseat(Context context) {
        this(context, null);
@@ -62,8 +61,6 @@ public class Hotseat extends CellLayout implements Insettable {

        mQsb = LayoutInflater.from(context).inflate(R.layout.search_container_hotseat, this, false);
        addView(mQsb);

        mQsbHeight = getResources().getDimensionPixelSize(R.dimen.qsb_widget_height);
    }

    /**
@@ -171,29 +168,29 @@ public class Hotseat extends CellLayout implements Insettable {
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);

        int qsbWidth = mActivity.getDeviceProfile().qsbWidth;

        mQsb.measure(MeasureSpec.makeMeasureSpec(qsbWidth, MeasureSpec.EXACTLY),
                MeasureSpec.makeMeasureSpec(mQsbHeight, MeasureSpec.EXACTLY));
        DeviceProfile dp = mActivity.getDeviceProfile();
        mQsb.measure(MeasureSpec.makeMeasureSpec(dp.hotseatQsbWidth, MeasureSpec.EXACTLY),
                MeasureSpec.makeMeasureSpec(dp.hotseatQsbHeight, MeasureSpec.EXACTLY));
    }

    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        super.onLayout(changed, l, t, r, b);

        int qsbWidth = mQsb.getMeasuredWidth();
        int qsbMeasuredWidth = mQsb.getMeasuredWidth();
        int left;
        if (mActivity.getDeviceProfile().isQsbInline) {
            int qsbSpace = mActivity.getDeviceProfile().hotseatBorderSpace;
        DeviceProfile dp = mActivity.getDeviceProfile();
        if (dp.isQsbInline) {
            int qsbSpace = dp.hotseatBorderSpace;
            left = Utilities.isRtl(getResources()) ? r - getPaddingRight() + qsbSpace
                    : l + getPaddingLeft() - qsbWidth - qsbSpace;
                    : l + getPaddingLeft() - qsbMeasuredWidth - qsbSpace;
        } else {
            left = (r - l - qsbWidth) / 2;
            left = (r - l - qsbMeasuredWidth) / 2;
        }
        int right = left + qsbWidth;
        int right = left + qsbMeasuredWidth;

        int bottom = b - t - mActivity.getDeviceProfile().getQsbOffsetY();
        int top = bottom - mQsbHeight;
        int bottom = b - t - dp.getQsbOffsetY();
        int top = bottom - dp.hotseatQsbHeight;
        mQsb.layout(left, top, right, bottom);
    }

Loading