mirror of
https://github.com/libre-tube/LibreTube.git
synced 2025-04-28 16:00:31 +05:30
Merge pull request #7134 from Bnyro/master
feat: remember previous playlist download options
This commit is contained in:
commit
0ec724a1e9
@ -13,6 +13,7 @@ import com.github.libretube.enums.PlaylistType
|
|||||||
import com.github.libretube.extensions.getWhileDigit
|
import com.github.libretube.extensions.getWhileDigit
|
||||||
import com.github.libretube.extensions.serializable
|
import com.github.libretube.extensions.serializable
|
||||||
import com.github.libretube.helpers.LocaleHelper
|
import com.github.libretube.helpers.LocaleHelper
|
||||||
|
import com.github.libretube.helpers.PreferenceHelper
|
||||||
import com.github.libretube.services.PlaylistDownloadEnqueueService
|
import com.github.libretube.services.PlaylistDownloadEnqueueService
|
||||||
import com.github.libretube.util.TextUtils
|
import com.github.libretube.util.TextUtils
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
@ -26,7 +27,8 @@ class DownloadPlaylistDialog : DialogFragment() {
|
|||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
playlistId = requireArguments().getString(IntentData.playlistId)!!
|
playlistId = requireArguments().getString(IntentData.playlistId)!!
|
||||||
playlistName = requireArguments().getString(IntentData.playlistName) ?: TextUtils.getFileSafeTimeStampNow()
|
playlistName = requireArguments().getString(IntentData.playlistName)
|
||||||
|
?: TextUtils.getFileSafeTimeStampNow()
|
||||||
playlistType = requireArguments().serializable(IntentData.playlistType)!!
|
playlistType = requireArguments().serializable(IntentData.playlistType)!!
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -38,6 +40,7 @@ class DownloadPlaylistDialog : DialogFragment() {
|
|||||||
it.subList(1, it.size)
|
it.subList(1, it.size)
|
||||||
}
|
}
|
||||||
val possibleAudioQualities = resources.getStringArray(R.array.audioQualityBitrates)
|
val possibleAudioQualities = resources.getStringArray(R.array.audioQualityBitrates)
|
||||||
|
.toList()
|
||||||
val availableLanguages = LocaleHelper.getAvailableLocales()
|
val availableLanguages = LocaleHelper.getAvailableLocales()
|
||||||
|
|
||||||
binding.videoSpinner.items = listOf(getString(R.string.no_video)) + possibleVideoQualities
|
binding.videoSpinner.items = listOf(getString(R.string.no_video)) + possibleVideoQualities
|
||||||
@ -47,6 +50,8 @@ class DownloadPlaylistDialog : DialogFragment() {
|
|||||||
binding.audioLanguageSpinner.items =
|
binding.audioLanguageSpinner.items =
|
||||||
listOf(getString(R.string.default_language)) + availableLanguages.map { it.name }
|
listOf(getString(R.string.default_language)) + availableLanguages.map { it.name }
|
||||||
|
|
||||||
|
restoreSelections(binding)
|
||||||
|
|
||||||
return MaterialAlertDialogBuilder(requireContext())
|
return MaterialAlertDialogBuilder(requireContext())
|
||||||
.setTitle(getString(R.string.download_playlist) + ": " + playlistName)
|
.setTitle(getString(R.string.download_playlist) + ": " + playlistName)
|
||||||
.setView(binding.root)
|
.setView(binding.root)
|
||||||
@ -78,6 +83,8 @@ class DownloadPlaylistDialog : DialogFragment() {
|
|||||||
null
|
null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
saveSelections(binding)
|
||||||
|
|
||||||
if (maxVideoQuality == null && maxAudioQuality == null) {
|
if (maxVideoQuality == null && maxAudioQuality == null) {
|
||||||
Toast.makeText(context, R.string.nothing_selected, Toast.LENGTH_SHORT)
|
Toast.makeText(context, R.string.nothing_selected, Toast.LENGTH_SHORT)
|
||||||
.show()
|
.show()
|
||||||
@ -100,4 +107,44 @@ class DownloadPlaylistDialog : DialogFragment() {
|
|||||||
.setNegativeButton(R.string.cancel, null)
|
.setNegativeButton(R.string.cancel, null)
|
||||||
.show()
|
.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="audio_track">Audio track</string>
|
||||||
<string name="unsupported_file_format">Unsupported file format: %1$s</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">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="auto_quality">Auto</string>
|
||||||
<string name="limit_to_runtime">Limit to runtime</string>
|
<string name="limit_to_runtime">Limit to runtime</string>
|
||||||
<string name="trends">Trends</string>
|
<string name="trends">Trends</string>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user