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