Home | History | Annotate | Download | only in quicksettings
      1 /*
      2  * Copyright (C) 2015 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License
     15  */
     16 
     17 package com.android.tv.quicksettings;
     18 
     19 import android.app.AlertDialog;
     20 import android.content.DialogInterface;
     21 import android.content.Intent;
     22 import android.content.SharedPreferences;
     23 import android.content.res.Resources;
     24 import android.os.Bundle;
     25 import android.support.v17.preference.LeanbackPreferenceFragment;
     26 import android.support.v7.preference.ListPreference;
     27 import android.support.v7.preference.Preference;
     28 
     29 import java.util.Arrays;
     30 import java.util.List;
     31 
     32 public class QuickSettingsPreferenceFragment extends LeanbackPreferenceFragment implements
     33         SharedPreferences.OnSharedPreferenceChangeListener, Preference.OnPreferenceClickListener {
     34 
     35     private ListPreference mPresetPref;
     36     private Preference mBacklightPref;
     37     private Preference mContrastPref;
     38     private Preference mBrightnessPref;
     39     private Preference mSharpnessPref;
     40     private Preference mColorPref;
     41     private Preference mTintPref;
     42 
     43     private PresetSettingsListener mPresetSettingsListener;
     44 
     45     @Override
     46     public void onCreate(Bundle savedInstanceState) {
     47         super.onCreate(savedInstanceState);
     48 
     49         mPresetSettingsListener = new PresetSettingsListener(getActivity());
     50     }
     51 
     52     @Override
     53     public void onCreatePreferences(Bundle savedInstanceState, String key) {
     54         setPreferencesFromResource(R.xml.quick_settings, key);
     55 
     56         mPresetPref = (ListPreference) findPreference("preset");
     57         mPresetPref.setOnPreferenceClickListener(this);
     58 
     59         mBacklightPref = findPreference("backlight");
     60         mBacklightPref.setOnPreferenceClickListener(this);
     61 
     62         mContrastPref = findPreference("contrast");
     63         mContrastPref.setOnPreferenceClickListener(this);
     64 
     65         mBrightnessPref = findPreference("brightness");
     66         mBrightnessPref.setOnPreferenceClickListener(this);
     67 
     68         mSharpnessPref = findPreference("sharpness");
     69         mSharpnessPref.setOnPreferenceClickListener(this);
     70 
     71         mColorPref = findPreference("color");
     72         mColorPref.setOnPreferenceClickListener(this);
     73 
     74         mTintPref = findPreference("tint");
     75         mTintPref.setOnPreferenceClickListener(this);
     76 
     77         final Preference resetPreference = findPreference("reset");
     78         resetPreference.setOnPreferenceClickListener(this);
     79     }
     80 
     81     @Override
     82     public void onResume() {
     83         super.onResume();
     84 
     85         final SharedPreferences sharedPreferences = getPreferenceManager().getSharedPreferences();
     86         sharedPreferences.registerOnSharedPreferenceChangeListener(this);
     87         sharedPreferences.registerOnSharedPreferenceChangeListener(mPresetSettingsListener);
     88 
     89         updateDescriptions(sharedPreferences);
     90     }
     91 
     92 
     93     @Override
     94     public void onPause() {
     95         super.onPause();
     96 
     97         final SharedPreferences sharedPreferences = getPreferenceManager().getSharedPreferences();
     98         sharedPreferences.unregisterOnSharedPreferenceChangeListener(this);
     99         sharedPreferences.unregisterOnSharedPreferenceChangeListener(mPresetSettingsListener);
    100     }
    101 
    102     private void updateDescriptions(SharedPreferences sharedPreferences) {
    103         final Resources res = getResources();
    104         mPresetPref.setSummary(mPresetPref.getEntry());
    105         mBacklightPref.setSummary(String.format("%d", sharedPreferences.getInt("backlight",
    106                 res.getInteger(R.integer.standard_setting_backlight))));
    107         mContrastPref.setSummary(String.format("%d", sharedPreferences.getInt("contrast",
    108                 res.getInteger(R.integer.standard_setting_contrast))));
    109         mBrightnessPref.setSummary(String.format("%d", sharedPreferences.getInt("brightness",
    110                 res.getInteger(R.integer.standard_setting_brightness))));
    111         mSharpnessPref.setSummary(String.format("%d", sharedPreferences.getInt("sharpness",
    112                 res.getInteger(R.integer.standard_setting_sharpness))));
    113         mColorPref.setSummary(String.format("%d", sharedPreferences.getInt("color",
    114                 res.getInteger(R.integer.standard_setting_color))));
    115         mTintPref.setSummary(String.format("%d", sharedPreferences.getInt("tint",
    116                 res.getInteger(R.integer.standard_setting_tint))));
    117     }
    118 
    119     @Override
    120     public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
    121         switch (key) {
    122             case "preset":
    123             case "backlight":
    124             case "contrast":
    125             case "brightness":
    126             case "sharpness":
    127             case "color":
    128             case "tint":
    129                 updateDescriptions(sharedPreferences);
    130         }
    131     }
    132 
    133     private void launchSettingsDialog(int initialPos) {
    134         final Intent intent = new Intent(getActivity(), SettingsDialog.class);
    135         intent.putExtra(SettingsDialog.EXTRA_START_POS, initialPos);
    136         startActivity(intent);
    137     }
    138 
    139     @Override
    140     public boolean onPreferenceClick(Preference preference) {
    141         final String key = preference.getKey();
    142         final List<String> keys =
    143                 Arrays.asList(getResources().getStringArray(R.array.setting_keys));
    144         final int pos = keys.indexOf(key);
    145         switch (key) {
    146             case "preset":
    147             case "backlight":
    148             case "contrast":
    149             case "brightness":
    150             case "sharpness":
    151             case "color":
    152             case "tint":
    153                 launchSettingsDialog(pos);
    154                 return true;
    155             case "reset":
    156                 new AlertDialog.Builder(getActivity()).setPositiveButton(
    157                         android.R.string.ok, new DialogInterface.OnClickListener() {
    158                             @Override
    159                             public void onClick(DialogInterface dialog, int id) {
    160                                 // User clicked OK button
    161                                 getPreferenceManager().getSharedPreferences().edit()
    162                                         .putString("preset", "standard")
    163                                         .commit();
    164                             }
    165                         }).setNegativeButton(android.R.string.cancel,
    166                         new DialogInterface.OnClickListener() {
    167                             @Override
    168                             public void onClick(DialogInterface dialog, int id) {
    169                                 // User cancelled the dialog - do nothing
    170                             }
    171                         }).setTitle(R.string.reset_dialog_message).create().show();
    172                 return true;
    173         }
    174         return false;
    175     }
    176 
    177     @Override
    178     public void onDisplayPreferenceDialog(Preference preference) {
    179         // Do nothing
    180     }
    181 }
    182