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

Commit c1ea50a4 authored by Thales Lima's avatar Thales Lima Committed by Android (Google) Code Review
Browse files

Merge "Make inline qsb part of grid attrs" into tm-dev

parents 254c77e2 12d0eff0
Loading
Loading
Loading
Loading
+12 −0
Original line number Original line Diff line number Diff line
@@ -342,6 +342,18 @@
        <attr name="horizontalMarginTwoPanelLandscape" format="float"/>
        <attr name="horizontalMarginTwoPanelLandscape" format="float"/>
        <!-- defaults to horizontalMargin if not specified -->
        <!-- defaults to horizontalMargin if not specified -->
        <attr name="horizontalMarginTwoPanelPortrait" format="float"/>
        <attr name="horizontalMarginTwoPanelPortrait" format="float"/>

        <!-- By default all are false -->
        <attr name="inlineQsb" format="integer" >
            <!-- Enable on landscape only -->
            <flag name="portrait" value="1" />
            <!-- Enable on portrait only -->
            <flag name="landscape" value="2" />
            <!-- Enable on two panel portrait only -->
            <flag name="twoPanelPortrait" value="4" />
            <!-- Enable on two panel landscape only -->
            <flag name="twoPanelLandscape" value="8" />
        </attr>
    </declare-styleable>
    </declare-styleable>


    <declare-styleable name="CellLayout">
    <declare-styleable name="CellLayout">
+18 −14
Original line number Original line Diff line number Diff line
@@ -16,6 +16,10 @@


package com.android.launcher3;
package com.android.launcher3;


