diff options
author | DvTonder <david.vantonder@gmail.com> | 2013-01-30 19:00:39 -0500 |
---|---|---|
committer | DvTonder <david.vantonder@gmail.com> | 2013-02-06 19:46:14 -0500 |
commit | 5dfca02b894866d3a71dd00ea3372ce3281ab2fe (patch) | |
tree | b38fff3557af34c4a246f8d41b7a8e9b95645aff | |
parent | b5dfbecbf627dfac19a3a84dedf23ac83edc2344 (diff) | |
download | packages_apps_Settings-5dfca02b894866d3a71dd00ea3372ce3281ab2fe.tar.gz packages_apps_Settings-5dfca02b894866d3a71dd00ea3372ce3281ab2fe.tar.bz2 packages_apps_Settings-5dfca02b894866d3a71dd00ea3372ce3281ab2fe.zip |
Settings: Allow non-primary user to access selected CM Settings
Specifically, Chronus and Notification light settings in System and
Background in Lock screen settings
Patch set 1 : Initial commit
Patch set 2 : Enable Lock screen targets
Patch set 3 : Enable Notification light settings
Change-Id: Ie9d40649f60b7279c4a07e77543720cfee4a3002
-rw-r--r-- | src/com/android/settings/Settings.java | 4 | ||||
-rw-r--r-- | src/com/android/settings/cyanogenmod/LockscreenInterface.java | 73 | ||||
-rw-r--r-- | src/com/android/settings/cyanogenmod/SystemSettings.java | 105 |
3 files changed, 115 insertions, 67 deletions
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java index b70d26e78..ad88aee9d 100644 --- a/src/com/android/settings/Settings.java +++ b/src/com/android/settings/Settings.java @@ -124,7 +124,9 @@ public class Settings extends PreferenceActivity R.id.about_settings, R.id.accessibility_settings, R.id.interface_section, - R.id.launcher_settings + R.id.launcher_settings, + R.id.lock_screen_settings, + R.id.system_settings }; private SharedPreferences mDevelopmentPreferences; diff --git a/src/com/android/settings/cyanogenmod/LockscreenInterface.java b/src/com/android/settings/cyanogenmod/LockscreenInterface.java index d8e402c11..fc70dbfad 100644 --- a/src/com/android/settings/cyanogenmod/LockscreenInterface.java +++ b/src/com/android/settings/cyanogenmod/LockscreenInterface.java @@ -30,6 +30,7 @@ import android.graphics.Bitmap; import android.graphics.Rect; import android.net.Uri; import android.os.Bundle; +import android.os.UserHandle; import android.preference.CheckBoxPreference; import android.preference.ListPreference; import android.preference.Preference; @@ -55,10 +56,11 @@ public class LockscreenInterface extends SettingsPreferenceFragment implements private static final int LOCKSCREEN_BACKGROUND_CUSTOM_IMAGE = 1; private static final int LOCKSCREEN_BACKGROUND_DEFAULT_WALLPAPER = 2; - private static final String KEY_ALWAYS_BATTERY_PREF = "lockscreen_battery_status"; + private static final String KEY_ALWAYS_BATTERY = "lockscreen_battery_status"; private static final String KEY_LOCKSCREEN_BUTTONS = "lockscreen_buttons"; private static final String KEY_LOCKSCREEN_MAXIMIZE_WIDGETS = "lockscreen_maximize_widgets"; - private static final String KEY_BACKGROUND_PREF = "lockscreen_background"; + private static final String KEY_BACKGROUND = "lockscreen_background"; + private static final String KEY_SCREEN_SECURITY = "screen_security"; private ListPreference mCustomBackground; private ListPreference mBatteryStatus; @@ -67,6 +69,8 @@ public class LockscreenInterface extends SettingsPreferenceFragment implements private File mWallpaperImage; private File mWallpaperTemporary; + private boolean mIsPrimary; + public boolean hasButtons() { return !getResources().getBoolean(com.android.internal.R.bool.config_showNavigationBar); } @@ -77,25 +81,38 @@ public class LockscreenInterface extends SettingsPreferenceFragment implements addPreferencesFromResource(R.xml.lockscreen_interface_settings); - mBatteryStatus = (ListPreference) findPreference(KEY_ALWAYS_BATTERY_PREF); - if (mBatteryStatus != null) { - mBatteryStatus.setOnPreferenceChangeListener(this); - } + // Determine which user is logged in + mIsPrimary = UserHandle.myUserId() == UserHandle.USER_OWNER; + if (mIsPrimary) { + // Its the primary user, show all the settings + mBatteryStatus = (ListPreference) findPreference(KEY_ALWAYS_BATTERY); + if (mBatteryStatus != null) { + mBatteryStatus.setOnPreferenceChangeListener(this); + } - mMaximizeWidgets = (CheckBoxPreference)findPreference(KEY_LOCKSCREEN_MAXIMIZE_WIDGETS); - if (!Utils.isPhone(getActivity())) { - getPreferenceScreen().removePreference(mMaximizeWidgets); - mMaximizeWidgets = null; - } else { - mMaximizeWidgets.setOnPreferenceChangeListener(this); - } + mMaximizeWidgets = (CheckBoxPreference)findPreference(KEY_LOCKSCREEN_MAXIMIZE_WIDGETS); + if (!Utils.isPhone(getActivity())) { + getPreferenceScreen().removePreference(mMaximizeWidgets); + mMaximizeWidgets = null; + } else { + mMaximizeWidgets.setOnPreferenceChangeListener(this); + } - PreferenceScreen lockscreenButtons = (PreferenceScreen) findPreference(KEY_LOCKSCREEN_BUTTONS); - if (!hasButtons()) { - getPreferenceScreen().removePreference(lockscreenButtons); + PreferenceScreen lockscreenButtons = (PreferenceScreen) findPreference(KEY_LOCKSCREEN_BUTTONS); + if (!hasButtons()) { + getPreferenceScreen().removePreference(lockscreenButtons); + } + } else { + // Secondary user is logged in, remove all primary user specific preferences + PreferenceScreen prefScreen = getPreferenceScreen(); + prefScreen.removePreference(findPreference(KEY_SCREEN_SECURITY)); + prefScreen.removePreference(findPreference(KEY_ALWAYS_BATTERY)); + prefScreen.removePreference(findPreference(KEY_LOCKSCREEN_BUTTONS)); + prefScreen.removePreference(findPreference(KEY_LOCKSCREEN_MAXIMIZE_WIDGETS)); } - mCustomBackground = (ListPreference) findPreference(KEY_BACKGROUND_PREF); + // This applies to all users + mCustomBackground = (ListPreference) findPreference(KEY_BACKGROUND); mCustomBackground.setOnPreferenceChangeListener(this); updateCustomBackgroundSummary(); @@ -124,17 +141,19 @@ public class LockscreenInterface extends SettingsPreferenceFragment implements public void onResume() { super.onResume(); - ContentResolver cr = getActivity().getContentResolver(); - if (mBatteryStatus != null) { - int batteryStatus = Settings.System.getInt(cr, - Settings.System.LOCKSCREEN_ALWAYS_SHOW_BATTERY, 0); - mBatteryStatus.setValueIndex(batteryStatus); - mBatteryStatus.setSummary(mBatteryStatus.getEntries()[batteryStatus]); - } + if (mIsPrimary) { + ContentResolver cr = getActivity().getContentResolver(); + if (mBatteryStatus != null) { + int batteryStatus = Settings.System.getInt(cr, + Settings.System.LOCKSCREEN_ALWAYS_SHOW_BATTERY, 0); + mBatteryStatus.setValueIndex(batteryStatus); + mBatteryStatus.setSummary(mBatteryStatus.getEntries()[batteryStatus]); + } - if (mMaximizeWidgets != null) { - mMaximizeWidgets.setChecked(Settings.System.getInt(cr, - Settings.System.LOCKSCREEN_MAXIMIZE_WIDGETS, 0) == 1); + if (mMaximizeWidgets != null) { + mMaximizeWidgets.setChecked(Settings.System.getInt(cr, + Settings.System.LOCKSCREEN_MAXIMIZE_WIDGETS, 0) == 1); + } } } diff --git a/src/com/android/settings/cyanogenmod/SystemSettings.java b/src/com/android/settings/cyanogenmod/SystemSettings.java index 5343fd1a3..d34b00dc3 100644 --- a/src/com/android/settings/cyanogenmod/SystemSettings.java +++ b/src/com/android/settings/cyanogenmod/SystemSettings.java @@ -21,6 +21,7 @@ import android.content.pm.PackageManager.NameNotFoundException; import android.os.Bundle; import android.os.RemoteException; import android.os.ServiceManager; +import android.os.UserHandle; import android.preference.Preference; import android.preference.PreferenceScreen; import android.provider.Settings; @@ -29,7 +30,6 @@ import android.view.IWindowManager; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; -import com.android.settings.Utils; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -42,63 +42,84 @@ public class SystemSettings extends SettingsPreferenceFragment { private static final String KEY_HARDWARE_KEYS = "hardware_keys"; private static final String KEY_NAVIGATION_BAR = "navigation_bar"; private static final String KEY_LOCK_CLOCK = "lock_clock"; + private static final String KEY_STATUS_BAR = "status_bar"; + private static final String KEY_QUICK_SETTINGS = "quick_settings_panel"; + private static final String KEY_NOTIFICATION_DRAWER = "notification_drawer"; + private static final String KEY_POWER_MENU = "power_menu"; private PreferenceScreen mNotificationPulse; private PreferenceScreen mBatteryPulse; + private boolean mIsPrimary; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.system_settings); + PreferenceScreen prefScreen = getPreferenceScreen(); + + // Determine which user is logged in + mIsPrimary = UserHandle.myUserId() == UserHandle.USER_OWNER; + if (mIsPrimary) { + // Primary user only preferences + // Battery lights + mBatteryPulse = (PreferenceScreen) findPreference(KEY_BATTERY_LIGHT); + if (mBatteryPulse != null) { + if (getResources().getBoolean( + com.android.internal.R.bool.config_intrusiveBatteryLed) == false) { + prefScreen.removePreference(mBatteryPulse); + } else { + updateBatteryPulseDescription(); + } + } - // Dont display the lock clock preference if its not installed - removePreferenceIfPackageNotInstalled(findPreference(KEY_LOCK_CLOCK)); + // Only show the hardware keys config on a device that does not have a navbar + // and the navigation bar config on phones that has a navigation bar + boolean removeKeys = false; + boolean removeNavbar = false; + IWindowManager windowManager = IWindowManager.Stub.asInterface( + ServiceManager.getService(Context.WINDOW_SERVICE)); + try { + if (windowManager.hasNavigationBar()) { + removeKeys = true; + } else { + removeNavbar = true; + } + } catch (RemoteException e) { + // Do nothing + } + + // Act on the above + if (removeKeys) { + prefScreen.removePreference(findPreference(KEY_HARDWARE_KEYS)); + } + if (removeNavbar) { + prefScreen.removePreference(findPreference(KEY_NAVIGATION_BAR)); + } + } else { + // Secondary user is logged in, remove all primary user specific preferences + prefScreen.removePreference(findPreference(KEY_BATTERY_LIGHT)); + prefScreen.removePreference(findPreference(KEY_HARDWARE_KEYS)); + prefScreen.removePreference(findPreference(KEY_NAVIGATION_BAR)); + prefScreen.removePreference(findPreference(KEY_STATUS_BAR)); + prefScreen.removePreference(findPreference(KEY_QUICK_SETTINGS)); + prefScreen.removePreference(findPreference(KEY_POWER_MENU)); + prefScreen.removePreference(findPreference(KEY_NOTIFICATION_DRAWER)); + } + // Preferences that applies to all users // Notification lights mNotificationPulse = (PreferenceScreen) findPreference(KEY_NOTIFICATION_PULSE); if (mNotificationPulse != null) { if (!getResources().getBoolean(com.android.internal.R.bool.config_intrusiveNotificationLed)) { - getPreferenceScreen().removePreference(mNotificationPulse); + prefScreen.removePreference(mNotificationPulse); } else { updateLightPulseDescription(); } } - // Battery lights - mBatteryPulse = (PreferenceScreen) findPreference(KEY_BATTERY_LIGHT); - if (mBatteryPulse != null) { - if (getResources().getBoolean( - com.android.internal.R.bool.config_intrusiveBatteryLed) == false) { - getPreferenceScreen().removePreference(mBatteryPulse); - } else { - updateBatteryPulseDescription(); - } - } - - // Only show the hardware keys config on a device that does not have a navbar - // Only show the navigation bar config on phones that has a navigation bar - boolean removeKeys = false; - boolean removeNavbar = false; - IWindowManager windowManager = IWindowManager.Stub.asInterface( - ServiceManager.getService(Context.WINDOW_SERVICE)); - try { - if (windowManager.hasNavigationBar()) { - removeKeys = true; - } else { - removeNavbar = true; - } - } catch (RemoteException e) { - // Do nothing - } - - // Act on the above - if (removeKeys) { - getPreferenceScreen().removePreference(findPreference(KEY_HARDWARE_KEYS)); - } - if (removeNavbar) { - getPreferenceScreen().removePreference(findPreference(KEY_NAVIGATION_BAR)); - } + // Don't display the lock clock preference if its not installed + removePreferenceIfPackageNotInstalled(findPreference(KEY_LOCK_CLOCK)); } private void updateLightPulseDescription() { @@ -122,8 +143,14 @@ public class SystemSettings extends SettingsPreferenceFragment { @Override public void onResume() { super.onResume(); + + // All users updateLightPulseDescription(); - updateBatteryPulseDescription(); + + // Primary user only + if (mIsPrimary) { + updateBatteryPulseDescription(); + } } @Override |