Remember adjustment step size for playback controls (speed and pitch)

- Add adjustment_step_key to settings_keys.xml to be used when
saving/loading the step size.
- Remove the global stepSize variable and the code that saves it to
outState/loads it from savedInstanceState because it's now saved to
Shared Preferences.
- Move initially setting step size to setupStepSizeSelector to be
consistent with the other view setup methods, using the value loaded
from Shared Preferences.
- Save the step size to Shared Preferences inside setStepSize.

Fixes: #7031
This commit is contained in:
kt programs 2022-03-01 16:27:20 +08:00
parent f1c6988552
commit 62c0e6605c
2 changed files with 10 additions and 9 deletions

View File

@ -71,7 +71,6 @@ public class PlaybackParameterDialog extends DialogFragment {
private double tempo = DEFAULT_TEMPO; private double tempo = DEFAULT_TEMPO;
private double pitch = DEFAULT_PITCH; private double pitch = DEFAULT_PITCH;
private int semitones = DEFAULT_SEMITONES; private int semitones = DEFAULT_SEMITONES;
private double stepSize = DEFAULT_STEP;
@Nullable @Nullable
private SeekBar tempoSlider; private SeekBar tempoSlider;
@ -147,7 +146,6 @@ public class PlaybackParameterDialog extends DialogFragment {
tempo = savedInstanceState.getDouble(TEMPO_KEY, DEFAULT_TEMPO); tempo = savedInstanceState.getDouble(TEMPO_KEY, DEFAULT_TEMPO);
pitch = savedInstanceState.getDouble(PITCH_KEY, DEFAULT_PITCH); pitch = savedInstanceState.getDouble(PITCH_KEY, DEFAULT_PITCH);
semitones = percentToSemitones(pitch); semitones = percentToSemitones(pitch);
stepSize = savedInstanceState.getDouble(STEP_SIZE_KEY, DEFAULT_STEP);
} }
} }
@ -159,7 +157,6 @@ public class PlaybackParameterDialog extends DialogFragment {
outState.putDouble(TEMPO_KEY, getCurrentTempo()); outState.putDouble(TEMPO_KEY, getCurrentTempo());
outState.putDouble(PITCH_KEY, getCurrentPitch()); outState.putDouble(PITCH_KEY, getCurrentPitch());
outState.putDouble(STEP_SIZE_KEY, getCurrentStepSize());
} }
/*////////////////////////////////////////////////////////////////////////// /*//////////////////////////////////////////////////////////////////////////
@ -203,7 +200,7 @@ public class PlaybackParameterDialog extends DialogFragment {
togglePitchSliderType(rootView); togglePitchSliderType(rootView);
setStepSize(stepSize); setupStepSizeSelector(rootView);
} }
private void togglePitchSliderType(@NonNull final View rootView) { private void togglePitchSliderType(@NonNull final View rootView) {
@ -380,6 +377,10 @@ public class PlaybackParameterDialog extends DialogFragment {
} }
private void setupStepSizeSelector(@NonNull final View rootView) { private void setupStepSizeSelector(@NonNull final View rootView) {
setStepSize(PreferenceManager
.getDefaultSharedPreferences(requireContext())
.getFloat(getString(R.string.adjustment_step_key), (float) DEFAULT_STEP));
final TextView stepSizeOnePercentText = rootView.findViewById(R.id.stepSizeOnePercent); final TextView stepSizeOnePercentText = rootView.findViewById(R.id.stepSizeOnePercent);
final TextView stepSizeFivePercentText = rootView.findViewById(R.id.stepSizeFivePercent); final TextView stepSizeFivePercentText = rootView.findViewById(R.id.stepSizeFivePercent);
final TextView stepSizeTenPercentText = rootView.findViewById(R.id.stepSizeTenPercent); final TextView stepSizeTenPercentText = rootView.findViewById(R.id.stepSizeTenPercent);
@ -438,7 +439,10 @@ public class PlaybackParameterDialog extends DialogFragment {
} }
private void setStepSize(final double stepSize) { private void setStepSize(final double stepSize) {
this.stepSize = stepSize; PreferenceManager.getDefaultSharedPreferences(requireContext())
.edit()
.putFloat(getString(R.string.adjustment_step_key), (float) stepSize)
.apply();
if (tempoStepUpText != null) { if (tempoStepUpText != null) {
tempoStepUpText.setText(getStepUpPercentString(stepSize)); tempoStepUpText.setText(getStepUpPercentString(stepSize));
@ -665,10 +669,6 @@ public class PlaybackParameterDialog extends DialogFragment {
return semitoneSlider == null ? semitones : semitoneSlider.getProgress() - 12; return semitoneSlider == null ? semitones : semitoneSlider.getProgress() - 12;
} }
private double getCurrentStepSize() {
return stepSize;
}
private boolean getCurrentSkipSilence() { private boolean getCurrentSkipSilence() {
return skipSilenceCheckbox != null && skipSilenceCheckbox.isChecked(); return skipSilenceCheckbox != null && skipSilenceCheckbox.isChecked();
} }

View File

@ -258,6 +258,7 @@
<string name="main_page_content_key">main_page_content</string> <string name="main_page_content_key">main_page_content</string>
<string name="enable_playback_resume_key">enable_playback_resume</string> <string name="enable_playback_resume_key">enable_playback_resume</string>
<string name="enable_playback_state_lists_key">enable_playback_state_lists</string> <string name="enable_playback_state_lists_key">enable_playback_state_lists</string>
<string name="adjustment_step_key">adjustment_step_key</string>
<string name="playback_unhook_key">playback_unhook_key</string> <string name="playback_unhook_key">playback_unhook_key</string>
<string name="playback_speed_key">playback_speed_key</string> <string name="playback_speed_key">playback_speed_key</string>
<string name="playback_pitch_key">playback_pitch_key</string> <string name="playback_pitch_key">playback_pitch_key</string>