From 31197a5d442b4236da81cceb3797f107660bc7b8 Mon Sep 17 00:00:00 2001 From: Jannik Date: Thu, 31 Dec 2020 13:12:37 +0100 Subject: [PATCH] minor fixes * fix current language is set to preferred and not to actual language * fix player episodes lists sometimes missing the play icon --- app/build.gradle | 4 ++-- .../main/java/org/mosad/teapod/player/PlayerViewModel.kt | 7 +++++-- .../mosad/teapod/util/adapter/PlayerEpisodeItemAdapter.kt | 6 ++++-- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 1c44f02..3d61057 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ android { applicationId "org.mosad.teapod" minSdkVersion 23 targetSdkVersion 30 - versionCode 2100 //00.02.100 - versionName "0.2.92" + versionCode 2900 //00.02.900 + versionName "0.3.0-RC1" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" resValue "string", "build_time", buildTime() diff --git a/app/src/main/java/org/mosad/teapod/player/PlayerViewModel.kt b/app/src/main/java/org/mosad/teapod/player/PlayerViewModel.kt index ace9644..037ea08 100644 --- a/app/src/main/java/org/mosad/teapod/player/PlayerViewModel.kt +++ b/app/src/main/java/org/mosad/teapod/player/PlayerViewModel.kt @@ -33,6 +33,7 @@ class PlayerViewModel(application: Application) : AndroidViewModel(application) val dataSourceFactory = DefaultDataSourceFactory(application, Util.getUserAgent(application, "Teapod")) val currentEpisodeChangedListener = ArrayList<() -> Unit>() + val preferredLanguage = if (Preferences.preferSecondary) Locale.JAPANESE else Locale.GERMAN var media: Media = Media(-1, "", DataTypes.MediaType.OTHER) internal set @@ -56,8 +57,8 @@ class PlayerViewModel(application: Application) : AndroidViewModel(application) } currentEpisode = media.getEpisodeById(episodeId) - currentLanguage = if (Preferences.preferSecondary) Locale.JAPANESE else Locale.GERMAN nextEpisode = selectNextEpisode() + currentLanguage = currentEpisode.getPreferredStream(preferredLanguage).language } fun setLanguage(language: Locale) { @@ -94,12 +95,14 @@ class PlayerViewModel(application: Application) : AndroidViewModel(application) * updateWatchedState for the next (now current) episode */ fun playEpisode(episode: Episode, replace: Boolean = false, seekPosition: Long = 0) { + val preferredStream = episode.getPreferredStream(currentLanguage) + currentLanguage = preferredStream.language // update current language, since it may have changed currentEpisode = episode nextEpisode = selectNextEpisode() currentEpisodeChangedListener.forEach { it() } // update player gui (title) val mediaSource = HlsMediaSource.Factory(dataSourceFactory).createMediaSource( - MediaItem.fromUri(Uri.parse( episode.getPreferredStream(currentLanguage).url)) + MediaItem.fromUri(Uri.parse(preferredStream.url)) ) playMedia(mediaSource, replace, seekPosition) diff --git a/app/src/main/java/org/mosad/teapod/util/adapter/PlayerEpisodeItemAdapter.kt b/app/src/main/java/org/mosad/teapod/util/adapter/PlayerEpisodeItemAdapter.kt index 259ca64..8b005a7 100644 --- a/app/src/main/java/org/mosad/teapod/util/adapter/PlayerEpisodeItemAdapter.kt +++ b/app/src/main/java/org/mosad/teapod/util/adapter/PlayerEpisodeItemAdapter.kt @@ -40,8 +40,10 @@ class PlayerEpisodeItemAdapter(private val episodes: List) : RecyclerVi } // hide the play icon, if it's the current episode - if (currentSelected == position) { - holder.binding.imageEpisodePlay.visibility = View.GONE + holder.binding.imageEpisodePlay.visibility = if (currentSelected == position) { + View.GONE + } else { + View.VISIBLE } }