This commit is contained in:
faisalcodes 2023-01-31 11:11:00 +05:30
parent f9e96e9b27
commit bd556baa76
5 changed files with 48 additions and 49 deletions

View File

@ -26,9 +26,9 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
class PlaylistAdapter(
private val videoFeed: MutableList<StreamItem>,
private val playlistId: String,
private val playlistType: PlaylistType
private val videoFeed: MutableList<StreamItem>,
private val playlistId: String,
private val playlistType: PlaylistType
) : RecyclerView.Adapter<PlaylistViewHolder>() {
var visibleCount = minOf(20, videoFeed.size)
@ -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
@ -16,6 +15,13 @@ import com.github.libretube.extensions.awaitQuery
fun View?.setWatchProgressLength(videoId: String, duration: Long): Boolean {
val view = this!!
view.apply {
updateLayoutParams<ConstraintLayout.LayoutParams> {
matchConstraintPercentWidth = 0f
}
visibility = View.GONE
}
val progress = try {
awaitQuery {
Database.watchPositionDao().findById(videoId)?.position
@ -26,22 +32,15 @@ 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()
}
view.visibility = View.VISIBLE
}
})
view.apply {
updateLayoutParams<ConstraintLayout.LayoutParams> {
matchConstraintPercentWidth = (progress / duration.toFloat())
}
visibility = View.VISIBLE
}
return progress / duration.toFloat() > 0.9
}

View File

@ -20,16 +20,15 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/thumbnail"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<LinearLayout
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:orientation="vertical">
android:layout_height="match_parent">
<ImageView
android:id="@+id/thumbnail"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<androidx.cardview.widget.CardView
android:layout_width="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,17 +25,15 @@
app:layout_constraintVertical_bias="0.0"
app:strokeWidth="0dp">
<ImageView
android:id="@+id/thumbnail"
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:srcCompat="@tools:sample/backgrounds/scenic" />
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:orientation="vertical">
<ImageView
android:id="@+id/thumbnail"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:srcCompat="@tools:sample/backgrounds/scenic" />
<androidx.cardview.widget.CardView
android:layout_width="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>