mirror of
				https://github.com/TeamNewPipe/NewPipe
				synced 2025-10-31 07:13:00 +00:00 
			
		
		
		
	UX improvements: keep user edits & do not reset cursor
This commit is contained in:
		| @@ -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) { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Stypox
					Stypox