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>
<!-- Title of the settings for keypress sound volume -->
<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>

View File

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

View File

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

View File

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