diff options
-rw-r--r-- | res/values/cm_strings.xml | 5 | ||||
-rw-r--r-- | res/xml/general_settings.xml | 13 | ||||
-rw-r--r-- | src/com/android/dialer/settings/GeneralSettingsFragment.java | 55 |
3 files changed, 73 insertions, 0 deletions
diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml index 71011f3e0..ab512e74e 100644 --- a/res/values/cm_strings.xml +++ b/res/values/cm_strings.xml @@ -37,6 +37,11 @@ <string name="cyngn_reverse_lookup_provider_name">Cyngn Chinese (CN)</string> <string name="cyngn_reverse_lookup_provider_value" translatable="false">CyngnChinese</string> + <!-- dialpad t9 search --> + <string name="preference_category_t9_dialpad_search">Dialpad T9 search</string> + <string name="t9_search_input_locale">T9 search input</string> + <string name="t9_search_input_locale_default">Default</string> + <!-- Description for incoming calls that were blacklisted --> <string name="type_blacklist">Blacklisted call</string> <string name="call_log_stats_title">Statistics</string> diff --git a/res/xml/general_settings.xml b/res/xml/general_settings.xml index acf29e836..9acde2338 100644 --- a/res/xml/general_settings.xml +++ b/res/xml/general_settings.xml @@ -81,6 +81,19 @@ </PreferenceCategory> <PreferenceCategory + android:key="button_dialpad_t9_search_category_key" + android:title="@string/preference_category_t9_dialpad_search" + android:persistent="false"> + + <ListPreference + android:key="button_t9_search_input" + android:title="@string/t9_search_input_locale" + android:summary="%s" + android:defaultValue="" + android:persistent="false" /> + </PreferenceCategory> + + <PreferenceCategory android:key="dialer_general_other_settings_category_key" android:title="@string/other_settings_title" android:persistent="false" > diff --git a/src/com/android/dialer/settings/GeneralSettingsFragment.java b/src/com/android/dialer/settings/GeneralSettingsFragment.java index a5763a85f..46aa2007b 100644 --- a/src/com/android/dialer/settings/GeneralSettingsFragment.java +++ b/src/com/android/dialer/settings/GeneralSettingsFragment.java @@ -23,12 +23,14 @@ import android.os.Handler; import android.os.Message; import android.os.Vibrator; import android.preference.CheckBoxPreference; +import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceCategory; import android.preference.PreferenceFragment; import android.preference.PreferenceScreen; import android.provider.Settings; +import android.text.TextUtils; import com.android.dialer.R; import com.android.phone.common.util.SettingsUtil; @@ -39,6 +41,7 @@ import java.lang.Override; import java.lang.Runnable; import java.lang.String; import java.lang.Thread; +import java.util.Locale; public class GeneralSettingsFragment extends PreferenceFragment implements Preference.OnPreferenceChangeListener { @@ -50,6 +53,7 @@ public class GeneralSettingsFragment extends PreferenceFragment private static final String BUTTON_PLAY_DTMF_TONE = "button_play_dtmf_tone"; private static final String BUTTON_RESPOND_VIA_SMS_KEY = "button_respond_via_sms_key"; private static final String BUTTON_SPEED_DIAL_KEY = "speed_dial_settings"; + private static final String BUTTON_T9_SEARCH_INPUT_LOCALE = "button_t9_search_input"; private static final int MSG_UPDATE_RINGTONE_SUMMARY = 1; @@ -60,6 +64,13 @@ public class GeneralSettingsFragment extends PreferenceFragment private CheckBoxPreference mPlayDtmfTone; private Preference mRespondViaSms; private Preference mSpeedDialSettings; + private ListPreference mT9SearchInputLocale; + + // t9 search input locales that we have a custom overlay for + private static final Locale[] T9_SEARCH_INPUT_LOCALES = new Locale[] { + new Locale("ko"), new Locale("el"), new Locale("ru"), + new Locale("he"), new Locale("zh") + }; private Runnable mRingtoneLookupRunnable; private final Handler mRingtoneLookupComplete = new Handler() { @@ -86,6 +97,7 @@ public class GeneralSettingsFragment extends PreferenceFragment mPlayDtmfTone = (CheckBoxPreference) findPreference(BUTTON_PLAY_DTMF_TONE); mRespondViaSms = findPreference(BUTTON_RESPOND_VIA_SMS_KEY); mSpeedDialSettings = findPreference(BUTTON_SPEED_DIAL_KEY); + mT9SearchInputLocale = (ListPreference) findPreference(BUTTON_T9_SEARCH_INPUT_LOCALE); PreferenceCategory soundCategory = (PreferenceCategory) findPreference(CATEGORY_SOUNDS_KEY); Vibrator vibrator = (Vibrator) mContext.getSystemService(Context.VIBRATOR_SERVICE); @@ -109,6 +121,11 @@ public class GeneralSettingsFragment extends PreferenceFragment Settings.System.DTMF_TONE_WHEN_DIALING, 1) != 0); } + if (mT9SearchInputLocale != null) { + initT9SearchInputPreferenceList(); + mT9SearchInputLocale.setOnPreferenceChangeListener(this); + } + mRingtoneLookupRunnable = new Runnable() { @Override public void run() { @@ -136,6 +153,8 @@ public class GeneralSettingsFragment extends PreferenceFragment boolean doVibrate = (Boolean) objValue; Settings.System.putInt(mContext.getContentResolver(), Settings.System.VIBRATE_WHEN_RINGING, doVibrate ? 1 : 0); + } else if (preference == mT9SearchInputLocale) { + saveT9SearchInputLocale(preference, (String) objValue); } return true; } @@ -166,4 +185,40 @@ public class GeneralSettingsFragment extends PreferenceFragment // Lookup the ringtone name asynchronously. new Thread(mRingtoneLookupRunnable).start(); } + + private void saveT9SearchInputLocale(Preference preference, String newT9Locale) { + String lastT9Locale = Settings.System.getString(mContext.getContentResolver(), + Settings.System.T9_SEARCH_INPUT_LOCALE); + + if (!TextUtils.equals(lastT9Locale, newT9Locale)) { + Settings.System.putString(mContext.getContentResolver(), + Settings.System.T9_SEARCH_INPUT_LOCALE, newT9Locale); + } + } + + private void initT9SearchInputPreferenceList() { + int len = T9_SEARCH_INPUT_LOCALES.length + 1; + String[] entries = new String[len]; + String[] values = new String[len]; + + entries[0] = getString(R.string.t9_search_input_locale_default); + values[0] = ""; + + // add locales programatically so we can use locale.getDisplayName + for (int i = 0; i < T9_SEARCH_INPUT_LOCALES.length; i++) { + Locale locale = T9_SEARCH_INPUT_LOCALES[i]; + entries[i + 1] = locale.getDisplayName(); + values[i + 1] = locale.toString(); + } + + // Set current entry from global system setting + String settingsT9Locale = Settings.System.getString(mContext.getContentResolver(), + Settings.System.T9_SEARCH_INPUT_LOCALE); + if (settingsT9Locale != null) { + mT9SearchInputLocale.setValue(settingsT9Locale); + } + + mT9SearchInputLocale.setEntries(entries); + mT9SearchInputLocale.setEntryValues(values); + } } |