import static com.android.launcher3.InvariantDeviceProfile.INDEX_DEFAULT;
import static com.android.launcher3.InvariantDeviceProfile.INDEX_LANDSCAPE;
import static com.android.launcher3.InvariantDeviceProfile.INDEX_TWO_PANEL_LANDSCAPE;
import static com.android.launcher3.InvariantDeviceProfile.INDEX_TWO_PANEL_PORTRAIT;
import static com.android.launcher3.ResourceUtils.pxFromDp;
import static com.android.launcher3.ResourceUtils.pxFromDp;
import static com.android.launcher3.Utilities.dpiFromPx;
import static com.android.launcher3.Utilities.dpiFromPx;
import static com.android.launcher3.Utilities.pxFromSp;
import static com.android.launcher3.Utilities.pxFromSp;
@@ -58,7 +62,6 @@ public class DeviceProfile {


    // Device properties
    // Device properties
    public final boolean isTablet;
    public final boolean isTablet;
    public final boolean isLargeTablet;
    public final boolean isPhone;
    public final boolean isPhone;
    public final boolean transposeLayoutWithOrientation;
    public final boolean transposeLayoutWithOrientation;
    public final boolean isTwoPanels;
    public final boolean isTwoPanels;
@@ -253,7 +256,6 @@ public class DeviceProfile {
        // Determine device posture.
        // Determine device posture.
        mInfo = info;
        mInfo = info;
        isTablet = info.isTablet(windowBounds);
        isTablet = info.isTablet(windowBounds);
        isLargeTablet = info.isLargeTablet(windowBounds);
        isPhone = !isTablet;
        isPhone = !isTablet;
        isTwoPanels = isTablet && useTwoPanels;
        isTwoPanels = isTablet && useTwoPanels;
        isTaskbarPresent = isTablet && ApiWrapper.TASKBAR_DRAWN_IN_PROCESS;
        isTaskbarPresent = isTablet && ApiWrapper.TASKBAR_DRAWN_IN_PROCESS;
@@ -278,15 +280,15 @@ public class DeviceProfile {


        if (isTwoPanels) {
        if (isTwoPanels) {
            if (isLandscape) {
            if (isLandscape) {
                mTypeIndex = InvariantDeviceProfile.INDEX_TWO_PANEL_LANDSCAPE;
                mTypeIndex = INDEX_TWO_PANEL_LANDSCAPE;
            } else {
            } else {
                mTypeIndex = InvariantDeviceProfile.INDEX_TWO_PANEL_PORTRAIT;
                mTypeIndex = INDEX_TWO_PANEL_PORTRAIT;
            }
            }
        } else {
        } else {
            if (isLandscape) {
            if (isLandscape) {
                mTypeIndex = InvariantDeviceProfile.INDEX_LANDSCAPE;
                mTypeIndex = INDEX_LANDSCAPE;
            } else {
            } else {
                mTypeIndex = InvariantDeviceProfile.INDEX_DEFAULT;
                mTypeIndex = INDEX_DEFAULT;
            }
            }
        }
        }


@@ -348,9 +350,12 @@ public class DeviceProfile {
        workspaceCellPaddingXPx = res.getDimensionPixelSize(R.dimen.dynamic_grid_cell_padding_x);
        workspaceCellPaddingXPx = res.getDimensionPixelSize(R.dimen.dynamic_grid_cell_padding_x);


        hotseatQsbHeight = res.getDimensionPixelSize(R.dimen.qsb_widget_height);
        hotseatQsbHeight = res.getDimensionPixelSize(R.dimen.qsb_widget_height);
        // Whether QSB might be inline in appropriate orientation (landscape).
        // Whether QSB might be inline in appropriate orientation (e.g. landscape).
        boolean canQsbInline = isLargeTablet && hotseatQsbHeight > 0;
        boolean canQsbInline = (isTwoPanels ? inv.inlineQsb[INDEX_TWO_PANEL_PORTRAIT]
        isQsbInline = canQsbInline && isLandscape;
                || inv.inlineQsb[INDEX_TWO_PANEL_LANDSCAPE]
                : inv.inlineQsb[INDEX_DEFAULT] || inv.inlineQsb[INDEX_LANDSCAPE])
                && hotseatQsbHeight > 0;
        isQsbInline = inv.inlineQsb[mTypeIndex] && canQsbInline;


        // We shrink hotseat sizes regardless of orientation, if nav buttons are inline and QSB
        // We shrink hotseat sizes regardless of orientation, if nav buttons are inline and QSB
        // might be inline in either orientations, to keep hotseat size consistent across rotation.
        // might be inline in either orientations, to keep hotseat size consistent across rotation.
@@ -388,7 +393,7 @@ public class DeviceProfile {
                res.getDimensionPixelSize(R.dimen.dynamic_grid_hotseat_extra_vertical_size);
                res.getDimensionPixelSize(R.dimen.dynamic_grid_hotseat_extra_vertical_size);
        hotseatBorderSpace = pxFromDp(inv.hotseatBorderSpaces[mTypeIndex], mMetrics);
        hotseatBorderSpace = pxFromDp(inv.hotseatBorderSpaces[mTypeIndex], mMetrics);
        updateHotseatIconSize(
        updateHotseatIconSize(
                pxFromDp(inv.iconSize[InvariantDeviceProfile.INDEX_DEFAULT], mMetrics));
                pxFromDp(inv.iconSize[INDEX_DEFAULT], mMetrics));


        qsbBottomMarginOriginalPx = isScalableGrid
        qsbBottomMarginOriginalPx = isScalableGrid
                ? res.getDimensionPixelSize(R.dimen.scalable_grid_qsb_bottom_margin)
                ? res.getDimensionPixelSize(R.dimen.scalable_grid_qsb_bottom_margin)
@@ -819,11 +824,11 @@ public class DeviceProfile {


    private void updateFolderCellSize(float scale, Resources res) {
    private void updateFolderCellSize(float scale, Resources res) {
        float invIconSizeDp = isVerticalBarLayout()
        float invIconSizeDp = isVerticalBarLayout()
                ? inv.iconSize[InvariantDeviceProfile.INDEX_LANDSCAPE]
                ? inv.iconSize[INDEX_LANDSCAPE]
                : inv.iconSize[InvariantDeviceProfile.INDEX_DEFAULT];
                : inv.iconSize[INDEX_DEFAULT];
        folderChildIconSizePx = Math.max(1, pxFromDp(invIconSizeDp, mMetrics, scale));
        folderChildIconSizePx = Math.max(1, pxFromDp(invIconSizeDp, mMetrics, scale));
        folderChildTextSizePx =
        folderChildTextSizePx =
                pxFromSp(inv.iconTextSize[InvariantDeviceProfile.INDEX_DEFAULT], mMetrics, scale);
                pxFromSp(inv.iconTextSize[INDEX_DEFAULT], mMetrics, scale);
        folderLabelTextSizePx = (int) (folderChildTextSizePx * folderLabelTextScale);
        folderLabelTextSizePx = (int) (folderChildTextSizePx * folderLabelTextScale);


        int textHeight = Utilities.calculateTextHeight(folderChildTextSizePx);
        int textHeight = Utilities.calculateTextHeight(folderChildTextSizePx);
@@ -1174,7 +1179,6 @@ public class DeviceProfile {
        writer.println(prefix + "\t1 dp = " + mMetrics.density + " px");
        writer.println(prefix + "\t1 dp = " + mMetrics.density + " px");


        writer.println(prefix + "\tisTablet:" + isTablet);
        writer.println(prefix + "\tisTablet:" + isTablet);
        writer.println(prefix + "\tisLargeTablet:" + isLargeTablet);
        writer.println(prefix + "\tisPhone:" + isPhone);
        writer.println(prefix + "\tisPhone:" + isPhone);
        writer.println(prefix + "\ttransposeLayoutWithOrientation:"
        writer.println(prefix + "\ttransposeLayoutWithOrientation:"
                + transposeLayoutWithOrientation);
                + transposeLayoutWithOrientation);
+26 −0
Original line number Original line Diff line number Diff line
@@ -167,6 +167,7 @@ public class InvariantDeviceProfile {
    public String dbFile;
    public String dbFile;
    public int defaultLayoutId;
    public int defaultLayoutId;
    int demoModeLayoutId;
    int demoModeLayoutId;
    boolean[] inlineQsb = new boolean[COUNT_SIZES];


    /**
    /**
     * An immutable list of supported profiles.
     * An immutable list of supported profiles.
@@ -250,6 +251,8 @@ public class InvariantDeviceProfile {
                COUNT_SIZES);
                COUNT_SIZES);
        System.arraycopy(defaultDisplayOption.borderSpaces, 0, result.borderSpaces, 0,
        System.arraycopy(defaultDisplayOption.borderSpaces, 0, result.borderSpaces, 0,
                COUNT_SIZES);
                COUNT_SIZES);
        System.arraycopy(defaultDisplayOption.inlineQsb, 0, result.inlineQsb, 0,
                COUNT_SIZES);


        initGrid(context, myInfo, result, deviceType);
        initGrid(context, myInfo, result, deviceType);
    }
    }
@@ -371,6 +374,8 @@ public class InvariantDeviceProfile {
            devicePaddings = new DevicePaddings(context, devicePaddingId);
            devicePaddings = new DevicePaddings(context, devicePaddingId);
        }
        }


        inlineQsb = displayOption.inlineQsb;

        // If the partner customization apk contains any grid overrides, apply them
        // If the partner customization apk contains any grid overrides, apply them
        // Supported overrides: numRows, numColumns, iconSize
        // Supported overrides: numRows, numColumns, iconSize
        applyPartnerDeviceProfileOverrides(context, metrics);
        applyPartnerDeviceProfileOverrides(context, metrics);
@@ -783,12 +788,18 @@ public class InvariantDeviceProfile {


    @VisibleForTesting
    @VisibleForTesting
    static final class DisplayOption {
    static final class DisplayOption {
        private static final int INLINE_QSB_FOR_PORTRAIT = 1 << 0;
        private static final int INLINE_QSB_FOR_LANDSCAPE = 1 << 1;
        private static final int INLINE_QSB_FOR_TWO_PANEL_PORTRAIT = 1 << 2;
        private static final int INLINE_QSB_FOR_TWO_PANEL_LANDSCAPE = 1 << 3;
        private static final int DONT_INLINE_QSB = 0;


        public final GridOption grid;
        public final GridOption grid;


        private final float minWidthDps;
        private final float minWidthDps;
        private final float minHeightDps;
        private final float minHeightDps;
        private final boolean canBeDefault;
        private final boolean canBeDefault;
        private final boolean[] inlineQsb = new boolean[COUNT_SIZES];


        private final PointF[] minCellSize = new PointF[COUNT_SIZES];
        private final PointF[] minCellSize = new PointF[COUNT_SIZES];


@@ -815,6 +826,19 @@ public class InvariantDeviceProfile {


            canBeDefault = a.getBoolean(R.styleable.ProfileDisplayOption_canBeDefault, false);
            canBeDefault = a.getBoolean(R.styleable.ProfileDisplayOption_canBeDefault, false);


            int inlineForRotation = a.getInt(R.styleable.ProfileDisplayOption_inlineQsb,
                    DONT_INLINE_QSB);
            inlineQsb[INDEX_DEFAULT] =
                    (inlineForRotation & INLINE_QSB_FOR_PORTRAIT) == INLINE_QSB_FOR_PORTRAIT;
            inlineQsb[INDEX_LANDSCAPE] =
                    (inlineForRotation & INLINE_QSB_FOR_LANDSCAPE) == INLINE_QSB_FOR_LANDSCAPE;
            inlineQsb[INDEX_TWO_PANEL_PORTRAIT] =
                    (inlineForRotation & INLINE_QSB_FOR_TWO_PANEL_PORTRAIT)
                            == INLINE_QSB_FOR_TWO_PANEL_PORTRAIT;
            inlineQsb[INDEX_TWO_PANEL_LANDSCAPE] =
                    (inlineForRotation & INLINE_QSB_FOR_TWO_PANEL_LANDSCAPE)
                            == INLINE_QSB_FOR_TWO_PANEL_LANDSCAPE;

            float x;
            float x;
            float y;
            float y;


@@ -1029,6 +1053,7 @@ public class InvariantDeviceProfile {
                allAppsIconSizes[i] = 0;
                allAppsIconSizes[i] = 0;
                allAppsIconTextSizes[i] = 0;
                allAppsIconTextSizes[i] = 0;
                allAppsBorderSpaces[i] = new PointF();
                allAppsBorderSpaces[i] = new PointF();
                inlineQsb[i] = false;
            }
            }
        }
        }


@@ -1071,6 +1096,7 @@ public class InvariantDeviceProfile {
                allAppsIconTextSizes[i] += p.allAppsIconTextSizes[i];
                allAppsIconTextSizes[i] += p.allAppsIconTextSizes[i];
                allAppsBorderSpaces[i].x += p.allAppsBorderSpaces[i].x;
                allAppsBorderSpaces[i].x += p.allAppsBorderSpaces[i].x;
                allAppsBorderSpaces[i].y += p.allAppsBorderSpaces[i].y;
                allAppsBorderSpaces[i].y += p.allAppsBorderSpaces[i].y;
                inlineQsb[i] |= p.inlineQsb[i];
            }
            }


            folderBorderSpace += p.folderBorderSpace;
            folderBorderSpace += p.folderBorderSpace;
+0 −8
Original line number Original line Diff line number Diff line
@@ -26,7 +26,6 @@ import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCH
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_NAVIGATION_MODE_GESTURE_BUTTON;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_NAVIGATION_MODE_GESTURE_BUTTON;
import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
import static com.android.launcher3.util.PackageManagerHelper.getPackageFilter;
import static com.android.launcher3.util.PackageManagerHelper.getPackageFilter;
import static com.android.launcher3.util.window.WindowManagerProxy.MIN_LARGE_TABLET_WIDTH;
import static com.android.launcher3.util.window.WindowManagerProxy.MIN_TABLET_WIDTH;
import static com.android.launcher3.util.window.WindowManagerProxy.MIN_TABLET_WIDTH;


import android.annotation.SuppressLint;
import android.annotation.SuppressLint;
@@ -348,13 +347,6 @@ public class DisplayController implements ComponentCallbacks, SafeCloseable {
            return smallestSizeDp(bounds) >= MIN_TABLET_WIDTH;
            return smallestSizeDp(bounds) >= MIN_TABLET_WIDTH;
        }
        }


        /**
         * Returns {@code true} if the bounds represent a large tablet.
         */
        public boolean isLargeTablet(WindowBounds bounds) {
            return smallestSizeDp(bounds) >= MIN_LARGE_TABLET_WIDTH;
        }

        /**
        /**
         * Returns smallest size in dp for given bounds.
         * Returns smallest size in dp for given bounds.
         */
         */
+0 −1
Original line number Original line Diff line number Diff line
@@ -58,7 +58,6 @@ import com.android.launcher3.util.WindowBounds;
public class WindowManagerProxy implements ResourceBasedOverride {
public class WindowManagerProxy implements ResourceBasedOverride {


    public static final int MIN_TABLET_WIDTH = 600;
    public static final int MIN_TABLET_WIDTH = 600;
    public static final int MIN_LARGE_TABLET_WIDTH = 720;


    public static final MainThreadInitializedObject<WindowManagerProxy> INSTANCE =
    public static final MainThreadInitializedObject<WindowManagerProxy> INSTANCE =
            forOverride(WindowManagerProxy.class, R.string.window_manager_proxy_class);
            forOverride(WindowManagerProxy.class, R.string.window_manager_proxy_class);
Loading