From 165f8dcb4536f25692ca4d1b19bc6243c187380d Mon Sep 17 00:00:00 2001 From: Bnyro Date: Wed, 20 Jul 2022 22:03:09 +0200 Subject: [PATCH] cleanup and bug fixes --- .../libretube/activities/MainActivity.kt | 10 ++++ .../libretube/fragments/PlayerFragment.kt | 11 ++--- .../preferences/AppearanceSettings.kt | 7 --- .../libretube/preferences/GeneralSettings.kt | 49 +++++++++++++++++++ .../libretube/preferences/MainSettings.kt | 18 ++----- .../libretube/preferences/PreferenceKeys.kt | 1 + .../libretube/views/CustomExoPlayerView.kt | 2 +- .../main/res/drawable/ic_screen_rotation.xml | 10 ++++ app/src/main/res/values/strings.xml | 2 + app/src/main/res/xml/appearance_settings.xml | 11 ----- app/src/main/res/xml/general_settings.xml | 44 +++++++++++++++++ app/src/main/res/xml/settings.xml | 28 +++-------- 12 files changed, 131 insertions(+), 62 deletions(-) create mode 100644 app/src/main/java/com/github/libretube/preferences/GeneralSettings.kt create mode 100644 app/src/main/res/drawable/ic_screen_rotation.xml create mode 100644 app/src/main/res/xml/general_settings.xml 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 d0408e20c..0e1b48444 100644 --- a/app/src/main/java/com/github/libretube/activities/MainActivity.kt +++ b/app/src/main/java/com/github/libretube/activities/MainActivity.kt @@ -3,6 +3,7 @@ package com.github.libretube.activities import android.app.Activity import android.content.Context import android.content.Intent +import android.content.pm.ActivityInfo import android.content.res.Configuration import android.net.Uri import android.os.Build @@ -47,6 +48,7 @@ class MainActivity : AppCompatActivity() { lateinit var navController: NavController private var startFragmentId = R.id.homeFragment + var autoRotationEnabled = false override fun onCreate(savedInstanceState: Bundle?) { // set the app theme (e.g. Material You) @@ -57,6 +59,12 @@ class MainActivity : AppCompatActivity() { super.onCreate(savedInstanceState) + autoRotationEnabled = PreferenceHelper.getBoolean(PreferenceKeys.AUTO_ROTATION, false) + + // enable auto rotation if turned on + requestedOrientation = if (autoRotationEnabled) ActivityInfo.SCREEN_ORIENTATION_USER + else ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT + // start service that gets called on closure startService(Intent(this, ClosingService::class.java)) @@ -323,6 +331,8 @@ class MainActivity : AppCompatActivity() { } findViewById(R.id.linLayout).visibility = View.VISIBLE Globals.IS_FULL_SCREEN = false + requestedOrientation = if (autoRotationEnabled) ActivityInfo.SCREEN_ORIENTATION_USER + else ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT } override fun onConfigurationChanged(newConfig: Configuration) { 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 9dda2a333..59eb23546 100644 --- a/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt @@ -563,7 +563,6 @@ class PlayerFragment : Fragment() { binding.linLayout.visibility = View.GONE playerBinding.fullscreen.setImageResource(R.drawable.ic_fullscreen_exit) playerBinding.exoTitle.visibility = View.VISIBLE - playerBinding.closeImageButton.visibility = View.GONE scaleControls(1.3F) @@ -585,6 +584,7 @@ class PlayerFragment : Fragment() { } mainActivity.requestedOrientation = orientation } + binding.player.setDoubleTapOverlayLayoutParams(90) Globals.IS_FULL_SCREEN = true } @@ -600,7 +600,6 @@ class PlayerFragment : Fragment() { binding.linLayout.visibility = View.VISIBLE playerBinding.fullscreen.setImageResource(R.drawable.ic_fullscreen) playerBinding.exoTitle.visibility = View.INVISIBLE - playerBinding.closeImageButton.visibility = View.VISIBLE scaleControls(1F) @@ -667,6 +666,8 @@ class PlayerFragment : Fragment() { ) as NotificationManager notificationManager.cancel(1) exoPlayer.release() + activity?.requestedOrientation = if ((activity as MainActivity).autoRotationEnabled) ActivityInfo.SCREEN_ORIENTATION_USER + else ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT } catch (e: Exception) { } } @@ -1527,12 +1528,6 @@ class PlayerFragment : Fragment() { Globals.IS_FULL_SCREEN ) View.VISIBLE else View.INVISIBLE - // hide the close image button - playerBinding.closeImageButton.visibility = - if (isLocked && - !(Globals.IS_FULL_SCREEN && !autoRotationEnabled) - ) View.VISIBLE else View.GONE - // disable double tap to seek when the player is locked if (isLocked) { // enable fast forward and rewind by double tapping diff --git a/app/src/main/java/com/github/libretube/preferences/AppearanceSettings.kt b/app/src/main/java/com/github/libretube/preferences/AppearanceSettings.kt index eac4eae1e..c7052b5ec 100644 --- a/app/src/main/java/com/github/libretube/preferences/AppearanceSettings.kt +++ b/app/src/main/java/com/github/libretube/preferences/AppearanceSettings.kt @@ -53,13 +53,6 @@ class AppearanceSettings : PreferenceFragmentCompat() { true } - val hideTrending = findPreference(PreferenceKeys.HIDE_TRENDING_PAGE) - hideTrending?.setOnPreferenceChangeListener { _, _ -> - val restartDialog = RequireRestartDialog() - restartDialog.show(childFragmentManager, "RequireRestartDialog") - true - } - val labelVisibilityMode = findPreference(PreferenceKeys.LABEL_VISIBILITY) labelVisibilityMode?.setOnPreferenceChangeListener { _, _ -> val restartDialog = RequireRestartDialog() diff --git a/app/src/main/java/com/github/libretube/preferences/GeneralSettings.kt b/app/src/main/java/com/github/libretube/preferences/GeneralSettings.kt new file mode 100644 index 000000000..bbbba3f83 --- /dev/null +++ b/app/src/main/java/com/github/libretube/preferences/GeneralSettings.kt @@ -0,0 +1,49 @@ +package com.github.libretube.preferences + +import android.os.Bundle +import androidx.preference.ListPreference +import androidx.preference.Preference +import androidx.preference.PreferenceFragmentCompat +import androidx.preference.SwitchPreferenceCompat +import com.github.libretube.R +import com.github.libretube.activities.SettingsActivity +import com.github.libretube.dialogs.RequireRestartDialog + +class GeneralSettings : PreferenceFragmentCompat() { + val TAG = "SettingsFragment" + + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { + setPreferencesFromResource(R.xml.general_settings, rootKey) + + val settingsActivity = activity as SettingsActivity + settingsActivity.changeTopBarText(getString(R.string.general)) + + val region = findPreference("region") + region?.setOnPreferenceChangeListener { _, _ -> + val restartDialog = RequireRestartDialog() + restartDialog.show(childFragmentManager, "RequireRestartDialog") + true + } + + val language = findPreference("language") + language?.setOnPreferenceChangeListener { _, _ -> + val restartDialog = RequireRestartDialog() + restartDialog.show(childFragmentManager, "RequireRestartDialog") + true + } + + val autoRotation = findPreference(PreferenceKeys.AUTO_ROTATION) + autoRotation?.setOnPreferenceChangeListener { _, _ -> + val restartDialog = RequireRestartDialog() + restartDialog.show(childFragmentManager, "RequireRestartDialog") + true + } + + val hideTrending = findPreference(PreferenceKeys.HIDE_TRENDING_PAGE) + hideTrending?.setOnPreferenceChangeListener { _, _ -> + val restartDialog = RequireRestartDialog() + restartDialog.show(childFragmentManager, "RequireRestartDialog") + 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 65c89abda..8871bde12 100644 --- a/app/src/main/java/com/github/libretube/preferences/MainSettings.kt +++ b/app/src/main/java/com/github/libretube/preferences/MainSettings.kt @@ -3,13 +3,11 @@ package com.github.libretube.preferences import android.os.Bundle import androidx.activity.result.ActivityResultLauncher import androidx.fragment.app.Fragment -import androidx.preference.ListPreference import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat import com.github.libretube.BuildConfig import com.github.libretube.R import com.github.libretube.activities.SettingsActivity -import com.github.libretube.dialogs.RequireRestartDialog import com.github.libretube.dialogs.UpdateDialog import com.github.libretube.update.UpdateChecker import com.google.android.material.snackbar.Snackbar @@ -27,17 +25,10 @@ class MainSettings : PreferenceFragmentCompat() { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.settings, rootKey) - val region = findPreference("region") - region?.setOnPreferenceChangeListener { _, _ -> - val restartDialog = RequireRestartDialog() - restartDialog.show(childFragmentManager, "RequireRestartDialog") - true - } - - val language = findPreference("language") - language?.setOnPreferenceChangeListener { _, _ -> - val restartDialog = RequireRestartDialog() - restartDialog.show(childFragmentManager, "RequireRestartDialog") + val general = findPreference("general") + general?.setOnPreferenceClickListener { + val newFragment = GeneralSettings() + navigateToSettingsFragment(newFragment) true } @@ -90,6 +81,7 @@ class MainSettings : PreferenceFragmentCompat() { else getString(R.string.version, BuildConfig.VERSION_NAME) update?.title = versionString + // checking for update: yes -> dialog, no -> snackBar update?.setOnPreferenceClickListener { CoroutineScope(Dispatchers.IO).launch { // check for update diff --git a/app/src/main/java/com/github/libretube/preferences/PreferenceKeys.kt b/app/src/main/java/com/github/libretube/preferences/PreferenceKeys.kt index 6d4ecf02d..4507ef6b4 100644 --- a/app/src/main/java/com/github/libretube/preferences/PreferenceKeys.kt +++ b/app/src/main/java/com/github/libretube/preferences/PreferenceKeys.kt @@ -9,6 +9,7 @@ object PreferenceKeys { */ const val LANGUAGE = "language" const val REGION = "region" + const val AUTO_ROTATION = "auto_rotation" /** * Appearance diff --git a/app/src/main/java/com/github/libretube/views/CustomExoPlayerView.kt b/app/src/main/java/com/github/libretube/views/CustomExoPlayerView.kt index 65f9af39b..386c528bc 100644 --- a/app/src/main/java/com/github/libretube/views/CustomExoPlayerView.kt +++ b/app/src/main/java/com/github/libretube/views/CustomExoPlayerView.kt @@ -35,7 +35,7 @@ internal class CustomExoPlayerView( } // set the top and bottom margin of the double tap overlay - private fun setDoubleTapOverlayLayoutParams(margin: Int) { + fun setDoubleTapOverlayLayoutParams(margin: Int) { val dpMargin = resources?.displayMetrics?.density!!.toInt() * margin val doubleTapOverlay = binding.root.findViewById(R.id.doubleTapOverlay) val params = doubleTapOverlay.layoutParams as MarginLayoutParams diff --git a/app/src/main/res/drawable/ic_screen_rotation.xml b/app/src/main/res/drawable/ic_screen_rotation.xml new file mode 100644 index 000000000..a8b146160 --- /dev/null +++ b/app/src/main/res/drawable/ic_screen_rotation.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e27146120..f5e701163 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -255,4 +255,6 @@ Do you want to update the app now? Seekbar preview Preview the video by seeking to the position when scrubbing the seekbar. + General + Language, region \ No newline at end of file diff --git a/app/src/main/res/xml/appearance_settings.xml b/app/src/main/res/xml/appearance_settings.xml index bde30a060..6aa43067e 100644 --- a/app/src/main/res/xml/appearance_settings.xml +++ b/app/src/main/res/xml/appearance_settings.xml @@ -88,15 +88,4 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/general_settings.xml b/app/src/main/res/xml/general_settings.xml new file mode 100644 index 000000000..bbfcfc3a8 --- /dev/null +++ b/app/src/main/res/xml/general_settings.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + \ 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 e3d3a7e0b..9b8571b9e 100644 --- a/app/src/main/res/xml/settings.xml +++ b/app/src/main/res/xml/settings.xml @@ -2,29 +2,13 @@ - + - - - - - - - +