Bringing back auto-rotate settings
Bug: 77654352
Change-Id: I0910fc8afe2fb7e125d57912abc35bbbd5df9d74
diff --git a/src/com/android/launcher3/SettingsActivity.java b/src/com/android/launcher3/SettingsActivity.java
index c9bd32b..738a864 100644
--- a/src/com/android/launcher3/SettingsActivity.java
+++ b/src/com/android/launcher3/SettingsActivity.java
@@ -16,6 +16,9 @@
package com.android.launcher3;
+import static com.android.launcher3.states.RotationHelper.ALLOW_ROTATION_PREFERENCE_KEY;
+import static com.android.launcher3.states.RotationHelper.getAllowRotationDefaultValue;
+
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.AlertDialog;
@@ -84,6 +87,7 @@
public static class LauncherSettingsFragment extends PreferenceFragment {
private IconBadgingObserver mIconBadgingObserver;
+ private RotationLockObserver mRotationLockObserver;
private String mPreferenceKey;
private boolean mPreferenceHighlighted = false;
@@ -123,6 +127,22 @@
getPreferenceScreen().removePreference(iconShapeOverride);
}
}
+
+ // Setup allow rotation preference
+ Preference rotationPref = findPreference(ALLOW_ROTATION_PREFERENCE_KEY);
+ if (getResources().getBoolean(R.bool.allow_rotation)) {
+ // Launcher supports rotation by default. No need to show this setting.
+ getPreferenceScreen().removePreference(rotationPref);
+ } else {
+ mRotationLockObserver = new RotationLockObserver(rotationPref, resolver);
+
+ // Register a content observer to listen for system setting changes while
+ // this UI is active.
+ mRotationLockObserver.register(Settings.System.ACCELEROMETER_ROTATION);
+
+ // Initialize the UI once
+ rotationPref.setDefaultValue(getAllowRotationDefaultValue());
+ }
}
@Override
@@ -181,6 +201,10 @@
mIconBadgingObserver.unregister();
mIconBadgingObserver = null;
}
+ if (mRotationLockObserver != null) {
+ mRotationLockObserver.unregister();
+ mRotationLockObserver = null;
+ }
super.onDestroy();
}
@@ -204,6 +228,23 @@
}
}
+ private static class RotationLockObserver extends SettingsObserver.System {
+
+ private final Preference mRotationPref;
+
+ public RotationLockObserver(Preference rotationPref, ContentResolver resolver) {
+ super(resolver);
+ mRotationPref = rotationPref;
+ }
+
+ @Override
+ public void onSettingChanged(boolean enabled) {
+ mRotationPref.setEnabled(enabled);
+ mRotationPref.setSummary(enabled
+ ? R.string.allow_rotation_desc : R.string.allow_rotation_blocked_desc);
+ }
+ }
+
/**
* Content observer which listens for system badging setting changes,
* and updates the launcher badging setting subtext accordingly.