mirror of
https://github.com/libre-tube/LibreTube.git
synced 2025-04-27 15:30:31 +05:30
refactor: simplify download options storing and restoring logic
This commit is contained in:
parent
ee2c3934bd
commit
644f012e32
@ -23,6 +23,8 @@ class DownloadPlaylistDialog : DialogFragment() {
|
||||
private lateinit var playlistName: String
|
||||
private lateinit var playlistType: PlaylistType
|
||||
|
||||
private val availableLanguages = LocaleHelper.getAvailableLocales()
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
@ -41,7 +43,6 @@ class DownloadPlaylistDialog : DialogFragment() {
|
||||
}
|
||||
val possibleAudioQualities = resources.getStringArray(R.array.audioQualityBitrates)
|
||||
.toList()
|
||||
val availableLanguages = LocaleHelper.getAvailableLocales()
|
||||
|
||||
binding.videoSpinner.items = listOf(getString(R.string.no_video)) + possibleVideoQualities
|
||||
binding.audioSpinner.items = listOf(getString(R.string.no_audio)) + possibleAudioQualities
|
||||
@ -57,31 +58,12 @@ class DownloadPlaylistDialog : DialogFragment() {
|
||||
.setView(binding.root)
|
||||
.setPositiveButton(R.string.download) { _, _ ->
|
||||
with(binding) {
|
||||
val maxVideoQuality = if (videoSpinner.selectedItemPosition >= 1) {
|
||||
possibleVideoQualities[videoSpinner.selectedItemPosition - 1]
|
||||
.getWhileDigit()
|
||||
} else {
|
||||
null
|
||||
}
|
||||
|
||||
val maxAudioQuality = if (audioSpinner.selectedItemPosition >= 1) {
|
||||
possibleAudioQualities[audioSpinner.selectedItemPosition - 1]
|
||||
.getWhileDigit()
|
||||
} else {
|
||||
null
|
||||
}
|
||||
|
||||
val captionLanguage = if (subtitleSpinner.selectedItemPosition >= 1) {
|
||||
availableLanguages[subtitleSpinner.selectedItemPosition - 1].code
|
||||
} else {
|
||||
null
|
||||
}
|
||||
|
||||
val audioLanguage = if (audioLanguageSpinner.selectedItemPosition >= 1) {
|
||||
availableLanguages[audioLanguageSpinner.selectedItemPosition - 1].code
|
||||
} else {
|
||||
null
|
||||
}
|
||||
val maxVideoQuality = possibleVideoQualities.getOrNull(videoSpinner.selectedItemPosition - 1)
|
||||
.getWhileDigit()
|
||||
val maxAudioQuality = possibleAudioQualities.getOrNull(audioSpinner.selectedItemPosition - 1)
|
||||
.getWhileDigit()
|
||||
val captionLanguage = availableLanguages.getOrNull(subtitleSpinner.selectedItemPosition - 1)?.code
|
||||
val audioLanguage = availableLanguages.getOrNull(audioLanguageSpinner.selectedItemPosition - 1)?.code
|
||||
|
||||
saveSelections(binding)
|
||||
|
||||
@ -109,36 +91,34 @@ class DownloadPlaylistDialog : DialogFragment() {
|
||||
}
|
||||
|
||||
private fun saveSelections(binding: DialogDownloadPlaylistBinding) {
|
||||
binding.audioSpinner.selectedItemPosition.let { index ->
|
||||
val item = binding.audioSpinner.items[index].takeIf { index != 0 }
|
||||
binding.audioSpinner.getSelectionIfNotFirst().let { item ->
|
||||
PreferenceHelper.putString(PLAYLIST_DOWNLOAD_AUDIO_QUALITY, item.orEmpty())
|
||||
}
|
||||
binding.videoSpinner.selectedItemPosition.let { index ->
|
||||
val item = binding.videoSpinner.items[index].takeIf { index != 0 }
|
||||
binding.videoSpinner.getSelectionIfNotFirst().let { item ->
|
||||
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())
|
||||
val language = availableLanguages.getOrNull(index - 1)
|
||||
PreferenceHelper.putString(PLAYLIST_DOWNLOAD_AUDIO_LANGUAGE, language?.code.orEmpty())
|
||||
}
|
||||
binding.subtitleSpinner.selectedItemPosition.let { index ->
|
||||
val item = binding.subtitleSpinner.items[index].takeIf { index != 0 }
|
||||
PreferenceHelper.putString(PLAYLIST_DOWNLOAD_CAPTION_LANGUAGE, item.orEmpty())
|
||||
val language = availableLanguages.getOrNull(index - 1)
|
||||
PreferenceHelper.putString(PLAYLIST_DOWNLOAD_CAPTION_LANGUAGE, language?.code.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
|
||||
binding.videoSpinner.setSelection(videoQuality)
|
||||
|
||||
val audioQuality = PreferenceHelper.getString(PLAYLIST_DOWNLOAD_AUDIO_QUALITY, "")
|
||||
binding.audioSpinner.selectedItemPosition = binding.audioSpinner.items.indexOf(audioQuality).takeIf { it != -1 } ?: 0
|
||||
binding.audioSpinner.setSelection(audioQuality)
|
||||
|
||||
val audioLanguage = PreferenceHelper.getString(PLAYLIST_DOWNLOAD_AUDIO_LANGUAGE, "")
|
||||
binding.audioLanguageSpinner.selectedItemPosition = binding.audioLanguageSpinner.items.indexOf(audioLanguage).takeIf { it != -1 } ?: 0
|
||||
binding.audioLanguageSpinner.setSelection(audioLanguage)
|
||||
|
||||
val captionLanguage = PreferenceHelper.getString(PLAYLIST_DOWNLOAD_CAPTION_LANGUAGE, "")
|
||||
binding.subtitleSpinner.selectedItemPosition = binding.subtitleSpinner.items.indexOf(captionLanguage).takeIf { it != -1 } ?: 0
|
||||
binding.subtitleSpinner.setSelection(captionLanguage)
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
@ -86,7 +86,7 @@ class SubmitDeArrowDialog: DialogFragment() {
|
||||
|
||||
val userID = PreferenceHelper.getSponsorBlockUserID()
|
||||
val userAgent = TextUtils.getUserAgent(context)
|
||||
val title = binding.dearrowTitle.text
|
||||
val title = binding.dearrowTitle.selectedItem
|
||||
.takeIf { it.isNotEmpty() && binding.titleCheckbox.isChecked }
|
||||
?.let { DeArrowSubmitTitle(it) }
|
||||
val thumbnail = binding.thumbnailTime.text.toString().parseDurationString()
|
||||
|
@ -38,15 +38,7 @@ class DropdownMenu(
|
||||
get() = adapter.getPosition(binding.autoCompleteTextView.text.toString())
|
||||
set(index) = binding.autoCompleteTextView.setText(adapter.getItem(index), false)
|
||||
|
||||
val text get() = binding.autoCompleteTextView.text.toString()
|
||||
|
||||
override fun setEnabled(enabled: Boolean) {
|
||||
binding.textInputLayout.isEnabled = enabled
|
||||
}
|
||||
|
||||
override fun isEnabled(): Boolean {
|
||||
return binding.textInputLayout.isEnabled
|
||||
}
|
||||
val selectedItem get() = binding.autoCompleteTextView.text.toString()
|
||||
|
||||
var typingEnabled: Boolean
|
||||
set(enabled) {
|
||||
@ -54,6 +46,21 @@ class DropdownMenu(
|
||||
}
|
||||
get() = binding.autoCompleteTextView.inputType != InputType.TYPE_NULL
|
||||
|
||||
override fun setEnabled(enabled: Boolean) {
|
||||
binding.textInputLayout.isEnabled = enabled
|
||||
}
|
||||
|
||||
override fun isEnabled() = binding.textInputLayout.isEnabled
|
||||
|
||||
fun setSelection(item: String) {
|
||||
val itemIndex = items.indexOf(item)
|
||||
if (itemIndex != -1) selectedItemPosition = itemIndex
|
||||
}
|
||||
|
||||
fun getSelectionIfNotFirst(): String? {
|
||||
return selectedItem.takeIf { selectedItemPosition != 0 }
|
||||
}
|
||||
|
||||
init {
|
||||
context.obtainStyledAttributes(attributeSet, R.styleable.DropdownMenu, 0, 0).use {
|
||||
binding.textInputLayout.hint = it.getString(R.styleable.DropdownMenu_hint)
|
||||
|
Loading…
x
Reference in New Issue
Block a user