Play episodes

This commit is contained in:
Jarne Demeulemeester 2021-07-11 17:41:36 +02:00
parent e69a653453
commit 5ee1cbf340
No known key found for this signature in database
GPG key ID: 60884A0C1EBA43E5
3 changed files with 29 additions and 1 deletions

View file

@ -6,11 +6,13 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.databinding.EpisodeBottomSheetBinding
import dev.jdtech.jellyfin.viewmodels.EpisodeBottomSheetViewModel
import java.util.*
@AndroidEntryPoint
class EpisodeBottomSheetFragment : BottomSheetDialogFragment() {
@ -29,11 +31,20 @@ class EpisodeBottomSheetFragment : BottomSheetDialogFragment() {
binding.lifecycleOwner = this
binding.viewModel = viewModel
binding.playButton.setOnClickListener {
viewModel.mediaSources.value?.get(0)?.id?.let { mediaSourceId ->
navigateToPlayerActivity(args.episodeId,
mediaSourceId
)
}
}
viewModel.item.observe(viewLifecycleOwner, { episode ->
if (episode.userData?.playedPercentage != null) {
binding.progressBar.layoutParams.width = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
(episode.userData?.playedPercentage?.times(1.26))!!.toFloat(), context?.resources?.displayMetrics
(episode.userData?.playedPercentage?.times(1.26))!!.toFloat(),
context?.resources?.displayMetrics
).toInt()
binding.progressBar.visibility = View.VISIBLE
}
@ -43,4 +54,13 @@ class EpisodeBottomSheetFragment : BottomSheetDialogFragment() {
return binding.root
}
private fun navigateToPlayerActivity(itemId: UUID, mediaSourceId: String) {
findNavController().navigate(
EpisodeBottomSheetFragmentDirections.actionEpisodeBottomSheetFragmentToPlayerActivity(
itemId,
mediaSourceId
)
)
}
}

View file

@ -9,6 +9,7 @@ import dagger.hilt.android.lifecycle.HiltViewModel
import dev.jdtech.jellyfin.repository.JellyfinRepository
import kotlinx.coroutines.launch
import org.jellyfin.sdk.model.api.BaseItemDto
import org.jellyfin.sdk.model.api.MediaSourceInfo
import java.text.DateFormat
import java.time.ZoneOffset
import java.util.*
@ -30,11 +31,15 @@ constructor(
private val _dateString = MutableLiveData<String>()
val dateString: LiveData<String> = _dateString
private val _mediaSources = MutableLiveData<List<MediaSourceInfo>>()
val mediaSources: LiveData<List<MediaSourceInfo>> = _mediaSources
fun loadEpisode(episodeId: UUID) {
viewModelScope.launch {
_item.value = jellyfinRepository.getItem(episodeId)
_runTime.value = "${_item.value?.runTimeTicks?.div(600000000)} min"
_dateString.value = getDateString(_item.value!!)
_mediaSources.value = jellyfinRepository.getMediaSources(episodeId)
}
}

View file

@ -128,6 +128,9 @@
<argument
android:name="episodeId"
app:argType="java.util.UUID" />
<action
android:id="@+id/action_episodeBottomSheetFragment_to_playerActivity"
app:destination="@id/playerActivity" />
</dialog>
<activity
android:id="@+id/playerActivity"