From 221530d941b4bbfcd31124cdc532106773b9575e Mon Sep 17 00:00:00 2001 From: Bnyro Date: Thu, 11 Aug 2022 12:25:54 +0200 Subject: [PATCH] better handling of thumbnail duration --- .../github/libretube/adapters/PlaylistAdapter.kt | 4 ++-- .../com/github/libretube/adapters/SearchAdapter.kt | 9 ++------- .../github/libretube/adapters/TrendingAdapter.kt | 9 ++------- .../libretube/adapters/WatchHistoryAdapter.kt | 6 +++--- .../libretube/extensions/SetFormattedDuration.kt | 14 ++++++++++++++ .../main/java/com/github/libretube/obj/Streams.kt | 2 +- .../com/github/libretube/obj/WatchHistoryItem.kt | 2 +- app/src/main/res/values/strings.xml | 1 + 8 files changed, 26 insertions(+), 21 deletions(-) create mode 100644 app/src/main/java/com/github/libretube/extensions/SetFormattedDuration.kt diff --git a/app/src/main/java/com/github/libretube/adapters/PlaylistAdapter.kt b/app/src/main/java/com/github/libretube/adapters/PlaylistAdapter.kt index c6f90c022..67db0cdcc 100644 --- a/app/src/main/java/com/github/libretube/adapters/PlaylistAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/PlaylistAdapter.kt @@ -1,7 +1,6 @@ package com.github.libretube.adapters import android.app.Activity -import android.text.format.DateUtils import android.util.Log import android.view.LayoutInflater import android.view.View @@ -10,6 +9,7 @@ import androidx.fragment.app.FragmentManager import androidx.recyclerview.widget.RecyclerView import com.github.libretube.databinding.PlaylistRowBinding import com.github.libretube.dialogs.VideoOptionsDialog +import com.github.libretube.extensions.setFormattedDuration import com.github.libretube.obj.PlaylistId import com.github.libretube.obj.StreamItem import com.github.libretube.preferences.PreferenceHelper @@ -53,7 +53,7 @@ class PlaylistAdapter( holder.binding.apply { playlistTitle.text = streamItem.title playlistDescription.text = streamItem.uploaderName - thumbnailDuration.text = DateUtils.formatElapsedTime(streamItem.duration!!) + thumbnailDuration.setFormattedDuration(streamItem.duration!!) ConnectionHelper.loadImage(streamItem.thumbnail, playlistThumbnail) root.setOnClickListener { NavigationHelper.navigateVideo(root.context, streamItem.url, playlistId) diff --git a/app/src/main/java/com/github/libretube/adapters/SearchAdapter.kt b/app/src/main/java/com/github/libretube/adapters/SearchAdapter.kt index fa48060ea..62213ab41 100644 --- a/app/src/main/java/com/github/libretube/adapters/SearchAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/SearchAdapter.kt @@ -1,6 +1,5 @@ package com.github.libretube.adapters -import android.text.format.DateUtils import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -12,6 +11,7 @@ import com.github.libretube.databinding.PlaylistSearchRowBinding import com.github.libretube.databinding.VideoRowBinding import com.github.libretube.dialogs.PlaylistOptionsDialog import com.github.libretube.dialogs.VideoOptionsDialog +import com.github.libretube.extensions.setFormattedDuration import com.github.libretube.obj.SearchItem import com.github.libretube.util.ConnectionHelper import com.github.libretube.util.NavigationHelper @@ -80,12 +80,7 @@ class SearchAdapter( private fun bindWatch(item: SearchItem, binding: VideoRowBinding) { binding.apply { ConnectionHelper.loadImage(item.thumbnail, thumbnail) - if (item.duration != -1L) { - thumbnailDuration.text = DateUtils.formatElapsedTime(item.duration!!) - } else { - thumbnailDuration.text = root.context.getString(R.string.live) - thumbnailDuration.setBackgroundColor(R.attr.colorPrimaryDark) - } + thumbnailDuration.setFormattedDuration(item.duration!!) ConnectionHelper.loadImage(item.uploaderAvatar, channelImage) videoTitle.text = item.title val viewsString = if (item.views?.toInt() != -1) item.views.formatShort() else "" diff --git a/app/src/main/java/com/github/libretube/adapters/TrendingAdapter.kt b/app/src/main/java/com/github/libretube/adapters/TrendingAdapter.kt index 1d9aba5b5..7fd28718d 100644 --- a/app/src/main/java/com/github/libretube/adapters/TrendingAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/TrendingAdapter.kt @@ -5,9 +5,9 @@ import android.view.LayoutInflater import android.view.ViewGroup import androidx.fragment.app.FragmentManager import androidx.recyclerview.widget.RecyclerView -import com.github.libretube.R import com.github.libretube.databinding.TrendingRowBinding import com.github.libretube.dialogs.VideoOptionsDialog +import com.github.libretube.extensions.setFormattedDuration import com.github.libretube.obj.StreamItem import com.github.libretube.util.ConnectionHelper import com.github.libretube.util.NavigationHelper @@ -49,12 +49,7 @@ class TrendingAdapter( trending.uploaderName + " • " + trending.views.formatShort() + " • " + DateUtils.getRelativeTimeSpanString(trending.uploaded!!) - if (trending.duration != -1L) { - thumbnailDuration.text = DateUtils.formatElapsedTime(trending.duration!!) - } else { - thumbnailDuration.text = root.context.getString(R.string.live) - thumbnailDuration.setBackgroundColor(R.attr.colorPrimaryDark) - } + thumbnailDuration.setFormattedDuration(trending.duration!!) channelImage.setOnClickListener { NavigationHelper.navigateChannel(root.context, trending.uploaderUrl) } diff --git a/app/src/main/java/com/github/libretube/adapters/WatchHistoryAdapter.kt b/app/src/main/java/com/github/libretube/adapters/WatchHistoryAdapter.kt index b3a8f1b5b..5ff8604b4 100644 --- a/app/src/main/java/com/github/libretube/adapters/WatchHistoryAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/WatchHistoryAdapter.kt @@ -1,12 +1,12 @@ package com.github.libretube.adapters -import android.text.format.DateUtils import android.view.LayoutInflater import android.view.ViewGroup import androidx.fragment.app.FragmentManager import androidx.recyclerview.widget.RecyclerView import com.github.libretube.databinding.WatchHistoryRowBinding import com.github.libretube.dialogs.VideoOptionsDialog +import com.github.libretube.extensions.setFormattedDuration import com.github.libretube.obj.WatchHistoryItem import com.github.libretube.preferences.PreferenceHelper import com.github.libretube.util.ConnectionHelper @@ -32,7 +32,7 @@ class WatchHistoryAdapter( videoTitle.text = video.title channelName.text = video.uploader videoInfo.text = video.uploadDate - thumbnailDuration.text = DateUtils.formatElapsedTime(video.duration?.toLong()!!) + thumbnailDuration.setFormattedDuration(video.duration!!) ConnectionHelper.loadImage(video.thumbnailUrl, thumbnail) ConnectionHelper.loadImage(video.uploaderAvatar, channelImage) @@ -55,7 +55,7 @@ class WatchHistoryAdapter( true } - watchProgress.setWatchProgressLength(video.videoId!!, video.duration.toLong()) + watchProgress.setWatchProgressLength(video.videoId!!, video.duration) } } diff --git a/app/src/main/java/com/github/libretube/extensions/SetFormattedDuration.kt b/app/src/main/java/com/github/libretube/extensions/SetFormattedDuration.kt new file mode 100644 index 000000000..0551ee066 --- /dev/null +++ b/app/src/main/java/com/github/libretube/extensions/SetFormattedDuration.kt @@ -0,0 +1,14 @@ +package com.github.libretube.extensions + +import android.text.format.DateUtils +import android.widget.TextView +import com.github.libretube.R + +fun TextView?.setFormattedDuration(duration: Long) { + val text = if (duration < 0L) { + this!!.setBackgroundColor(R.attr.colorPrimaryDark) + this.context.getString(R.string.live) + } else if (duration == 0L) this!!.context.getString(R.string.yt_shorts) + else DateUtils.formatElapsedTime(duration) + this!!.text = text +} diff --git a/app/src/main/java/com/github/libretube/obj/Streams.kt b/app/src/main/java/com/github/libretube/obj/Streams.kt index 34613b73e..b497859ac 100644 --- a/app/src/main/java/com/github/libretube/obj/Streams.kt +++ b/app/src/main/java/com/github/libretube/obj/Streams.kt @@ -15,7 +15,7 @@ data class Streams( val dash: String?, val lbryId: String?, val uploaderVerified: Boolean?, - val duration: Int?, + val duration: Long?, val views: Long?, val likes: Long?, val dislikes: Long?, diff --git a/app/src/main/java/com/github/libretube/obj/WatchHistoryItem.kt b/app/src/main/java/com/github/libretube/obj/WatchHistoryItem.kt index 2e6d047f9..f8b436d5f 100644 --- a/app/src/main/java/com/github/libretube/obj/WatchHistoryItem.kt +++ b/app/src/main/java/com/github/libretube/obj/WatchHistoryItem.kt @@ -8,5 +8,5 @@ data class WatchHistoryItem( val uploaderUrl: String? = null, val uploaderAvatar: String? = null, val thumbnailUrl: String? = null, - val duration: Int? = null + val duration: Long? = null ) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2f3ec6ca5..3c8b69fe1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -302,4 +302,5 @@ Break reminder Time to take a break You already spent %1$s minutes in the app, time to take a break. + Shorts