diff options
author | DvTonder <david.vantonder@gmail.com> | 2013-12-07 09:25:38 +0100 |
---|---|---|
committer | Adnan Begovic <adnan@cyngn.com> | 2015-10-29 17:36:29 -0700 |
commit | f71d7438ea0b30fe08d0297b8bbb9ea68124348b (patch) | |
tree | f32110177758b46296d58f0c359dd22c2df89244 /src/com/android/settings/DisplaySettings.java | |
parent | a284b34f11b3ad22084232950d81fb1bc68f21ce (diff) | |
download | packages_apps_Settings-f71d7438ea0b30fe08d0297b8bbb9ea68124348b.zip packages_apps_Settings-f71d7438ea0b30fe08d0297b8bbb9ea68124348b.tar.gz packages_apps_Settings-f71d7438ea0b30fe08d0297b8bbb9ea68124348b.tar.bz2 |
Settings: Forward port Display Rotation settings
Originaly authored by Robert Burns (burnsra)
Settings: Fix possible NPE in Display settings
Change-Id: I186203782aa27fb4eaa77500fecb82946bfdd173
Display : Enable rotation on large screens
The auto-rotate toggle in statusbar is no longer present, so the check
is no longer valid.
Change-Id: I0a23e251b3cb793481d14ea8ad8a9079c7c0e962
Fix the spacing between displayed rotation angles
Before: http://goo.gl/QJ7hE
After: http://goo.gl/V0alW
Change-Id: I0319f8e84e4b278b2f720cbc77cecc280c82d461
Settings: rotation settings for devices with hardware rotation lock
All settings would be disabled on devices with hardware rotation
lock due to dependency setting. Disable dependency to allow setting
swap volume and rotation degrees on those devices.
Change-Id: Iee0532902d59fa80666e17b3853db8e3d7ed5ddc
Add lockscreen rotation as an optional rotation setting (2/2)
This will allow the user to select wether or not to use the
rotation settings for the lockscreen. This is dependent
upon the rotation setting being checked.
Signed-off-by: Michael Bestas <mikeioannina@gmail.com>
Change-Id: If45c13a395e0d71b7c4cdcf484a6b8cef964ee37
JIRA: CYAN-339
Ported from cm-10.2, adjusted for 4.4
Signed-off-by: Michael Bestas <mikeioannina@gmail.com>
Change-Id: Ib239e63200fc8565c3f66969aa495f1c40908adf
Diffstat (limited to 'src/com/android/settings/DisplaySettings.java')
-rw-r--r-- | src/com/android/settings/DisplaySettings.java | 109 |
1 files changed, 107 insertions, 2 deletions
diff --git a/src/com/android/settings/DisplaySettings.java b/src/com/android/settings/DisplaySettings.java index 13c1b28..8645377 100644 --- a/src/com/android/settings/DisplaySettings.java +++ b/src/com/android/settings/DisplaySettings.java @@ -16,8 +16,8 @@ */ package com.android.settings; - import com.android.internal.logging.MetricsLogger; +import android.preference.CheckBoxPreference; import com.android.internal.view.RotationPolicy; import com.android.settings.DropDownPreference.Callback; import com.android.settings.search.BaseSearchIndexProvider; @@ -44,7 +44,9 @@ import android.content.SharedPreferences; import android.hardware.Sensor; import android.hardware.SensorManager; import android.os.Build; +import android.database.ContentObserver; import android.os.Bundle; +import android.os.Handler; import android.os.RemoteException; import android.os.SystemProperties; import android.preference.ListPreference; @@ -60,6 +62,9 @@ import android.provider.Settings; import android.text.TextUtils; import android.util.Log; +import com.android.settings.DreamSettings; +import com.android.settings.Utils; +import com.android.settings.cyanogenmod.DisplayRotation; import java.util.ArrayList; import java.util.List; @@ -94,6 +99,11 @@ public class DisplaySettings extends SettingsPreferenceFragment implements private static final String KEY_COLOR_ENHANCEMENT = "color_enhancement"; private static final String KEY_TAP_TO_WAKE = "double_tap_wake_gesture"; private static final String KEY_PROXIMITY_WAKE = "proximity_on_wake"; + private static final String KEY_DISPLAY_ROTATION = "display_rotation"; + private static final String KEY_ADVANCED_DISPLAY_SETTINGS = "advanced_display_settings"; + private static final String CATEGORY_LIGHTS = "lights_prefs"; + private static final String KEY_NOTIFICATION_PULSE = "notification_pulse"; + private static final String KEY_BATTERY_LIGHT = "battery_light"; private static final String KEY_WAKE_WHEN_PLUGGED_OR_UNPLUGGED = "wake_when_plugged_or_unplugged"; private static final String CATEGORY_ADVANCED = "advanced_display_prefs"; @@ -103,6 +113,9 @@ public class DisplaySettings extends SettingsPreferenceFragment implements private static final int DLG_GLOBAL_CHANGE_WARNING = 1; private FontDialogPreference mFontSizePref; + private PreferenceScreen mNotificationPulse; + private PreferenceScreen mBatteryPulse; + private PreferenceScreen mDisplayRotationPreference; private final Configuration mCurConfig = new Configuration(); @@ -120,6 +133,22 @@ public class DisplaySettings extends SettingsPreferenceFragment implements private SwitchPreference mSunlightEnhancement; private SwitchPreference mColorEnhancement; + private ContentObserver mAccelerometerRotationObserver = + new ContentObserver(new Handler()) { + @Override + public void onChange(boolean selfChange) { + updateDisplayRotationPreferenceDescription(); + } + }; + + private final RotationPolicy.RotationPolicyListener mRotationPolicyListener = + new RotationPolicy.RotationPolicyListener() { + @Override + public void onChange() { + updateDisplayRotationPreferenceDescription(); + } + }; + @Override protected int getMetricsCategory() { return MetricsLogger.DISPLAY; @@ -133,6 +162,8 @@ public class DisplaySettings extends SettingsPreferenceFragment implements addPreferencesFromResource(R.xml.display_settings); + mDisplayRotationPreference = (PreferenceScreen) findPreference(KEY_DISPLAY_ROTATION); + mScreenSaverPreference = findPreference(KEY_SCREEN_SAVER); if (mScreenSaverPreference != null && getResources().getBoolean( @@ -147,6 +178,7 @@ public class DisplaySettings extends SettingsPreferenceFragment implements mScreenTimeoutPreference.setOnPreferenceChangeListener(this); disableUnusableTimeouts(mScreenTimeoutPreference); updateTimeoutPreferenceDescription(currentTimeout); + updateDisplayRotationPreferenceDescription(); mFontSizePref = (FontDialogPreference) findPreference(KEY_FONT_SIZE); mFontSizePref.setOnPreferenceChangeListener(this); @@ -289,6 +321,54 @@ public class DisplaySettings extends SettingsPreferenceFragment implements return res.getBoolean(com.android.internal.R.bool.config_automatic_brightness_available); } + private void updateDisplayRotationPreferenceDescription() { + if (mDisplayRotationPreference == null) { + // The preference was removed, do nothing + return; + } + + // We have a preference, lets update the summary + boolean rotationEnabled = Settings.System.getInt(getContentResolver(), + Settings.System.ACCELEROMETER_ROTATION, 0) != 0; + + if (!rotationEnabled) { + mDisplayRotationPreference.setSummary(R.string.display_rotation_disabled); + return; + } + + StringBuilder summary = new StringBuilder(); + int mode = Settings.System.getInt(getContentResolver(), + Settings.System.ACCELEROMETER_ROTATION_ANGLES, + DisplayRotation.ROTATION_0_MODE + | DisplayRotation.ROTATION_90_MODE + | DisplayRotation.ROTATION_270_MODE); + ArrayList<String> rotationList = new ArrayList<String>(); + String delim = ""; + + if ((mode & DisplayRotation.ROTATION_0_MODE) != 0) { + rotationList.add("0"); + } + if ((mode & DisplayRotation.ROTATION_90_MODE) != 0) { + rotationList.add("90"); + } + if ((mode & DisplayRotation.ROTATION_180_MODE) != 0) { + rotationList.add("180"); + } + if ((mode & DisplayRotation.ROTATION_270_MODE) != 0) { + rotationList.add("270"); + } + for (int i = 0; i < rotationList.size(); i++) { + summary.append(delim).append(rotationList.get(i)); + if ((rotationList.size() - i) > 2) { + delim = ", "; + } else { + delim = " & "; + } + } + summary.append(" " + getString(R.string.display_rotation_unit)); + mDisplayRotationPreference.setSummary(summary); + } + private void updateTimeoutPreferenceDescription(long currentTimeout) { ListPreference preference = mScreenTimeoutPreference; String summary; @@ -359,7 +439,7 @@ public class DisplaySettings extends SettingsPreferenceFragment implements @Override public void onResume() { super.onResume(); - + updateDisplayRotationPreferenceDescription(); if (mAdaptiveBacklight != null) { mAdaptiveBacklight.setChecked(AdaptiveBacklight.isEnabled()); } @@ -381,6 +461,20 @@ public class DisplaySettings extends SettingsPreferenceFragment implements mTapToWake.setChecked(TapToWake.isEnabled()); } + RotationPolicy.registerRotationPolicyListener(getActivity(), + mRotationPolicyListener); + + final ContentResolver resolver = getContentResolver(); + + // Display rotation observer + resolver.registerContentObserver( + Settings.System.getUriFor(Settings.System.ACCELEROMETER_ROTATION), true, + mAccelerometerRotationObserver); + + if (mAdaptiveBacklight != null) { + mAdaptiveBacklight.setChecked(AdaptiveBacklight.isEnabled()); + } + // Default value for wake-on-plug behavior from config.xml boolean wakeUpWhenPluggedOrUnpluggedConfig = getResources().getBoolean( com.android.internal.R.bool.config_unplugTurnsOnScreen); @@ -393,6 +487,17 @@ public class DisplaySettings extends SettingsPreferenceFragment implements } @Override + public void onPause() { + super.onPause(); + + RotationPolicy.unregisterRotationPolicyListener(getActivity(), + mRotationPolicyListener); + + // Display rotation observer + getContentResolver().unregisterContentObserver(mAccelerometerRotationObserver); + } + + @Override public Dialog onCreateDialog(int dialogId) { if (dialogId == DLG_GLOBAL_CHANGE_WARNING) { return Utils.buildGlobalChangeWarningDialog(getActivity(), |