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