From 54f0b457f5eb88f44420844da3499f950b57f3a3 Mon Sep 17 00:00:00 2001 From: Jarne Demeulemeester Date: Thu, 29 Dec 2022 14:08:30 +0100 Subject: [PATCH] Convert TrackType to kotlin enum --- .../dialogs/TrackSelectionDialogFragment.kt | 2 +- .../java/dev/jdtech/jellyfin/mpv/MPVPlayer.kt | 12 +++++------- .../java/dev/jdtech/jellyfin/mpv/TrackType.java | 14 -------------- .../java/dev/jdtech/jellyfin/mpv/TrackType.kt | 7 +++++++ .../dev/jdtech/jellyfin/tv/TvPlayerActivity.kt | 3 ++- .../jdtech/jellyfin/tv/ui/TrackSelectorAdapter.kt | 15 +++------------ .../viewmodels/PlayerActivityViewModel.kt | 3 ++- 7 files changed, 20 insertions(+), 36 deletions(-) delete mode 100644 app/src/main/java/dev/jdtech/jellyfin/mpv/TrackType.java create mode 100644 app/src/main/java/dev/jdtech/jellyfin/mpv/TrackType.kt diff --git a/app/src/main/java/dev/jdtech/jellyfin/dialogs/TrackSelectionDialogFragment.kt b/app/src/main/java/dev/jdtech/jellyfin/dialogs/TrackSelectionDialogFragment.kt index 61e3a21e..52220018 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/dialogs/TrackSelectionDialogFragment.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/dialogs/TrackSelectionDialogFragment.kt @@ -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 { diff --git a/app/src/main/java/dev/jdtech/jellyfin/mpv/MPVPlayer.kt b/app/src/main/java/dev/jdtech/jellyfin/mpv/MPVPlayer.kt index 19c10e6e..a34e1b38 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/mpv/MPVPlayer.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/mpv/MPVPlayer.kt @@ -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()) { diff --git a/app/src/main/java/dev/jdtech/jellyfin/mpv/TrackType.java b/app/src/main/java/dev/jdtech/jellyfin/mpv/TrackType.java deleted file mode 100644 index 0122b18e..00000000 --- a/app/src/main/java/dev/jdtech/jellyfin/mpv/TrackType.java +++ /dev/null @@ -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"; -} diff --git a/app/src/main/java/dev/jdtech/jellyfin/mpv/TrackType.kt b/app/src/main/java/dev/jdtech/jellyfin/mpv/TrackType.kt new file mode 100644 index 00000000..acf0c65f --- /dev/null +++ b/app/src/main/java/dev/jdtech/jellyfin/mpv/TrackType.kt @@ -0,0 +1,7 @@ +package dev.jdtech.jellyfin.mpv + +enum class TrackType(val type: String) { + VIDEO("video"), + AUDIO("audio"), + SUBTITLE("sub") +} \ No newline at end of file diff --git a/app/src/main/java/dev/jdtech/jellyfin/tv/TvPlayerActivity.kt b/app/src/main/java/dev/jdtech/jellyfin/tv/TvPlayerActivity.kt index 6029e9b5..edafe527 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/tv/TvPlayerActivity.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/tv/TvPlayerActivity.kt @@ -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, - type: String + type: TrackType ): PopupWindow { val popup = PopupWindow(this.context) popup.contentView = LayoutInflater.from(context).inflate(R.layout.track_selector, null) diff --git a/app/src/main/java/dev/jdtech/jellyfin/tv/ui/TrackSelectorAdapter.kt b/app/src/main/java/dev/jdtech/jellyfin/tv/ui/TrackSelectorAdapter.kt index ffe127a1..7bda1daf 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/tv/ui/TrackSelectorAdapter.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/tv/ui/TrackSelectorAdapter.kt @@ -13,7 +13,7 @@ import dev.jdtech.jellyfin.viewmodels.PlayerActivityViewModel class TrackSelectorAdapter( private val items: List, private val viewModel: PlayerActivityViewModel, - private val trackType: String, + private val trackType: TrackType, private val dismissWindow: () -> Unit ) : RecyclerView.Adapter() { @@ -34,7 +34,7 @@ class TrackSelectorAdapter( fun bind( item: Track, viewModel: PlayerActivityViewModel, - trackType: String, + trackType: TrackType, dismissWindow: () -> Unit ) { view.findViewById