Add default button to vibration/volume settings dialog

Change-Id: I7beb4517314efdefeb47d91b14a6b02c3075c19f
main
Tadashi G. Takaoka 2013-01-10 12:06:00 +09:00
parent 88df3d9239
commit a7a7f4e002
4 changed files with 43 additions and 14 deletions

View File

@ -376,4 +376,7 @@
<string name="prefs_keypress_vibration_duration_settings">Keypress vibration duration settings</string> <string name="prefs_keypress_vibration_duration_settings">Keypress vibration duration settings</string>
<!-- Title of the settings for keypress sound volume --> <!-- Title of the settings for keypress sound volume -->
<string name="prefs_keypress_sound_volume_settings">Keypress sound volume settings</string> <string name="prefs_keypress_sound_volume_settings">Keypress sound volume settings</string>
<!-- Title of the button to revert to the default value of the device in the settings dialog [CHAR LIMIT=15] -->
<string name="button_default">Default</string>
</resources> </resources>

View File

@ -168,19 +168,21 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
public static float readKeypressSoundVolume(final SharedPreferences prefs, public static float readKeypressSoundVolume(final SharedPreferences prefs,
final Resources res) { final Resources res) {
final float volume = prefs.getFloat(PREF_KEYPRESS_SOUND_VOLUME, -1.0f); final float volume = prefs.getFloat(PREF_KEYPRESS_SOUND_VOLUME, -1.0f);
if (volume >= 0) { return (volume >= 0) ? volume : readDefaultKeypressSoundVolume(res);
return volume; }
}
public static float readDefaultKeypressSoundVolume(final Resources res) {
return Float.parseFloat( return Float.parseFloat(
ResourceUtils.getDeviceOverrideValue(res, R.array.keypress_volumes)); ResourceUtils.getDeviceOverrideValue(res, R.array.keypress_volumes));
} }
public static int readVibrationDuration(final SharedPreferences prefs, public static int readKeypressVibrationDuration(final SharedPreferences prefs,
final Resources res) { final Resources res) {
final int ms = prefs.getInt(PREF_VIBRATION_DURATION_SETTINGS, -1); final int ms = prefs.getInt(PREF_VIBRATION_DURATION_SETTINGS, -1);
if (ms >= 0) { return (ms >= 0) ? ms : readDefaultKeypressVibrationDuration(res);
return ms; }
}
public static int readDefaultKeypressVibrationDuration(final Resources res) {
return Integer.parseInt( return Integer.parseInt(
ResourceUtils.getDeviceOverrideValue(res, R.array.keypress_vibration_durations)); ResourceUtils.getDeviceOverrideValue(res, R.array.keypress_vibration_durations));
} }

View File

