From 728f345f1d27e787840e09d178cb96b1183876c4 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Fri, 15 Jul 2022 21:37:44 +0200 Subject: [PATCH 1/3] add data saver mode --- .../main/java/com/github/libretube/Globals.kt | 9 +++++++ .../libretube/activities/MainActivity.kt | 7 ++++++ .../libretube/adapters/ChannelAdapter.kt | 3 ++- .../libretube/adapters/ChaptersAdapter.kt | 3 ++- .../libretube/adapters/CommentsAdapter.kt | 3 ++- .../libretube/adapters/PlaylistAdapter.kt | 3 ++- .../libretube/adapters/PlaylistsAdapter.kt | 3 ++- .../libretube/adapters/RepliesAdapter.kt | 3 ++- .../libretube/adapters/SearchAdapter.kt | 9 +++---- .../libretube/adapters/SubscriptionAdapter.kt | 5 ++-- .../adapters/SubscriptionChannelAdapter.kt | 3 ++- .../libretube/adapters/TrendingAdapter.kt | 9 +++---- .../libretube/adapters/WatchHistoryAdapter.kt | 5 ++-- .../libretube/fragments/ChannelFragment.kt | 5 ++-- .../libretube/fragments/PlayerFragment.kt | 24 ++++++++++--------- .../libretube/preferences/AdvancedSettings.kt | 8 +++++++ .../github/libretube/util/ConnectionHelper.kt | 12 ++++++++++ app/src/main/res/drawable/ic_data_saver.xml | 10 ++++++++ app/src/main/res/layout/trending_row.xml | 3 +-- app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/xml/advanced_settings.xml | 6 +++++ 21 files changed, 99 insertions(+), 36 deletions(-) create mode 100644 app/src/main/res/drawable/ic_data_saver.xml diff --git a/app/src/main/java/com/github/libretube/Globals.kt b/app/src/main/java/com/github/libretube/Globals.kt index 7d4ff4ddd..7a0a9df80 100644 --- a/app/src/main/java/com/github/libretube/Globals.kt +++ b/app/src/main/java/com/github/libretube/Globals.kt @@ -1,7 +1,16 @@ package com.github.libretube +/** + * Global variables can be stored here + */ object Globals { + // for the player fragment var isFullScreen = false var isMiniPlayerVisible = false + + // for the settings var isCurrentViewMainSettings = true + + // for the data saver mode + var dataSaverModeEnabled = false } diff --git a/app/src/main/java/com/github/libretube/activities/MainActivity.kt b/app/src/main/java/com/github/libretube/activities/MainActivity.kt index dc79c69b5..67b11515c 100644 --- a/app/src/main/java/com/github/libretube/activities/MainActivity.kt +++ b/app/src/main/java/com/github/libretube/activities/MainActivity.kt @@ -75,6 +75,13 @@ class MainActivity : AppCompatActivity() { 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 if (!ConnectionHelper.isNetworkAvailable(this)) { val noInternetIntent = Intent(this, NoInternetActivity::class.java) diff --git a/app/src/main/java/com/github/libretube/adapters/ChannelAdapter.kt b/app/src/main/java/com/github/libretube/adapters/ChannelAdapter.kt index ed5b83e58..4425f6d5f 100644 --- a/app/src/main/java/com/github/libretube/adapters/ChannelAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/ChannelAdapter.kt @@ -12,6 +12,7 @@ import com.github.libretube.databinding.VideoChannelRowBinding import com.github.libretube.dialogs.VideoOptionsDialog import com.github.libretube.fragments.PlayerFragment import com.github.libretube.obj.StreamItem +import com.github.libretube.util.ConnectionHelper import com.github.libretube.util.formatShort import com.squareup.picasso.Picasso @@ -45,7 +46,7 @@ class ChannelAdapter( DateUtils.getRelativeTimeSpanString(trending.uploaded!!) channelDuration.text = DateUtils.formatElapsedTime(trending.duration!!) - Picasso.get().load(trending.thumbnail).into(channelThumbnail) + ConnectionHelper.loadImage(trending.thumbnail, channelThumbnail) root.setOnClickListener { var bundle = Bundle() bundle.putString("videoId", trending.url!!.replace("/watch?v=", "")) diff --git a/app/src/main/java/com/github/libretube/adapters/ChaptersAdapter.kt b/app/src/main/java/com/github/libretube/adapters/ChaptersAdapter.kt index 6a28be080..01f9466be 100644 --- a/app/src/main/java/com/github/libretube/adapters/ChaptersAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/ChaptersAdapter.kt @@ -5,6 +5,7 @@ import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import com.github.libretube.databinding.ChapterColumnBinding import com.github.libretube.obj.ChapterSegment +import com.github.libretube.util.ConnectionHelper import com.google.android.exoplayer2.ExoPlayer import com.squareup.picasso.Picasso @@ -23,7 +24,7 @@ class ChaptersAdapter( override fun onBindViewHolder(holder: ChaptersViewHolder, position: Int) { val chapter = chapters[position] holder.binding.apply { - Picasso.get().load(chapter.image).fit().centerCrop().into(chapterImage) + ConnectionHelper.loadImage(chapter.image, chapterImage) chapterTitle.text = chapter.title root.setOnClickListener { diff --git a/app/src/main/java/com/github/libretube/adapters/CommentsAdapter.kt b/app/src/main/java/com/github/libretube/adapters/CommentsAdapter.kt index cbac097ad..c66b64095 100644 --- a/app/src/main/java/com/github/libretube/adapters/CommentsAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/CommentsAdapter.kt @@ -14,6 +14,7 @@ import com.github.libretube.activities.MainActivity import com.github.libretube.databinding.CommentsRowBinding import com.github.libretube.obj.Comment import com.github.libretube.obj.CommentsPage +import com.github.libretube.util.ConnectionHelper import com.github.libretube.util.RetrofitInstance import com.github.libretube.util.formatShort import com.squareup.picasso.Picasso @@ -53,7 +54,7 @@ class CommentsAdapter( " • " + comment.commentedTime.toString() commentText.text = comment.commentText.toString() - Picasso.get().load(comment.thumbnail).fit().centerCrop().into(commentorImage) + ConnectionHelper.loadImage(comment.thumbnail, commentorImage) likesTextView.text = comment.likeCount?.toLong().formatShort() if (comment.verified == true) { 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 d6ec9bea0..c69721723 100644 --- a/app/src/main/java/com/github/libretube/adapters/PlaylistAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/PlaylistAdapter.kt @@ -17,6 +17,7 @@ import com.github.libretube.fragments.PlayerFragment import com.github.libretube.obj.PlaylistId import com.github.libretube.obj.StreamItem import com.github.libretube.preferences.PreferenceHelper +import com.github.libretube.util.ConnectionHelper import com.github.libretube.util.RetrofitInstance import com.squareup.picasso.Picasso import kotlinx.coroutines.CoroutineScope @@ -55,7 +56,7 @@ class PlaylistAdapter( playlistTitle.text = streamItem.title playlistDescription.text = streamItem.uploaderName playlistDuration.text = DateUtils.formatElapsedTime(streamItem.duration!!) - Picasso.get().load(streamItem.thumbnail).into(playlistThumbnail) + ConnectionHelper.loadImage(streamItem.thumbnail, playlistThumbnail) root.setOnClickListener { var bundle = Bundle() bundle.putString("videoId", streamItem.url!!.replace("/watch?v=", "")) diff --git a/app/src/main/java/com/github/libretube/adapters/PlaylistsAdapter.kt b/app/src/main/java/com/github/libretube/adapters/PlaylistsAdapter.kt index 7818583e9..e02fdba20 100644 --- a/app/src/main/java/com/github/libretube/adapters/PlaylistsAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/PlaylistsAdapter.kt @@ -12,6 +12,7 @@ import com.github.libretube.databinding.PlaylistsRowBinding import com.github.libretube.obj.PlaylistId import com.github.libretube.obj.Playlists import com.github.libretube.preferences.PreferenceHelper +import com.github.libretube.util.ConnectionHelper import com.github.libretube.util.RetrofitInstance import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.squareup.picasso.Picasso @@ -45,7 +46,7 @@ class PlaylistsAdapter( override fun onBindViewHolder(holder: PlaylistsViewHolder, position: Int) { val playlist = playlists[position] holder.binding.apply { - Picasso.get().load(playlist.thumbnail).into(playlistThumbnail) + ConnectionHelper.loadImage(playlist.thumbnail, playlistThumbnail) // set imageview drawable as empty playlist if imageview empty if (playlistThumbnail.drawable == null) { playlistThumbnail.setImageResource(R.drawable.ic_empty_playlist) diff --git a/app/src/main/java/com/github/libretube/adapters/RepliesAdapter.kt b/app/src/main/java/com/github/libretube/adapters/RepliesAdapter.kt index d53429a03..7227a4e25 100644 --- a/app/src/main/java/com/github/libretube/adapters/RepliesAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/RepliesAdapter.kt @@ -10,6 +10,7 @@ import com.github.libretube.R import com.github.libretube.activities.MainActivity import com.github.libretube.databinding.RepliesRowBinding import com.github.libretube.obj.Comment +import com.github.libretube.util.ConnectionHelper import com.github.libretube.util.formatShort import com.squareup.picasso.Picasso @@ -44,7 +45,7 @@ class RepliesAdapter( " • " + reply.commentedTime.toString() commentText.text = reply.commentText.toString() - Picasso.get().load(reply.thumbnail).fit().centerCrop().into(commentorImage) + ConnectionHelper.loadImage(reply.thumbnail, commentorImage) likesTextView.text = reply.likeCount?.toLong().formatShort() if (reply.verified == true) { 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 29a14e39d..76d1afc3b 100644 --- a/app/src/main/java/com/github/libretube/adapters/SearchAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/SearchAdapter.kt @@ -20,6 +20,7 @@ import com.github.libretube.fragments.PlayerFragment import com.github.libretube.obj.SearchItem import com.github.libretube.obj.Subscribe import com.github.libretube.preferences.PreferenceHelper +import com.github.libretube.util.ConnectionHelper import com.github.libretube.util.RetrofitInstance import com.github.libretube.util.formatShort import com.squareup.picasso.Picasso @@ -84,14 +85,14 @@ class SearchAdapter( private fun bindWatch(item: SearchItem, binding: VideoSearchRowBinding) { binding.apply { - Picasso.get().load(item.thumbnail).fit().centerCrop().into(searchThumbnail) + ConnectionHelper.loadImage(item.thumbnail, searchThumbnail) if (item.duration != -1L) { searchThumbnailDuration.text = DateUtils.formatElapsedTime(item.duration!!) } else { searchThumbnailDuration.text = root.context.getString(R.string.live) searchThumbnailDuration.setBackgroundColor(R.attr.colorPrimaryDark) } - Picasso.get().load(item.uploaderAvatar).fit().centerCrop().into(searchChannelImage) + ConnectionHelper.loadImage(item.uploaderAvatar, searchChannelImage) searchDescription.text = item.title val viewsString = if (item.views?.toInt() != -1) item.views.formatShort() else "" val uploadDate = if (item.uploadedDate != null) item.uploadedDate else "" @@ -131,7 +132,7 @@ class SearchAdapter( private fun bindChannel(item: SearchItem, binding: ChannelSearchRowBinding) { binding.apply { - Picasso.get().load(item.thumbnail).fit().centerCrop().into(searchChannelImage) + ConnectionHelper.loadImage(item.thumbnail, searchChannelImage) searchChannelName.text = item.name searchViews.text = root.context.getString( R.string.subscribers, @@ -219,7 +220,7 @@ class SearchAdapter( private fun bindPlaylist(item: SearchItem, binding: PlaylistSearchRowBinding) { 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() searchDescription.text = item.name searchName.text = item.uploaderName diff --git a/app/src/main/java/com/github/libretube/adapters/SubscriptionAdapter.kt b/app/src/main/java/com/github/libretube/adapters/SubscriptionAdapter.kt index 9ba5513e7..791270913 100644 --- a/app/src/main/java/com/github/libretube/adapters/SubscriptionAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/SubscriptionAdapter.kt @@ -15,6 +15,7 @@ import com.github.libretube.databinding.TrendingRowBinding import com.github.libretube.dialogs.VideoOptionsDialog import com.github.libretube.fragments.PlayerFragment import com.github.libretube.obj.StreamItem +import com.github.libretube.util.ConnectionHelper import com.github.libretube.util.formatShort import com.squareup.picasso.Picasso @@ -72,8 +73,8 @@ class SubscriptionAdapter( } catch (e: Exception) { } } - Picasso.get().load(trending.thumbnail).into(thumbnail) - Picasso.get().load(trending.uploaderAvatar).into(channelImage) + ConnectionHelper.loadImage(trending.thumbnail, thumbnail) + ConnectionHelper.loadImage(trending.uploaderAvatar, channelImage) root.setOnClickListener { val bundle = Bundle() bundle.putString("videoId", trending.url!!.replace("/watch?v=", "")) diff --git a/app/src/main/java/com/github/libretube/adapters/SubscriptionChannelAdapter.kt b/app/src/main/java/com/github/libretube/adapters/SubscriptionChannelAdapter.kt index 6def52cb1..ced628c3f 100644 --- a/app/src/main/java/com/github/libretube/adapters/SubscriptionChannelAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/SubscriptionChannelAdapter.kt @@ -12,6 +12,7 @@ import com.github.libretube.databinding.ChannelSubscriptionRowBinding import com.github.libretube.obj.Subscribe import com.github.libretube.obj.Subscription import com.github.libretube.preferences.PreferenceHelper +import com.github.libretube.util.ConnectionHelper import com.github.libretube.util.RetrofitInstance import com.squareup.picasso.Picasso import kotlinx.coroutines.CoroutineScope @@ -40,7 +41,7 @@ class SubscriptionChannelAdapter(private val subscriptions: MutableList("data_saver_mode") + dataSaverMode?.setOnPreferenceChangeListener { _, _ -> + val restartDialog = RequireRestartDialog() + restartDialog.show(childFragmentManager, "RequireRestartDialog") + true + } + val resetSettings = findPreference("reset_settings") resetSettings?.setOnPreferenceClickListener { showResetDialog() diff --git a/app/src/main/java/com/github/libretube/util/ConnectionHelper.kt b/app/src/main/java/com/github/libretube/util/ConnectionHelper.kt index 1ba230baa..f79bda880 100644 --- a/app/src/main/java/com/github/libretube/util/ConnectionHelper.kt +++ b/app/src/main/java/com/github/libretube/util/ConnectionHelper.kt @@ -1,7 +1,11 @@ package com.github.libretube.util import android.content.Context +import android.graphics.Color import android.net.ConnectivityManager +import android.widget.ImageView +import com.github.libretube.Globals +import com.squareup.picasso.Picasso object ConnectionHelper { fun isNetworkAvailable(context: Context): Boolean { @@ -33,4 +37,12 @@ object ConnectionHelper { 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) + } + } } diff --git a/app/src/main/res/drawable/ic_data_saver.xml b/app/src/main/res/drawable/ic_data_saver.xml new file mode 100644 index 000000000..3b3a3bfd1 --- /dev/null +++ b/app/src/main/res/drawable/ic_data_saver.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/trending_row.xml b/app/src/main/res/layout/trending_row.xml index c62ad6cb9..1a05a5db5 100644 --- a/app/src/main/res/layout/trending_row.xml +++ b/app/src/main/res/layout/trending_row.xml @@ -23,8 +23,7 @@ + android:layout_height="match_parent" /> Pure theme Pure white/black theme No external player found. Please make sure you have one installed. + Data saver mode + Don\'t load thumbnails and other images to save data. \ No newline at end of file diff --git a/app/src/main/res/xml/advanced_settings.xml b/app/src/main/res/xml/advanced_settings.xml index 41298efff..ba8d17a89 100644 --- a/app/src/main/res/xml/advanced_settings.xml +++ b/app/src/main/res/xml/advanced_settings.xml @@ -70,6 +70,12 @@ + + Date: Fri, 15 Jul 2022 22:12:51 +0200 Subject: [PATCH 2/3] history pref category --- .../libretube/adapters/ChannelAdapter.kt | 1 - .../libretube/adapters/ChaptersAdapter.kt | 1 - .../libretube/adapters/CommentsAdapter.kt | 1 - .../libretube/adapters/PlaylistAdapter.kt | 1 - .../libretube/adapters/PlaylistsAdapter.kt | 1 - .../libretube/adapters/RepliesAdapter.kt | 1 - .../libretube/adapters/SearchAdapter.kt | 1 - .../libretube/adapters/SubscriptionAdapter.kt | 1 - .../adapters/SubscriptionChannelAdapter.kt | 1 - .../libretube/adapters/TrendingAdapter.kt | 1 - .../libretube/adapters/WatchHistoryAdapter.kt | 1 - .../libretube/fragments/ChannelFragment.kt | 1 - .../libretube/preferences/AboutFragment.kt | 7 +++ .../libretube/preferences/AdvancedSettings.kt | 15 ------ .../libretube/preferences/HistorySettings.kt | 38 +++++++++++++ .../libretube/preferences/MainSettings.kt | 14 ++--- .../github/libretube/util/ConnectionHelper.kt | 1 - app/src/main/res/layout/fragment_about.xml | 18 +++++++ app/src/main/res/values/strings.xml | 9 +++- app/src/main/res/xml/advanced_settings.xml | 39 +------------- app/src/main/res/xml/history_settings.xml | 53 +++++++++++++++++++ app/src/main/res/xml/settings.xml | 11 ++-- 22 files changed, 137 insertions(+), 80 deletions(-) create mode 100644 app/src/main/java/com/github/libretube/preferences/HistorySettings.kt create mode 100644 app/src/main/res/xml/history_settings.xml diff --git a/app/src/main/java/com/github/libretube/adapters/ChannelAdapter.kt b/app/src/main/java/com/github/libretube/adapters/ChannelAdapter.kt index 4425f6d5f..69c6302a2 100644 --- a/app/src/main/java/com/github/libretube/adapters/ChannelAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/ChannelAdapter.kt @@ -14,7 +14,6 @@ import com.github.libretube.fragments.PlayerFragment import com.github.libretube.obj.StreamItem import com.github.libretube.util.ConnectionHelper import com.github.libretube.util.formatShort -import com.squareup.picasso.Picasso class ChannelAdapter( private val videoFeed: MutableList, diff --git a/app/src/main/java/com/github/libretube/adapters/ChaptersAdapter.kt b/app/src/main/java/com/github/libretube/adapters/ChaptersAdapter.kt index 01f9466be..c595c08d0 100644 --- a/app/src/main/java/com/github/libretube/adapters/ChaptersAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/ChaptersAdapter.kt @@ -7,7 +7,6 @@ import com.github.libretube.databinding.ChapterColumnBinding import com.github.libretube.obj.ChapterSegment import com.github.libretube.util.ConnectionHelper import com.google.android.exoplayer2.ExoPlayer -import com.squareup.picasso.Picasso class ChaptersAdapter( private val chapters: List, diff --git a/app/src/main/java/com/github/libretube/adapters/CommentsAdapter.kt b/app/src/main/java/com/github/libretube/adapters/CommentsAdapter.kt index c66b64095..e8f1a0e7b 100644 --- a/app/src/main/java/com/github/libretube/adapters/CommentsAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/CommentsAdapter.kt @@ -17,7 +17,6 @@ import com.github.libretube.obj.CommentsPage import com.github.libretube.util.ConnectionHelper import com.github.libretube.util.RetrofitInstance import com.github.libretube.util.formatShort -import com.squareup.picasso.Picasso import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch 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 c69721723..bbd79bf76 100644 --- a/app/src/main/java/com/github/libretube/adapters/PlaylistAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/PlaylistAdapter.kt @@ -19,7 +19,6 @@ import com.github.libretube.obj.StreamItem import com.github.libretube.preferences.PreferenceHelper import com.github.libretube.util.ConnectionHelper import com.github.libretube.util.RetrofitInstance -import com.squareup.picasso.Picasso import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch diff --git a/app/src/main/java/com/github/libretube/adapters/PlaylistsAdapter.kt b/app/src/main/java/com/github/libretube/adapters/PlaylistsAdapter.kt index e02fdba20..94a1f7ba6 100644 --- a/app/src/main/java/com/github/libretube/adapters/PlaylistsAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/PlaylistsAdapter.kt @@ -15,7 +15,6 @@ import com.github.libretube.preferences.PreferenceHelper import com.github.libretube.util.ConnectionHelper import com.github.libretube.util.RetrofitInstance import com.google.android.material.dialog.MaterialAlertDialogBuilder -import com.squareup.picasso.Picasso import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch diff --git a/app/src/main/java/com/github/libretube/adapters/RepliesAdapter.kt b/app/src/main/java/com/github/libretube/adapters/RepliesAdapter.kt index 7227a4e25..db0136540 100644 --- a/app/src/main/java/com/github/libretube/adapters/RepliesAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/RepliesAdapter.kt @@ -12,7 +12,6 @@ import com.github.libretube.databinding.RepliesRowBinding import com.github.libretube.obj.Comment import com.github.libretube.util.ConnectionHelper import com.github.libretube.util.formatShort -import com.squareup.picasso.Picasso class RepliesAdapter( private val replies: MutableList 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 76d1afc3b..775cd0991 100644 --- a/app/src/main/java/com/github/libretube/adapters/SearchAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/SearchAdapter.kt @@ -23,7 +23,6 @@ import com.github.libretube.preferences.PreferenceHelper import com.github.libretube.util.ConnectionHelper import com.github.libretube.util.RetrofitInstance import com.github.libretube.util.formatShort -import com.squareup.picasso.Picasso import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch diff --git a/app/src/main/java/com/github/libretube/adapters/SubscriptionAdapter.kt b/app/src/main/java/com/github/libretube/adapters/SubscriptionAdapter.kt index 791270913..62bd9a652 100644 --- a/app/src/main/java/com/github/libretube/adapters/SubscriptionAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/SubscriptionAdapter.kt @@ -17,7 +17,6 @@ import com.github.libretube.fragments.PlayerFragment import com.github.libretube.obj.StreamItem import com.github.libretube.util.ConnectionHelper import com.github.libretube.util.formatShort -import com.squareup.picasso.Picasso class SubscriptionAdapter( private val videoFeed: List, diff --git a/app/src/main/java/com/github/libretube/adapters/SubscriptionChannelAdapter.kt b/app/src/main/java/com/github/libretube/adapters/SubscriptionChannelAdapter.kt index ced628c3f..a5dcb0871 100644 --- a/app/src/main/java/com/github/libretube/adapters/SubscriptionChannelAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/SubscriptionChannelAdapter.kt @@ -14,7 +14,6 @@ import com.github.libretube.obj.Subscription import com.github.libretube.preferences.PreferenceHelper import com.github.libretube.util.ConnectionHelper import com.github.libretube.util.RetrofitInstance -import com.squareup.picasso.Picasso import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch 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 cdf9688e3..da3767ea5 100644 --- a/app/src/main/java/com/github/libretube/adapters/TrendingAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/TrendingAdapter.kt @@ -17,7 +17,6 @@ import com.github.libretube.fragments.PlayerFragment import com.github.libretube.obj.StreamItem import com.github.libretube.util.ConnectionHelper import com.github.libretube.util.formatShort -import com.squareup.picasso.Picasso class TrendingAdapter( private val videoFeed: List, 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 68ce33bee..eee3d3331 100644 --- a/app/src/main/java/com/github/libretube/adapters/WatchHistoryAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/WatchHistoryAdapter.kt @@ -16,7 +16,6 @@ import com.github.libretube.dialogs.VideoOptionsDialog import com.github.libretube.fragments.PlayerFragment import com.github.libretube.obj.WatchHistoryItem import com.github.libretube.util.ConnectionHelper -import com.squareup.picasso.Picasso class WatchHistoryAdapter( private val watchHistory: MutableList, diff --git a/app/src/main/java/com/github/libretube/fragments/ChannelFragment.kt b/app/src/main/java/com/github/libretube/fragments/ChannelFragment.kt index e0340e879..9194596fe 100644 --- a/app/src/main/java/com/github/libretube/fragments/ChannelFragment.kt +++ b/app/src/main/java/com/github/libretube/fragments/ChannelFragment.kt @@ -17,7 +17,6 @@ import com.github.libretube.preferences.PreferenceHelper import com.github.libretube.util.ConnectionHelper import com.github.libretube.util.RetrofitInstance import com.github.libretube.util.formatShort -import com.squareup.picasso.Picasso import retrofit2.HttpException import java.io.IOException diff --git a/app/src/main/java/com/github/libretube/preferences/AboutFragment.kt b/app/src/main/java/com/github/libretube/preferences/AboutFragment.kt index e998267f3..a9d36db59 100644 --- a/app/src/main/java/com/github/libretube/preferences/AboutFragment.kt +++ b/app/src/main/java/com/github/libretube/preferences/AboutFragment.kt @@ -81,6 +81,13 @@ class AboutFragment : Fragment() { showSnackBar(text) true } + + binding.community.setOnClickListener { + val communityFragment = CommunityFragment() + parentFragmentManager.beginTransaction() + .replace(R.id.settings, communityFragment) + .commitNow() + } } private fun openLinkFromHref(link: String) { diff --git a/app/src/main/java/com/github/libretube/preferences/AdvancedSettings.kt b/app/src/main/java/com/github/libretube/preferences/AdvancedSettings.kt index c467d9c90..a18b63482 100644 --- a/app/src/main/java/com/github/libretube/preferences/AdvancedSettings.kt +++ b/app/src/main/java/com/github/libretube/preferences/AdvancedSettings.kt @@ -18,21 +18,6 @@ class AdvancedSettings : PreferenceFragmentCompat() { val settingsActivity = activity as SettingsActivity settingsActivity.changeTopBarText(getString(R.string.advanced)) - // clear search history - val clearHistory = findPreference("clear_history") - clearHistory?.setOnPreferenceClickListener { - PreferenceHelper.removePreference(requireContext(), "search_history") - true - } - - // clear watch history and positions - val clearWatchHistory = findPreference("clear_watch_history") - clearWatchHistory?.setOnPreferenceClickListener { - PreferenceHelper.removePreference(requireContext(), "watch_history") - PreferenceHelper.removePreference(requireContext(), "watch_positions") - true - } - val dataSaverMode = findPreference("data_saver_mode") dataSaverMode?.setOnPreferenceChangeListener { _, _ -> val restartDialog = RequireRestartDialog() diff --git a/app/src/main/java/com/github/libretube/preferences/HistorySettings.kt b/app/src/main/java/com/github/libretube/preferences/HistorySettings.kt new file mode 100644 index 000000000..26d7f4a5a --- /dev/null +++ b/app/src/main/java/com/github/libretube/preferences/HistorySettings.kt @@ -0,0 +1,38 @@ +package com.github.libretube.preferences + +import android.os.Bundle +import androidx.preference.Preference +import androidx.preference.PreferenceFragmentCompat +import com.github.libretube.R +import com.github.libretube.activities.SettingsActivity + +class HistorySettings : PreferenceFragmentCompat() { + + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { + setPreferencesFromResource(R.xml.history_settings, rootKey) + + val settingsActivity = activity as SettingsActivity + settingsActivity.changeTopBarText(getString(R.string.history)) + + // clear search history + val clearHistory = findPreference("clear_history") + clearHistory?.setOnPreferenceClickListener { + PreferenceHelper.removePreference(requireContext(), "search_history") + true + } + + // clear watch history and positions + val clearWatchHistory = findPreference("clear_watch_history") + clearWatchHistory?.setOnPreferenceClickListener { + PreferenceHelper.removePreference(requireContext(), "watch_history") + true + } + + // clear watch positions + val clearWatchPositions = findPreference("clear_watch_positions") + clearWatchPositions?.setOnPreferenceClickListener { + PreferenceHelper.removePreference(requireContext(), "watch_positions") + true + } + } +} diff --git a/app/src/main/java/com/github/libretube/preferences/MainSettings.kt b/app/src/main/java/com/github/libretube/preferences/MainSettings.kt index f131e0ecd..74d084dad 100644 --- a/app/src/main/java/com/github/libretube/preferences/MainSettings.kt +++ b/app/src/main/java/com/github/libretube/preferences/MainSettings.kt @@ -64,6 +64,13 @@ class MainSettings : PreferenceFragmentCompat() { true } + val history = findPreference("history") + history?.setOnPreferenceClickListener { + val newFragment = HistorySettings() + navigateToSettingsFragment(newFragment) + true + } + val advanced = findPreference("advanced") advanced?.setOnPreferenceClickListener { val newFragment = AdvancedSettings() @@ -84,13 +91,6 @@ class MainSettings : PreferenceFragmentCompat() { navigateToSettingsFragment(newFragment) true } - - val community = findPreference("community") - community?.setOnPreferenceClickListener { - val newFragment = CommunityFragment() - navigateToSettingsFragment(newFragment) - true - } } private fun navigateToSettingsFragment(newFragment: Fragment) { diff --git a/app/src/main/java/com/github/libretube/util/ConnectionHelper.kt b/app/src/main/java/com/github/libretube/util/ConnectionHelper.kt index f79bda880..e248e3d92 100644 --- a/app/src/main/java/com/github/libretube/util/ConnectionHelper.kt +++ b/app/src/main/java/com/github/libretube/util/ConnectionHelper.kt @@ -1,7 +1,6 @@ package com.github.libretube.util import android.content.Context -import android.graphics.Color import android.net.ConnectivityManager import android.widget.ImageView import com.github.libretube.Globals diff --git a/app/src/main/res/layout/fragment_about.xml b/app/src/main/res/layout/fragment_about.xml index d09cf88f7..e8203e725 100644 --- a/app/src/main/res/layout/fragment_about.xml +++ b/app/src/main/res/layout/fragment_about.xml @@ -117,6 +117,24 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1dc828dfe..e89d87c4c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -145,7 +145,7 @@ Advanced Player Adjust the app to your liking. - Downloads, history + Downloads, reset Live This comment has no replies. Authors @@ -209,7 +209,7 @@ Restore Watch History Remember position - Remember the watch position and automatically seek to it. + Restore last watch position Authentication instance Use a different instance for authenticated calls. Choose an auth instance @@ -244,4 +244,9 @@ No external player found. Please make sure you have one installed. Data saver mode Don\'t load thumbnails and other images to save data. + Store the search queries locally + Keep track of watched videos locally + Watch and search history + Watch positions + Reset watch positions \ No newline at end of file diff --git a/app/src/main/res/xml/advanced_settings.xml b/app/src/main/res/xml/advanced_settings.xml index ba8d17a89..04ea4e3db 100644 --- a/app/src/main/res/xml/advanced_settings.xml +++ b/app/src/main/res/xml/advanced_settings.xml @@ -31,44 +31,7 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/xml/settings.xml b/app/src/main/res/xml/settings.xml index 9accbd36b..e3d3a7e0b 100644 --- a/app/src/main/res/xml/settings.xml +++ b/app/src/main/res/xml/settings.xml @@ -50,6 +50,12 @@ app:summary="@string/player_summary" app:title="@string/audio_video" /> + + - - From ced89f6f74b7380a1974fa23af18c83743e67d23 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Fri, 15 Jul 2022 22:26:22 +0200 Subject: [PATCH 3/3] fix backstack --- .../libretube/activities/MainActivity.kt | 3 +- .../libretube/activities/SettingsActivity.kt | 33 ++++++++++++------- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/github/libretube/activities/MainActivity.kt b/app/src/main/java/com/github/libretube/activities/MainActivity.kt index 67b11515c..2e6046bef 100644 --- a/app/src/main/java/com/github/libretube/activities/MainActivity.kt +++ b/app/src/main/java/com/github/libretube/activities/MainActivity.kt @@ -275,7 +275,8 @@ class MainActivity : AppCompatActivity() { minimizePlayer() } catch (e: Exception) { if (navController.currentDestination?.id == startFragmentId) { - super.onBackPressed() + // close app + moveTaskToBack(true) } else { navController.popBackStack() } diff --git a/app/src/main/java/com/github/libretube/activities/SettingsActivity.kt b/app/src/main/java/com/github/libretube/activities/SettingsActivity.kt index 5adea738a..433317ff2 100644 --- a/app/src/main/java/com/github/libretube/activities/SettingsActivity.kt +++ b/app/src/main/java/com/github/libretube/activities/SettingsActivity.kt @@ -3,9 +3,10 @@ package com.github.libretube.activities import android.os.Build import android.os.Bundle import androidx.appcompat.app.AppCompatActivity -import com.github.libretube.Globals import com.github.libretube.R import com.github.libretube.databinding.ActivitySettingsBinding +import com.github.libretube.preferences.AboutFragment +import com.github.libretube.preferences.CommunityFragment import com.github.libretube.preferences.MainSettings import com.github.libretube.util.ThemeHelper @@ -22,6 +23,8 @@ class SettingsActivity : AppCompatActivity() { super.onCreate(savedInstanceState) binding = ActivitySettingsBinding.inflate(layoutInflater) + + // animate the layout transition if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { overridePendingTransition(50, 50) } @@ -43,16 +46,24 @@ class SettingsActivity : AppCompatActivity() { } override fun onBackPressed() { - if (Globals.isCurrentViewMainSettings) { - super.onBackPressed() - finishAndRemoveTask() - } else { - Globals.isCurrentViewMainSettings = true - supportFragmentManager - .beginTransaction() - .replace(R.id.settings, MainSettings()) - .commit() - changeTopBarText(getString(R.string.settings)) + when (supportFragmentManager.findFragmentById(R.id.settings)) { + is MainSettings -> { + super.onBackPressed() + finishAndRemoveTask() + } + is CommunityFragment -> { + supportFragmentManager + .beginTransaction() + .replace(R.id.settings, AboutFragment()) + .commit() + } + else -> { + supportFragmentManager + .beginTransaction() + .replace(R.id.settings, MainSettings()) + .commit() + changeTopBarText(getString(R.string.settings)) + } } }