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

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

Merge "Use only current density to check isTablet" into sc-v2-dev

parents 6547721d 2998307c
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -162,7 +162,7 @@ public class RecentsOrientedState implements
     */
    public void setDeviceProfile(DeviceProfile deviceProfile) {
        boolean oldMultipleOrientationsSupported = isMultipleOrientationSupportedByDevice();
        setFlag(FLAG_MULTIPLE_ORIENTATION_SUPPORTED_BY_DENSITY, !deviceProfile.allowRotation);
        setFlag(FLAG_MULTIPLE_ORIENTATION_SUPPORTED_BY_DENSITY, !deviceProfile.isTablet);
        if (mListenersInitialized) {
            boolean newMultipleOrientationsSupported = isMultipleOrientationSupportedByDevice();
            // If isMultipleOrientationSupportedByDevice is changed, init or destroy listeners
+1 −11
Original line number Diff line number Diff line
@@ -16,13 +16,10 @@

package com.android.launcher3;

import static android.util.DisplayMetrics.DENSITY_DEVICE_STABLE;

import static com.android.launcher3.ResourceUtils.pxFromDp;
import static com.android.launcher3.Utilities.dpiFromPx;
import static com.android.launcher3.Utilities.pxFromSp;
import static com.android.launcher3.folder.ClippedFolderIconLayoutRule.ICON_OVERLAP_FACTOR;
import static com.android.launcher3.util.WindowManagerCompat.MIN_TABLET_WIDTH;

import android.annotation.SuppressLint;
import android.content.Context;
@@ -64,7 +61,6 @@ public class DeviceProfile {
    public final boolean isPhone;
    public final boolean transposeLayoutWithOrientation;
    public final boolean isTwoPanels;
    public final boolean allowRotation;

    // Device properties in current orientation
    public final boolean isLandscape;
@@ -244,12 +240,7 @@ public class DeviceProfile {
        availableHeightPx = windowBounds.availableSize.y;

        mInfo = info;
        // If the device's pixel density was scaled (usually via settings for A11y), use the
        // original dimensions to determine if rotation is allowed of not.
        float originalSmallestWidth = dpiFromPx(Math.min(widthPx, heightPx), DENSITY_DEVICE_STABLE);
        allowRotation = originalSmallestWidth >= MIN_TABLET_WIDTH;
        // Tablet UI does not support emulated landscape.
        isTablet = allowRotation && info.isTablet(windowBounds);
        isTablet = info.isTablet(windowBounds);
        isPhone = !isTablet;
        isTwoPanels = isTablet && useTwoPanels;

@@ -1031,7 +1022,6 @@ public class DeviceProfile {
        writer.println(prefix + "DeviceProfile:");
        writer.println(prefix + "\t1 dp = " + mMetrics.density + " px");

        writer.println(prefix + "\tallowRotation:" + allowRotation);
        writer.println(prefix + "\tisTablet:" + isTablet);
        writer.println(prefix + "\tisPhone:" + isPhone);
        writer.println(prefix + "\ttransposeLayoutWithOrientation:"
+4 −2
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ import com.android.launcher3.R;
import com.android.launcher3.Utilities;
import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.model.WidgetsModel;
import com.android.launcher3.states.RotationHelper;
import com.android.launcher3.uioverrides.plugins.PluginManagerWrapper;

import java.util.Collections;
@@ -253,12 +254,13 @@ public class SettingsActivity extends FragmentActivity
                case ALLOW_ROTATION_PREFERENCE_KEY:
                    DeviceProfile deviceProfile = InvariantDeviceProfile.INSTANCE.get(
                            getContext()).getDeviceProfile(getContext());
                    if (deviceProfile.allowRotation) {
                    if (deviceProfile.isTablet) {
                        // Launcher supports rotation by default. No need to show this setting.
                        return false;
                    }
                    // Initialize the UI once
                    preference.setDefaultValue(false);
                    preference.setDefaultValue(
                            RotationHelper.getAllowRotationDefaultValue(deviceProfile));
                    return true;

                case FLAGS_PREFERENCE_KEY:
+20 −6
Original line number Diff line number Diff line
@@ -18,6 +18,10 @@ package com.android.launcher3.states;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LOCKED;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_NOSENSOR;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
import static android.util.DisplayMetrics.DENSITY_DEVICE_STABLE;

import static com.android.launcher3.Utilities.dpiFromPx;
import static com.android.launcher3.util.WindowManagerCompat.MIN_TABLET_WIDTH;

import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
@@ -25,7 +29,6 @@ import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import com.android.launcher3.BaseActivity;
import com.android.launcher3.DeviceProfile;
import com.android.launcher3.Utilities;
import com.android.launcher3.util.ActivityTracker;
import com.android.launcher3.util.UiThreadHelper;

/**
@@ -38,6 +41,17 @@ public class RotationHelper implements OnSharedPreferenceChangeListener,

    public static final String ALLOW_ROTATION_PREFERENCE_KEY = "pref_allowRotation";

    /**
     * Returns the default value of {@link #ALLOW_ROTATION_PREFERENCE_KEY} preference.
     */
    public static boolean getAllowRotationDefaultValue(DeviceProfile deviceProfile) {
        // If the device's pixel density was scaled (usually via settings for A11y), use the
        // original dimensions to determine if rotation is allowed of not.
        float originalSmallestWidth = dpiFromPx(
                Math.min(deviceProfile.widthPx, deviceProfile.heightPx), DENSITY_DEVICE_STABLE);
        return originalSmallestWidth >= MIN_TABLET_WIDTH;
    }

    public static final int REQUEST_NONE = 0;
    public static final int REQUEST_ROTATE = 1;
    public static final int REQUEST_LOCK = 2;
@@ -51,7 +65,7 @@ public class RotationHelper implements OnSharedPreferenceChangeListener,

    /**
     * Rotation request made by
     * {@link ActivityTracker.SchedulerCallback}.
     * {@link com.android.launcher3.util.ActivityTracker.SchedulerCallback}.
     * This supersedes any other request.
     */
    private int mStateHandlerRequest = REQUEST_NONE;
@@ -84,7 +98,7 @@ public class RotationHelper implements OnSharedPreferenceChangeListener,
                mSharedPrefs.registerOnSharedPreferenceChangeListener(this);
            }
            mHomeRotationEnabled = mSharedPrefs.getBoolean(ALLOW_ROTATION_PREFERENCE_KEY,
                    mActivity.getDeviceProfile().allowRotation);
                    getAllowRotationDefaultValue(mActivity.getDeviceProfile()));
        } else {
            if (mSharedPrefs != null) {
                mSharedPrefs.unregisterOnSharedPreferenceChangeListener(this);
@@ -98,7 +112,7 @@ public class RotationHelper implements OnSharedPreferenceChangeListener,
        if (mDestroyed) return;
        boolean wasRotationEnabled = mHomeRotationEnabled;
        mHomeRotationEnabled = mSharedPrefs.getBoolean(ALLOW_ROTATION_PREFERENCE_KEY,
                mActivity.getDeviceProfile().allowRotation);
                getAllowRotationDefaultValue(mActivity.getDeviceProfile()));
        if (mHomeRotationEnabled != wasRotationEnabled) {
            notifyChange();
        }
@@ -106,7 +120,7 @@ public class RotationHelper implements OnSharedPreferenceChangeListener,

    @Override
    public void onDeviceProfileChanged(DeviceProfile dp) {
        boolean ignoreAutoRotateSettings = dp.allowRotation;
        boolean ignoreAutoRotateSettings = dp.isTablet;
        if (mIgnoreAutoRotateSettings != ignoreAutoRotateSettings) {
            setIgnoreAutoRotateSettings(ignoreAutoRotateSettings);
            notifyChange();
@@ -143,7 +157,7 @@ public class RotationHelper implements OnSharedPreferenceChangeListener,
    public void initialize() {
        if (!mInitialized) {
            mInitialized = true;
            setIgnoreAutoRotateSettings(mActivity.getDeviceProfile().allowRotation);
            setIgnoreAutoRotateSettings(mActivity.getDeviceProfile().isTablet);
            mActivity.addOnDeviceProfileChangeListener(this);
            notifyChange();
        }