SettingsActivity.java revision be8244565cd5e987eaf1bf8754a1750c95477b43
113e902189e05f09a890b9d6673a6f451c758542aJason Parekh/* 213e902189e05f09a890b9d6673a6f451c758542aJason Parekh * Copyright (C) 2009 The Android Open Source Project 313e902189e05f09a890b9d6673a6f451c758542aJason Parekh * 413e902189e05f09a890b9d6673a6f451c758542aJason Parekh * Licensed under the Apache License, Version 2.0 (the "License"); 513e902189e05f09a890b9d6673a6f451c758542aJason Parekh * you may not use this file except in compliance with the License. 613e902189e05f09a890b9d6673a6f451c758542aJason Parekh * You may obtain a copy of the License at 713e902189e05f09a890b9d6673a6f451c758542aJason Parekh * 813e902189e05f09a890b9d6673a6f451c758542aJason Parekh * http://www.apache.org/licenses/LICENSE-2.0 913e902189e05f09a890b9d6673a6f451c758542aJason Parekh * 1013e902189e05f09a890b9d6673a6f451c758542aJason Parekh * Unless required by applicable law or agreed to in writing, software 1113e902189e05f09a890b9d6673a6f451c758542aJason Parekh * distributed under the License is distributed on an "AS IS" BASIS, 1213e902189e05f09a890b9d6673a6f451c758542aJason Parekh * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1313e902189e05f09a890b9d6673a6f451c758542aJason Parekh * See the License for the specific language governing permissions and 1413e902189e05f09a890b9d6673a6f451c758542aJason Parekh * limitations under the License. 1513e902189e05f09a890b9d6673a6f451c758542aJason Parekh */ 1613e902189e05f09a890b9d6673a6f451c758542aJason Parekh 17fa954248b41b567dfa2ddd7bd063d3936a51758eDaniel Sandlerpackage com.android.deskclock; 1813e902189e05f09a890b9d6673a6f451c758542aJason Parekh 19be8244565cd5e987eaf1bf8754a1750c95477b43Itzhak Katzenelsonimport android.app.ActionBar; 2063211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelsonimport android.content.Intent; 2113e902189e05f09a890b9d6673a6f451c758542aJason Parekhimport android.media.AudioManager; 2213e902189e05f09a890b9d6673a6f451c758542aJason Parekhimport android.os.Bundle; 2313e902189e05f09a890b9d6673a6f451c758542aJason Parekhimport android.preference.CheckBoxPreference; 24abbdb5687b2f4505b16d3f8fad3efbab3ea1cf90Patrick Scottimport android.preference.ListPreference; 2513e902189e05f09a890b9d6673a6f451c758542aJason Parekhimport android.preference.Preference; 2613e902189e05f09a890b9d6673a6f451c758542aJason Parekhimport android.preference.PreferenceActivity; 2713e902189e05f09a890b9d6673a6f451c758542aJason Parekhimport android.preference.PreferenceScreen; 2813e902189e05f09a890b9d6673a6f451c758542aJason Parekhimport android.provider.Settings; 2963211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelsonimport android.view.Menu; 3063211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelsonimport android.view.MenuItem; 3113e902189e05f09a890b9d6673a6f451c758542aJason Parekh 3213e902189e05f09a890b9d6673a6f451c758542aJason Parekh/** 3313e902189e05f09a890b9d6673a6f451c758542aJason Parekh * Settings for the Alarm Clock. 3413e902189e05f09a890b9d6673a6f451c758542aJason Parekh */ 35abbdb5687b2f4505b16d3f8fad3efbab3ea1cf90Patrick Scottpublic class SettingsActivity extends PreferenceActivity 36abbdb5687b2f4505b16d3f8fad3efbab3ea1cf90Patrick Scott implements Preference.OnPreferenceChangeListener { 3713e902189e05f09a890b9d6673a6f451c758542aJason Parekh 3813e902189e05f09a890b9d6673a6f451c758542aJason Parekh private static final int ALARM_STREAM_TYPE_BIT = 3913e902189e05f09a890b9d6673a6f451c758542aJason Parekh 1 << AudioManager.STREAM_ALARM; 40abbdb5687b2f4505b16d3f8fad3efbab3ea1cf90Patrick Scott 4163211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson static final String KEY_ALARM_IN_SILENT_MODE = 4213e902189e05f09a890b9d6673a6f451c758542aJason Parekh "alarm_in_silent_mode"; 4389811e14c23c7fe6f88a21d13429613b756bce3fPatrick Scott static final String KEY_ALARM_SNOOZE = 44abbdb5687b2f4505b16d3f8fad3efbab3ea1cf90Patrick Scott "snooze_duration"; 4589811e14c23c7fe6f88a21d13429613b756bce3fPatrick Scott static final String KEY_VOLUME_BEHAVIOR = 4689811e14c23c7fe6f88a21d13429613b756bce3fPatrick Scott "volume_button_setting"; 4728dbcd13adec986d5d2c08b71edab35d84b40958Patrick Scott static final String KEY_AUTO_SILENCE = 4828dbcd13adec986d5d2c08b71edab35d84b40958Patrick Scott "auto_silence"; 4963211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson static final String KEY_CLOCK_STYLE = 5063211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson "clock_style"; 5163211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson static final String KEY_HOME_TZ = 5263211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson "home_time_zone"; 5363211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson static final String KEY_AUTO_HOME_CLOCK = 5463211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson "automatic_home_clock"; 5563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson static final String KEY_VOLUME_BUTTONS = 5663211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson "volume_button_setting"; 5713e902189e05f09a890b9d6673a6f451c758542aJason Parekh @Override 5813e902189e05f09a890b9d6673a6f451c758542aJason Parekh protected void onCreate(Bundle savedInstanceState) { 5913e902189e05f09a890b9d6673a6f451c758542aJason Parekh super.onCreate(savedInstanceState); 6013e902189e05f09a890b9d6673a6f451c758542aJason Parekh addPreferencesFromResource(R.xml.settings); 61e7bf7ed4c4d3680d838a1581832d22be89e37e46Patrick Scott 6263211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson /* final AlarmPreference ringtone = 63e7bf7ed4c4d3680d838a1581832d22be89e37e46Patrick Scott (AlarmPreference) findPreference(KEY_DEFAULT_RINGTONE); 64e7bf7ed4c4d3680d838a1581832d22be89e37e46Patrick Scott Uri alert = RingtoneManager.getActualDefaultRingtoneUri(this, 65e7bf7ed4c4d3680d838a1581832d22be89e37e46Patrick Scott RingtoneManager.TYPE_ALARM); 66e7bf7ed4c4d3680d838a1581832d22be89e37e46Patrick Scott if (alert != null) { 67e7bf7ed4c4d3680d838a1581832d22be89e37e46Patrick Scott ringtone.setAlert(alert); 68e7bf7ed4c4d3680d838a1581832d22be89e37e46Patrick Scott } 6963211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson ringtone.setChangeDefault();*/ 70be8244565cd5e987eaf1bf8754a1750c95477b43Itzhak Katzenelson ActionBar actionBar = getActionBar(); 71be8244565cd5e987eaf1bf8754a1750c95477b43Itzhak Katzenelson if (actionBar != null) { 72be8244565cd5e987eaf1bf8754a1750c95477b43Itzhak Katzenelson actionBar.setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP, ActionBar.DISPLAY_HOME_AS_UP); 73be8244565cd5e987eaf1bf8754a1750c95477b43Itzhak Katzenelson } 7413e902189e05f09a890b9d6673a6f451c758542aJason Parekh } 7513e902189e05f09a890b9d6673a6f451c758542aJason Parekh 7613e902189e05f09a890b9d6673a6f451c758542aJason Parekh @Override 7713e902189e05f09a890b9d6673a6f451c758542aJason Parekh protected void onResume() { 7813e902189e05f09a890b9d6673a6f451c758542aJason Parekh super.onResume(); 7913e902189e05f09a890b9d6673a6f451c758542aJason Parekh refresh(); 8013e902189e05f09a890b9d6673a6f451c758542aJason Parekh } 8113e902189e05f09a890b9d6673a6f451c758542aJason Parekh 8213e902189e05f09a890b9d6673a6f451c758542aJason Parekh @Override 8363211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson public boolean onOptionsItemSelected (MenuItem item) { 8463211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson switch (item.getItemId()) { 8563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson case R.id.menu_item_help: 8663211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson startActivity(new Intent(this, HelpActivity.class)); 8763211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson return true; 88be8244565cd5e987eaf1bf8754a1750c95477b43Itzhak Katzenelson case android.R.id.home: 89be8244565cd5e987eaf1bf8754a1750c95477b43Itzhak Katzenelson finish(); 90be8244565cd5e987eaf1bf8754a1750c95477b43Itzhak Katzenelson return true; 9163211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson default: 9263211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson break; 9363211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson } 9463211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson return super.onOptionsItemSelected(item); 9563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson } 9663211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 9763211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 9863211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson @Override 9963211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson public boolean onCreateOptionsMenu (Menu menu) { 10063211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson getMenuInflater().inflate(R.menu.settings_menu, menu); 1016fc34de781d8fece646b16dc289bbf4c0b01fde4Isaac Katzenelson MenuItem help = menu.findItem(R.id.menu_item_help); 1026fc34de781d8fece646b16dc289bbf4c0b01fde4Isaac Katzenelson if (help != null) { 1036fc34de781d8fece646b16dc289bbf4c0b01fde4Isaac Katzenelson Utils.prepareHelpMenuItem(this, help); 1046fc34de781d8fece646b16dc289bbf4c0b01fde4Isaac Katzenelson } 10563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson return super.onCreateOptionsMenu(menu); 10663211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson } 10763211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 10863211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson @Override 10913e902189e05f09a890b9d6673a6f451c758542aJason Parekh public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, 11013e902189e05f09a890b9d6673a6f451c758542aJason Parekh Preference preference) { 11189811e14c23c7fe6f88a21d13429613b756bce3fPatrick Scott if (KEY_ALARM_IN_SILENT_MODE.equals(preference.getKey())) { 11289811e14c23c7fe6f88a21d13429613b756bce3fPatrick Scott CheckBoxPreference pref = (CheckBoxPreference) preference; 11313e902189e05f09a890b9d6673a6f451c758542aJason Parekh int ringerModeStreamTypes = Settings.System.getInt( 11413e902189e05f09a890b9d6673a6f451c758542aJason Parekh getContentResolver(), 11513e902189e05f09a890b9d6673a6f451c758542aJason Parekh Settings.System.MODE_RINGER_STREAMS_AFFECTED, 0); 116abbdb5687b2f4505b16d3f8fad3efbab3ea1cf90Patrick Scott 11789811e14c23c7fe6f88a21d13429613b756bce3fPatrick Scott if (pref.isChecked()) { 11813e902189e05f09a890b9d6673a6f451c758542aJason Parekh ringerModeStreamTypes &= ~ALARM_STREAM_TYPE_BIT; 11913e902189e05f09a890b9d6673a6f451c758542aJason Parekh } else { 12013e902189e05f09a890b9d6673a6f451c758542aJason Parekh ringerModeStreamTypes |= ALARM_STREAM_TYPE_BIT; 12113e902189e05f09a890b9d6673a6f451c758542aJason Parekh } 122abbdb5687b2f4505b16d3f8fad3efbab3ea1cf90Patrick Scott 12313e902189e05f09a890b9d6673a6f451c758542aJason Parekh Settings.System.putInt(getContentResolver(), 12413e902189e05f09a890b9d6673a6f451c758542aJason Parekh Settings.System.MODE_RINGER_STREAMS_AFFECTED, 12513e902189e05f09a890b9d6673a6f451c758542aJason Parekh ringerModeStreamTypes); 126abbdb5687b2f4505b16d3f8fad3efbab3ea1cf90Patrick Scott 12713e902189e05f09a890b9d6673a6f451c758542aJason Parekh return true; 12813e902189e05f09a890b9d6673a6f451c758542aJason Parekh } 129abbdb5687b2f4505b16d3f8fad3efbab3ea1cf90Patrick Scott 13013e902189e05f09a890b9d6673a6f451c758542aJason Parekh return super.onPreferenceTreeClick(preferenceScreen, preference); 13113e902189e05f09a890b9d6673a6f451c758542aJason Parekh } 13213e902189e05f09a890b9d6673a6f451c758542aJason Parekh 13363211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson @Override 134abbdb5687b2f4505b16d3f8fad3efbab3ea1cf90Patrick Scott public boolean onPreferenceChange(Preference pref, Object newValue) { 13563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson if (KEY_AUTO_SILENCE.equals(pref.getKey())) { 13663211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson final ListPreference listPref = (ListPreference) pref; 13763211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson String delay = (String) newValue; 13863211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson updateAutoSnoozeSummary(listPref, delay); 13963211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson } else if (KEY_CLOCK_STYLE.equals(pref.getKey())) { 14028dbcd13adec986d5d2c08b71edab35d84b40958Patrick Scott final ListPreference listPref = (ListPreference) pref; 14128dbcd13adec986d5d2c08b71edab35d84b40958Patrick Scott final int idx = listPref.findIndexOfValue((String) newValue); 14228dbcd13adec986d5d2c08b71edab35d84b40958Patrick Scott listPref.setSummary(listPref.getEntries()[idx]); 14363211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson } else if (KEY_HOME_TZ.equals(pref.getKey())) { 14428dbcd13adec986d5d2c08b71edab35d84b40958Patrick Scott final ListPreference listPref = (ListPreference) pref; 14563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson final int idx = listPref.findIndexOfValue((String) newValue); 14663211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson listPref.setSummary(listPref.getEntries()[idx]); 14763211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson } else if (KEY_AUTO_HOME_CLOCK.equals(pref.getKey())) { 14863211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson boolean state =((CheckBoxPreference) pref).isChecked(); 14963211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson Preference homeTimeZone = findPreference(KEY_HOME_TZ); 15063211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson homeTimeZone.setEnabled(!state); 15163211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson } else if (KEY_VOLUME_BUTTONS.equals(pref.getKey())) { 15263211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson final ListPreference listPref = (ListPreference) pref; 15363211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson final int idx = listPref.findIndexOfValue((String) newValue); 15463211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson listPref.setSummary(listPref.getEntries()[idx]); 15528dbcd13adec986d5d2c08b71edab35d84b40958Patrick Scott } 156abbdb5687b2f4505b16d3f8fad3efbab3ea1cf90Patrick Scott return true; 157abbdb5687b2f4505b16d3f8fad3efbab3ea1cf90Patrick Scott } 158abbdb5687b2f4505b16d3f8fad3efbab3ea1cf90Patrick Scott 15928dbcd13adec986d5d2c08b71edab35d84b40958Patrick Scott private void updateAutoSnoozeSummary(ListPreference listPref, 16028dbcd13adec986d5d2c08b71edab35d84b40958Patrick Scott String delay) { 16128dbcd13adec986d5d2c08b71edab35d84b40958Patrick Scott int i = Integer.parseInt(delay); 16228dbcd13adec986d5d2c08b71edab35d84b40958Patrick Scott if (i == -1) { 16328dbcd13adec986d5d2c08b71edab35d84b40958Patrick Scott listPref.setSummary(R.string.auto_silence_never); 16428dbcd13adec986d5d2c08b71edab35d84b40958Patrick Scott } else { 16528dbcd13adec986d5d2c08b71edab35d84b40958Patrick Scott listPref.setSummary(getString(R.string.auto_silence_summary, i)); 16628dbcd13adec986d5d2c08b71edab35d84b40958Patrick Scott } 16728dbcd13adec986d5d2c08b71edab35d84b40958Patrick Scott } 16828dbcd13adec986d5d2c08b71edab35d84b40958Patrick Scott 16913e902189e05f09a890b9d6673a6f451c758542aJason Parekh private void refresh() { 17063211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson ListPreference listPref = (ListPreference) findPreference(KEY_AUTO_SILENCE); 17163211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson String delay = listPref.getValue(); 17263211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson updateAutoSnoozeSummary(listPref, delay); 17363211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson listPref.setOnPreferenceChangeListener(this); 17463211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 17563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson listPref = (ListPreference) findPreference(KEY_CLOCK_STYLE); 17628dbcd13adec986d5d2c08b71edab35d84b40958Patrick Scott listPref.setSummary(listPref.getEntry()); 17728dbcd13adec986d5d2c08b71edab35d84b40958Patrick Scott listPref.setOnPreferenceChangeListener(this); 178abbdb5687b2f4505b16d3f8fad3efbab3ea1cf90Patrick Scott 17963211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson listPref = (ListPreference) findPreference(KEY_HOME_TZ); 18063211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson listPref.setSummary(listPref.getEntry()); 18128dbcd13adec986d5d2c08b71edab35d84b40958Patrick Scott listPref.setOnPreferenceChangeListener(this); 18263211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 18363211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson Preference pref = findPreference(KEY_AUTO_HOME_CLOCK); 18463211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson boolean state =((CheckBoxPreference) pref).isChecked(); 18563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson pref.setOnPreferenceChangeListener(this); 18663211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 18763211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson listPref = (ListPreference)findPreference(KEY_HOME_TZ); 18863211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson listPref.setEnabled(state); 18963211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson listPref.setSummary(listPref.getEntry()); 19063211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 19163211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson listPref = (ListPreference) findPreference(KEY_VOLUME_BUTTONS); 19263211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson listPref.setSummary(listPref.getEntry()); 19363211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson listPref.setOnPreferenceChangeListener(this); 19463211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 19563211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson SnoozeLengthDialog snoozePref = (SnoozeLengthDialog) findPreference(KEY_ALARM_SNOOZE); 19663211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson snoozePref.setSummary(); 19728dbcd13adec986d5d2c08b71edab35d84b40958Patrick Scott } 19863211efa1565b5dc171938740ba183302d0e46f3Isaac Katzenelson 19913e902189e05f09a890b9d6673a6f451c758542aJason Parekh} 200