SettingsActivity.java revision 63211efa1565b5dc171938740ba183302d0e46f3
1/* 2 * Copyright (C) 2009 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 17package com.android.deskclock; 18 19import android.content.Intent; 20import android.media.AudioManager; 21import android.os.Bundle; 22import android.preference.CheckBoxPreference; 23import android.preference.ListPreference; 24import android.preference.Preference; 25import android.preference.PreferenceActivity; 26import android.preference.PreferenceScreen; 27import android.provider.Settings; 28import android.view.Menu; 29import android.view.MenuItem; 30 31/** 32 * Settings for the Alarm Clock. 33 */ 34public class SettingsActivity extends PreferenceActivity 35 implements Preference.OnPreferenceChangeListener { 36 37 private static final int ALARM_STREAM_TYPE_BIT = 38 1 << AudioManager.STREAM_ALARM; 39 40 static final String KEY_ALARM_IN_SILENT_MODE = 41 "alarm_in_silent_mode"; 42 static final String KEY_ALARM_SNOOZE = 43 "snooze_duration"; 44 static final String KEY_VOLUME_BEHAVIOR = 45 "volume_button_setting"; 46 static final String KEY_AUTO_SILENCE = 47 "auto_silence"; 48 static final String KEY_CLOCK_STYLE = 49 "clock_style"; 50 static final String KEY_HOME_TZ = 51 "home_time_zone"; 52 static final String KEY_AUTO_HOME_CLOCK = 53 "automatic_home_clock"; 54 static final String KEY_VOLUME_BUTTONS = 55 "volume_button_setting"; 56 @Override 57 protected void onCreate(Bundle savedInstanceState) { 58 super.onCreate(savedInstanceState); 59 addPreferencesFromResource(R.xml.settings); 60 61 /* final AlarmPreference ringtone = 62 (AlarmPreference) findPreference(KEY_DEFAULT_RINGTONE); 63 Uri alert = RingtoneManager.getActualDefaultRingtoneUri(this, 64 RingtoneManager.TYPE_ALARM); 65 if (alert != null) { 66 ringtone.setAlert(alert); 67 } 68 ringtone.setChangeDefault();*/ 69 } 70 71 @Override 72 protected void onResume() { 73 super.onResume(); 74 refresh(); 75 } 76 77 @Override 78 public boolean onOptionsItemSelected (MenuItem item) { 79 switch (item.getItemId()) { 80 case R.id.menu_item_help: 81 startActivity(new Intent(this, HelpActivity.class)); 82 return true; 83 default: 84 break; 85 } 86 return super.onOptionsItemSelected(item); 87 } 88 89 90 @Override 91 public boolean onCreateOptionsMenu (Menu menu) { 92 getMenuInflater().inflate(R.menu.settings_menu, menu); 93 return super.onCreateOptionsMenu(menu); 94 } 95 96 @Override 97 public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, 98 Preference preference) { 99 if (KEY_ALARM_IN_SILENT_MODE.equals(preference.getKey())) { 100 CheckBoxPreference pref = (CheckBoxPreference) preference; 101 int ringerModeStreamTypes = Settings.System.getInt( 102 getContentResolver(), 103 Settings.System.MODE_RINGER_STREAMS_AFFECTED, 0); 104 105 if (pref.isChecked()) { 106 ringerModeStreamTypes &= ~ALARM_STREAM_TYPE_BIT; 107 } else { 108 ringerModeStreamTypes |= ALARM_STREAM_TYPE_BIT; 109 } 110 111 Settings.System.putInt(getContentResolver(), 112 Settings.System.MODE_RINGER_STREAMS_AFFECTED, 113 ringerModeStreamTypes); 114 115 return true; 116 } 117 118 return super.onPreferenceTreeClick(preferenceScreen, preference); 119 } 120 121 @Override 122 public boolean onPreferenceChange(Preference pref, Object newValue) { 123 if (KEY_AUTO_SILENCE.equals(pref.getKey())) { 124 final ListPreference listPref = (ListPreference) pref; 125 String delay = (String) newValue; 126 updateAutoSnoozeSummary(listPref, delay); 127 } else if (KEY_CLOCK_STYLE.equals(pref.getKey())) { 128 final ListPreference listPref = (ListPreference) pref; 129 final int idx = listPref.findIndexOfValue((String) newValue); 130 listPref.setSummary(listPref.getEntries()[idx]); 131 } else if (KEY_HOME_TZ.equals(pref.getKey())) { 132 final ListPreference listPref = (ListPreference) pref; 133 final int idx = listPref.findIndexOfValue((String) newValue); 134 listPref.setSummary(listPref.getEntries()[idx]); 135 } else if (KEY_AUTO_HOME_CLOCK.equals(pref.getKey())) { 136 boolean state =((CheckBoxPreference) pref).isChecked(); 137 Preference homeTimeZone = findPreference(KEY_HOME_TZ); 138 homeTimeZone.setEnabled(!state); 139 } else if (KEY_VOLUME_BUTTONS.equals(pref.getKey())) { 140 final ListPreference listPref = (ListPreference) pref; 141 final int idx = listPref.findIndexOfValue((String) newValue); 142 listPref.setSummary(listPref.getEntries()[idx]); 143 } 144 return true; 145 } 146 147 private void updateAutoSnoozeSummary(ListPreference listPref, 148 String delay) { 149 int i = Integer.parseInt(delay); 150 if (i == -1) { 151 listPref.setSummary(R.string.auto_silence_never); 152 } else { 153 listPref.setSummary(getString(R.string.auto_silence_summary, i)); 154 } 155 } 156 157 private void refresh() { 158 ListPreference listPref = (ListPreference) findPreference(KEY_AUTO_SILENCE); 159 String delay = listPref.getValue(); 160 updateAutoSnoozeSummary(listPref, delay); 161 listPref.setOnPreferenceChangeListener(this); 162 163 listPref = (ListPreference) findPreference(KEY_CLOCK_STYLE); 164 listPref.setSummary(listPref.getEntry()); 165 listPref.setOnPreferenceChangeListener(this); 166 167 listPref = (ListPreference) findPreference(KEY_HOME_TZ); 168 listPref.setSummary(listPref.getEntry()); 169 listPref.setOnPreferenceChangeListener(this); 170 171 Preference pref = findPreference(KEY_AUTO_HOME_CLOCK); 172 boolean state =((CheckBoxPreference) pref).isChecked(); 173 pref.setOnPreferenceChangeListener(this); 174 175 listPref = (ListPreference)findPreference(KEY_HOME_TZ); 176 listPref.setEnabled(state); 177 listPref.setSummary(listPref.getEntry()); 178 179 listPref = (ListPreference) findPreference(KEY_VOLUME_BUTTONS); 180 listPref.setSummary(listPref.getEntry()); 181 listPref.setOnPreferenceChangeListener(this); 182 183 SnoozeLengthDialog snoozePref = (SnoozeLengthDialog) findPreference(KEY_ALARM_SNOOZE); 184 snoozePref.setSummary(); 185 } 186 187} 188