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 import kotlinx.coroutines.launch
class PlaylistAdapter( class PlaylistAdapter(
private val videoFeed: MutableList<StreamItem>, private val videoFeed: MutableList<StreamItem>,
private val playlistId: String, private val playlistId: String,
private val playlistType: PlaylistType private val playlistType: PlaylistType
) : RecyclerView.Adapter<PlaylistViewHolder>() { ) : RecyclerView.Adapter<PlaylistViewHolder>() {
var visibleCount = minOf(20, videoFeed.size) var visibleCount = minOf(20, videoFeed.size)
@ -84,9 +84,7 @@ class PlaylistAdapter(
if (!streamItem.uploaderUrl.isNullOrBlank()) { if (!streamItem.uploaderUrl.isNullOrBlank()) {
channelContainer.setOnClickListener { channelContainer.setOnClickListener {
streamItem.uploaderUrl?.toID()?.let { NavigationHelper.navigateChannel(root.context, streamItem.uploaderUrl.toID())
NavigationHelper.navigateChannel(root.context, it)
}
} }
} }
@ -96,7 +94,7 @@ class PlaylistAdapter(
removeFromPlaylist(root.context, position) 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 package com.github.libretube.ui.extensions
import android.view.View import android.view.View
import android.view.ViewTreeObserver import androidx.constraintlayout.widget.ConstraintLayout
import android.widget.LinearLayout
import androidx.core.view.updateLayoutParams import androidx.core.view.updateLayoutParams
import com.github.libretube.db.DatabaseHolder.Companion.Database import com.github.libretube.db.DatabaseHolder.Companion.Database
import com.github.libretube.extensions.awaitQuery import com.github.libretube.extensions.awaitQuery
@ -16,6 +15,13 @@ import com.github.libretube.extensions.awaitQuery
fun View?.setWatchProgressLength(videoId: String, duration: Long): Boolean { fun View?.setWatchProgressLength(videoId: String, duration: Long): Boolean {
val view = this!! val view = this!!
view.apply {
updateLayoutParams<ConstraintLayout.LayoutParams> {
matchConstraintPercentWidth = 0f
}
visibility = View.GONE
}
val progress = try { val progress = try {
awaitQuery { awaitQuery {
Database.watchPositionDao().findById(videoId)?.position Database.watchPositionDao().findById(videoId)?.position
@ -26,22 +32,15 @@ fun View?.setWatchProgressLength(videoId: String, duration: Long): Boolean {
?.toFloat()?.div(1000) ?.toFloat()?.div(1000)
if (progress == null || duration == 0L) { if (progress == null || duration == 0L) {
view.visibility = View.GONE
return false return false
} }
view.viewTreeObserver view.apply {
.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener { updateLayoutParams<ConstraintLayout.LayoutParams> {
override fun onGlobalLayout() { matchConstraintPercentWidth = (progress / duration.toFloat())
this@setWatchProgressLength.viewTreeObserver.removeOnGlobalLayoutListener(this) }
val fullWidth = (parent as LinearLayout).width visibility = View.VISIBLE
val newWidth = fullWidth * (progress / duration.toFloat()) }
view.updateLayoutParams {
width = newWidth.toInt()
}
view.visibility = View.VISIBLE
}
})
return progress / duration.toFloat() > 0.9 return progress / duration.toFloat() > 0.9
} }

View File

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

View File

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

View File

@ -137,9 +137,8 @@
<style name="WatchProgress"> <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_height">4dp</item>
<item name="android:layout_gravity">bottom</item>
<item name="android:background">?attr/colorPrimaryDark</item> <item name="android:background">?attr/colorPrimaryDark</item>
<item name="android:visibility">gone</item> <item name="android:visibility">gone</item>