From f2fce67454581a04b8245acc04a495ac81ac8d96 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Sat, 21 Jan 2023 18:31:50 +0100 Subject: [PATCH 1/2] [Audio Player] Auto scroll the title and uploader --- .../libretube/ui/fragments/AudioPlayerFragment.kt | 4 ++++ app/src/main/res/layout/fragment_audio_player.xml | 8 ++------ app/src/main/res/values/style.xml | 12 ++++++++++++ 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/github/libretube/ui/fragments/AudioPlayerFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/AudioPlayerFragment.kt index f5d1b6b7c..69f3e3cad 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/AudioPlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/AudioPlayerFragment.kt @@ -80,6 +80,10 @@ class AudioPlayerFragment : BaseFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + // select the title TV in order for it to automatically scroll + binding.title.isSelected = true + binding.uploader.isSelected = true + binding.prev.setOnClickListener { val currentIndex = PlayingQueue.currentIndex() if (!PlayingQueue.hasPrev()) return@setOnClickListener diff --git a/app/src/main/res/layout/fragment_audio_player.xml b/app/src/main/res/layout/fragment_audio_player.xml index 26728e965..40c1b5a1a 100644 --- a/app/src/main/res/layout/fragment_audio_player.xml +++ b/app/src/main/res/layout/fragment_audio_player.xml @@ -39,21 +39,17 @@ diff --git a/app/src/main/res/values/style.xml b/app/src/main/res/values/style.xml index 488986625..043068972 100644 --- a/app/src/main/res/values/style.xml +++ b/app/src/main/res/values/style.xml @@ -239,11 +239,23 @@ + + \ No newline at end of file From c3b08ef5f608bcc129641abf7b8d16bca8b2adfe Mon Sep 17 00:00:00 2001 From: Bnyro Date: Sat, 21 Jan 2023 18:44:45 +0100 Subject: [PATCH 2/2] Improve behavior when seeking to next video --- .../libretube/ui/fragments/AudioPlayerFragment.kt | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/github/libretube/ui/fragments/AudioPlayerFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/AudioPlayerFragment.kt index 69f3e3cad..18b2c124f 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/AudioPlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/AudioPlayerFragment.kt @@ -179,25 +179,24 @@ class AudioPlayerFragment : BaseFragment() { * Update the position, duration and text views belonging to the seek bar */ private fun updateSeekBar() { - val duration = playerService?.getDuration()?.toFloat() ?: return - - // when the video is not loaded yet, retry in 100 ms - if (duration <= 0) { + val duration = playerService?.getDuration()?.takeIf { it > 0 } ?: let { + // if there's no duration available, clear everything + binding.timeBar.value = 0f + binding.duration.text = "" + binding.currentPosition.text = "" handler.postDelayed(this::updateSeekBar, 100) return } - - // get the current position from the player service val currentPosition = playerService?.getCurrentPosition()?.toFloat() ?: 0f // set the text for the indicators - binding.duration.text = DateUtils.formatElapsedTime((duration / 1000).toLong()) + binding.duration.text = DateUtils.formatElapsedTime(duration / 1000) binding.currentPosition.text = DateUtils.formatElapsedTime( (currentPosition / 1000).toLong() ) // update the time bar current value and maximum value - binding.timeBar.valueTo = duration / 1000 + binding.timeBar.valueTo = (duration / 1000).toFloat() binding.timeBar.value = minOf( currentPosition / 1000, binding.timeBar.valueTo