Convert TrackType to kotlin enum

This commit is contained in:
Jarne Demeulemeester 2022-12-29 14:08:30 +01:00
parent f996783a82
commit 54f0b457f5
No known key found for this signature in database
GPG key ID: 65C6006F2032DD14
7 changed files with 20 additions and 36 deletions

View file

@ -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 {

View file

@ -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()) {

View file

@ -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";
}

View file

@ -0,0 +1,7 @@
package dev.jdtech.jellyfin.mpv
enum class TrackType(val type: String) {
VIDEO("video"),
AUDIO("audio"),
SUBTITLE("sub")
}

View file

@ -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)

View file

@ -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()
}
}

View file

@ -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