1
0
mirror of https://github.com/TeamNewPipe/NewPipe synced 2024-12-23 08:30:44 +00:00

UX improvements: keep user edits & do not reset cursor

This commit is contained in:
Stypox 2023-01-11 19:45:55 +01:00
parent 3e15c77a05
commit 2afbe58722
No known key found for this signature in database
GPG Key ID: 4BDF1B40A49FDD23

View File

@ -75,6 +75,7 @@ import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Objects; import java.util.Objects;
import java.util.Optional;
import icepick.Icepick; import icepick.Icepick;
import icepick.State; import icepick.State;
@ -566,21 +567,36 @@ public class DownloadDialog extends DialogFragment
} }
private void onItemSelectedSetFileName() { private void onItemSelectedSetFileName() {
final String fileName = FilenameUtils.createFilename(getContext(), final String fileName = FilenameUtils.createFilename(getContext(), currentInfo.getName());
currentInfo.getName()); final String prevFileName = Optional.ofNullable(dialogBinding.fileName.getText())
.map(Object::toString)
.orElse("");
if (prevFileName.isEmpty()
|| prevFileName.equals(fileName)
|| prevFileName.startsWith(getString(R.string.caption_file_name, fileName, ""))) {
// only update the file name field if it was not edited by the user
switch (dialogBinding.videoAudioGroup.getCheckedRadioButtonId()) { switch (dialogBinding.videoAudioGroup.getCheckedRadioButtonId()) {
case R.id.audio_button: case R.id.audio_button:
case R.id.video_button: case R.id.video_button:
if (!prevFileName.equals(fileName)) {
// since the user might have switched between audio and video, the correct
// text might already be in place, so avoid resetting the cursor position
dialogBinding.fileName.setText(fileName); dialogBinding.fileName.setText(fileName);
}
break; break;
case R.id.subtitle_button: case R.id.subtitle_button:
final String setSubtitleLanguageCode = subtitleStreamsAdapter final String setSubtitleLanguageCode = subtitleStreamsAdapter
.getItem(selectedSubtitleIndex).getLanguageTag(); .getItem(selectedSubtitleIndex).getLanguageTag();
// this will reset the cursor position, which is bad UX, but it can't be avoided
dialogBinding.fileName.setText(getString( dialogBinding.fileName.setText(getString(
R.string.caption_file_name, fileName, setSubtitleLanguageCode)); R.string.caption_file_name, fileName, setSubtitleLanguageCode));
break; break;
} }
} }
}
@Override @Override
public void onNothingSelected(final AdapterView<?> parent) { public void onNothingSelected(final AdapterView<?> parent) {