blob: 79a841bfb7a23d991e1271ffb79f22f96209e19f [file] [log] [blame]
Jean-Michel Trivied29a652009-06-05 18:37:29 -07001/*
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.settings;
18
19import static android.provider.Settings.Secure.TTS_USE_DEFAULTS;
20import static android.provider.Settings.Secure.TTS_DEFAULT_RATE;
21import static android.provider.Settings.Secure.TTS_DEFAULT_PITCH;
Jean-Michel Trivi80368622009-06-09 19:29:27 -070022import static android.provider.Settings.Secure.TTS_DEFAULT_LANG;
Jean-Michel Trivied29a652009-06-05 18:37:29 -070023
24import android.content.ContentResolver;
25import android.os.Bundle;
26import android.preference.ListPreference;
27import android.preference.Preference;
28import android.preference.PreferenceActivity;
29import android.preference.CheckBoxPreference;
30import android.provider.Settings;
31import android.util.Log;
32
33public class TextToSpeechSettings extends PreferenceActivity implements
34 Preference.OnPreferenceChangeListener {
35
36 private static final String TAG = "TextToSpeechSettings";
37
38 /** If there is no setting in the provider, use this. */
39 private static final int FALLBACK_TTS_DEFAULT_RATE = 100; // 1x
40 private static final int FALLBACK_TTS_DEFAULT_PITCH = 100;// 1x
41 private static final int FALLBACK_TTS_USE_DEFAULTS = 1;
Jean-Michel Trivi80368622009-06-09 19:29:27 -070042 private static final String FALLBACK_TTS_DEFAULT_LANG = "en-rUS";
Jean-Michel Trivied29a652009-06-05 18:37:29 -070043
44 private static final String KEY_TTS_USE_DEFAULT =
45 "toggle_use_default_tts_settings";
46 private static final String KEY_TTS_DEFAULT_RATE = "tts_default_rate";
47 private static final String KEY_TTS_DEFAULT_PITCH = "tts_default_pitch";
Jean-Michel Trivi80368622009-06-09 19:29:27 -070048 private static final String KEY_TTS_DEFAULT_LANG = "tts_default_lang";
Jean-Michel Trivied29a652009-06-05 18:37:29 -070049
50 private CheckBoxPreference mUseDefaultPref = null;
51 private ListPreference mDefaultRatePref = null;
52 private ListPreference mDefaultPitchPref = null;
Jean-Michel Trivi80368622009-06-09 19:29:27 -070053 private ListPreference mDefaultLangPref = null;
Jean-Michel Trivied29a652009-06-05 18:37:29 -070054
55
56 @Override
57 protected void onCreate(Bundle savedInstanceState) {
58 super.onCreate(savedInstanceState);
59
60 addPreferencesFromResource(R.xml.tts_settings);
61
62 initDefaultSettings();
63 }
64
65
66 private void initDefaultSettings() {
67 ContentResolver resolver = getContentResolver();
68
69 // "Use Defaults"
70 mUseDefaultPref =
71 (CheckBoxPreference) findPreference(KEY_TTS_USE_DEFAULT);
Jean-Michel Trivi80368622009-06-09 19:29:27 -070072 mUseDefaultPref.setChecked(Settings.Secure.getInt(resolver,
Jean-Michel Trivied29a652009-06-05 18:37:29 -070073 TTS_USE_DEFAULTS,
74 FALLBACK_TTS_USE_DEFAULTS) == 1 ? true : false);
75 mUseDefaultPref.setOnPreferenceChangeListener(this);
76
77 // Default rate
78 mDefaultRatePref =
79 (ListPreference) findPreference(KEY_TTS_DEFAULT_RATE);
Jean-Michel Trivi80368622009-06-09 19:29:27 -070080 mDefaultRatePref.setValue(String.valueOf(Settings.Secure.getInt(
Jean-Michel Trivied29a652009-06-05 18:37:29 -070081 resolver, TTS_DEFAULT_RATE, FALLBACK_TTS_DEFAULT_RATE)));
82 mDefaultRatePref.setOnPreferenceChangeListener(this);
83
84 // Default pitch
85 mDefaultPitchPref =
86 (ListPreference) findPreference(KEY_TTS_DEFAULT_PITCH);
Jean-Michel Trivi80368622009-06-09 19:29:27 -070087 mDefaultPitchPref.setValue(String.valueOf(Settings.Secure.getInt(
Jean-Michel Trivied29a652009-06-05 18:37:29 -070088 resolver, TTS_DEFAULT_PITCH, FALLBACK_TTS_DEFAULT_PITCH)));
89 mDefaultPitchPref.setOnPreferenceChangeListener(this);
90
Jean-Michel Trivi80368622009-06-09 19:29:27 -070091 // Default language
92 mDefaultLangPref =
93 (ListPreference) findPreference(KEY_TTS_DEFAULT_LANG);
94 String defaultLang = String.valueOf(Settings.Secure.getString(resolver,
95 TTS_DEFAULT_LANG));
96 if (defaultLang.compareTo("null") == 0) {
97 mDefaultLangPref.setValue(FALLBACK_TTS_DEFAULT_LANG);
98 Log.i(TAG, "TTS initDefaultSettings() default lang null ");
99 } else {
100 mDefaultLangPref.setValue(defaultLang);
101 Log.i(TAG, "TTS initDefaultSettings() default lang is "+defaultLang);
102 }
103 mDefaultLangPref.setOnPreferenceChangeListener(this);
Jean-Michel Trivied29a652009-06-05 18:37:29 -0700104 }
105
106
107 public boolean onPreferenceChange(Preference preference, Object objValue) {
108 if (KEY_TTS_USE_DEFAULT.equals(preference.getKey())) {
109 // "Use Defaults"
110 int value = (Boolean)objValue ? 1 : 0;
Jean-Michel Trivi80368622009-06-09 19:29:27 -0700111 Settings.Secure.putInt(getContentResolver(), TTS_USE_DEFAULTS,
Jean-Michel Trivied29a652009-06-05 18:37:29 -0700112 value);
113 Log.i(TAG, "TTS use default settings is "+objValue.toString());
114 } else if (KEY_TTS_DEFAULT_RATE.equals(preference.getKey())) {
115 // Default rate
116 int value = Integer.parseInt((String) objValue);
117 try {
Jean-Michel Trivi80368622009-06-09 19:29:27 -0700118 Settings.Secure.putInt(getContentResolver(),
Jean-Michel Trivied29a652009-06-05 18:37:29 -0700119 TTS_DEFAULT_RATE, value);
120 Log.i(TAG, "TTS default rate is "+value);
121 } catch (NumberFormatException e) {
122 Log.e(TAG, "could not persist default TTS rate setting", e);
123 }
124 } else if (KEY_TTS_DEFAULT_PITCH.equals(preference.getKey())) {
125 // Default pitch
126 int value = Integer.parseInt((String) objValue);
127 try {
Jean-Michel Trivi80368622009-06-09 19:29:27 -0700128 Settings.Secure.putInt(getContentResolver(),
Jean-Michel Trivied29a652009-06-05 18:37:29 -0700129 TTS_DEFAULT_PITCH, value);
130 Log.i(TAG, "TTS default pitch is "+value);
131 } catch (NumberFormatException e) {
132 Log.e(TAG, "could not persist default TTS pitch setting", e);
133 }
Jean-Michel Trivi80368622009-06-09 19:29:27 -0700134 }else if (KEY_TTS_DEFAULT_LANG.equals(preference.getKey())) {
135 // Default language
136 String value = (String) objValue;
137 Settings.Secure.putString(getContentResolver(),
138 TTS_DEFAULT_LANG, value);
139 Log.i(TAG, "TTS default lang is "+value);
Jean-Michel Trivied29a652009-06-05 18:37:29 -0700140 }
141
142 return true;
143 }
144
145}