120b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler/* 220b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler * Copyright (C) 2015 The Android Open Source Project 320b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler * 420b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler * Licensed under the Apache License, Version 2.0 (the "License"); 520b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler * you may not use this file except in compliance with the License. 620b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler * You may obtain a copy of the License at 720b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler * 820b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler * http://www.apache.org/licenses/LICENSE-2.0 920b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler * 1020b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler * Unless required by applicable law or agreed to in writing, software 1120b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler * distributed under the License is distributed on an "AS IS" BASIS, 1220b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1320b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler * See the License for the specific language governing permissions and 1420b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler * limitations under the License 1520b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler */ 1620b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler 1720b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantlerpackage com.android.tv.quicksettings; 1820b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler 1920b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantlerimport android.app.AlertDialog; 2020b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantlerimport android.content.DialogInterface; 2120b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantlerimport android.content.Intent; 2220b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantlerimport android.content.SharedPreferences; 2320b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantlerimport android.content.res.Resources; 2420b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantlerimport android.os.Bundle; 2514c0f6421be479a1c95b3d3482f3f47f39247170Tony Mantlerimport android.support.v17.preference.LeanbackPreferenceFragment; 2614c0f6421be479a1c95b3d3482f3f47f39247170Tony Mantlerimport android.support.v7.preference.ListPreference; 2714c0f6421be479a1c95b3d3482f3f47f39247170Tony Mantlerimport android.support.v7.preference.Preference; 2820b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler 2920b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantlerimport java.util.Arrays; 3020b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantlerimport java.util.List; 3120b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler 3214c0f6421be479a1c95b3d3482f3f47f39247170Tony Mantlerpublic class QuickSettingsPreferenceFragment extends LeanbackPreferenceFragment implements 3320b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler SharedPreferences.OnSharedPreferenceChangeListener, Preference.OnPreferenceClickListener { 3420b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler 3520b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler private ListPreference mPresetPref; 3620b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler private Preference mBacklightPref; 3720b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler private Preference mContrastPref; 3820b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler private Preference mBrightnessPref; 3920b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler private Preference mSharpnessPref; 4020b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler private Preference mColorPref; 4120b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler private Preference mTintPref; 4220b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler 4320b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler private PresetSettingsListener mPresetSettingsListener; 4420b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler 4520b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler @Override 4620b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler public void onCreate(Bundle savedInstanceState) { 4720b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler super.onCreate(savedInstanceState); 4820b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler 4920b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler mPresetSettingsListener = new PresetSettingsListener(getActivity()); 5014c0f6421be479a1c95b3d3482f3f47f39247170Tony Mantler } 5120b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler 5214c0f6421be479a1c95b3d3482f3f47f39247170Tony Mantler @Override 5314c0f6421be479a1c95b3d3482f3f47f39247170Tony Mantler public void onCreatePreferences(Bundle savedInstanceState, String key) { 5414c0f6421be479a1c95b3d3482f3f47f39247170Tony Mantler setPreferencesFromResource(R.xml.quick_settings, key); 5520b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler 5620b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler mPresetPref = (ListPreference) findPreference("preset"); 5720b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler mPresetPref.setOnPreferenceClickListener(this); 5820b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler 5920b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler mBacklightPref = findPreference("backlight"); 6020b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler mBacklightPref.setOnPreferenceClickListener(this); 6120b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler 6220b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler mContrastPref = findPreference("contrast"); 6320b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler mContrastPref.setOnPreferenceClickListener(this); 6420b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler 6520b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler mBrightnessPref = findPreference("brightness"); 6620b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler mBrightnessPref.setOnPreferenceClickListener(this); 6720b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler 6820b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler mSharpnessPref = findPreference("sharpness"); 6920b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler mSharpnessPref.setOnPreferenceClickListener(this); 7020b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler 7120b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler mColorPref = findPreference("color"); 7220b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler mColorPref.setOnPreferenceClickListener(this); 7320b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler 7420b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler mTintPref = findPreference("tint"); 7520b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler mTintPref.setOnPreferenceClickListener(this); 7620b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler 7720b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler final Preference resetPreference = findPreference("reset"); 7820b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler resetPreference.setOnPreferenceClickListener(this); 7920b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler } 8020b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler 8120b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler @Override 8220b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler public void onResume() { 8320b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler super.onResume(); 8420b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler 8520b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler final SharedPreferences sharedPreferences = getPreferenceManager().getSharedPreferences(); 8620b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler sharedPreferences.registerOnSharedPreferenceChangeListener(this); 8720b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler sharedPreferences.registerOnSharedPreferenceChangeListener(mPresetSettingsListener); 8820b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler 8920b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler updateDescriptions(sharedPreferences); 9020b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler } 9120b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler 9220b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler 9320b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler @Override 9420b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler public void onPause() { 9520b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler super.onPause(); 9620b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler 9720b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler final SharedPreferences sharedPreferences = getPreferenceManager().getSharedPreferences(); 9820b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler sharedPreferences.unregisterOnSharedPreferenceChangeListener(this); 9920b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler sharedPreferences.unregisterOnSharedPreferenceChangeListener(mPresetSettingsListener); 10020b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler } 10120b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler 10220b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler private void updateDescriptions(SharedPreferences sharedPreferences) { 10320b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler final Resources res = getResources(); 10420b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler mPresetPref.setSummary(mPresetPref.getEntry()); 10520b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler mBacklightPref.setSummary(String.format("%d", sharedPreferences.getInt("backlight", 10620b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler res.getInteger(R.integer.standard_setting_backlight)))); 10720b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler mContrastPref.setSummary(String.format("%d", sharedPreferences.getInt("contrast", 10820b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler res.getInteger(R.integer.standard_setting_contrast)))); 10920b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler mBrightnessPref.setSummary(String.format("%d", sharedPreferences.getInt("brightness", 11020b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler res.getInteger(R.integer.standard_setting_brightness)))); 11120b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler mSharpnessPref.setSummary(String.format("%d", sharedPreferences.getInt("sharpness", 11220b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler res.getInteger(R.integer.standard_setting_sharpness)))); 11320b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler mColorPref.setSummary(String.format("%d", sharedPreferences.getInt("color", 11420b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler res.getInteger(R.integer.standard_setting_color)))); 11520b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler mTintPref.setSummary(String.format("%d", sharedPreferences.getInt("tint", 11620b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler res.getInteger(R.integer.standard_setting_tint)))); 11720b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler } 11820b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler 11920b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler @Override 12020b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { 12120b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler switch (key) { 12220b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler case "preset": 12320b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler case "backlight": 12420b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler case "contrast": 12520b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler case "brightness": 12620b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler case "sharpness": 12720b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler case "color": 12820b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler case "tint": 12920b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler updateDescriptions(sharedPreferences); 13020b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler } 13120b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler } 13220b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler 13320b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler private void launchSettingsDialog(int initialPos) { 13420b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler final Intent intent = new Intent(getActivity(), SettingsDialog.class); 13520b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler intent.putExtra(SettingsDialog.EXTRA_START_POS, initialPos); 13620b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler startActivity(intent); 13720b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler } 13820b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler 13920b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler @Override 14020b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler public boolean onPreferenceClick(Preference preference) { 14120b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler final String key = preference.getKey(); 14220b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler final List<String> keys = 14320b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler Arrays.asList(getResources().getStringArray(R.array.setting_keys)); 14420b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler final int pos = keys.indexOf(key); 14520b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler switch (key) { 14620b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler case "preset": 14720b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler case "backlight": 14820b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler case "contrast": 14920b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler case "brightness": 15020b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler case "sharpness": 15120b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler case "color": 15220b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler case "tint": 15320b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler launchSettingsDialog(pos); 15420b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler return true; 15520b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler case "reset": 15620b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler new AlertDialog.Builder(getActivity()).setPositiveButton( 15720b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler android.R.string.ok, new DialogInterface.OnClickListener() { 15820b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler @Override 15920b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler public void onClick(DialogInterface dialog, int id) { 16020b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler // User clicked OK button 16120b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler getPreferenceManager().getSharedPreferences().edit() 16220b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler .putString("preset", "standard") 16320b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler .commit(); 16420b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler } 16520b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler }).setNegativeButton(android.R.string.cancel, 16620b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler new DialogInterface.OnClickListener() { 16720b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler @Override 16820b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler public void onClick(DialogInterface dialog, int id) { 16920b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler // User cancelled the dialog - do nothing 17020b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler } 17120b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler }).setTitle(R.string.reset_dialog_message).create().show(); 17220b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler return true; 17320b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler } 17420b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler return false; 17520b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler } 17614c0f6421be479a1c95b3d3482f3f47f39247170Tony Mantler 17714c0f6421be479a1c95b3d3482f3f47f39247170Tony Mantler @Override 17814c0f6421be479a1c95b3d3482f3f47f39247170Tony Mantler public void onDisplayPreferenceDialog(Preference preference) { 17914c0f6421be479a1c95b3d3482f3f47f39247170Tony Mantler // Do nothing 18014c0f6421be479a1c95b3d3482f3f47f39247170Tony Mantler } 18120b1a50b536c8c68ceda1ce529d62e52e39f653dTony Mantler} 182