diff --git a/app/build.gradle b/app/build.gradle index 1a2c8b8..f1aa9f7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -5,7 +5,7 @@ plugins { } android { - compileSdkVersion 32 + compileSdkVersion 33 buildToolsVersion "30.0.3" defaultConfig { @@ -51,12 +51,12 @@ dependencies { implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4' implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.3' - implementation 'androidx.core:core-ktx:1.8.0' + implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.core:core-splashscreen:1.0.0' - implementation 'androidx.appcompat:appcompat:1.5.0' + implementation 'androidx.appcompat:appcompat:1.5.1' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' - implementation 'androidx.navigation:navigation-fragment-ktx:2.5.1' - implementation 'androidx.navigation:navigation-ui-ktx:2.5.1' + implementation 'androidx.navigation:navigation-fragment-ktx:2.5.2' + implementation 'androidx.navigation:navigation-ui-ktx:2.5.2' implementation 'androidx.security:security-crypto:1.1.0-alpha03' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' diff --git a/app/src/main/java/org/mosad/teapod/ui/activity/main/MainActivity.kt b/app/src/main/java/org/mosad/teapod/ui/activity/main/MainActivity.kt index ed13283..e4003f3 100644 --- a/app/src/main/java/org/mosad/teapod/ui/activity/main/MainActivity.kt +++ b/app/src/main/java/org/mosad/teapod/ui/activity/main/MainActivity.kt @@ -26,6 +26,7 @@ import android.content.Intent import android.os.Bundle import android.util.Log import android.view.MenuItem +import androidx.activity.addCallback import androidx.appcompat.app.AppCompatActivity import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen import androidx.fragment.app.Fragment @@ -78,16 +79,14 @@ class MainActivity : AppCompatActivity(), NavigationBarView.OnItemSelectedListen supportFragmentManager.commit { replace(R.id.nav_host_fragment, activeBaseFragment, activeBaseFragment.javaClass.simpleName) } - } - override fun onBackPressed() { - if (supportFragmentManager.backStackEntryCount > 0) { - supportFragmentManager.popBackStack() - } else { - if (activeBaseFragment !is HomeFragment) { - binding.navView.selectedItemId = R.id.navigation_home + onBackPressedDispatcher.addCallback { + if (supportFragmentManager.backStackEntryCount > 0) { + supportFragmentManager.popBackStack() } else { - super.onBackPressed() + if (activeBaseFragment !is HomeFragment) { + binding.navView.selectedItemId = R.id.navigation_home + } } } } diff --git a/app/src/main/java/org/mosad/teapod/ui/activity/onboarding/OnboardingActivity.kt b/app/src/main/java/org/mosad/teapod/ui/activity/onboarding/OnboardingActivity.kt index 27ea14c..9d77b28 100644 --- a/app/src/main/java/org/mosad/teapod/ui/activity/onboarding/OnboardingActivity.kt +++ b/app/src/main/java/org/mosad/teapod/ui/activity/onboarding/OnboardingActivity.kt @@ -3,13 +3,14 @@ package org.mosad.teapod.ui.activity.onboarding import android.content.Intent import android.os.Bundle import android.view.View +import androidx.activity.addCallback import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentActivity import androidx.viewpager2.adapter.FragmentStateAdapter import com.google.android.material.tabs.TabLayoutMediator -import org.mosad.teapod.ui.activity.main.MainActivity import org.mosad.teapod.databinding.ActivityOnboardingBinding +import org.mosad.teapod.ui.activity.main.MainActivity class OnboardingActivity : AppCompatActivity() { @@ -35,13 +36,11 @@ class OnboardingActivity : AppCompatActivity() { if (fragments.size <= 1) { binding.tabLayout.visibility = View.GONE } - } - override fun onBackPressed() { - if (binding.viewPager.currentItem == 0) { - super.onBackPressed() - } else { - binding.viewPager.currentItem = binding.viewPager.currentItem - 1 + onBackPressedDispatcher.addCallback { + if (binding.viewPager.currentItem != 0) { + binding.viewPager.currentItem = binding.viewPager.currentItem - 1 + } } } diff --git a/app/src/main/java/org/mosad/teapod/ui/activity/player/PlayerActivity.kt b/app/src/main/java/org/mosad/teapod/ui/activity/player/PlayerActivity.kt index da0b46b..91be81e 100644 --- a/app/src/main/java/org/mosad/teapod/ui/activity/player/PlayerActivity.kt +++ b/app/src/main/java/org/mosad/teapod/ui/activity/player/PlayerActivity.kt @@ -307,9 +307,9 @@ class PlayerActivity : AppCompatActivity() { } // TODO add metaDB ending_start support - // if remaining time < 20 sec, a next ep is set, autoplay is enabled and not in pip: - // show next ep button - if (remainingTime in 1..20000) { + // if remaining time > 1 and < 20 sec, a next ep is set, autoplay is enabled + // and not in pip: show next ep button + if (remainingTime in 1000..20000) { if (!btnNextEpIsVisible && hasNextEpisode() && Preferences.autoplay && !isInPiPMode()) { showButtonNextEp() } @@ -471,7 +471,7 @@ class PlayerActivity : AppCompatActivity() { playerBinding.buttonNextEp.animate() .alpha(0.0f) .setListener(object : AnimatorListenerAdapter() { - override fun onAnimationEnd(animation: Animator?) { + override fun onAnimationEnd(animation: Animator) { super.onAnimationEnd(animation) playerBinding.buttonNextEp.isVisible = false } @@ -491,7 +491,7 @@ class PlayerActivity : AppCompatActivity() { playerBinding.buttonSkipOp.animate() .alpha(0.0f) .setListener(object : AnimatorListenerAdapter() { - override fun onAnimationEnd(animation: Animator?) { + override fun onAnimationEnd(animation: Animator) { super.onAnimationEnd(animation) playerBinding.buttonSkipOp.isVisible = false } @@ -523,7 +523,7 @@ class PlayerActivity : AppCompatActivity() { /** * on single tap hide or show the controls */ - override fun onSingleTapConfirmed(e: MotionEvent?): Boolean { + override fun onSingleTapConfirmed(e: MotionEvent): Boolean { if (!isInPiPMode()) { if (controller.isVisible) controller.hide() else controller.show() } @@ -534,8 +534,8 @@ class PlayerActivity : AppCompatActivity() { /** * on double tap rewind or forward */ - override fun onDoubleTap(e: MotionEvent?): Boolean { - val eventPosX = e?.x?.toInt() ?: 0 + override fun onDoubleTap(e: MotionEvent): Boolean { + val eventPosX = e.x.toInt() val viewCenterX = playerBinding.videoView.measuredWidth / 2 // if the event position is on the left side rewind, if it's on the right forward @@ -547,14 +547,14 @@ class PlayerActivity : AppCompatActivity() { /** * not used */ - override fun onDoubleTapEvent(e: MotionEvent?): Boolean { + override fun onDoubleTapEvent(e: MotionEvent): Boolean { return true } /** * on long press toggle pause/play */ - override fun onLongPress(e: MotionEvent?) { + override fun onLongPress(e: MotionEvent) { model.togglePausePlay() } diff --git a/app/src/main/java/org/mosad/teapod/ui/components/FastForwardButton.kt b/app/src/main/java/org/mosad/teapod/ui/components/FastForwardButton.kt index e9207d7..1da0ca4 100644 --- a/app/src/main/java/org/mosad/teapod/ui/components/FastForwardButton.kt +++ b/app/src/main/java/org/mosad/teapod/ui/components/FastForwardButton.kt @@ -28,7 +28,7 @@ class FastForwardButton(context: Context, attrs: AttributeSet?): FrameLayout(con repeatCount = 1 repeatMode = ObjectAnimator.REVERSE addListener(object : AnimatorListenerAdapter() { - override fun onAnimationStart(animation: Animator?) { + override fun onAnimationStart(animation: Animator) { binding.imageButton.isEnabled = false // disable button binding.imageButton.setBackgroundResource(R.drawable.ic_baseline_forward_24) } @@ -39,7 +39,7 @@ class FastForwardButton(context: Context, attrs: AttributeSet?): FrameLayout(con duration = animationDuration addListener(object : AnimatorListenerAdapter() { // the label animation takes longer then the button animation, reset stuff in here - override fun onAnimationEnd(animation: Animator?) { + override fun onAnimationEnd(animation: Animator) { binding.imageButton.isEnabled = true // enable button binding.imageButton.setBackgroundResource(R.drawable.ic_baseline_forward_10_24) diff --git a/app/src/main/java/org/mosad/teapod/ui/components/RewindButton.kt b/app/src/main/java/org/mosad/teapod/ui/components/RewindButton.kt index c1fa4d0..e3584cf 100644 --- a/app/src/main/java/org/mosad/teapod/ui/components/RewindButton.kt +++ b/app/src/main/java/org/mosad/teapod/ui/components/RewindButton.kt @@ -28,7 +28,7 @@ class RewindButton(context: Context, attrs: AttributeSet): FrameLayout(context, repeatCount = 1 repeatMode = ObjectAnimator.REVERSE addListener(object : AnimatorListenerAdapter() { - override fun onAnimationStart(animation: Animator?) { + override fun onAnimationStart(animation: Animator) { binding.imageButton.isEnabled = false // disable button binding.imageButton.setBackgroundResource(R.drawable.ic_baseline_rewind_24) } @@ -38,7 +38,7 @@ class RewindButton(context: Context, attrs: AttributeSet): FrameLayout(context, labelAnimation = ObjectAnimator.ofFloat(binding.textView, View.TRANSLATION_X, -35f).apply { duration = animationDuration addListener(object : AnimatorListenerAdapter() { - override fun onAnimationEnd(animation: Animator?) { + override fun onAnimationEnd(animation: Animator) { binding.imageButton.isEnabled = true // enable button binding.imageButton.setBackgroundResource(R.drawable.ic_baseline_rewind_10_24) diff --git a/build.gradle b/build.gradle index fd2cada..a7282d5 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext.kotlin_version = "1.7.10" - ext.ktor_version = "2.1.0" + ext.ktor_version = "2.1.1" ext.exo_version = "2.17.1" repositories { google()