Skip to content
Snippets Groups Projects
Commit 40c59727 authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka Committed by Android (Google) Code Review
Browse files

Merge "Add default button to vibration/volume settings dialog"

parents 1b1fa7a1 a7a7f4e0
No related branches found
No related tags found
No related merge requests found
...@@ -376,4 +376,7 @@ ...@@ -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>
...@@ -167,19 +167,21 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang ...@@ -167,19 +167,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));
} }
......
...@@ -180,7 +180,7 @@ public final class SettingsFragment extends InputMethodSettingsFragment ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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)
......
...@@ -128,7 +128,7 @@ public final class SettingsValues { ...@@ -128,7 +128,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,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment