mirror of
https://github.com/libre-tube/LibreTube.git
synced 2025-04-27 23:40:33 +05:30
feat: remember previous playlist download options
This commit is contained in:
parent
a12810d42b
commit
ee2c3934bd
@ -13,6 +13,7 @@ import com.github.libretube.enums.PlaylistType
|
||||
import com.github.libretube.extensions.getWhileDigit
|
||||
import com.github.libretube.extensions.serializable
|
||||
import com.github.libretube.helpers.LocaleHelper
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
import com.github.libretube.services.PlaylistDownloadEnqueueService
|
||||
import com.github.libretube.util.TextUtils
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
@ -26,7 +27,8 @@ class DownloadPlaylistDialog : DialogFragment() {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
playlistId = requireArguments().getString(IntentData.playlistId)!!
|
||||
playlistName = requireArguments().getString(IntentData.playlistName) ?: TextUtils.getFileSafeTimeStampNow()
|
||||
playlistName = requireArguments().getString(IntentData.playlistName)
|
||||
?: TextUtils.getFileSafeTimeStampNow()
|
||||
playlistType = requireArguments().serializable(IntentData.playlistType)!!
|
||||
}
|
||||
|
||||
@ -38,6 +40,7 @@ class DownloadPlaylistDialog : DialogFragment() {
|
||||
it.subList(1, it.size)
|
||||
}
|
||||
val possibleAudioQualities = resources.getStringArray(R.array.audioQualityBitrates)
|
||||
.toList()
|
||||
val availableLanguages = LocaleHelper.getAvailableLocales()
|
||||
|
||||
binding.videoSpinner.items = listOf(getString(R.string.no_video)) + possibleVideoQualities
|
||||
@ -47,6 +50,8 @@ class DownloadPlaylistDialog : DialogFragment() {
|
||||
binding.audioLanguageSpinner.items =
|
||||
listOf(getString(R.string.default_language)) + availableLanguages.map { it.name }
|
||||
|
||||
restoreSelections(binding)
|
||||
|
||||
return MaterialAlertDialogBuilder(requireContext())
|
||||
.setTitle(getString(R.string.download_playlist) + ": " + playlistName)
|
||||
.setView(binding.root)
|
||||
@ -78,6 +83,8 @@ class DownloadPlaylistDialog : DialogFragment() {
|
||||
null
|
||||
}
|
||||
|
||||
saveSelections(binding)
|
||||
|
||||
if (maxVideoQuality == null && maxAudioQuality == null) {
|
||||
Toast.makeText(context, R.string.nothing_selected, Toast.LENGTH_SHORT)
|
||||
.show()
|
||||
@ -100,4 +107,44 @@ class DownloadPlaylistDialog : DialogFragment() {
|
||||
.setNegativeButton(R.string.cancel, null)
|
||||
.show()
|
||||
}
|
||||
|
||||
private fun saveSelections(binding: DialogDownloadPlaylistBinding) {
|
||||
binding.audioSpinner.selectedItemPosition.let { index ->
|
||||
val item = binding.audioSpinner.items[index].takeIf { index != 0 }
|
||||
PreferenceHelper.putString(PLAYLIST_DOWNLOAD_AUDIO_QUALITY, item.orEmpty())
|
||||
}
|
||||
binding.videoSpinner.selectedItemPosition.let { index ->
|
||||
val item = binding.videoSpinner.items[index].takeIf { index != 0 }
|
||||
PreferenceHelper.putString(PLAYLIST_DOWNLOAD_VIDEO_QUALITY, item.orEmpty())
|
||||
}
|
||||
binding.audioLanguageSpinner.selectedItemPosition.let { index ->
|
||||
val item = binding.audioLanguageSpinner.items[index].takeIf { index != 0 }
|
||||
PreferenceHelper.putString(PLAYLIST_DOWNLOAD_AUDIO_LANGUAGE, item.orEmpty())
|
||||
}
|
||||
binding.subtitleSpinner.selectedItemPosition.let { index ->
|
||||
val item = binding.subtitleSpinner.items[index].takeIf { index != 0 }
|
||||
PreferenceHelper.putString(PLAYLIST_DOWNLOAD_CAPTION_LANGUAGE, item.orEmpty())
|
||||
}
|
||||
}
|
||||
|
||||
private fun restoreSelections(binding: DialogDownloadPlaylistBinding) {
|
||||
val videoQuality = PreferenceHelper.getString(PLAYLIST_DOWNLOAD_VIDEO_QUALITY, "")
|
||||
binding.videoSpinner.selectedItemPosition = binding.videoSpinner.items.indexOf(videoQuality).takeIf { it != -1 } ?: 0
|
||||
|
||||
val audioQuality = PreferenceHelper.getString(PLAYLIST_DOWNLOAD_AUDIO_QUALITY, "")
|
||||
binding.audioSpinner.selectedItemPosition = binding.audioSpinner.items.indexOf(audioQuality).takeIf { it != -1 } ?: 0
|
||||
|
||||
val audioLanguage = PreferenceHelper.getString(PLAYLIST_DOWNLOAD_AUDIO_LANGUAGE, "")
|
||||
binding.audioLanguageSpinner.selectedItemPosition = binding.audioLanguageSpinner.items.indexOf(audioLanguage).takeIf { it != -1 } ?: 0
|
||||
|
||||
val captionLanguage = PreferenceHelper.getString(PLAYLIST_DOWNLOAD_CAPTION_LANGUAGE, "")
|
||||
binding.subtitleSpinner.selectedItemPosition = binding.subtitleSpinner.items.indexOf(captionLanguage).takeIf { it != -1 } ?: 0
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val PLAYLIST_DOWNLOAD_VIDEO_QUALITY = "playlist_download_video_quality"
|
||||
private const val PLAYLIST_DOWNLOAD_AUDIO_QUALITY = "playlist_download_audio_quality"
|
||||
private const val PLAYLIST_DOWNLOAD_AUDIO_LANGUAGE = "playlist_download_audio_language"
|
||||
private const val PLAYLIST_DOWNLOAD_CAPTION_LANGUAGE = "playlist_download_caption_language"
|
||||
}
|
||||
}
|
||||
|
@ -331,7 +331,7 @@
|
||||
<string name="audio_track">Audio track</string>
|
||||
<string name="unsupported_file_format">Unsupported file format: %1$s</string>
|
||||
<string name="hls_instead_of_dash">Use HLS</string>
|
||||
<string name="hls_instead_of_dash_summary">Use HLS instead of DASH for streaming media. Try toggling this option if video playback doesn't work.</string>
|
||||
<string name="hls_instead_of_dash_summary">Use HLS instead of DASH for streaming media. Try toggling this option if video playback doesn\'t work.</string>
|
||||
<string name="auto_quality">Auto</string>
|
||||
<string name="limit_to_runtime">Limit to runtime</string>
|
||||
<string name="trends">Trends</string>
|
||||
|
Loading…
x
Reference in New Issue
Block a user