This commit is contained in:
LagradOst 2021-06-17 17:39:01 +02:00
parent 2fbdd058f4
commit 850be93a8b
4 changed files with 259 additions and 193 deletions

View file

@ -157,8 +157,14 @@ interface LoadResponse {
val plot: String? val plot: String?
} }
fun LoadResponse.isEpisodeBased(): Boolean { fun LoadResponse?.isEpisodeBased(): Boolean {
return this is AnimeLoadResponse || this is TvSeriesLoadResponse if (this == null) return false
return (this is AnimeLoadResponse || this is TvSeriesLoadResponse) && (this.type == TvType.TvSeries || this.type == TvType.Anime)
}
fun LoadResponse?.isAnimeBased(): Boolean {
if (this == null) return false
return (this.type == TvType.Anime || this.type == TvType.ONA) // && (this is AnimeLoadResponse)
} }
data class AnimeLoadResponse( data class AnimeLoadResponse(
@ -198,7 +204,7 @@ data class MovieLoadResponse(
val imdbId: Int?, val imdbId: Int?,
) : LoadResponse ) : LoadResponse
data class TvSeriesEpisode(val name: String?, val season : Int?, val episode: Int?, val data : String) data class TvSeriesEpisode(val name: String?, val season: Int?, val episode: Int?, val data: String)
data class TvSeriesLoadResponse( data class TvSeriesLoadResponse(
override val name: String, override val name: String,

View file

@ -483,6 +483,10 @@ class PlayerFragment : Fragment() {
} }
} }
private fun View.setVis(visible: Boolean) {
this.visibility = if (visible) VISIBLE else GONE
}
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")
fun changeSkip(position: Long? = null) { fun changeSkip(position: Long? = null) {
val data = localData val data = localData
@ -502,17 +506,20 @@ class PlayerFragment : Fragment() {
} }
} }
val nextEp = percentage >= OPENING_PROCENTAGE val nextEp = percentage >= OPENING_PROCENTAGE
val isAnime =
data.isAnimeBased()//(data is AnimeLoadResponse && (data.type == TvType.Anime || data.type == TvType.ONA))
skip_op_text.text = if (nextEp) "Next Episode" else "Skip OP" skip_op.setVis(isAnime && !nextEp)
val isVis = skip_episode.setVis((!isAnime || nextEp) && hasNext)
if (nextEp) hasNext //&& !isCurrentlySkippingEp
else (data is AnimeLoadResponse && (data.type == TvType.Anime || data.type == TvType.ONA))
skip_op.visibility = if (isVis) View.VISIBLE else View.GONE
} else { } else {
if (data is AnimeLoadResponse) { val isAnime = data.isAnimeBased()
val isVis = ((data.type == TvType.Anime || data.type == TvType.ONA))
skip_op_text.text = "Skip OP" if (isAnime) {
skip_op.visibility = if (isVis) View.VISIBLE else View.GONE skip_op.setVis(true)
skip_episode.setVis(false)
} else {
skip_episode.setVis(data.isEpisodeBased())
skip_op.setVis(false)
} }
} }
} }
@ -530,9 +537,23 @@ class PlayerFragment : Fragment() {
private var hasUsedFirstRender = false private var hasUsedFirstRender = false
private fun savePositionInPlayer() {
if (this::exoPlayer.isInitialized) {
isPlayerPlaying = exoPlayer.playWhenReady
playbackPosition = exoPlayer.currentPosition
currentWindow = exoPlayer.currentWindowIndex
}
}
private fun safeReleasePlayer() {
if (this::exoPlayer.isInitialized) {
exoPlayer.release()
}
isCurrentlyPlaying = false
}
private fun releasePlayer() { private fun releasePlayer() {
savePos() savePos()
isCurrentlyPlaying = false
val alphaAnimation = AlphaAnimation(0f, 1f) val alphaAnimation = AlphaAnimation(0f, 1f)
alphaAnimation.duration = 100 alphaAnimation.duration = 100
alphaAnimation.fillAfter = true alphaAnimation.fillAfter = true
@ -540,12 +561,8 @@ class PlayerFragment : Fragment() {
overlay_loading_skip_button?.visibility = VISIBLE overlay_loading_skip_button?.visibility = VISIBLE
loading_overlay?.startAnimation(alphaAnimation) loading_overlay?.startAnimation(alphaAnimation)
if (this::exoPlayer.isInitialized) { savePositionInPlayer()
isPlayerPlaying = exoPlayer.playWhenReady safeReleasePlayer()
playbackPosition = exoPlayer.currentPosition
currentWindow = exoPlayer.currentWindowIndex
exoPlayer.release()
}
} }
private class SettingsContentObserver(handler: Handler?, val activity: Activity) : ContentObserver(handler) { private class SettingsContentObserver(handler: Handler?, val activity: Activity) : ContentObserver(handler) {
@ -615,6 +632,7 @@ class PlayerFragment : Fragment() {
//next_episode_btt.isClickable = isClick //next_episode_btt.isClickable = isClick
playback_speed_btt.isClickable = isClick playback_speed_btt.isClickable = isClick
skip_op.isClickable = isClick skip_op.isClickable = isClick
skip_episode.isClickable = isClick
resize_player.isClickable = isClick resize_player.isClickable = isClick
exo_progress.isEnabled = isClick exo_progress.isEnabled = isClick
player_media_route_button.isEnabled = isClick player_media_route_button.isEnabled = isClick
@ -815,7 +833,7 @@ class PlayerFragment : Fragment() {
MediaStatus.REPEAT_MODE_REPEAT_SINGLE MediaStatus.REPEAT_MODE_REPEAT_SINGLE
)*/ )*/
// activity?.popCurrentPage(isInPlayer = true, isInExpandedView = false, isInResults = false) // activity?.popCurrentPage(isInPlayer = true, isInExpandedView = false, isInResults = false)
releasePlayer() safeReleasePlayer()
activity?.popCurrentPage() activity?.popCurrentPage()
} }
} }
@ -980,10 +998,7 @@ class PlayerFragment : Fragment() {
video_title.startAnimation(fadeAnimation) video_title.startAnimation(fadeAnimation)
// BOTTOM // BOTTOM
resize_player.startAnimation(fadeAnimation) lock_holder.startAnimation(fadeAnimation)
playback_speed_btt.startAnimation(fadeAnimation)
sources_btt.startAnimation(fadeAnimation)
skip_op.startAnimation(fadeAnimation)
video_go_back_holder2.startAnimation(fadeAnimation) video_go_back_holder2.startAnimation(fadeAnimation)
updateLock() updateLock()
@ -1075,7 +1090,7 @@ class PlayerFragment : Fragment() {
sources.indexOf(getCurrentUrl())) { _, which -> sources.indexOf(getCurrentUrl())) { _, which ->
//val speed = speedsText[which] //val speed = speedsText[which]
//Toast.makeText(requireContext(), "$speed selected.", Toast.LENGTH_SHORT).show() //Toast.makeText(requireContext(), "$speed selected.", Toast.LENGTH_SHORT).show()
playbackPosition = if(this::exoPlayer.isInitialized) exoPlayer.currentPosition else 0 playbackPosition = if (this::exoPlayer.isInitialized) exoPlayer.currentPosition else 0
setMirrorId(sources[which].getId()) setMirrorId(sources[which].getId())
initPlayer(getCurrentUrl()) initPlayer(getCurrentUrl())
@ -1103,14 +1118,13 @@ class PlayerFragment : Fragment() {
} }
skip_op.setOnClickListener { skip_op.setOnClickListener {
if (exoPlayer.currentPosition * 100 / exoPlayer.duration >= OPENING_PROCENTAGE) {
if (hasNextEpisode()) {
// skip_op.visibility = View.GONE
skipToNextEpisode()
}
} else {
skipOP() skipOP()
} }
skip_episode.setOnClickListener {
if (hasNextEpisode()) {
skipToNextEpisode()
}
} }
changeSkip() changeSkip()
@ -1177,7 +1191,8 @@ class PlayerFragment : Fragment() {
private fun skipToNextEpisode() { private fun skipToNextEpisode() {
if (isCurrentlySkippingEp) return if (isCurrentlySkippingEp) return
releasePlayer() savePos()
safeReleasePlayer()
isCurrentlySkippingEp = true isCurrentlySkippingEp = true
val copy = playerData.copy(episodeIndex = playerData.episodeIndex + 1) val copy = playerData.copy(episodeIndex = playerData.episodeIndex + 1)
playerData = copy playerData = copy
@ -1224,7 +1239,10 @@ class PlayerFragment : Fragment() {
super.onDestroy() super.onDestroy()
isInPlayer = false isInPlayer = false
releasePlayer()
savePos()
savePositionInPlayer()
safeReleasePlayer()
UIHelper.onAudioFocusEvent -= ::handlePauseEvent UIHelper.onAudioFocusEvent -= ::handlePauseEvent

View file

@ -146,8 +146,8 @@ class SearchFragment : Fragment() {
} }
allApi.providersActive = requireActivity().getApiSettings() allApi.providersActive = requireActivity().getApiSettings()
searchViewModel.search("iron man") //searchViewModel.search("iron man")
// (activity as AppCompatActivity).loadResult("https://shiro.is/overlord-dubbed", "overlord-dubbed", "Shiro") (activity as AppCompatActivity).loadResult("https://shiro.is/overlord-dubbed", "overlord-dubbed", "Shiro")
/* /*
(requireActivity() as AppCompatActivity).supportFragmentManager.beginTransaction() (requireActivity() as AppCompatActivity).supportFragmentManager.beginTransaction()
.setCustomAnimations(R.anim.enter_anim, .setCustomAnimations(R.anim.enter_anim,

View file

@ -417,7 +417,7 @@
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="60dp"
android:orientation="horizontal" android:orientation="horizontal"
android:gravity="center" android:gravity="center"
android:paddingTop="10dp" android:paddingTop="10dp"
@ -436,7 +436,7 @@
android:foreground="?attr/selectableItemBackgroundBorderless" android:foreground="?attr/selectableItemBackgroundBorderless"
android:id="@+id/lock_player" android:id="@+id/lock_player"
card_view:cardElevation="0dp" card_view:cardElevation="0dp"
tools:visibility="gone"
> >
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -471,7 +471,7 @@
</LinearLayout> </LinearLayout>
</androidx.cardview.widget.CardView> </androidx.cardview.widget.CardView>
<LinearLayout android:id="@+id/lock_holder" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="match_parent">
<androidx.cardview.widget.CardView <androidx.cardview.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto" xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -483,9 +483,9 @@
card_view:cardCornerRadius="@dimen/card_corner_radius" card_view:cardCornerRadius="@dimen/card_corner_radius"
card_view:cardBackgroundColor="@color/transparent" card_view:cardBackgroundColor="@color/transparent"
android:foreground="?attr/selectableItemBackgroundBorderless" android:foreground="?attr/selectableItemBackgroundBorderless"
android:id="@+id/resize_player"
card_view:cardElevation="0dp" card_view:cardElevation="0dp"
android:id="@+id/resize_player"
tools:visibility="gone"
> >
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -518,7 +518,6 @@
</LinearLayout> </LinearLayout>
</androidx.cardview.widget.CardView> </androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView <androidx.cardview.widget.CardView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="match_parent"
@ -566,8 +565,6 @@
</LinearLayout> </LinearLayout>
</androidx.cardview.widget.CardView> </androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView <androidx.cardview.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto" xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -623,13 +620,12 @@
android:layout_marginBottom="5dp" android:layout_marginBottom="5dp"
android:layout_marginStart="20dp" android:layout_marginStart="20dp"
android:layout_marginEnd="20dp" android:layout_marginEnd="20dp"
card_view:cardCornerRadius="@dimen/card_corner_radius" card_view:cardCornerRadius="@dimen/card_corner_radius"
card_view:cardBackgroundColor="@color/transparent" card_view:cardBackgroundColor="@color/transparent"
android:foreground="?attr/selectableItemBackgroundBorderless" android:foreground="?attr/selectableItemBackgroundBorderless"
android:id="@+id/skip_op"
android:visibility="gone"
card_view:cardElevation="0dp" card_view:cardElevation="0dp"
android:id="@+id/skip_op"
> >
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -649,7 +645,6 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:text="Skip OP" android:text="Skip OP"
android:id="@+id/skip_op_text"
android:gravity="start|center" android:gravity="start|center"
android:paddingStart="10dp" android:paddingStart="10dp"
@ -662,6 +657,53 @@
</TextView> </TextView>
</LinearLayout> </LinearLayout>
</androidx.cardview.widget.CardView> </androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:layout_marginStart="20dp"
android:layout_marginEnd="20dp"
card_view:cardCornerRadius="@dimen/card_corner_radius"
card_view:cardBackgroundColor="@color/transparent"
android:foreground="?attr/selectableItemBackgroundBorderless"
card_view:cardElevation="0dp"
android:id="@+id/skip_episode"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal"
android:paddingStart="10dp"
android:paddingEnd="10dp"
>
<ImageView
android:layout_width="24dp"
android:layout_height="match_parent"
android:src="@drawable/ic_baseline_skip_next_24"
app:tint="@android:color/white"
android:layout_gravity="center">
</ImageView>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Next Episode"
android:gravity="start|center"
android:paddingStart="10dp"
android:textSize="10sp"
android:textStyle="bold"
android:paddingEnd="10dp"
android:layout_gravity="center"
android:textColor="@android:color/white"
>
</TextView>
</LinearLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>