Merge pull request #2921 from faisalcodes/master

Fixes: Showing progress for unwatched videos.
This commit is contained in:
Bnyro 2023-01-31 15:37:43 +01:00 committed by GitHub
commit 2d4c616111
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 41 additions and 48 deletions

View File

@ -84,9 +84,7 @@ class PlaylistAdapter(
if (!streamItem.uploaderUrl.isNullOrBlank()) {
channelContainer.setOnClickListener {
streamItem.uploaderUrl?.toID()?.let {
NavigationHelper.navigateChannel(root.context, it)
}
NavigationHelper.navigateChannel(root.context, streamItem.uploaderUrl.toID())
}
}
@ -96,7 +94,7 @@ class PlaylistAdapter(
removeFromPlaylist(root.context, position)
}
}
watchProgress.setWatchProgressLength(videoId, streamItem.duration!!)
watchProgress.setWatchProgressLength(videoId, streamItem.duration)
}
}

View File

@ -1,8 +1,7 @@
package com.github.libretube.ui.extensions
import android.view.View
import android.view.ViewTreeObserver
import android.widget.LinearLayout
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.view.updateLayoutParams
import com.github.libretube.db.DatabaseHolder.Companion.Database
import com.github.libretube.extensions.awaitQuery
@ -13,8 +12,11 @@ import com.github.libretube.extensions.awaitQuery
* @param duration The duration of the video in seconds
* @return Whether the video is already watched more than 90%
*/
fun View?.setWatchProgressLength(videoId: String, duration: Long): Boolean {
val view = this!!
fun View.setWatchProgressLength(videoId: String, duration: Long): Boolean {
updateLayoutParams<ConstraintLayout.LayoutParams> {
matchConstraintPercentWidth = 0f
}
visibility = View.GONE
val progress = try {
awaitQuery {
@ -26,22 +28,13 @@ fun View?.setWatchProgressLength(videoId: String, duration: Long): Boolean {
?.toFloat()?.div(1000)
if (progress == null || duration == 0L) {
view.visibility = View.GONE
return false
}
view.viewTreeObserver
.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
override fun onGlobalLayout() {
this@setWatchProgressLength.viewTreeObserver.removeOnGlobalLayoutListener(this)
val fullWidth = (parent as LinearLayout).width
val newWidth = fullWidth * (progress / duration.toFloat())
view.updateLayoutParams {
width = newWidth.toInt()
updateLayoutParams<ConstraintLayout.LayoutParams> {
matchConstraintPercentWidth = progress / duration.toFloat()
}
view.visibility = View.VISIBLE
}
})
visibility = View.VISIBLE
return progress / duration.toFloat() > 0.9
}

View File

@ -20,17 +20,16 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/thumbnail"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:orientation="vertical">
<androidx.cardview.widget.CardView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@ -39,7 +38,9 @@
android:layout_marginBottom="5dp"
app:cardBackgroundColor="@color/duration_background_color"
app:cardCornerRadius="8dp"
app:cardElevation="0dp">
app:cardElevation="0dp"
app:layout_constraintBottom_toTopOf="@id/watch_progress"
app:layout_constraintEnd_toEndOf="parent">
<TextView
android:id="@+id/thumbnail_duration"
@ -55,10 +56,11 @@
<View
android:id="@+id/watch_progress"
style="@style/WatchProgress"
android:layout_height="5dp" />
</LinearLayout>
android:layout_height="5dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>

View File

@ -25,18 +25,16 @@
app:layout_constraintVertical_bias="0.0"
app:strokeWidth="0dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/thumbnail"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:srcCompat="@tools:sample/backgrounds/scenic" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:orientation="vertical">
<androidx.cardview.widget.CardView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@ -45,7 +43,9 @@
android:layout_marginBottom="5dp"
app:cardBackgroundColor="@color/duration_background_color"
app:cardCornerRadius="8dp"
app:cardElevation="0dp">
app:cardElevation="0dp"
app:layout_constraintBottom_toTopOf="@id/watch_progress"
app:layout_constraintEnd_toEndOf="parent">
<TextView
android:id="@+id/thumbnail_duration"
@ -61,9 +61,10 @@
<View
android:id="@+id/watch_progress"
style="@style/WatchProgress" />
</LinearLayout>
style="@style/WatchProgress"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>

View File

@ -137,9 +137,8 @@
<style name="WatchProgress">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">4dp</item>
<item name="android:layout_gravity">bottom</item>
<item name="android:background">?attr/colorPrimaryDark</item>
<item name="android:visibility">gone</item>