SettingsActivity.java revision e7bf7ed4c4d3680d838a1581832d22be89e37e46
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.SharedPreferences; 20import android.media.AudioManager; 21import android.media.RingtoneManager; 22import android.net.Uri; 23import android.os.Bundle; 24import android.preference.CheckBoxPreference; 25import android.preference.ListPreference; 26import android.preference.Preference; 27import android.preference.PreferenceActivity; 28import android.preference.PreferenceScreen; 29import android.preference.RingtonePreference; 30import android.provider.Settings; 31 32/** 33 * Settings for the Alarm Clock. 34 */ 35public class SettingsActivity extends PreferenceActivity 36 implements Preference.OnPreferenceChangeListener { 37 38 private static final int ALARM_STREAM_TYPE_BIT = 39 1 << AudioManager.STREAM_ALARM; 40 41 private static final String KEY_ALARM_IN_SILENT_MODE = 42 "alarm_in_silent_mode"; 43 static final String KEY_ALARM_SNOOZE = 44 "snooze_duration"; 45 static final String KEY_VOLUME_BEHAVIOR = 46 "volume_button_setting"; 47 static final String KEY_DEFAULT_RINGTONE = 48 "default_ringtone"; 49 50 @Override 51 protected void onCreate(Bundle savedInstanceState) { 52 super.onCreate(savedInstanceState); 53 addPreferencesFromResource(R.xml.settings); 54 55 final AlarmPreference ringtone = 56 (AlarmPreference) findPreference(KEY_DEFAULT_RINGTONE); 57 Uri alert = RingtoneManager.getActualDefaultRingtoneUri(this, 58 RingtoneManager.TYPE_ALARM); 59 if (alert != null) { 60 ringtone.setAlert(alert); 61 } 62 ringtone.setChangeDefault(); 63 } 64 65 @Override 66 protected void onResume() { 67 super.onResume(); 68 refresh(); 69 } 70 71 @Override 72 public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, 73 Preference preference) { 74 if (KEY_ALARM_IN_SILENT_MODE.equals(preference.getKey())) { 75 CheckBoxPreference pref = (CheckBoxPreference) preference; 76 int ringerModeStreamTypes = Settings.System.getInt( 77 getContentResolver(), 78 Settings.System.MODE_RINGER_STREAMS_AFFECTED, 0); 79 80 if (pref.isChecked()) { 81 ringerModeStreamTypes &= ~ALARM_STREAM_TYPE_BIT; 82 } else { 83 ringerModeStreamTypes |= ALARM_STREAM_TYPE_BIT; 84 } 85 86 Settings.System.putInt(getContentResolver(), 87 Settings.System.MODE_RINGER_STREAMS_AFFECTED, 88 ringerModeStreamTypes); 89 90 return true; 91 } 92 93 return super.onPreferenceTreeClick(preferenceScreen, preference); 94 } 95 96 public boolean onPreferenceChange(Preference pref, Object newValue) { 97 final ListPreference listPref = (ListPreference) pref; 98 final int idx = listPref.findIndexOfValue((String) newValue); 99 listPref.setSummary(listPref.getEntries()[idx]); 100 return true; 101 } 102 103 private void refresh() { 104 final CheckBoxPreference alarmInSilentModePref = 105 (CheckBoxPreference) findPreference(KEY_ALARM_IN_SILENT_MODE); 106 final int silentModeStreams = 107 Settings.System.getInt(getContentResolver(), 108 Settings.System.MODE_RINGER_STREAMS_AFFECTED, 0); 109 alarmInSilentModePref.setChecked( 110 (silentModeStreams & ALARM_STREAM_TYPE_BIT) == 0); 111 112 final ListPreference snooze = 113 (ListPreference) findPreference(KEY_ALARM_SNOOZE); 114 snooze.setSummary(snooze.getEntry()); 115 snooze.setOnPreferenceChangeListener(this); 116 } 117 118} 119