diff options
author | 2013-01-17 08:27:26 +0000 | |
---|---|---|
committer | 2013-01-17 08:27:27 +0000 | |
commit | 1b1fa7a18b7baeb8fbdb3fb7ed46cf13a75fbac1 (patch) | |
tree | d3c2c2a9903e0535358f61a04b39699c8d1a03ee /java/src | |
parent | 22959faad4ad6a6284404ffc667ec823991f3710 (diff) | |
parent | 88df3d9239a714f6cda82a25cce35844d4d4dfb4 (diff) | |
download | latinime-1b1fa7a18b7baeb8fbdb3fb7ed46cf13a75fbac1.tar.gz latinime-1b1fa7a18b7baeb8fbdb3fb7ed46cf13a75fbac1.tar.xz latinime-1b1fa7a18b7baeb8fbdb3fb7ed46cf13a75fbac1.zip |
Merge "SeekBarDialog supports neutral and dismiss listener"
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/com/android/inputmethod/latin/SeekBarDialog.java | 36 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/latin/SettingsFragment.java | 22 |
2 files changed, 47 insertions, 11 deletions
diff --git a/java/src/com/android/inputmethod/latin/SeekBarDialog.java b/java/src/com/android/inputmethod/latin/SeekBarDialog.java index e576c0984..c736d1b1a 100644 --- a/java/src/com/android/inputmethod/latin/SeekBarDialog.java +++ b/java/src/com/android/inputmethod/latin/SeekBarDialog.java @@ -30,6 +30,8 @@ public final class SeekBarDialog implements DialogInterface.OnClickListener, public interface Listener { public void onPositiveButtonClick(final SeekBarDialog dialog); public void onNegativeButtonClick(final SeekBarDialog dialog); + public void onNeutralButtonClick(final SeekBarDialog dialog); + public void onDismiss(final SeekBarDialog dialog); public void onProgressChanged(final SeekBarDialog dialog); public void onStartTrackingTouch(final SeekBarDialog dialog); public void onStopTrackingTouch(final SeekBarDialog dialog); @@ -39,7 +41,11 @@ public final class SeekBarDialog implements DialogInterface.OnClickListener, @Override public void onPositiveButtonClick(final SeekBarDialog dialog) {} @Override - public void onNegativeButtonClick(final SeekBarDialog dialog) { dialog.dismiss(); } + public void onNegativeButtonClick(final SeekBarDialog dialog) {} + @Override + public void onNeutralButtonClick(final SeekBarDialog dialog) {} + @Override + public void onDismiss(final SeekBarDialog dialog) {} @Override public void onProgressChanged(final SeekBarDialog dialog) {} @Override @@ -63,6 +69,9 @@ public final class SeekBarDialog implements DialogInterface.OnClickListener, dialogBuilder.setView(builder.mView); dialogBuilder.setPositiveButton(android.R.string.ok, this); dialogBuilder.setNegativeButton(android.R.string.cancel, this); + if (builder.mNeutralButtonTextResId != 0) { + dialogBuilder.setNeutralButton(builder.mNeutralButtonTextResId, this); + } mDialog = dialogBuilder.create(); mListener = (builder.mListener == null) ? EMPTY_ADAPTER : builder.mListener; mValueView = (TextView)builder.mView.findViewById(R.id.seek_bar_dialog_value); @@ -101,15 +110,21 @@ public final class SeekBarDialog implements DialogInterface.OnClickListener, } @Override - public void onClick(final DialogInterface dialog, int which) { - if (which == DialogInterface.BUTTON_POSITIVE) { + public void onClick(final DialogInterface dialog, final int which) { + switch (which) { + case DialogInterface.BUTTON_POSITIVE: mListener.onPositiveButtonClick(this); - return; - } - if (which == DialogInterface.BUTTON_NEGATIVE) { + break; + case DialogInterface.BUTTON_NEGATIVE: mListener.onNegativeButtonClick(this); + break; + case DialogInterface.BUTTON_NEUTRAL: + mListener.onNeutralButtonClick(this); + break; + default: return; } + mListener.onDismiss(this); } @Override @@ -135,6 +150,7 @@ public final class SeekBarDialog implements DialogInterface.OnClickListener, final AlertDialog.Builder mDialogBuilder; final View mView; + int mNeutralButtonTextResId; int mMaxValue; int mValueFormatResId; int mValue; @@ -150,8 +166,14 @@ public final class SeekBarDialog implements DialogInterface.OnClickListener, return this; } + public Builder setNeutralButtonText(final int resId) { + mNeutralButtonTextResId = resId; + return this; + } + public Builder setMaxValue(final int max) { mMaxValue = max; + mValue = Math.min(mValue, max); return this; } @@ -161,7 +183,7 @@ public final class SeekBarDialog implements DialogInterface.OnClickListener, } public Builder setValue(final int value) { - mValue = value; + mValue = Math.min(value, mMaxValue); return this; } diff --git a/java/src/com/android/inputmethod/latin/SettingsFragment.java b/java/src/com/android/inputmethod/latin/SettingsFragment.java index 507a37b7c..a4f0d9902 100644 --- a/java/src/com/android/inputmethod/latin/SettingsFragment.java +++ b/java/src/com/android/inputmethod/latin/SettingsFragment.java @@ -308,10 +308,17 @@ public final class SettingsFragment extends InputMethodSettingsFragment final Context context = getActivity(); final PreferenceScreen settingsPref = mKeypressVibrationDurationSettingsPref; final SeekBarDialog.Listener listener = new SeekBarDialog.Adapter() { + private void writePreference(final SharedPreferences sp, final int value) { + sp.edit().putInt(Settings.PREF_VIBRATION_DURATION_SETTINGS, value).apply(); + } + @Override public void onPositiveButtonClick(final SeekBarDialog dialog) { - final int ms = dialog.getValue(); - sp.edit().putInt(Settings.PREF_VIBRATION_DURATION_SETTINGS, ms).apply(); + writePreference(sp, dialog.getValue()); + } + + @Override + public void onDismiss(final SeekBarDialog dialog) { if (settingsPref != null) { settingsPref.setSummary(dialog.getValueText()); } @@ -348,10 +355,17 @@ public final class SettingsFragment extends InputMethodSettingsFragment final AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); final PreferenceScreen settingsPref = mKeypressSoundVolumeSettingsPref; final SeekBarDialog.Listener listener = new SeekBarDialog.Adapter() { + private void writePreference(final SharedPreferences sp, final float value) { + sp.edit().putFloat(Settings.PREF_KEYPRESS_SOUND_VOLUME, value).apply(); + } + @Override public void onPositiveButtonClick(final SeekBarDialog dialog) { - final float volume = dialog.getValue() / PERCENT_FLOAT; - sp.edit().putFloat(Settings.PREF_KEYPRESS_SOUND_VOLUME, volume).apply(); + writePreference(sp, dialog.getValue() / PERCENT_FLOAT); + } + + @Override + public void onDismiss(final SeekBarDialog dialog) { if (settingsPref != null) { settingsPref.setSummary(dialog.getValueText()); } |