mirror of
https://github.com/libre-tube/LibreTube.git
synced 2024-12-14 14:20:30 +05:30
add data saver mode
This commit is contained in:
parent
be49850e1c
commit
728f345f1d
@ -1,7 +1,16 @@
|
|||||||
package com.github.libretube
|
package com.github.libretube
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Global variables can be stored here
|
||||||
|
*/
|
||||||
object Globals {
|
object Globals {
|
||||||
|
// for the player fragment
|
||||||
var isFullScreen = false
|
var isFullScreen = false
|
||||||
var isMiniPlayerVisible = false
|
var isMiniPlayerVisible = false
|
||||||
|
|
||||||
|
// for the settings
|
||||||
var isCurrentViewMainSettings = true
|
var isCurrentViewMainSettings = true
|
||||||
|
|
||||||
|
// for the data saver mode
|
||||||
|
var dataSaverModeEnabled = false
|
||||||
}
|
}
|
||||||
|
@ -75,6 +75,13 @@ class MainActivity : AppCompatActivity() {
|
|||||||
RetrofitInstance.url
|
RetrofitInstance.url
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// save whether the data saver mode is enabled
|
||||||
|
Globals.dataSaverModeEnabled = PreferenceHelper.getBoolean(
|
||||||
|
this,
|
||||||
|
"data_saver_mode",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
// show noInternet Activity if no internet available on app startup
|
// show noInternet Activity if no internet available on app startup
|
||||||
if (!ConnectionHelper.isNetworkAvailable(this)) {
|
if (!ConnectionHelper.isNetworkAvailable(this)) {
|
||||||
val noInternetIntent = Intent(this, NoInternetActivity::class.java)
|
val noInternetIntent = Intent(this, NoInternetActivity::class.java)
|
||||||
|
@ -12,6 +12,7 @@ import com.github.libretube.databinding.VideoChannelRowBinding
|
|||||||
import com.github.libretube.dialogs.VideoOptionsDialog
|
import com.github.libretube.dialogs.VideoOptionsDialog
|
||||||
import com.github.libretube.fragments.PlayerFragment
|
import com.github.libretube.fragments.PlayerFragment
|
||||||
import com.github.libretube.obj.StreamItem
|
import com.github.libretube.obj.StreamItem
|
||||||
|
import com.github.libretube.util.ConnectionHelper
|
||||||
import com.github.libretube.util.formatShort
|
import com.github.libretube.util.formatShort
|
||||||
import com.squareup.picasso.Picasso
|
import com.squareup.picasso.Picasso
|
||||||
|
|
||||||
@ -45,7 +46,7 @@ class ChannelAdapter(
|
|||||||
DateUtils.getRelativeTimeSpanString(trending.uploaded!!)
|
DateUtils.getRelativeTimeSpanString(trending.uploaded!!)
|
||||||
channelDuration.text =
|
channelDuration.text =
|
||||||
DateUtils.formatElapsedTime(trending.duration!!)
|
DateUtils.formatElapsedTime(trending.duration!!)
|
||||||
Picasso.get().load(trending.thumbnail).into(channelThumbnail)
|
ConnectionHelper.loadImage(trending.thumbnail, channelThumbnail)
|
||||||
root.setOnClickListener {
|
root.setOnClickListener {
|
||||||
var bundle = Bundle()
|
var bundle = Bundle()
|
||||||
bundle.putString("videoId", trending.url!!.replace("/watch?v=", ""))
|
bundle.putString("videoId", trending.url!!.replace("/watch?v=", ""))
|
||||||
|
@ -5,6 +5,7 @@ import android.view.ViewGroup
|
|||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.github.libretube.databinding.ChapterColumnBinding
|
import com.github.libretube.databinding.ChapterColumnBinding
|
||||||
import com.github.libretube.obj.ChapterSegment
|
import com.github.libretube.obj.ChapterSegment
|
||||||
|
import com.github.libretube.util.ConnectionHelper
|
||||||
import com.google.android.exoplayer2.ExoPlayer
|
import com.google.android.exoplayer2.ExoPlayer
|
||||||
import com.squareup.picasso.Picasso
|
import com.squareup.picasso.Picasso
|
||||||
|
|
||||||
@ -23,7 +24,7 @@ class ChaptersAdapter(
|
|||||||
override fun onBindViewHolder(holder: ChaptersViewHolder, position: Int) {
|
override fun onBindViewHolder(holder: ChaptersViewHolder, position: Int) {
|
||||||
val chapter = chapters[position]
|
val chapter = chapters[position]
|
||||||
holder.binding.apply {
|
holder.binding.apply {
|
||||||
Picasso.get().load(chapter.image).fit().centerCrop().into(chapterImage)
|
ConnectionHelper.loadImage(chapter.image, chapterImage)
|
||||||
chapterTitle.text = chapter.title
|
chapterTitle.text = chapter.title
|
||||||
|
|
||||||
root.setOnClickListener {
|
root.setOnClickListener {
|
||||||
|
@ -14,6 +14,7 @@ import com.github.libretube.activities.MainActivity
|
|||||||
import com.github.libretube.databinding.CommentsRowBinding
|
import com.github.libretube.databinding.CommentsRowBinding
|
||||||
import com.github.libretube.obj.Comment
|
import com.github.libretube.obj.Comment
|
||||||
import com.github.libretube.obj.CommentsPage
|
import com.github.libretube.obj.CommentsPage
|
||||||
|
import com.github.libretube.util.ConnectionHelper
|
||||||
import com.github.libretube.util.RetrofitInstance
|
import com.github.libretube.util.RetrofitInstance
|
||||||
import com.github.libretube.util.formatShort
|
import com.github.libretube.util.formatShort
|
||||||
import com.squareup.picasso.Picasso
|
import com.squareup.picasso.Picasso
|
||||||
@ -53,7 +54,7 @@ class CommentsAdapter(
|
|||||||
" • " + comment.commentedTime.toString()
|
" • " + comment.commentedTime.toString()
|
||||||
commentText.text =
|
commentText.text =
|
||||||
comment.commentText.toString()
|
comment.commentText.toString()
|
||||||
Picasso.get().load(comment.thumbnail).fit().centerCrop().into(commentorImage)
|
ConnectionHelper.loadImage(comment.thumbnail, commentorImage)
|
||||||
likesTextView.text =
|
likesTextView.text =
|
||||||
comment.likeCount?.toLong().formatShort()
|
comment.likeCount?.toLong().formatShort()
|
||||||
if (comment.verified == true) {
|
if (comment.verified == true) {
|
||||||
|
@ -17,6 +17,7 @@ import com.github.libretube.fragments.PlayerFragment
|
|||||||
import com.github.libretube.obj.PlaylistId
|
import com.github.libretube.obj.PlaylistId
|
||||||
import com.github.libretube.obj.StreamItem
|
import com.github.libretube.obj.StreamItem
|
||||||
import com.github.libretube.preferences.PreferenceHelper
|
import com.github.libretube.preferences.PreferenceHelper
|
||||||
|
import com.github.libretube.util.ConnectionHelper
|
||||||
import com.github.libretube.util.RetrofitInstance
|
import com.github.libretube.util.RetrofitInstance
|
||||||
import com.squareup.picasso.Picasso
|
import com.squareup.picasso.Picasso
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
@ -55,7 +56,7 @@ class PlaylistAdapter(
|
|||||||
playlistTitle.text = streamItem.title
|
playlistTitle.text = streamItem.title
|
||||||
playlistDescription.text = streamItem.uploaderName
|
playlistDescription.text = streamItem.uploaderName
|
||||||
playlistDuration.text = DateUtils.formatElapsedTime(streamItem.duration!!)
|
playlistDuration.text = DateUtils.formatElapsedTime(streamItem.duration!!)
|
||||||
Picasso.get().load(streamItem.thumbnail).into(playlistThumbnail)
|
ConnectionHelper.loadImage(streamItem.thumbnail, playlistThumbnail)
|
||||||
root.setOnClickListener {
|
root.setOnClickListener {
|
||||||
var bundle = Bundle()
|
var bundle = Bundle()
|
||||||
bundle.putString("videoId", streamItem.url!!.replace("/watch?v=", ""))
|
bundle.putString("videoId", streamItem.url!!.replace("/watch?v=", ""))
|
||||||
|
@ -12,6 +12,7 @@ import com.github.libretube.databinding.PlaylistsRowBinding
|
|||||||
import com.github.libretube.obj.PlaylistId
|
import com.github.libretube.obj.PlaylistId
|
||||||
import com.github.libretube.obj.Playlists
|
import com.github.libretube.obj.Playlists
|
||||||
import com.github.libretube.preferences.PreferenceHelper
|
import com.github.libretube.preferences.PreferenceHelper
|
||||||
|
import com.github.libretube.util.ConnectionHelper
|
||||||
import com.github.libretube.util.RetrofitInstance
|
import com.github.libretube.util.RetrofitInstance
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import com.squareup.picasso.Picasso
|
import com.squareup.picasso.Picasso
|
||||||
@ -45,7 +46,7 @@ class PlaylistsAdapter(
|
|||||||
override fun onBindViewHolder(holder: PlaylistsViewHolder, position: Int) {
|
override fun onBindViewHolder(holder: PlaylistsViewHolder, position: Int) {
|
||||||
val playlist = playlists[position]
|
val playlist = playlists[position]
|
||||||
holder.binding.apply {
|
holder.binding.apply {
|
||||||
Picasso.get().load(playlist.thumbnail).into(playlistThumbnail)
|
ConnectionHelper.loadImage(playlist.thumbnail, playlistThumbnail)
|
||||||
// set imageview drawable as empty playlist if imageview empty
|
// set imageview drawable as empty playlist if imageview empty
|
||||||
if (playlistThumbnail.drawable == null) {
|
if (playlistThumbnail.drawable == null) {
|
||||||
playlistThumbnail.setImageResource(R.drawable.ic_empty_playlist)
|
playlistThumbnail.setImageResource(R.drawable.ic_empty_playlist)
|
||||||
|
@ -10,6 +10,7 @@ import com.github.libretube.R
|
|||||||
import com.github.libretube.activities.MainActivity
|
import com.github.libretube.activities.MainActivity
|
||||||
import com.github.libretube.databinding.RepliesRowBinding
|
import com.github.libretube.databinding.RepliesRowBinding
|
||||||
import com.github.libretube.obj.Comment
|
import com.github.libretube.obj.Comment
|
||||||
|
import com.github.libretube.util.ConnectionHelper
|
||||||
import com.github.libretube.util.formatShort
|
import com.github.libretube.util.formatShort
|
||||||
import com.squareup.picasso.Picasso
|
import com.squareup.picasso.Picasso
|
||||||
|
|
||||||
@ -44,7 +45,7 @@ class RepliesAdapter(
|
|||||||
" • " + reply.commentedTime.toString()
|
" • " + reply.commentedTime.toString()
|
||||||
commentText.text =
|
commentText.text =
|
||||||
reply.commentText.toString()
|
reply.commentText.toString()
|
||||||
Picasso.get().load(reply.thumbnail).fit().centerCrop().into(commentorImage)
|
ConnectionHelper.loadImage(reply.thumbnail, commentorImage)
|
||||||
likesTextView.text =
|
likesTextView.text =
|
||||||
reply.likeCount?.toLong().formatShort()
|
reply.likeCount?.toLong().formatShort()
|
||||||
if (reply.verified == true) {
|
if (reply.verified == true) {
|
||||||
|
@ -20,6 +20,7 @@ import com.github.libretube.fragments.PlayerFragment
|
|||||||
import com.github.libretube.obj.SearchItem
|
import com.github.libretube.obj.SearchItem
|
||||||
import com.github.libretube.obj.Subscribe
|
import com.github.libretube.obj.Subscribe
|
||||||
import com.github.libretube.preferences.PreferenceHelper
|
import com.github.libretube.preferences.PreferenceHelper
|
||||||
|
import com.github.libretube.util.ConnectionHelper
|
||||||
import com.github.libretube.util.RetrofitInstance
|
import com.github.libretube.util.RetrofitInstance
|
||||||
import com.github.libretube.util.formatShort
|
import com.github.libretube.util.formatShort
|
||||||
import com.squareup.picasso.Picasso
|
import com.squareup.picasso.Picasso
|
||||||
@ -84,14 +85,14 @@ class SearchAdapter(
|
|||||||
|
|
||||||
private fun bindWatch(item: SearchItem, binding: VideoSearchRowBinding) {
|
private fun bindWatch(item: SearchItem, binding: VideoSearchRowBinding) {
|
||||||
binding.apply {
|
binding.apply {
|
||||||
Picasso.get().load(item.thumbnail).fit().centerCrop().into(searchThumbnail)
|
ConnectionHelper.loadImage(item.thumbnail, searchThumbnail)
|
||||||
if (item.duration != -1L) {
|
if (item.duration != -1L) {
|
||||||
searchThumbnailDuration.text = DateUtils.formatElapsedTime(item.duration!!)
|
searchThumbnailDuration.text = DateUtils.formatElapsedTime(item.duration!!)
|
||||||
} else {
|
} else {
|
||||||
searchThumbnailDuration.text = root.context.getString(R.string.live)
|
searchThumbnailDuration.text = root.context.getString(R.string.live)
|
||||||
searchThumbnailDuration.setBackgroundColor(R.attr.colorPrimaryDark)
|
searchThumbnailDuration.setBackgroundColor(R.attr.colorPrimaryDark)
|
||||||
}
|
}
|
||||||
Picasso.get().load(item.uploaderAvatar).fit().centerCrop().into(searchChannelImage)
|
ConnectionHelper.loadImage(item.uploaderAvatar, searchChannelImage)
|
||||||
searchDescription.text = item.title
|
searchDescription.text = item.title
|
||||||
val viewsString = if (item.views?.toInt() != -1) item.views.formatShort() else ""
|
val viewsString = if (item.views?.toInt() != -1) item.views.formatShort() else ""
|
||||||
val uploadDate = if (item.uploadedDate != null) item.uploadedDate else ""
|
val uploadDate = if (item.uploadedDate != null) item.uploadedDate else ""
|
||||||
@ -131,7 +132,7 @@ class SearchAdapter(
|
|||||||
|
|
||||||
private fun bindChannel(item: SearchItem, binding: ChannelSearchRowBinding) {
|
private fun bindChannel(item: SearchItem, binding: ChannelSearchRowBinding) {
|
||||||
binding.apply {
|
binding.apply {
|
||||||
Picasso.get().load(item.thumbnail).fit().centerCrop().into(searchChannelImage)
|
ConnectionHelper.loadImage(item.thumbnail, searchChannelImage)
|
||||||
searchChannelName.text = item.name
|
searchChannelName.text = item.name
|
||||||
searchViews.text = root.context.getString(
|
searchViews.text = root.context.getString(
|
||||||
R.string.subscribers,
|
R.string.subscribers,
|
||||||
@ -219,7 +220,7 @@ class SearchAdapter(
|
|||||||
|
|
||||||
private fun bindPlaylist(item: SearchItem, binding: PlaylistSearchRowBinding) {
|
private fun bindPlaylist(item: SearchItem, binding: PlaylistSearchRowBinding) {
|
||||||
binding.apply {
|
binding.apply {
|
||||||
Picasso.get().load(item.thumbnail).fit().centerCrop().into(searchThumbnail)
|
ConnectionHelper.loadImage(item.thumbnail, searchThumbnail)
|
||||||
if (item.videos?.toInt() != -1) searchPlaylistNumber.text = item.videos.toString()
|
if (item.videos?.toInt() != -1) searchPlaylistNumber.text = item.videos.toString()
|
||||||
searchDescription.text = item.name
|
searchDescription.text = item.name
|
||||||
searchName.text = item.uploaderName
|
searchName.text = item.uploaderName
|
||||||
|
@ -15,6 +15,7 @@ import com.github.libretube.databinding.TrendingRowBinding
|
|||||||
import com.github.libretube.dialogs.VideoOptionsDialog
|
import com.github.libretube.dialogs.VideoOptionsDialog
|
||||||
import com.github.libretube.fragments.PlayerFragment
|
import com.github.libretube.fragments.PlayerFragment
|
||||||
import com.github.libretube.obj.StreamItem
|
import com.github.libretube.obj.StreamItem
|
||||||
|
import com.github.libretube.util.ConnectionHelper
|
||||||
import com.github.libretube.util.formatShort
|
import com.github.libretube.util.formatShort
|
||||||
import com.squareup.picasso.Picasso
|
import com.squareup.picasso.Picasso
|
||||||
|
|
||||||
@ -72,8 +73,8 @@ class SubscriptionAdapter(
|
|||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Picasso.get().load(trending.thumbnail).into(thumbnail)
|
ConnectionHelper.loadImage(trending.thumbnail, thumbnail)
|
||||||
Picasso.get().load(trending.uploaderAvatar).into(channelImage)
|
ConnectionHelper.loadImage(trending.uploaderAvatar, channelImage)
|
||||||
root.setOnClickListener {
|
root.setOnClickListener {
|
||||||
val bundle = Bundle()
|
val bundle = Bundle()
|
||||||
bundle.putString("videoId", trending.url!!.replace("/watch?v=", ""))
|
bundle.putString("videoId", trending.url!!.replace("/watch?v=", ""))
|
||||||
|
@ -12,6 +12,7 @@ import com.github.libretube.databinding.ChannelSubscriptionRowBinding
|
|||||||
import com.github.libretube.obj.Subscribe
|
import com.github.libretube.obj.Subscribe
|
||||||
import com.github.libretube.obj.Subscription
|
import com.github.libretube.obj.Subscription
|
||||||
import com.github.libretube.preferences.PreferenceHelper
|
import com.github.libretube.preferences.PreferenceHelper
|
||||||
|
import com.github.libretube.util.ConnectionHelper
|
||||||
import com.github.libretube.util.RetrofitInstance
|
import com.github.libretube.util.RetrofitInstance
|
||||||
import com.squareup.picasso.Picasso
|
import com.squareup.picasso.Picasso
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
@ -40,7 +41,7 @@ class SubscriptionChannelAdapter(private val subscriptions: MutableList<Subscrip
|
|||||||
val subscription = subscriptions[position]
|
val subscription = subscriptions[position]
|
||||||
holder.binding.apply {
|
holder.binding.apply {
|
||||||
subscriptionChannelName.text = subscription.name
|
subscriptionChannelName.text = subscription.name
|
||||||
Picasso.get().load(subscription.avatar).into(subscriptionChannelImage)
|
ConnectionHelper.loadImage(subscription.avatar, subscriptionChannelImage)
|
||||||
root.setOnClickListener {
|
root.setOnClickListener {
|
||||||
val activity = root.context as MainActivity
|
val activity = root.context as MainActivity
|
||||||
val bundle = bundleOf("channel_id" to subscription.url)
|
val bundle = bundleOf("channel_id" to subscription.url)
|
||||||
|
@ -15,6 +15,7 @@ import com.github.libretube.databinding.TrendingRowBinding
|
|||||||
import com.github.libretube.dialogs.VideoOptionsDialog
|
import com.github.libretube.dialogs.VideoOptionsDialog
|
||||||
import com.github.libretube.fragments.PlayerFragment
|
import com.github.libretube.fragments.PlayerFragment
|
||||||
import com.github.libretube.obj.StreamItem
|
import com.github.libretube.obj.StreamItem
|
||||||
|
import com.github.libretube.util.ConnectionHelper
|
||||||
import com.github.libretube.util.formatShort
|
import com.github.libretube.util.formatShort
|
||||||
import com.squareup.picasso.Picasso
|
import com.squareup.picasso.Picasso
|
||||||
|
|
||||||
@ -63,12 +64,8 @@ class TrendingAdapter(
|
|||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (trending.thumbnail!!.isNotEmpty()) {
|
ConnectionHelper.loadImage(trending.thumbnail, thumbnail)
|
||||||
Picasso.get().load(trending.thumbnail).into(thumbnail)
|
ConnectionHelper.loadImage(trending.uploaderAvatar, channelImage)
|
||||||
}
|
|
||||||
if (trending.uploaderAvatar!!.isNotEmpty()) {
|
|
||||||
Picasso.get().load(trending.uploaderAvatar).into(channelImage)
|
|
||||||
}
|
|
||||||
|
|
||||||
root.setOnClickListener {
|
root.setOnClickListener {
|
||||||
var bundle = Bundle()
|
var bundle = Bundle()
|
||||||
|
@ -15,6 +15,7 @@ import com.github.libretube.databinding.WatchHistoryRowBinding
|
|||||||
import com.github.libretube.dialogs.VideoOptionsDialog
|
import com.github.libretube.dialogs.VideoOptionsDialog
|
||||||
import com.github.libretube.fragments.PlayerFragment
|
import com.github.libretube.fragments.PlayerFragment
|
||||||
import com.github.libretube.obj.WatchHistoryItem
|
import com.github.libretube.obj.WatchHistoryItem
|
||||||
|
import com.github.libretube.util.ConnectionHelper
|
||||||
import com.squareup.picasso.Picasso
|
import com.squareup.picasso.Picasso
|
||||||
|
|
||||||
class WatchHistoryAdapter(
|
class WatchHistoryAdapter(
|
||||||
@ -43,8 +44,8 @@ class WatchHistoryAdapter(
|
|||||||
channelName.text = video.uploader
|
channelName.text = video.uploader
|
||||||
uploadDate.text = video.uploadDate
|
uploadDate.text = video.uploadDate
|
||||||
thumbnailDuration.text = DateUtils.formatElapsedTime(video.duration?.toLong()!!)
|
thumbnailDuration.text = DateUtils.formatElapsedTime(video.duration?.toLong()!!)
|
||||||
Picasso.get().load(video.thumbnailUrl).into(thumbnail)
|
ConnectionHelper.loadImage(video.thumbnailUrl, thumbnail)
|
||||||
Picasso.get().load(video.uploaderAvatar).into(channelImage)
|
ConnectionHelper.loadImage(video.uploaderAvatar, channelImage)
|
||||||
|
|
||||||
channelImage.setOnClickListener {
|
channelImage.setOnClickListener {
|
||||||
val activity = root.context as MainActivity
|
val activity = root.context as MainActivity
|
||||||
|
@ -14,6 +14,7 @@ import com.github.libretube.adapters.ChannelAdapter
|
|||||||
import com.github.libretube.databinding.FragmentChannelBinding
|
import com.github.libretube.databinding.FragmentChannelBinding
|
||||||
import com.github.libretube.obj.Subscribe
|
import com.github.libretube.obj.Subscribe
|
||||||
import com.github.libretube.preferences.PreferenceHelper
|
import com.github.libretube.preferences.PreferenceHelper
|
||||||
|
import com.github.libretube.util.ConnectionHelper
|
||||||
import com.github.libretube.util.RetrofitInstance
|
import com.github.libretube.util.RetrofitInstance
|
||||||
import com.github.libretube.util.formatShort
|
import com.github.libretube.util.formatShort
|
||||||
import com.squareup.picasso.Picasso
|
import com.squareup.picasso.Picasso
|
||||||
@ -194,8 +195,8 @@ class ChannelFragment : Fragment() {
|
|||||||
binding.channelDescription.text = response.description?.trim()
|
binding.channelDescription.text = response.description?.trim()
|
||||||
}
|
}
|
||||||
|
|
||||||
Picasso.get().load(response.bannerUrl).into(binding.channelBanner)
|
ConnectionHelper.loadImage(response.bannerUrl, binding.channelBanner)
|
||||||
Picasso.get().load(response.avatarUrl).into(binding.channelImage)
|
ConnectionHelper.loadImage(response.avatarUrl, binding.channelImage)
|
||||||
channelAdapter = ChannelAdapter(
|
channelAdapter = ChannelAdapter(
|
||||||
response.relatedStreams!!.toMutableList(),
|
response.relatedStreams!!.toMutableList(),
|
||||||
childFragmentManager
|
childFragmentManager
|
||||||
|
@ -57,6 +57,7 @@ import com.github.libretube.obj.Subscribe
|
|||||||
import com.github.libretube.preferences.PreferenceHelper
|
import com.github.libretube.preferences.PreferenceHelper
|
||||||
import com.github.libretube.services.IS_DOWNLOAD_RUNNING
|
import com.github.libretube.services.IS_DOWNLOAD_RUNNING
|
||||||
import com.github.libretube.util.BackgroundMode
|
import com.github.libretube.util.BackgroundMode
|
||||||
|
import com.github.libretube.util.ConnectionHelper
|
||||||
import com.github.libretube.util.CronetHelper
|
import com.github.libretube.util.CronetHelper
|
||||||
import com.github.libretube.util.DescriptionAdapter
|
import com.github.libretube.util.DescriptionAdapter
|
||||||
import com.github.libretube.util.RetrofitInstance
|
import com.github.libretube.util.RetrofitInstance
|
||||||
@ -87,7 +88,6 @@ import com.google.android.exoplayer2.util.RepeatModeUtil
|
|||||||
import com.google.android.exoplayer2.video.VideoSize
|
import com.google.android.exoplayer2.video.VideoSize
|
||||||
import com.google.android.material.button.MaterialButton
|
import com.google.android.material.button.MaterialButton
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import com.squareup.picasso.Picasso
|
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
@ -739,17 +739,19 @@ class PlayerFragment : Fragment() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun initializePlayerView(view: View, response: Streams) {
|
private fun initializePlayerView(view: View, response: Streams) {
|
||||||
binding.playerViewsInfo.text =
|
binding.apply {
|
||||||
context?.getString(R.string.views, response.views.formatShort()) +
|
playerViewsInfo.text =
|
||||||
" • " + response.uploadDate
|
context?.getString(R.string.views, response.views.formatShort()) +
|
||||||
binding.textLike.text = response.likes.formatShort()
|
" • " + response.uploadDate
|
||||||
binding.textDislike.text = response.dislikes.formatShort()
|
textLike.text = response.likes.formatShort()
|
||||||
Picasso.get().load(response.uploaderAvatar).into(binding.playerChannelImage)
|
textDislike.text = response.dislikes.formatShort()
|
||||||
binding.playerChannelName.text = response.uploader
|
ConnectionHelper.loadImage(response.uploaderAvatar, binding.playerChannelImage)
|
||||||
|
playerChannelName.text = response.uploader
|
||||||
|
|
||||||
binding.titleTextView.text = response.title
|
titleTextView.text = response.title
|
||||||
binding.playerTitle.text = response.title
|
playerTitle.text = response.title
|
||||||
binding.playerDescription.text = response.description
|
playerDescription.text = response.description
|
||||||
|
}
|
||||||
|
|
||||||
playerBinding.exoTitle.text = response.title
|
playerBinding.exoTitle.text = response.title
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ package com.github.libretube.preferences
|
|||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import androidx.preference.Preference
|
import androidx.preference.Preference
|
||||||
import androidx.preference.PreferenceFragmentCompat
|
import androidx.preference.PreferenceFragmentCompat
|
||||||
|
import androidx.preference.SwitchPreferenceCompat
|
||||||
import com.github.libretube.R
|
import com.github.libretube.R
|
||||||
import com.github.libretube.activities.SettingsActivity
|
import com.github.libretube.activities.SettingsActivity
|
||||||
import com.github.libretube.dialogs.RequireRestartDialog
|
import com.github.libretube.dialogs.RequireRestartDialog
|
||||||
@ -32,6 +33,13 @@ class AdvancedSettings : PreferenceFragmentCompat() {
|
|||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val dataSaverMode = findPreference<SwitchPreferenceCompat>("data_saver_mode")
|
||||||
|
dataSaverMode?.setOnPreferenceChangeListener { _, _ ->
|
||||||
|
val restartDialog = RequireRestartDialog()
|
||||||
|
restartDialog.show(childFragmentManager, "RequireRestartDialog")
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
val resetSettings = findPreference<Preference>("reset_settings")
|
val resetSettings = findPreference<Preference>("reset_settings")
|
||||||
resetSettings?.setOnPreferenceClickListener {
|
resetSettings?.setOnPreferenceClickListener {
|
||||||
showResetDialog()
|
showResetDialog()
|
||||||
|
@ -1,7 +1,11 @@
|
|||||||
package com.github.libretube.util
|
package com.github.libretube.util
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.graphics.Color
|
||||||
import android.net.ConnectivityManager
|
import android.net.ConnectivityManager
|
||||||
|
import android.widget.ImageView
|
||||||
|
import com.github.libretube.Globals
|
||||||
|
import com.squareup.picasso.Picasso
|
||||||
|
|
||||||
object ConnectionHelper {
|
object ConnectionHelper {
|
||||||
fun isNetworkAvailable(context: Context): Boolean {
|
fun isNetworkAvailable(context: Context): Boolean {
|
||||||
@ -33,4 +37,12 @@ object ConnectionHelper {
|
|||||||
|
|
||||||
return connectivityManager.activeNetworkInfo?.isConnected ?: false
|
return connectivityManager.activeNetworkInfo?.isConnected ?: false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// load an image from a url into an imageView
|
||||||
|
fun loadImage(url: String?, target: ImageView) {
|
||||||
|
// only load the image if the data saver mode is disabled
|
||||||
|
if (!Globals.dataSaverModeEnabled) {
|
||||||
|
Picasso.get().load(url).fit().centerCrop().into(target)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
10
app/src/main/res/drawable/ic_data_saver.xml
Normal file
10
app/src/main/res/drawable/ic_data_saver.xml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:tint="?android:attr/colorControlNormal"
|
||||||
|
android:viewportWidth="48"
|
||||||
|
android:viewportHeight="48">
|
||||||
|
<path
|
||||||
|
android:fillColor="#FF000000"
|
||||||
|
android:pathData="M22.55,31.45L22.55,25.4L16.5,25.4v-3h6.05v-6.05h3v6.05h6v3h-6v6.05ZM42.15,32.55 L37.75,30.1q0.6,-1.55 0.9,-3.075 0.3,-1.525 0.3,-3.025 0,-5.8 -3.825,-10.05Q31.3,9.7 25.6,9.2L25.6,4.1q7.85,0.55 13.15,6.225Q44.05,16 44.05,23.8q0,2.25 -0.475,4.425T42.15,32.55ZM24.05,44q-4.1,0 -7.75,-1.575 -3.65,-1.575 -6.375,-4.275t-4.3,-6.35Q4.05,28.15 4.05,24.05q0,-7.9 5.325,-13.6Q14.7,4.75 22.6,4.15v5.1q-5.75,0.55 -9.6,4.775Q9.15,18.25 9.15,24.05q0,6.2 4.35,10.525T24.05,38.9q3.6,0 6.8,-1.625 3.2,-1.625 5.45,-4.575l4.4,2.55q-2.9,4.15 -7.275,6.45T24.05,44Z" />
|
||||||
|
</vector>
|
@ -23,8 +23,7 @@
|
|||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/thumbnail"
|
android:id="@+id/thumbnail"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent" />
|
||||||
android:src="@mipmap/ic_launcher" />
|
|
||||||
|
|
||||||
<androidx.cardview.widget.CardView
|
<androidx.cardview.widget.CardView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
@ -242,4 +242,6 @@
|
|||||||
<string name="pure_theme">Pure theme</string>
|
<string name="pure_theme">Pure theme</string>
|
||||||
<string name="pure_theme_summary">Pure white/black theme</string>
|
<string name="pure_theme_summary">Pure white/black theme</string>
|
||||||
<string name="no_player_found">No external player found. Please make sure you have one installed.</string>
|
<string name="no_player_found">No external player found. Please make sure you have one installed.</string>
|
||||||
|
<string name="data_saver_mode">Data saver mode</string>
|
||||||
|
<string name="data_saver_mode_summary">Don\'t load thumbnails and other images to save data.</string>
|
||||||
</resources>
|
</resources>
|
@ -70,6 +70,12 @@
|
|||||||
|
|
||||||
<PreferenceCategory>
|
<PreferenceCategory>
|
||||||
|
|
||||||
|
<SwitchPreferenceCompat
|
||||||
|
android:icon="@drawable/ic_data_saver"
|
||||||
|
android:summary="@string/data_saver_mode_summary"
|
||||||
|
app:key="data_saver_mode"
|
||||||
|
app:title="@string/data_saver_mode" />
|
||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
android:icon="@drawable/ic_reset"
|
android:icon="@drawable/ic_reset"
|
||||||
app:key="reset_settings"
|
app:key="reset_settings"
|
||||||
|
Loading…
Reference in New Issue
Block a user