mirror of
https://github.com/libre-tube/LibreTube.git
synced 2025-04-28 07:50:31 +05:30
commit
62d3d9fbbc
@ -9,7 +9,6 @@ const val GITHUB_API_URL = "https://api.github.com/repos/libre-tube/LibreTube/re
|
||||
* Links for the about fragment
|
||||
*/
|
||||
const val WEBSITE_URL = "https://libre-tube.github.io/"
|
||||
const val DONATE_URL = "https://github.com/libre-tube/LibreTube#donate"
|
||||
const val GITHUB_URL = "https://github.com/libre-tube/LibreTube"
|
||||
const val PIPED_GITHUB_URL = "https://github.com/TeamPiped/Piped"
|
||||
const val WEBLATE_URL = "https://hosted.weblate.org/projects/libretube/libretube/"
|
||||
|
@ -27,13 +27,13 @@ import com.github.libretube.constants.IntentData
|
||||
import com.github.libretube.constants.PreferenceKeys
|
||||
import com.github.libretube.databinding.ActivityMainBinding
|
||||
import com.github.libretube.extensions.toID
|
||||
import com.github.libretube.models.PlayerViewModel
|
||||
import com.github.libretube.models.SearchViewModel
|
||||
import com.github.libretube.models.SubscriptionsViewModel
|
||||
import com.github.libretube.services.ClosingService
|
||||
import com.github.libretube.ui.base.BaseActivity
|
||||
import com.github.libretube.ui.dialogs.ErrorDialog
|
||||
import com.github.libretube.ui.fragments.PlayerFragment
|
||||
import com.github.libretube.ui.models.PlayerViewModel
|
||||
import com.github.libretube.ui.models.SearchViewModel
|
||||
import com.github.libretube.ui.models.SubscriptionsViewModel
|
||||
import com.github.libretube.ui.sheets.PlayingQueueSheet
|
||||
import com.github.libretube.util.NavBarHelper
|
||||
import com.github.libretube.util.NetworkHelper
|
||||
|
@ -20,6 +20,7 @@ import com.github.libretube.ui.viewholders.CommentsViewHolder
|
||||
import com.github.libretube.util.ClipboardHelper
|
||||
import com.github.libretube.util.ImageHelper
|
||||
import com.github.libretube.util.NavigationHelper
|
||||
import com.github.libretube.util.TextUtils
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
@ -61,7 +62,7 @@ class CommentsAdapter(
|
||||
root.scaleY = 0.9f
|
||||
}
|
||||
|
||||
commentInfos.text = comment.author.toString() + " • " + comment.commentedTime.toString()
|
||||
commentInfos.text = comment.author.toString() + TextUtils.SEPARATOR + comment.commentedTime.toString()
|
||||
commentText.text = comment.commentText.toString()
|
||||
|
||||
ImageHelper.loadImage(comment.thumbnail, commentorImage)
|
||||
|
@ -13,6 +13,7 @@ import com.github.libretube.obj.DownloadedFile
|
||||
import com.github.libretube.ui.activities.OfflinePlayerActivity
|
||||
import com.github.libretube.ui.viewholders.DownloadsViewHolder
|
||||
import com.github.libretube.util.DownloadHelper
|
||||
import com.github.libretube.util.TextUtils
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import java.io.File
|
||||
|
||||
@ -39,7 +40,7 @@ class DownloadsAdapter(
|
||||
uploaderName.text = it.uploader
|
||||
videoInfo.text = it.views.formatShort() + " " +
|
||||
root.context.getString(R.string.views_placeholder) +
|
||||
" • " + it.uploadDate
|
||||
TextUtils.SEPARATOR + it.uploadDate
|
||||
}
|
||||
|
||||
thumbnailImage.setImageBitmap(file.thumbnail)
|
||||
|
@ -21,6 +21,7 @@ import com.github.libretube.ui.sheets.VideoOptionsBottomSheet
|
||||
import com.github.libretube.ui.viewholders.SearchViewHolder
|
||||
import com.github.libretube.util.ImageHelper
|
||||
import com.github.libretube.util.NavigationHelper
|
||||
import com.github.libretube.util.TextUtils
|
||||
|
||||
class SearchAdapter(
|
||||
private val searchItems: MutableList<ContentItem>,
|
||||
@ -121,7 +122,7 @@ class SearchAdapter(
|
||||
searchViews.text = root.context.getString(
|
||||
R.string.subscribers,
|
||||
item.subscribers.formatShort()
|
||||
) + " • " + root.context.getString(R.string.videoCount, item.videos.toString())
|
||||
) + TextUtils.SEPARATOR + root.context.getString(R.string.videoCount, item.videos.toString())
|
||||
root.setOnClickListener {
|
||||
NavigationHelper.navigateChannel(root.context, item.url)
|
||||
}
|
||||
@ -137,8 +138,8 @@ class SearchAdapter(
|
||||
binding.apply {
|
||||
ImageHelper.loadImage(item.thumbnail, playlistThumbnail)
|
||||
if (item.videos?.toInt() != -1) videoCount.text = item.videos.toString()
|
||||
playlistDescription.text = item.name
|
||||
playlistTitle.text = item.uploaderName
|
||||
playlistTitle.text = item.name
|
||||
playlistDescription.text = item.uploaderName
|
||||
root.setOnClickListener {
|
||||
NavigationHelper.navigatePlaylist(root.context, item.url, false)
|
||||
}
|
||||
|
@ -21,6 +21,7 @@ import com.github.libretube.ui.viewholders.VideosViewHolder
|
||||
import com.github.libretube.util.ImageHelper
|
||||
import com.github.libretube.util.NavigationHelper
|
||||
import com.github.libretube.util.PreferenceHelper
|
||||
import com.github.libretube.util.TextUtils
|
||||
|
||||
class VideosAdapter(
|
||||
private val streamItems: MutableList<StreamItem>,
|
||||
@ -79,10 +80,10 @@ class VideosAdapter(
|
||||
holder.trendingRowBinding?.apply {
|
||||
textViewTitle.text = video.title
|
||||
textViewChannel.text =
|
||||
video.uploaderName + " • " +
|
||||
video.uploaderName + TextUtils.SEPARATOR +
|
||||
video.views.formatShort() + " " +
|
||||
root.context.getString(R.string.views_placeholder) +
|
||||
" • " + video.uploaded?.let { DateUtils.getRelativeTimeSpanString(it) }
|
||||
TextUtils.SEPARATOR + video.uploaded?.let { DateUtils.getRelativeTimeSpanString(it) }
|
||||
video.duration?.let { thumbnailDuration.setFormattedDuration(it) }
|
||||
channelImage.setOnClickListener {
|
||||
NavigationHelper.navigateChannel(root.context, video.uploaderUrl)
|
||||
@ -114,7 +115,7 @@ class VideosAdapter(
|
||||
videoInfo.text =
|
||||
video.views.formatShort() + " " +
|
||||
root.context.getString(R.string.views_placeholder) +
|
||||
" • " + video.uploaded?.let { DateUtils.getRelativeTimeSpanString(it) }
|
||||
TextUtils.SEPARATOR + video.uploaded?.let { DateUtils.getRelativeTimeSpanString(it) }
|
||||
|
||||
thumbnailDuration.text =
|
||||
video.duration?.let { DateUtils.formatElapsedTime(it) }
|
||||
|
@ -16,7 +16,7 @@ import com.github.libretube.constants.IntentData
|
||||
import com.github.libretube.databinding.DialogAddtoplaylistBinding
|
||||
import com.github.libretube.extensions.TAG
|
||||
import com.github.libretube.extensions.toastFromMainThread
|
||||
import com.github.libretube.models.PlaylistViewModel
|
||||
import com.github.libretube.ui.models.PlaylistViewModel
|
||||
import com.github.libretube.util.PreferenceHelper
|
||||
import com.github.libretube.util.ThemeHelper
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
|
@ -17,10 +17,10 @@ import com.github.libretube.constants.PreferenceKeys
|
||||
import com.github.libretube.databinding.FragmentLibraryBinding
|
||||
import com.github.libretube.extensions.TAG
|
||||
import com.github.libretube.extensions.toDp
|
||||
import com.github.libretube.models.PlayerViewModel
|
||||
import com.github.libretube.ui.adapters.PlaylistsAdapter
|
||||
import com.github.libretube.ui.base.BaseFragment
|
||||
import com.github.libretube.ui.dialogs.CreatePlaylistDialog
|
||||
import com.github.libretube.ui.models.PlayerViewModel
|
||||
import com.github.libretube.util.PreferenceHelper
|
||||
import retrofit2.HttpException
|
||||
import java.io.IOException
|
||||
|
@ -55,8 +55,6 @@ import com.github.libretube.extensions.query
|
||||
import com.github.libretube.extensions.setupSubscriptionButton
|
||||
import com.github.libretube.extensions.toID
|
||||
import com.github.libretube.extensions.toStreamItem
|
||||
import com.github.libretube.models.PlayerViewModel
|
||||
import com.github.libretube.models.interfaces.OnlinePlayerOptions
|
||||
import com.github.libretube.obj.ShareData
|
||||
import com.github.libretube.services.BackgroundMode
|
||||
import com.github.libretube.services.DownloadService
|
||||
@ -68,6 +66,8 @@ import com.github.libretube.ui.base.BaseFragment
|
||||
import com.github.libretube.ui.dialogs.AddToPlaylistDialog
|
||||
import com.github.libretube.ui.dialogs.DownloadDialog
|
||||
import com.github.libretube.ui.dialogs.ShareDialog
|
||||
import com.github.libretube.ui.interfaces.OnlinePlayerOptions
|
||||
import com.github.libretube.ui.models.PlayerViewModel
|
||||
import com.github.libretube.ui.sheets.BaseBottomSheet
|
||||
import com.github.libretube.ui.sheets.PlayingQueueSheet
|
||||
import com.github.libretube.util.BackgroundHelper
|
||||
@ -76,6 +76,7 @@ import com.github.libretube.util.NowPlayingNotification
|
||||
import com.github.libretube.util.PlayerHelper
|
||||
import com.github.libretube.util.PlayingQueue
|
||||
import com.github.libretube.util.PreferenceHelper
|
||||
import com.github.libretube.util.TextUtils
|
||||
import com.google.android.exoplayer2.C
|
||||
import com.google.android.exoplayer2.DefaultLoadControl
|
||||
import com.google.android.exoplayer2.ExoPlayer
|
||||
@ -765,7 +766,7 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions {
|
||||
binding.apply {
|
||||
playerViewsInfo.text =
|
||||
context?.getString(R.string.views, response.views.formatShort()) +
|
||||
if (!isLive) " • " + response.uploadDate else ""
|
||||
if (!isLive) TextUtils.SEPARATOR + response.uploadDate else ""
|
||||
|
||||
textLike.text = response.likes.formatShort()
|
||||
textDislike.text = response.dislikes.formatShort()
|
||||
|
@ -24,6 +24,7 @@ import com.github.libretube.ui.dialogs.ShareDialog
|
||||
import com.github.libretube.ui.sheets.PlaylistOptionsBottomSheet
|
||||
import com.github.libretube.util.ImageHelper
|
||||
import com.github.libretube.util.NavigationHelper
|
||||
import com.github.libretube.util.TextUtils
|
||||
import retrofit2.HttpException
|
||||
import java.io.IOException
|
||||
|
||||
@ -89,7 +90,7 @@ class PlaylistFragment : BaseFragment() {
|
||||
ImageHelper.loadImage(response.thumbnailUrl, binding.thumbnail)
|
||||
binding.playlistProgress.visibility = View.GONE
|
||||
binding.playlistName.text = response.name
|
||||
binding.playlistInfo.text = response.uploader + " • " + getString(R.string.videoCount, response.videos.toString())
|
||||
binding.playlistInfo.text = response.uploader + TextUtils.SEPARATOR + getString(R.string.videoCount, response.videos.toString())
|
||||
|
||||
// show playlist options
|
||||
binding.optionsMenu.setOnClickListener {
|
||||
@ -127,7 +128,7 @@ class PlaylistFragment : BaseFragment() {
|
||||
RecyclerView.AdapterDataObserver() {
|
||||
override fun onChanged() {
|
||||
binding.playlistInfo.text =
|
||||
binding.playlistInfo.text.split(" • ").first() + " • " + getString(
|
||||
binding.playlistInfo.text.split(TextUtils.SEPARATOR).first() + TextUtils.SEPARATOR + getString(
|
||||
R.string.videoCount,
|
||||
playlistAdapter!!.itemCount.toString()
|
||||
)
|
||||
|
@ -15,11 +15,11 @@ import com.github.libretube.databinding.FragmentSearchBinding
|
||||
import com.github.libretube.db.DatabaseHolder.Companion.Database
|
||||
import com.github.libretube.extensions.TAG
|
||||
import com.github.libretube.extensions.awaitQuery
|
||||
import com.github.libretube.models.SearchViewModel
|
||||
import com.github.libretube.ui.activities.MainActivity
|
||||
import com.github.libretube.ui.adapters.SearchHistoryAdapter
|
||||
import com.github.libretube.ui.adapters.SearchSuggestionsAdapter
|
||||
import com.github.libretube.ui.base.BaseFragment
|
||||
import com.github.libretube.ui.models.SearchViewModel
|
||||
import retrofit2.HttpException
|
||||
import java.io.IOException
|
||||
|
||||
|
@ -12,11 +12,11 @@ import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.github.libretube.R
|
||||
import com.github.libretube.constants.PreferenceKeys
|
||||
import com.github.libretube.databinding.FragmentSubscriptionsBinding
|
||||
import com.github.libretube.models.SubscriptionsViewModel
|
||||
import com.github.libretube.ui.adapters.LegacySubscriptionAdapter
|
||||
import com.github.libretube.ui.adapters.SubscriptionChannelAdapter
|
||||
import com.github.libretube.ui.adapters.VideosAdapter
|
||||
import com.github.libretube.ui.base.BaseFragment
|
||||
import com.github.libretube.ui.models.SubscriptionsViewModel
|
||||
import com.github.libretube.ui.sheets.BaseBottomSheet
|
||||
import com.github.libretube.util.LayoutHelper
|
||||
import com.github.libretube.util.PreferenceHelper
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.github.libretube.models.interfaces
|
||||
package com.github.libretube.ui.interfaces
|
||||
|
||||
interface DoubleTapInterface {
|
||||
fun onEvent(x: Float)
|
@ -1,4 +1,4 @@
|
||||
package com.github.libretube.util
|
||||
package com.github.libretube.ui.interfaces
|
||||
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
@ -1,4 +1,4 @@
|
||||
package com.github.libretube.models.interfaces
|
||||
package com.github.libretube.ui.interfaces
|
||||
|
||||
interface OnlinePlayerOptions {
|
||||
fun onCaptionsClicked()
|
@ -1,4 +1,4 @@
|
||||
package com.github.libretube.models.interfaces
|
||||
package com.github.libretube.ui.interfaces
|
||||
|
||||
interface PlayerOptions {
|
||||
fun onAutoplayClicked()
|
@ -1,4 +1,4 @@
|
||||
package com.github.libretube.models
|
||||
package com.github.libretube.ui.models
|
||||
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
@ -1,4 +1,4 @@
|
||||
package com.github.libretube.models
|
||||
package com.github.libretube.ui.models
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.github.libretube.models
|
||||
package com.github.libretube.ui.models
|
||||
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
@ -1,4 +1,4 @@
|
||||
package com.github.libretube.models
|
||||
package com.github.libretube.ui.models
|
||||
|
||||
import android.util.Log
|
||||
import androidx.lifecycle.MutableLiveData
|
@ -13,14 +13,14 @@ import com.github.libretube.R
|
||||
import com.github.libretube.databinding.DoubleTapOverlayBinding
|
||||
import com.github.libretube.databinding.ExoStyledPlayerControlViewBinding
|
||||
import com.github.libretube.extensions.toDp
|
||||
import com.github.libretube.models.interfaces.DoubleTapInterface
|
||||
import com.github.libretube.models.interfaces.OnlinePlayerOptions
|
||||
import com.github.libretube.models.interfaces.PlayerOptions
|
||||
import com.github.libretube.obj.BottomSheetItem
|
||||
import com.github.libretube.ui.activities.MainActivity
|
||||
import com.github.libretube.ui.interfaces.DoubleTapInterface
|
||||
import com.github.libretube.ui.interfaces.DoubleTapListener
|
||||
import com.github.libretube.ui.interfaces.OnlinePlayerOptions
|
||||
import com.github.libretube.ui.interfaces.PlayerOptions
|
||||
import com.github.libretube.ui.sheets.BaseBottomSheet
|
||||
import com.github.libretube.ui.sheets.PlaybackSpeedSheet
|
||||
import com.github.libretube.util.DoubleTapListener
|
||||
import com.github.libretube.util.PlayerHelper
|
||||
import com.google.android.exoplayer2.PlaybackParameters
|
||||
import com.google.android.exoplayer2.trackselection.TrackSelector
|
||||
|
8
app/src/main/java/com/github/libretube/util/TextUtils.kt
Normal file
8
app/src/main/java/com/github/libretube/util/TextUtils.kt
Normal file
@ -0,0 +1,8 @@
|
||||
package com.github.libretube.util
|
||||
|
||||
object TextUtils {
|
||||
/**
|
||||
* Separator used for descriptions
|
||||
*/
|
||||
const val SEPARATOR = " • "
|
||||
}
|
@ -75,6 +75,9 @@
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="2"
|
||||
android:textSize="14sp"
|
||||
app:layout_constraintEnd_toStartOf="@id/delete_playlist"
|
||||
app:layout_constraintStart_toEndOf="@+id/card_playlist_thumbnail"
|
||||
app:layout_constraintTop_toBottomOf="@+id/playlist_title" />
|
||||
|
Loading…
x
Reference in New Issue
Block a user