@ -180,7 +180,7 @@ public final class SettingsFragment extends InputMethodSettingsFragment
}); });
mKeypressVibrationDurationSettingsPref.setSummary( mKeypressVibrationDurationSettingsPref.setSummary(
res.getString(R.string.settings_keypress_vibration_duration, res.getString(R.string.settings_keypress_vibration_duration,
Settings.readVibrationDuration(prefs, res))); Settings.readKeypressVibrationDuration(prefs, res)));
} }
mKeypressSoundVolumeSettingsPref = mKeypressSoundVolumeSettingsPref =
@ -312,11 +312,23 @@ public final class SettingsFragment extends InputMethodSettingsFragment
sp.edit().putInt(Settings.PREF_VIBRATION_DURATION_SETTINGS, value).apply(); sp.edit().putInt(Settings.PREF_VIBRATION_DURATION_SETTINGS, value).apply();
} }
private void feedbackSettingsValue(final int value) {
AudioAndHapticFeedbackManager.getInstance().vibrate(value);
}
@Override @Override
public void onPositiveButtonClick(final SeekBarDialog dialog) { public void onPositiveButtonClick(final SeekBarDialog dialog) {
writePreference(sp, dialog.getValue()); writePreference(sp, dialog.getValue());
} }
@Override
public void onNeutralButtonClick(final SeekBarDialog dialog) {
final int defaultValue =
Settings.readDefaultKeypressVibrationDuration(context.getResources());
dialog.setValue(defaultValue, false /* fromUser */);
writePreference(sp, defaultValue);
}
@Override @Override
public void onDismiss(final SeekBarDialog dialog) { public void onDismiss(final SeekBarDialog dialog) {
if (settingsPref != null) { if (settingsPref != null) {
@ -326,13 +338,13 @@ public final class SettingsFragment extends InputMethodSettingsFragment
@Override @Override
public void onStopTrackingTouch(final SeekBarDialog dialog) { public void onStopTrackingTouch(final SeekBarDialog dialog) {
final int ms = dialog.getValue(); feedbackSettingsValue(dialog.getValue());
AudioAndHapticFeedbackManager.getInstance().vibrate(ms);
} }
}; };
final int currentMs = Settings.readVibrationDuration(sp, getResources()); final int currentMs = Settings.readKeypressVibrationDuration(sp, getResources());
final SeekBarDialog.Builder builder = new SeekBarDialog.Builder(context); final SeekBarDialog.Builder builder = new SeekBarDialog.Builder(context);
builder.setTitle(R.string.prefs_keypress_vibration_duration_settings) builder.setTitle(R.string.prefs_keypress_vibration_duration_settings)
.setNeutralButtonText(R.string.button_default)
.setListener(listener) .setListener(listener)
.setMaxValue(AudioAndHapticFeedbackManager.MAX_KEYPRESS_VIBRATION_DURATION) .setMaxValue(AudioAndHapticFeedbackManager.MAX_KEYPRESS_VIBRATION_DURATION)
.setValueFromat(R.string.settings_keypress_vibration_duration) .setValueFromat(R.string.settings_keypress_vibration_duration)
@ -359,11 +371,23 @@ public final class SettingsFragment extends InputMethodSettingsFragment
sp.edit().putFloat(Settings.PREF_KEYPRESS_SOUND_VOLUME, value).apply(); sp.edit().putFloat(Settings.PREF_KEYPRESS_SOUND_VOLUME, value).apply();
} }
private void feedbackSettingsValue(final float value) {
am.playSoundEffect(AudioManager.FX_KEYPRESS_STANDARD, value);
}
@Override @Override
public void onPositiveButtonClick(final SeekBarDialog dialog) { public void onPositiveButtonClick(final SeekBarDialog dialog) {
writePreference(sp, dialog.getValue() / PERCENT_FLOAT); writePreference(sp, dialog.getValue() / PERCENT_FLOAT);
} }
@Override
public void onNeutralButtonClick(final SeekBarDialog dialog) {
final float defaultValue =
Settings.readDefaultKeypressSoundVolume(context.getResources());
dialog.setValue((int)(defaultValue * PERCENT_INT), false /* fromUser */);
writePreference(sp, defaultValue);
}
@Override @Override
public void onDismiss(final SeekBarDialog dialog) { public void onDismiss(final SeekBarDialog dialog) {
if (settingsPref != null) { if (settingsPref != null) {
@ -373,13 +397,13 @@ public final class SettingsFragment extends InputMethodSettingsFragment
@Override @Override
public void onStopTrackingTouch(final SeekBarDialog dialog) { public void onStopTrackingTouch(final SeekBarDialog dialog) {
final float volume = dialog.getValue() / PERCENT_FLOAT; feedbackSettingsValue(dialog.getValue() / PERCENT_FLOAT);
am.playSoundEffect(AudioManager.FX_KEYPRESS_STANDARD, volume);
} }
}; };
final SeekBarDialog.Builder builder = new SeekBarDialog.Builder(context); final SeekBarDialog.Builder builder = new SeekBarDialog.Builder(context);
final int currentVolumeInt = getCurrentKeyPressSoundVolumePercent(sp, getResources()); final int currentVolumeInt = getCurrentKeyPressSoundVolumePercent(sp, getResources());
builder.setTitle(R.string.prefs_keypress_sound_volume_settings) builder.setTitle(R.string.prefs_keypress_sound_volume_settings)
.setNeutralButtonText(R.string.button_default)
.setListener(listener) .setListener(listener)
.setMaxValue(PERCENT_INT) .setMaxValue(PERCENT_INT)
.setValue(currentVolumeInt) .setValue(currentVolumeInt)

View File

@ -139,7 +139,7 @@ public final class SettingsValues {
mBigramPredictionEnabled = readBigramPredictionEnabled(prefs, res); mBigramPredictionEnabled = readBigramPredictionEnabled(prefs, res);
// Compute other readable settings // Compute other readable settings
mKeypressVibrationDuration = Settings.readVibrationDuration(prefs, res); mKeypressVibrationDuration = Settings.readKeypressVibrationDuration(prefs, res);
mKeypressSoundVolume = Settings.readKeypressSoundVolume(prefs, res); mKeypressSoundVolume = Settings.readKeypressSoundVolume(prefs, res);
mKeyPreviewPopupDismissDelay = Settings.readKeyPreviewPopupDismissDelay(prefs, res); mKeyPreviewPopupDismissDelay = Settings.readKeyPreviewPopupDismissDelay(prefs, res);
mAutoCorrectionThreshold = readAutoCorrectionThreshold(res, mAutoCorrectionThreshold = readAutoCorrectionThreshold(res,