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

Commit 8521fd6e authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add toggle switch for auto rotate preference in display settings." into sc-qpr1-dev

parents 63786513 dc909e2a
Loading
Loading
Loading
Loading
+42 −6
Original line number Diff line number Diff line
@@ -22,6 +22,8 @@ import static android.provider.Settings.Secure.CAMERA_AUTOROTATE;
import static com.android.settings.display.SmartAutoRotateController.hasSufficientPermission;
import static com.android.settings.display.SmartAutoRotateController.isRotationResolverServiceAvailable;

import android.text.TextUtils;
import android.app.settings.SettingsEnums;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -37,7 +39,9 @@ import androidx.preference.PreferenceScreen;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.view.RotationPolicy;
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.TogglePreferenceController;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;
@@ -45,12 +49,10 @@ import com.android.settingslib.core.lifecycle.events.OnStop;
/**
 * SmartAutoRotatePreferenceController provides auto rotate summary in display settings
 */
public class SmartAutoRotatePreferenceController extends BasePreferenceController
public class SmartAutoRotatePreferenceController extends TogglePreferenceController
        implements LifecycleObserver, OnStart, OnStop {

    private RotationPolicy.RotationPolicyListener mRotationPolicyListener;
    private Preference mPreference;

    private final MetricsFeatureProvider mMetricsFeatureProvider;
    private final SensorPrivacyManager mPrivacyManager;
    private final PowerManager mPowerManager;
    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@@ -60,12 +62,16 @@ public class SmartAutoRotatePreferenceController extends BasePreferenceControlle
        }
    };

    private RotationPolicy.RotationPolicyListener mRotationPolicyListener;
    private Preference mPreference;

    public SmartAutoRotatePreferenceController(Context context, String preferenceKey) {
        super(context, preferenceKey);
        mPrivacyManager = SensorPrivacyManager.getInstance(context);
        mPrivacyManager
                .addSensorPrivacyListener(CAMERA, (sensor, enabled) -> refreshSummary(mPreference));
        mPowerManager = context.getSystemService(PowerManager.class);
        mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
    }

    @Override
@@ -74,12 +80,28 @@ public class SmartAutoRotatePreferenceController extends BasePreferenceControlle
                ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
    }

    @Override
    public boolean isSliceable() {
        return TextUtils.equals(getPreferenceKey(), "auto_rotate");
    }

    @Override
    public boolean isPublicSlice() {
        return true;
    }

    @Override
    public void displayPreference(PreferenceScreen screen) {
        super.displayPreference(screen);
        mPreference = screen.findPreference(getPreferenceKey());
    }

    @Override
    public void updateState(Preference preference) {
        super.updateState(preference);
        refreshSummary(mPreference);
    }

    @Override
    public void onStart() {
        mContext.registerReceiver(mReceiver,
@@ -89,7 +111,7 @@ public class SmartAutoRotatePreferenceController extends BasePreferenceControlle
                @Override
                public void onChange() {
                    if (mPreference != null) {
                        refreshSummary(mPreference);
                        updateState(mPreference);
                    }
                }
            };
@@ -121,6 +143,20 @@ public class SmartAutoRotatePreferenceController extends BasePreferenceControlle
        return mPowerManager.isPowerSaveMode();
    }

    @Override
    public boolean isChecked() {
        return !RotationPolicy.isRotationLocked(mContext);
    }

    @Override
    public boolean setChecked(boolean isChecked) {
        final boolean isLocked = !isChecked;
        mMetricsFeatureProvider.action(mContext, SettingsEnums.ACTION_ROTATION_LOCK,
                isLocked);
        RotationPolicy.setRotationLock(mContext, isLocked);
        return true;
    }

    @Override
    public CharSequence getSummary() {
        int activeStringId = R.string.auto_rotate_option_off;