@@ -23,6 +23,8 @@ class DownloadPlaylistDialog : DialogFragment() {
2323 private lateinit var playlistName: String
2424 private lateinit var playlistType: PlaylistType
2525
26+ private val availableLanguages = LocaleHelper .getAvailableLocales()
27+
2628 override fun onCreate (savedInstanceState : Bundle ? ) {
2729 super .onCreate(savedInstanceState)
2830
@@ -41,7 +43,6 @@ class DownloadPlaylistDialog : DialogFragment() {
4143 }
4244 val possibleAudioQualities = resources.getStringArray(R .array.audioQualityBitrates)
4345 .toList()
44- val availableLanguages = LocaleHelper .getAvailableLocales()
4546
4647 binding.videoSpinner.items = listOf (getString(R .string.no_video)) + possibleVideoQualities
4748 binding.audioSpinner.items = listOf (getString(R .string.no_audio)) + possibleAudioQualities
@@ -57,31 +58,12 @@ class DownloadPlaylistDialog : DialogFragment() {
5758 .setView(binding.root)
5859 .setPositiveButton(R .string.download) { _, _ ->
5960 with (binding) {
60- val maxVideoQuality = if (videoSpinner.selectedItemPosition >= 1 ) {
61- possibleVideoQualities[videoSpinner.selectedItemPosition - 1 ]
62- .getWhileDigit()
63- } else {
64- null
65- }
66-
67- val maxAudioQuality = if (audioSpinner.selectedItemPosition >= 1 ) {
68- possibleAudioQualities[audioSpinner.selectedItemPosition - 1 ]
69- .getWhileDigit()
70- } else {
71- null
72- }
73-
74- val captionLanguage = if (subtitleSpinner.selectedItemPosition >= 1 ) {
75- availableLanguages[subtitleSpinner.selectedItemPosition - 1 ].code
76- } else {
77- null
78- }
79-
80- val audioLanguage = if (audioLanguageSpinner.selectedItemPosition >= 1 ) {
81- availableLanguages[audioLanguageSpinner.selectedItemPosition - 1 ].code
82- } else {
83- null
84- }
61+ val maxVideoQuality = possibleVideoQualities.getOrNull(videoSpinner.selectedItemPosition - 1 )
62+ .getWhileDigit()
63+ val maxAudioQuality = possibleAudioQualities.getOrNull(audioSpinner.selectedItemPosition - 1 )
64+ .getWhileDigit()
65+ val captionLanguage = availableLanguages.getOrNull(subtitleSpinner.selectedItemPosition - 1 )?.code
66+ val audioLanguage = availableLanguages.getOrNull(audioLanguageSpinner.selectedItemPosition - 1 )?.code
8567
8668 saveSelections(binding)
8769
@@ -109,36 +91,34 @@ class DownloadPlaylistDialog : DialogFragment() {
10991 }
11092
11193 private fun saveSelections (binding : DialogDownloadPlaylistBinding ) {
112- binding.audioSpinner.selectedItemPosition.let { index ->
113- val item = binding.audioSpinner.items[index].takeIf { index != 0 }
94+ binding.audioSpinner.getSelectionIfNotFirst().let { item ->
11495 PreferenceHelper .putString(PLAYLIST_DOWNLOAD_AUDIO_QUALITY , item.orEmpty())
11596 }
116- binding.videoSpinner.selectedItemPosition.let { index ->
117- val item = binding.videoSpinner.items[index].takeIf { index != 0 }
97+ binding.videoSpinner.getSelectionIfNotFirst().let { item ->
11898 PreferenceHelper .putString(PLAYLIST_DOWNLOAD_VIDEO_QUALITY , item.orEmpty())
11999 }
120100 binding.audioLanguageSpinner.selectedItemPosition.let { index ->
121- val item = binding.audioLanguageSpinner.items[ index]. takeIf { index != 0 }
122- PreferenceHelper .putString(PLAYLIST_DOWNLOAD_AUDIO_LANGUAGE , item .orEmpty())
101+ val language = availableLanguages.getOrNull( index - 1 )
102+ PreferenceHelper .putString(PLAYLIST_DOWNLOAD_AUDIO_LANGUAGE , language?.code .orEmpty())
123103 }
124104 binding.subtitleSpinner.selectedItemPosition.let { index ->
125- val item = binding.subtitleSpinner.items[ index]. takeIf { index != 0 }
126- PreferenceHelper .putString(PLAYLIST_DOWNLOAD_CAPTION_LANGUAGE , item .orEmpty())
105+ val language = availableLanguages.getOrNull( index - 1 )
106+ PreferenceHelper .putString(PLAYLIST_DOWNLOAD_CAPTION_LANGUAGE , language?.code .orEmpty())
127107 }
128108 }
129109
130110 private fun restoreSelections (binding : DialogDownloadPlaylistBinding ) {
131111 val videoQuality = PreferenceHelper .getString(PLAYLIST_DOWNLOAD_VIDEO_QUALITY , " " )
132- binding.videoSpinner.selectedItemPosition = binding.videoSpinner.items.indexOf (videoQuality). takeIf { it != - 1 } ? : 0
112+ binding.videoSpinner.setSelection (videoQuality)
133113
134114 val audioQuality = PreferenceHelper .getString(PLAYLIST_DOWNLOAD_AUDIO_QUALITY , " " )
135- binding.audioSpinner.selectedItemPosition = binding.audioSpinner.items.indexOf (audioQuality). takeIf { it != - 1 } ? : 0
115+ binding.audioSpinner.setSelection (audioQuality)
136116
137117 val audioLanguage = PreferenceHelper .getString(PLAYLIST_DOWNLOAD_AUDIO_LANGUAGE , " " )
138- binding.audioLanguageSpinner.selectedItemPosition = binding.audioLanguageSpinner.items.indexOf (audioLanguage). takeIf { it != - 1 } ? : 0
118+ binding.audioLanguageSpinner.setSelection (audioLanguage)
139119
140120 val captionLanguage = PreferenceHelper .getString(PLAYLIST_DOWNLOAD_CAPTION_LANGUAGE , " " )
141- binding.subtitleSpinner.selectedItemPosition = binding.subtitleSpinner.items.indexOf (captionLanguage). takeIf { it != - 1 } ? : 0
121+ binding.subtitleSpinner.setSelection (captionLanguage)
142122 }
143123
144124 companion object {
0 commit comments