From 231fe0d503824e60fe7d83ea9f148a64342cea22 Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Tue, 4 Jul 2023 06:47:50 +0530 Subject: [PATCH] Add segment start and end variable. --- .../com/github/libretube/api/obj/Segment.kt | 4 +++- .../github/libretube/helpers/PlayerHelper.kt | 17 +++++++---------- .../libretube/ui/fragments/PlayerFragment.kt | 12 ++++++------ .../libretube/ui/views/MarkableTimeBar.kt | 6 ++++-- 4 files changed, 20 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/com/github/libretube/api/obj/Segment.kt b/app/src/main/java/com/github/libretube/api/obj/Segment.kt index c1711e417..7b5cfed2d 100644 --- a/app/src/main/java/com/github/libretube/api/obj/Segment.kt +++ b/app/src/main/java/com/github/libretube/api/obj/Segment.kt @@ -13,4 +13,6 @@ data class Segment( val userID: String? = null, val videoDuration: Double? = null, val votes: Int? = null -) +) { + val segmentStartAndEnd = segment[0] to segment[1] +} diff --git a/app/src/main/java/com/github/libretube/helpers/PlayerHelper.kt b/app/src/main/java/com/github/libretube/helpers/PlayerHelper.kt index ccad88b7f..4b0d5330d 100644 --- a/app/src/main/java/com/github/libretube/helpers/PlayerHelper.kt +++ b/app/src/main/java/com/github/libretube/helpers/PlayerHelper.kt @@ -484,8 +484,8 @@ object PlayerHelper { sponsorBlockConfig: MutableMap ): Long? { for (segment in segments.filter { it.category != SPONSOR_HIGHLIGHT_CATEGORY }) { - val segmentStart = (segment.segment[0] * 1000f).toLong() - val segmentEnd = (segment.segment[1] * 1000f).toLong() + val (start, end) = segment.segmentStartAndEnd + val (segmentStart, segmentEnd) = (start * 1000f).toLong() to (end * 1000f).toLong() // avoid seeking to the same segment multiple times, e.g. when the SB segment is at the end of the video if ((duration - currentPosition).absoluteValue < 500) continue @@ -507,15 +507,12 @@ object PlayerHelper { return null } - fun ExoPlayer.isInSegment( - segments: List - ): Boolean { - for (segment in segments) { - val segmentStart = (segment.segment[0] * 1000f).toLong() - val segmentEnd = (segment.segment[1] * 1000f).toLong() - if (currentPosition in segmentStart..segmentEnd) return true + fun ExoPlayer.isInSegment(segments: List): Boolean { + return segments.any { + val (start, end) = it.segmentStartAndEnd + val (segmentStart, segmentEnd) = (start * 1000f).toLong() to (end * 1000f).toLong() + currentPosition in segmentStart..segmentEnd } - return false } /** diff --git a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt index 101e8899f..dee7b9d5a 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt @@ -1104,14 +1104,14 @@ class PlayerFragment : Fragment(), OnlinePlayerOptions { private fun updateDisplayedDuration() { if (exoPlayer.duration < 0 || streams.livestream || _binding == null) return - playerBinding.duration.text = DateUtils.formatElapsedTime( - exoPlayer.duration.div(1000) - ) + playerBinding.duration.text = + DateUtils.formatElapsedTime(exoPlayer.duration / 1000) if (segments.isEmpty()) return val durationWithSb = DateUtils.formatElapsedTime( - exoPlayer.duration.div(1000) - segments.sumOf { - it.segment[1] - it.segment[0] + (exoPlayer.duration / 1000) - segments.sumOf { + val (start, end) = it.segmentStartAndEnd + end - start }.toInt() ) playerBinding.duration.text = playerBinding.duration.text.toString() + " ($durationWithSb)" @@ -1190,7 +1190,7 @@ class PlayerFragment : Fragment(), OnlinePlayerOptions { val highlightChapter = ChapterSegment( title = getString(R.string.chapters_videoHighlight), image = "", - start = highlight.segment[0].toLong(), + start = highlight.segmentStartAndEnd.first.toLong(), drawable = drawable ) chapters.add(highlightChapter) diff --git a/app/src/main/java/com/github/libretube/ui/views/MarkableTimeBar.kt b/app/src/main/java/com/github/libretube/ui/views/MarkableTimeBar.kt index 2428cc7d7..4aef32d52 100644 --- a/app/src/main/java/com/github/libretube/ui/views/MarkableTimeBar.kt +++ b/app/src/main/java/com/github/libretube/ui/views/MarkableTimeBar.kt @@ -48,11 +48,13 @@ class MarkableTimeBar( val themeColor = ThemeHelper.getThemeColor(context, R.attr.colorOnSecondary) segments.forEach { + val (start, end) = it.segmentStartAndEnd + canvas.drawRect( Rect( - it.segment.first().toLength() + horizontalOffset, + start.toLength() + horizontalOffset, marginY, - it.segment.last().toLength() + horizontalOffset, + end.toLength() + horizontalOffset, canvas.height - marginY ), Paint().apply {