Convert TrackType to kotlin enum
This commit is contained in:
parent
f996783a82
commit
54f0b457f5
7 changed files with 20 additions and 36 deletions
|
@ -11,7 +11,7 @@ import dev.jdtech.jellyfin.viewmodels.PlayerActivityViewModel
|
|||
import java.lang.IllegalStateException
|
||||
|
||||
class TrackSelectionDialogFragment(
|
||||
private val type: String,
|
||||
private val type: TrackType,
|
||||
private val viewModel: PlayerActivityViewModel
|
||||
) : DialogFragment() {
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||
|
|
|
@ -365,13 +365,13 @@ class MPVPlayer(
|
|||
* @return true if the track is or was already selected
|
||||
*/
|
||||
fun selectTrack(
|
||||
@TrackType trackType: String,
|
||||
trackType: TrackType,
|
||||
id: Int
|
||||
) {
|
||||
if (id != C.INDEX_UNSET) {
|
||||
MPVLib.setPropertyInt(trackType, id)
|
||||
MPVLib.setPropertyInt(trackType.type, id)
|
||||
} else {
|
||||
MPVLib.setPropertyString(trackType, "no")
|
||||
MPVLib.setPropertyString(trackType.type, "no")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1310,12 +1310,11 @@ class MPVPlayer(
|
|||
@Parcelize
|
||||
data class Track(
|
||||
val id: Int,
|
||||
@TrackType val type: String,
|
||||
val type: TrackType,
|
||||
val mimeType: String = when (type) {
|
||||
TrackType.VIDEO -> MimeTypes.BASE_TYPE_VIDEO
|
||||
TrackType.AUDIO -> MimeTypes.BASE_TYPE_AUDIO
|
||||
TrackType.SUBTITLE -> MimeTypes.BASE_TYPE_TEXT
|
||||
else -> ""
|
||||
},
|
||||
val title: String,
|
||||
val lang: String,
|
||||
|
@ -1342,7 +1341,7 @@ class MPVPlayer(
|
|||
fun fromJSON(json: JSONObject): Track {
|
||||
return Track(
|
||||
id = json.optInt("id"),
|
||||
type = json.optString("type"),
|
||||
type = TrackType.values().first { it.type == json.optString("type") },
|
||||
title = json.optString("title"),
|
||||
lang = json.optString("lang"),
|
||||
external = json.getBoolean("external"),
|
||||
|
@ -1411,7 +1410,6 @@ class MPVPlayer(
|
|||
indexCurrentText = trackListText.indexOf(currentFormat)
|
||||
}
|
||||
}
|
||||
else -> continue
|
||||
}
|
||||
}
|
||||
if (trackListText.size == 1 && trackListText[0].id == emptyTrack.id.toString()) {
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
package dev.jdtech.jellyfin.mpv;
|
||||
|
||||
import androidx.annotation.StringDef;
|
||||
|
||||
@StringDef({
|
||||
TrackType.VIDEO,
|
||||
TrackType.AUDIO,
|
||||
TrackType.SUBTITLE,
|
||||
})
|
||||
public @interface TrackType {
|
||||
String VIDEO = "video";
|
||||
String AUDIO = "audio";
|
||||
String SUBTITLE = "sub";
|
||||
}
|
7
app/src/main/java/dev/jdtech/jellyfin/mpv/TrackType.kt
Normal file
7
app/src/main/java/dev/jdtech/jellyfin/mpv/TrackType.kt
Normal file
|
@ -0,0 +1,7 @@
|
|||
package dev.jdtech.jellyfin.mpv
|
||||
|
||||
enum class TrackType(val type: String) {
|
||||
VIDEO("video"),
|
||||
AUDIO("audio"),
|
||||
SUBTITLE("sub")
|
||||
}
|
|
@ -19,6 +19,7 @@ import dev.jdtech.jellyfin.PlayerActivityArgs
|
|||
import dev.jdtech.jellyfin.R
|
||||
import dev.jdtech.jellyfin.databinding.ActivityPlayerTvBinding
|
||||
import dev.jdtech.jellyfin.mpv.MPVPlayer
|
||||
import dev.jdtech.jellyfin.mpv.TrackType
|
||||
import dev.jdtech.jellyfin.mpv.TrackType.AUDIO
|
||||
import dev.jdtech.jellyfin.mpv.TrackType.SUBTITLE
|
||||
import dev.jdtech.jellyfin.tv.ui.TrackSelectorAdapter
|
||||
|
@ -134,7 +135,7 @@ internal class TvPlayerActivity : BasePlayerActivity() {
|
|||
|
||||
private fun View.showPopupWindowAbove(
|
||||
items: List<TrackSelectorAdapter.Track>,
|
||||
type: String
|
||||
type: TrackType
|
||||
): PopupWindow {
|
||||
val popup = PopupWindow(this.context)
|
||||
popup.contentView = LayoutInflater.from(context).inflate(R.layout.track_selector, null)
|
||||
|
|
|
@ -13,7 +13,7 @@ import dev.jdtech.jellyfin.viewmodels.PlayerActivityViewModel
|
|||
class TrackSelectorAdapter(
|
||||
private val items: List<Track>,
|
||||
private val viewModel: PlayerActivityViewModel,
|
||||
private val trackType: String,
|
||||
private val trackType: TrackType,
|
||||
private val dismissWindow: () -> Unit
|
||||
) : RecyclerView.Adapter<TrackSelectorAdapter.TrackSelectorViewHolder>() {
|
||||
|
||||
|
@ -34,7 +34,7 @@ class TrackSelectorAdapter(
|
|||
fun bind(
|
||||
item: Track,
|
||||
viewModel: PlayerActivityViewModel,
|
||||
trackType: String,
|
||||
trackType: TrackType,
|
||||
dismissWindow: () -> Unit
|
||||
) {
|
||||
view.findViewById<Button>(R.id.track_name).apply {
|
||||
|
@ -45,16 +45,7 @@ class TrackSelectorAdapter(
|
|||
item.codec
|
||||
)
|
||||
setOnClickListener {
|
||||
when (trackType) {
|
||||
TrackType.AUDIO -> viewModel.switchToTrack(
|
||||
TrackType.AUDIO,
|
||||
item.playerTrack
|
||||
)
|
||||
TrackType.SUBTITLE -> viewModel.switchToTrack(
|
||||
TrackType.SUBTITLE,
|
||||
item.playerTrack
|
||||
)
|
||||
}
|
||||
viewModel.switchToTrack(trackType, item.playerTrack)
|
||||
dismissWindow()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -230,6 +230,7 @@ constructor(
|
|||
is MPVPlayer -> {
|
||||
player.currentMpvTracks.forEach {
|
||||
when (it.type) {
|
||||
TrackType.VIDEO -> Unit
|
||||
TrackType.AUDIO -> {
|
||||
currentAudioTracks.add(it)
|
||||
}
|
||||
|
@ -256,7 +257,7 @@ constructor(
|
|||
releasePlayer()
|
||||
}
|
||||
|
||||
fun switchToTrack(trackType: String, track: MPVPlayer.Companion.Track) {
|
||||
fun switchToTrack(trackType: TrackType, track: MPVPlayer.Companion.Track) {
|
||||
if (player is MPVPlayer) {
|
||||
player.selectTrack(trackType, id = track.id)
|
||||
disableSubtitle = track.ffIndex == -1
|
||||
|
|
Loading…
Reference in a new issue