diff options
Diffstat (limited to 'src/com/android/settings/tts')
-rw-r--r-- | src/com/android/settings/tts/TextToSpeechSettings.java | 33 | ||||
-rw-r--r-- | src/com/android/settings/tts/TtsEnginePreference.java | 66 |
2 files changed, 60 insertions, 39 deletions
diff --git a/src/com/android/settings/tts/TextToSpeechSettings.java b/src/com/android/settings/tts/TextToSpeechSettings.java index 847c708..ab2ecc7 100644 --- a/src/com/android/settings/tts/TextToSpeechSettings.java +++ b/src/com/android/settings/tts/TextToSpeechSettings.java @@ -26,7 +26,6 @@ import com.android.settings.tts.TtsEnginePreference.RadioButtonGroupState; import android.app.AlertDialog; import android.content.ActivityNotFoundException; import android.content.ContentResolver; -import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.preference.ListPreference; @@ -358,27 +357,6 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements mDefaultRatePref.setEnabled(enable); } - private void displayDataAlert(final String key) { - Log.i(TAG, "Displaying data alert for :" + key); - AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); - builder.setTitle(android.R.string.dialog_alert_title); - builder.setIconAttribute(android.R.attr.alertDialogIcon); - builder.setMessage(getActivity().getString( - R.string.tts_engine_security_warning, mEnginesHelper.getEngineInfo(key).label)); - builder.setCancelable(true); - builder.setPositiveButton(android.R.string.ok, - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - updateDefaultEngine(key); - } - }); - builder.setNegativeButton(android.R.string.cancel, null); - - AlertDialog dialog = builder.create(); - dialog.show(); - } - private void displayNetworkAlert() { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle(android.R.string.dialog_alert_title); @@ -496,11 +474,6 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements updateWidgetState(true); } - private boolean shouldDisplayDataAlert(String engine) { - final EngineInfo info = mEnginesHelper.getEngineInfo(engine); - return !info.system; - } - @Override public Checkable getCurrentChecked() { return mCurrentChecked; @@ -519,11 +492,7 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements @Override public void setCurrentKey(String key) { mCurrentEngine = key; - if (shouldDisplayDataAlert(mCurrentEngine)) { - displayDataAlert(mCurrentEngine); - } else { - updateDefaultEngine(mCurrentEngine); - } + updateDefaultEngine(mCurrentEngine); } } diff --git a/src/com/android/settings/tts/TtsEnginePreference.java b/src/com/android/settings/tts/TtsEnginePreference.java index 3d612f0..80c4ac7 100644 --- a/src/com/android/settings/tts/TtsEnginePreference.java +++ b/src/com/android/settings/tts/TtsEnginePreference.java @@ -16,12 +16,15 @@ package com.android.settings.tts; +import android.app.AlertDialog; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceActivity; import android.speech.tts.TextToSpeech.EngineInfo; +import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.Checkable; @@ -34,6 +37,8 @@ import com.android.settings.R; public class TtsEnginePreference extends Preference { + private static final String TAG = "TtsEnginePreference"; + /** * Key for the name of the TTS engine passed in to the engine * settings fragment {@link TtsEngineSettingsFragment}. @@ -173,22 +178,69 @@ public class TtsEnginePreference extends Preference { } } - private void onRadioButtonClicked(CompoundButton buttonView, boolean isChecked) { + private boolean shouldDisplayDataAlert() { + return !mEngineInfo.system; + } + + + private void displayDataAlert( + DialogInterface.OnClickListener positiveOnClickListener, + DialogInterface.OnClickListener negativeOnClickListener) { + Log.i(TAG, "Displaying data alert for :" + mEngineInfo.name); + + AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); + builder.setTitle(android.R.string.dialog_alert_title); + builder.setIconAttribute(android.R.attr.alertDialogIcon); + builder.setMessage(getContext().getString( + R.string.tts_engine_security_warning, mEngineInfo.label)); + builder.setCancelable(true); + builder.setPositiveButton(android.R.string.ok, positiveOnClickListener); + builder.setNegativeButton(android.R.string.cancel, negativeOnClickListener); + + AlertDialog dialog = builder.create(); + dialog.show(); + } + + + private void onRadioButtonClicked(final CompoundButton buttonView, + boolean isChecked) { if (mPreventRadioButtonCallbacks || (mSharedState.getCurrentChecked() == buttonView)) { return; } if (isChecked) { - if (mSharedState.getCurrentChecked() != null) { - mSharedState.getCurrentChecked().setChecked(false); + // Should we alert user? if that's true, delay making engine current one. + if (shouldDisplayDataAlert()) { + displayDataAlert(new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + makeCurrentEngine(buttonView); + } + },new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + // Undo the click. + buttonView.setChecked(false); + } + }); + } else { + // Privileged engine, set it current + makeCurrentEngine(buttonView); } - mSharedState.setCurrentChecked(buttonView); - mSharedState.setCurrentKey(getKey()); - callChangeListener(mSharedState.getCurrentKey()); + } else { + mSettingsIcon.setEnabled(false); } + } - mSettingsIcon.setEnabled(isChecked); + private void makeCurrentEngine(Checkable current) { + if (mSharedState.getCurrentChecked() != null) { + mSharedState.getCurrentChecked().setChecked(false); + } + mSharedState.setCurrentChecked(current); + mSharedState.setCurrentKey(getKey()); + callChangeListener(mSharedState.getCurrentKey()); + mSettingsIcon.setEnabled(true); } |