/* * Copyright (C) 2012 CyanogenMod * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.cyanogenmod; import android.content.res.Resources; import android.os.Bundle; import android.os.UserHandle; import android.os.UserManager; import android.preference.CheckBoxPreference; import android.preference.ListPreference; import android.preference.Preference; import android.preference.Preference.OnPreferenceChangeListener; import android.preference.PreferenceScreen; import android.provider.Settings; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; public class PowerMenu extends SettingsPreferenceFragment implements OnPreferenceChangeListener { private static final String TAG = "PowerMenu"; private static final String KEY_REBOOT = "power_menu_reboot"; private static final String KEY_SCREENSHOT = "power_menu_screenshot"; private static final String KEY_EXPANDED_DESKTOP = "power_menu_expanded_desktop"; private static final String KEY_PROFILES = "power_menu_profiles"; private static final String KEY_AIRPLANE = "power_menu_airplane"; private static final String KEY_USER = "power_menu_user"; private static final String KEY_SOUND = "power_menu_sound"; private CheckBoxPreference mRebootPref; private CheckBoxPreference mScreenshotPref; ListPreference mExpandedDesktopPref; private CheckBoxPreference mProfilesPref; private CheckBoxPreference mAirplanePref; private CheckBoxPreference mUserPref; private CheckBoxPreference mSoundPref; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.power_menu_settings); mRebootPref = (CheckBoxPreference) findPreference(KEY_REBOOT); mRebootPref.setChecked((Settings.System.getInt(getContentResolver(), Settings.System.POWER_MENU_REBOOT_ENABLED, 1) == 1)); mScreenshotPref = (CheckBoxPreference) findPreference(KEY_SCREENSHOT); mScreenshotPref.setChecked((Settings.System.getInt(getContentResolver(), Settings.System.POWER_MENU_SCREENSHOT_ENABLED, 0) == 1)); PreferenceScreen prefSet = getPreferenceScreen(); mExpandedDesktopPref = (ListPreference) prefSet.findPreference(KEY_EXPANDED_DESKTOP); mExpandedDesktopPref.setOnPreferenceChangeListener(this); int expandedDesktopValue = Settings.System.getInt(getContentResolver(), Settings.System.EXPANDED_DESKTOP_STYLE, 0); mExpandedDesktopPref.setValue(String.valueOf(expandedDesktopValue)); updateExpandedDesktopSummary(expandedDesktopValue); mProfilesPref = (CheckBoxPreference) findPreference(KEY_PROFILES); mProfilesPref.setChecked((Settings.System.getInt(getContentResolver(), Settings.System.POWER_MENU_PROFILES_ENABLED, 1) == 1)); // Only enable if System Profiles are also enabled boolean enabled = Settings.System.getInt(getContentResolver(), Settings.System.SYSTEM_PROFILES_ENABLED, 1) == 1; mProfilesPref.setEnabled(enabled); mAirplanePref = (CheckBoxPreference) findPreference(KEY_AIRPLANE); mAirplanePref.setChecked((Settings.System.getInt(getContentResolver(), Settings.System.POWER_MENU_AIRPLANE_ENABLED, 1) == 1)); mUserPref = (CheckBoxPreference) findPreference(KEY_USER); if (!UserHandle.MU_ENABLED || !UserManager.supportsMultipleUsers()) { getPreferenceScreen().removePreference(mUserPref); } else { mUserPref.setChecked((Settings.System.getInt(getContentResolver(), Settings.System.POWER_MENU_USER_ENABLED, 0) == 1)); } mSoundPref = (CheckBoxPreference) findPreference(KEY_SOUND); mSoundPref.setChecked((Settings.System.getInt(getContentResolver(), Settings.System.POWER_MENU_SOUND_ENABLED, 1) == 1)); } public boolean onPreferenceChange(Preference preference, Object newValue) { if (preference == mExpandedDesktopPref) { int expandedDesktopValue = Integer.valueOf((String) newValue); Settings.System.putInt(getContentResolver(), Settings.System.EXPANDED_DESKTOP_STYLE, expandedDesktopValue); updateExpandedDesktopSummary(expandedDesktopValue); return true; } return false; } @Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { boolean value; if (preference == mScreenshotPref) { value = mScreenshotPref.isChecked(); Settings.System.putInt(getContentResolver(), Settings.System.POWER_MENU_SCREENSHOT_ENABLED, value ? 1 : 0); } else if (preference == mRebootPref) { value = mRebootPref.isChecked(); Settings.System.putInt(getContentResolver(), Settings.System.POWER_MENU_REBOOT_ENABLED, value ? 1 : 0); } else if (preference == mProfilesPref) { value = mProfilesPref.isChecked(); Settings.System.putInt(getContentResolver(), Settings.System.POWER_MENU_PROFILES_ENABLED, value ? 1 : 0); } else if (preference == mAirplanePref) { value = mAirplanePref.isChecked(); Settings.System.putInt(getContentResolver(), Settings.System.POWER_MENU_AIRPLANE_ENABLED, value ? 1 : 0); } else if (preference == mUserPref) { value = mUserPref.isChecked(); Settings.System.putInt(getContentResolver(), Settings.System.POWER_MENU_USER_ENABLED, value ? 1 : 0); } else if (preference == mSoundPref) { value = mSoundPref.isChecked(); Settings.System.putInt(getContentResolver(), Settings.System.POWER_MENU_SOUND_ENABLED, value ? 1 : 0); } else { return super.onPreferenceTreeClick(preferenceScreen, preference); } return true; } private void updateExpandedDesktopSummary(int value) { Resources res = getResources(); if (value == 0) { // Expanded desktop deactivated Settings.System.putInt(getContentResolver(), Settings.System.POWER_MENU_EXPANDED_DESKTOP_ENABLED, 0); mExpandedDesktopPref.setSummary(res.getString(R.string.expanded_desktop_disabled)); } else if (value == 1) { Settings.System.putInt(getContentResolver(), Settings.System.POWER_MENU_EXPANDED_DESKTOP_ENABLED, 1); mExpandedDesktopPref.setSummary(res.getString(R.string.expanded_desktop_status_bar)); } else if (value == 2) { Settings.System.putInt(getContentResolver(), Settings.System.POWER_MENU_EXPANDED_DESKTOP_ENABLED, 1); mExpandedDesktopPref.setSummary(res.getString(R.string.expanded_desktop_no_status_bar)); } } }