diff options
author | Przemyslaw Szczepaniak <pszczepaniak@google.com> | 2012-11-28 16:18:22 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-11-30 04:48:58 -0800 |
commit | 820dc4c910e81fb8576dfcca2d64632f81c402b0 (patch) | |
tree | 8708413b28d536a6bd03505dd2335425d35efe94 /src/com/android/settings/tts | |
parent | 4745ccf1aee9e8282747a978cb9e43cf0e3dc694 (diff) | |
download | packages_apps_Settings-820dc4c910e81fb8576dfcca2d64632f81c402b0.zip packages_apps_Settings-820dc4c910e81fb8576dfcca2d64632f81c402b0.tar.gz packages_apps_Settings-820dc4c910e81fb8576dfcca2d64632f81c402b0.tar.bz2 |
Fix radio buttons when user cancel TTS engine change
When user decides to change tts engine, and if it's not system one,
then he sees dialog warning about possibility of sending all kinds of
data to the engine.
If user chooses to not changes engine, radio button still sticks to the
new position.
This change delays all operations regarding changing current engine
after user closes dialog. It also unsets the radio button if user chooses
to cancel it.
Bug: 7628362
Change-Id: I977abe71b3547f2545a971fc0d69179be6fafb44
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); } |