From 53f9d41d312d25f5a986fcc31e2b3c58aa7cf482 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Tue, 12 Jul 2022 17:14:10 +0200 Subject: [PATCH 1/2] seekbar preview --- .../libretube/fragments/PlayerFragment.kt | 17 +++++++++++------ .../libretube/views/DoubleClickListener.kt | 2 +- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt index 33c15ba8e..23206b245 100644 --- a/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt @@ -508,7 +508,7 @@ class PlayerFragment : Fragment() { runOnUiThread { // set media sources for the player - setResolutionAndSubtitles(view, response) + setResolutionAndSubtitles(response) prepareExoPlayerView() initializePlayerView(view, response) seekToWatchPosition() @@ -981,10 +981,15 @@ class PlayerFragment : Fragment() { } override fun onScrubMove(timeBar: TimeBar, position: Long) { - exoPlayer.seekTo(position) + val minTimeDiff = 10 * 1000 // 10s + // get the difference between the new and the old position + val diff = abs(exoPlayer.currentPosition - position) + // seek only when the difference is greater than 10 seconds + if (diff >= minTimeDiff) exoPlayer.seekTo(position) } override fun onScrubStop(timeBar: TimeBar, position: Long, canceled: Boolean) { + exoPlayer.seekTo(position) exoPlayer.play() Handler(Looper.getMainLooper()).postDelayed({ exoPlayerView.hideController() @@ -1033,7 +1038,7 @@ class PlayerFragment : Fragment() { // call the function again in 100ms exoPlayerView.postDelayed(this::setCurrentChapterName, 100) - var chapterName = getCurrentChapterName() + val chapterName = getCurrentChapterName() // change the chapter name textView text to the chapterName if (chapterName != null && chapterName != playerBinding.chapterName.text) { @@ -1078,7 +1083,7 @@ class PlayerFragment : Fragment() { exoPlayer.setMediaSource(mergeSource) } - private fun setResolutionAndSubtitles(view: View, response: Streams) { + private fun setResolutionAndSubtitles(response: Streams) { val videoFormatPreference = PreferenceHelper.getString(requireContext(), "player_video_format", "WEBM") val defres = PreferenceHelper.getString(requireContext(), "default_res", "")!! @@ -1312,7 +1317,7 @@ class PlayerFragment : Fragment() { private fun subscribe(channel_id: String) { fun run() { lifecycleScope.launchWhenCreated { - val response = try { + try { val token = PreferenceHelper.getToken(requireContext()) RetrofitInstance.authApi.subscribe( token, @@ -1335,7 +1340,7 @@ class PlayerFragment : Fragment() { private fun unsubscribe(channel_id: String) { fun run() { lifecycleScope.launchWhenCreated { - val response = try { + try { val token = PreferenceHelper.getToken(requireContext()) RetrofitInstance.authApi.unsubscribe( token, diff --git a/app/src/main/java/com/github/libretube/views/DoubleClickListener.kt b/app/src/main/java/com/github/libretube/views/DoubleClickListener.kt index dd5eaf02d..808ef2320 100644 --- a/app/src/main/java/com/github/libretube/views/DoubleClickListener.kt +++ b/app/src/main/java/com/github/libretube/views/DoubleClickListener.kt @@ -5,7 +5,7 @@ import android.os.Looper import android.view.View class DoubleClickListener( - private val doubleClickTimeLimitMills: Long = 300, + private val doubleClickTimeLimitMills: Long = 200, private val callback: Callback ) : View.OnClickListener { private var lastClicked: Long = -1L From b3791ab9c04de1d7b46dc91c94bdd540ac6eacf0 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Tue, 12 Jul 2022 17:27:56 +0200 Subject: [PATCH 2/2] cleanup global vars --- .../main/java/com/github/libretube/Globals.kt | 7 ++++++ .../libretube/activities/MainActivity.kt | 4 ++-- .../libretube/activities/SettingsActivity.kt | 7 +++--- .../libretube/fragments/LibraryFragment.kt | 3 ++- .../libretube/fragments/PlayerFragment.kt | 24 +++++++++---------- .../com/github/libretube/util/ThemeHelper.kt | 2 +- app/src/main/res/values/style.xml | 4 ++-- 7 files changed, 28 insertions(+), 23 deletions(-) create mode 100644 app/src/main/java/com/github/libretube/Globals.kt diff --git a/app/src/main/java/com/github/libretube/Globals.kt b/app/src/main/java/com/github/libretube/Globals.kt new file mode 100644 index 000000000..7d4ff4ddd --- /dev/null +++ b/app/src/main/java/com/github/libretube/Globals.kt @@ -0,0 +1,7 @@ +package com.github.libretube + +object Globals { + var isFullScreen = false + var isMiniPlayerVisible = false + var isCurrentViewMainSettings = true +} 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 0c9b3e4bb..401b81697 100644 --- a/app/src/main/java/com/github/libretube/activities/MainActivity.kt +++ b/app/src/main/java/com/github/libretube/activities/MainActivity.kt @@ -25,11 +25,11 @@ import androidx.fragment.app.Fragment import androidx.navigation.NavController import androidx.navigation.findNavController import androidx.navigation.ui.setupWithNavController +import com.github.libretube.Globals import com.github.libretube.PIPED_API_URL import com.github.libretube.R import com.github.libretube.databinding.ActivityMainBinding import com.github.libretube.fragments.PlayerFragment -import com.github.libretube.fragments.isFullScreen import com.github.libretube.preferences.PreferenceHelper import com.github.libretube.services.ClosingService import com.github.libretube.util.ConnectionHelper @@ -308,7 +308,7 @@ class MainActivity : AppCompatActivity() { enableTransition(R.id.yt_transition, true) } findViewById(R.id.linLayout).visibility = View.VISIBLE - isFullScreen = false + Globals.isFullScreen = false } override fun onConfigurationChanged(newConfig: Configuration) { 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 0a9aaa7ea..c4ceec010 100644 --- a/app/src/main/java/com/github/libretube/activities/SettingsActivity.kt +++ b/app/src/main/java/com/github/libretube/activities/SettingsActivity.kt @@ -3,14 +3,13 @@ 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.MainSettings import com.github.libretube.util.ThemeHelper import com.google.android.material.color.DynamicColors -var isCurrentViewMainSettings = true - class SettingsActivity : AppCompatActivity() { val TAG = "SettingsActivity" lateinit var binding: ActivitySettingsBinding @@ -46,11 +45,11 @@ class SettingsActivity : AppCompatActivity() { } override fun onBackPressed() { - if (isCurrentViewMainSettings) { + if (Globals.isCurrentViewMainSettings) { super.onBackPressed() finishAndRemoveTask() } else { - isCurrentViewMainSettings = true + Globals.isCurrentViewMainSettings = true supportFragmentManager .beginTransaction() .replace(R.id.settings, MainSettings()) diff --git a/app/src/main/java/com/github/libretube/fragments/LibraryFragment.kt b/app/src/main/java/com/github/libretube/fragments/LibraryFragment.kt index 8ad047aa4..b5ceea33b 100644 --- a/app/src/main/java/com/github/libretube/fragments/LibraryFragment.kt +++ b/app/src/main/java/com/github/libretube/fragments/LibraryFragment.kt @@ -10,6 +10,7 @@ import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.LinearLayoutManager +import com.github.libretube.Globals import com.github.libretube.R import com.github.libretube.adapters.PlaylistsAdapter import com.github.libretube.databinding.FragmentLibraryBinding @@ -77,7 +78,7 @@ class LibraryFragment : Fragment() { override fun onResume() { // optimize CreatePlaylistFab bottom margin if miniPlayer active val layoutParams = binding.createPlaylist.layoutParams as ViewGroup.MarginLayoutParams - layoutParams.bottomMargin = if (isMiniPlayerVisible) 180 else 64 + layoutParams.bottomMargin = if (Globals.isMiniPlayerVisible) 180 else 64 binding.createPlaylist.layoutParams = layoutParams super.onResume() } diff --git a/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt index 23206b245..edcdda4c3 100644 --- a/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt @@ -32,6 +32,7 @@ import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager +import com.github.libretube.Globals import com.github.libretube.R import com.github.libretube.activities.MainActivity import com.github.libretube.activities.hideKeyboard @@ -95,9 +96,6 @@ import java.io.IOException import java.util.concurrent.Executors import kotlin.math.abs -var isFullScreen = false -var isMiniPlayerVisible = false - class PlayerFragment : Fragment() { private val TAG = "PlayerFragment" @@ -208,11 +206,11 @@ class PlayerFragment : Fragment() { val mainMotionLayout = mainActivity.binding.mainMotionLayout if (currentId == eId) { - isMiniPlayerVisible = true + Globals.isMiniPlayerVisible = true exoPlayerView.useController = false mainMotionLayout.progress = 1F } else if (currentId == sId) { - isMiniPlayerVisible = false + Globals.isMiniPlayerVisible = false exoPlayerView.useController = true mainMotionLayout.progress = 0F } @@ -231,7 +229,7 @@ class PlayerFragment : Fragment() { binding.playerMotionLayout.transitionToStart() binding.closeImageView.setOnClickListener { - isMiniPlayerVisible = false + Globals.isMiniPlayerVisible = false binding.playerMotionLayout.transitionToEnd() val mainActivity = activity as MainActivity mainActivity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT @@ -240,7 +238,7 @@ class PlayerFragment : Fragment() { .commit() } playerBinding.closeImageButton.setOnClickListener { - isMiniPlayerVisible = false + Globals.isMiniPlayerVisible = false binding.playerMotionLayout.transitionToEnd() val mainActivity = activity as MainActivity mainActivity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT @@ -273,7 +271,7 @@ class PlayerFragment : Fragment() { playerBinding.fullscreen.setOnClickListener { // hide player controller exoPlayerView.hideController() - if (!isFullScreen) { + if (!Globals.isFullScreen) { // go to fullscreen mode setFullscreen() } else { @@ -358,7 +356,7 @@ class PlayerFragment : Fragment() { } mainActivity.requestedOrientation = orientation - isFullScreen = true + Globals.isFullScreen = true } private fun unsetFullscreen() { @@ -378,7 +376,7 @@ class PlayerFragment : Fragment() { val mainActivity = activity as MainActivity mainActivity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT - isFullScreen = false + Globals.isFullScreen = false } private fun scaleControls(scaleFactor: Float) { @@ -1017,7 +1015,7 @@ class PlayerFragment : Fragment() { } playerBinding.chapterLL.visibility = View.VISIBLE playerBinding.chapterLL.setOnClickListener { - if (isFullScreen) { + if (Globals.isFullScreen) { MaterialAlertDialogBuilder(requireContext()) .setTitle(R.string.chapters) .setItems(titles.toTypedArray()) { _, index -> @@ -1440,7 +1438,7 @@ class PlayerFragment : Fragment() { val mainActivity = activity as MainActivity mainActivity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT - isFullScreen = false + Globals.isFullScreen = false } else { // enable exoPlayer controls again exoPlayerView.useController = true @@ -1455,7 +1453,7 @@ class PlayerFragment : Fragment() { binding.playerScrollView.getHitRect(bounds) if (SDK_INT >= Build.VERSION_CODES.O && - exoPlayer.isPlaying && (binding.playerScrollView.getLocalVisibleRect(bounds) || isFullScreen) + exoPlayer.isPlaying && (binding.playerScrollView.getLocalVisibleRect(bounds) || Globals.isFullScreen) ) { activity?.enterPictureInPictureMode(updatePipParams()) } diff --git a/app/src/main/java/com/github/libretube/util/ThemeHelper.kt b/app/src/main/java/com/github/libretube/util/ThemeHelper.kt index 0ab0a76eb..ac20dbbef 100644 --- a/app/src/main/java/com/github/libretube/util/ThemeHelper.kt +++ b/app/src/main/java/com/github/libretube/util/ThemeHelper.kt @@ -37,7 +37,7 @@ object ThemeHelper { "L" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) "D" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) "O" -> { - context.setTheme(R.style.OLED) + context.setTheme(R.style.Black) AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) } } diff --git a/app/src/main/res/values/style.xml b/app/src/main/res/values/style.xml index 759b7f2b1..3774f77c7 100644 --- a/app/src/main/res/values/style.xml +++ b/app/src/main/res/values/style.xml @@ -15,7 +15,7 @@ -