add language settings to player [Part 1]
This commit is contained in:
@ -250,7 +250,11 @@ object AoDParser {
|
||||
|
||||
// if highlights is empty, add a random new title
|
||||
if (highlightsList.isEmpty()) {
|
||||
highlightsList.add(newTitlesList[Random.nextInt(0, newTitlesList.size)])
|
||||
if (newTitlesList.isNotEmpty()) {
|
||||
highlightsList.add(newTitlesList[Random.nextInt(0, newTitlesList.size)])
|
||||
} else {
|
||||
highlightsList.add(ItemMedia(0,"", ""))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -30,6 +30,7 @@ import kotlinx.coroutines.withContext
|
||||
import org.mosad.teapod.R
|
||||
import org.mosad.teapod.preferences.Preferences
|
||||
import org.mosad.teapod.ui.components.EpisodesListPlayer
|
||||
import org.mosad.teapod.ui.components.LanguageSettingsPlayer
|
||||
import org.mosad.teapod.util.DataTypes
|
||||
import java.util.*
|
||||
import java.util.concurrent.TimeUnit
|
||||
@ -192,8 +193,9 @@ class PlayerActivity : AppCompatActivity() {
|
||||
rwd_10.setOnButtonClickListener { rewind() }
|
||||
ffwd_10.setOnButtonClickListener { fastForward() }
|
||||
button_next_ep.setOnClickListener { playNextEpisode() }
|
||||
button_next_ep_c.setOnClickListener { playNextEpisode() }
|
||||
button_language.setOnClickListener { showLanguageSettings() }
|
||||
button_episodes.setOnClickListener { showEpisodesList() }
|
||||
button_next_ep_c.setOnClickListener { playNextEpisode() }
|
||||
}
|
||||
|
||||
private fun initTimeUpdates() {
|
||||
@ -395,6 +397,17 @@ class PlayerActivity : AppCompatActivity() {
|
||||
}
|
||||
player_layout.addView(episodesList)
|
||||
|
||||
// hide player controls and pause playback
|
||||
player.pause()
|
||||
controller.hide()
|
||||
}
|
||||
|
||||
private fun showLanguageSettings() {
|
||||
val languageSettings = LanguageSettingsPlayer(this, model = model).apply {
|
||||
onViewRemovedAction = { player.play() }
|
||||
}
|
||||
player_layout.addView(languageSettings)
|
||||
|
||||
// hide player controls and pause playback
|
||||
player.pause()
|
||||
controller.hideImmediately()
|
||||
|
@ -65,6 +65,10 @@ class PlayerViewModel : ViewModel() {
|
||||
}
|
||||
}
|
||||
|
||||
fun changeLanguage(id: Int) {
|
||||
println("new Language is ABC with id $id")
|
||||
}
|
||||
|
||||
/**
|
||||
* update currentEpisode, episodeId, nextEpisode to new episode
|
||||
* updateWatchedState for the next (now current) episode
|
||||
|
@ -0,0 +1,64 @@
|
||||
package org.mosad.teapod.ui.components
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
import android.graphics.Typeface
|
||||
import android.util.AttributeSet
|
||||
import android.util.TypedValue
|
||||
import android.view.Gravity
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.TextView
|
||||
import org.mosad.teapod.R
|
||||
import org.mosad.teapod.databinding.PlayerLanguageSettingsBinding
|
||||
import org.mosad.teapod.player.PlayerViewModel
|
||||
|
||||
class LanguageSettingsPlayer @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
defStyleAttr: Int = 0,
|
||||
model: PlayerViewModel? = null
|
||||
) : LinearLayout(context, attrs, defStyleAttr) {
|
||||
|
||||
private val binding = PlayerLanguageSettingsBinding.inflate(LayoutInflater.from(context), this, true)
|
||||
var onViewRemovedAction: (() -> Unit)? = null // TODO find a better solution for this
|
||||
|
||||
init {
|
||||
addLanguage("primary", true) { model?.changeLanguage(0) }
|
||||
addLanguage("secondary", false ) { model?.changeLanguage(1) }
|
||||
|
||||
binding.buttonCloseLanguageSettings.setOnClickListener { close() }
|
||||
binding.buttonCancel.setOnClickListener { close() }
|
||||
}
|
||||
|
||||
private fun addLanguage(str: String, isSelected: Boolean, onClick: OnClickListener) {
|
||||
val text = TextView(context).apply {
|
||||
height = 96
|
||||
gravity = Gravity.CENTER_VERTICAL
|
||||
text = str
|
||||
setTextSize(TypedValue.COMPLEX_UNIT_SP, 16f)
|
||||
|
||||
if (isSelected) {
|
||||
setTextColor(context.resources.getColor(R.color.exo_white, context.theme))
|
||||
setTypeface(null, Typeface.BOLD)
|
||||
setCompoundDrawablesRelativeWithIntrinsicBounds(R.drawable.ic_baseline_check_24, 0, 0, 0)
|
||||
compoundDrawablesRelative.getOrNull(0)?.setTint(Color.WHITE)
|
||||
compoundDrawablePadding = 12
|
||||
} else {
|
||||
setTextColor(context.resources.getColor(R.color.textPrimaryDark, context.theme))
|
||||
setPadding(75, 0, 0, 0)
|
||||
}
|
||||
|
||||
setOnClickListener(onClick)
|
||||
}
|
||||
|
||||
binding.linearLanguages.addView(text)
|
||||
}
|
||||
|
||||
private fun close() {
|
||||
(this.parent as ViewGroup).removeView(this)
|
||||
onViewRemovedAction?.invoke()
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user