Skip to content

Commit

Permalink
Merge pull request #209 from Dark25/up-ani
Browse files Browse the repository at this point in the history
Up ani
  • Loading branch information
Dark25 authored Jan 28, 2025
2 parents 43800fb + 3297236 commit 5ca6e7a
Show file tree
Hide file tree
Showing 6 changed files with 51 additions and 19 deletions.
3 changes: 3 additions & 0 deletions app/src/main/java/eu/kanade/domain/DomainModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ import eu.kanade.domain.track.manga.interactor.AddMangaTracks
import eu.kanade.domain.track.manga.interactor.RefreshMangaTracks
import eu.kanade.domain.track.manga.interactor.SyncChapterProgressWithTrack
import eu.kanade.domain.track.manga.interactor.TrackChapter
import eu.kanade.tachiyomi.util.TrackSelect
import mihon.data.repository.anime.AnimeExtensionRepoRepositoryImpl
import mihon.data.repository.manga.MangaExtensionRepoRepositoryImpl
import mihon.domain.extensionrepo.anime.interactor.CreateAnimeExtensionRepo
Expand Down Expand Up @@ -385,5 +386,7 @@ class DomainModule : InjektModule {
addFactory { UpdateCustomButton(get()) }
addFactory { ReorderCustomButton(get()) }
addFactory { ToggleFavoriteCustomButton(get()) }

addFactory { TrackSelect(get(), get()) }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,7 @@ import eu.kanade.tachiyomi.ui.player.settings.AdvancedPlayerPreferences
import eu.kanade.tachiyomi.ui.player.settings.AudioPreferences
import eu.kanade.tachiyomi.ui.player.settings.GesturePreferences
import eu.kanade.tachiyomi.ui.player.settings.PlayerPreferences
import eu.kanade.tachiyomi.ui.player.settings.SubtitlePreferences
import eu.kanade.tachiyomi.util.Stamp
import eu.kanade.tachiyomi.util.SubtitleSelect
import eu.kanade.tachiyomi.util.system.toShareIntent
import eu.kanade.tachiyomi.util.system.toast
import `is`.xyz.mpv.MPVLib
Expand Down Expand Up @@ -136,7 +134,6 @@ class PlayerActivity : BaseActivity() {
private var mediaSession: MediaSession? = null
private val gesturePreferences: GesturePreferences by lazy { viewModel.gesturePreferences }
private val playerPreferences: PlayerPreferences by lazy { viewModel.playerPreferences }
private val subtitlePreferences: SubtitlePreferences = Injekt.get()
private val audioPreferences: AudioPreferences = Injekt.get()
private val advancedPlayerPreferences: AdvancedPlayerPreferences = Injekt.get()
private val networkPreferences: NetworkPreferences = Injekt.get()
Expand All @@ -147,8 +144,6 @@ class PlayerActivity : BaseActivity() {
private var isInCastMode: Boolean = false
private var isCastApiAvailable = false

internal val subtitleSelect by lazy { SubtitleSelect(subtitlePreferences) }

private var audioFocusRequest: AudioFocusRequestCompat? = null
private var restoreAudioFocus: () -> Unit = {}

Expand Down
15 changes: 13 additions & 2 deletions app/src/main/java/eu/kanade/tachiyomi/ui/player/PlayerViewModel.kt
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ import eu.kanade.tachiyomi.ui.reader.SaveImageNotifier
import eu.kanade.tachiyomi.util.AniSkipApi
import eu.kanade.tachiyomi.util.SkipType
import eu.kanade.tachiyomi.util.Stamp
import eu.kanade.tachiyomi.util.TrackSelect
import eu.kanade.tachiyomi.util.editCover
import eu.kanade.tachiyomi.util.episode.filterDownloadedEpisodes
import eu.kanade.tachiyomi.util.lang.byteSize
Expand Down Expand Up @@ -146,6 +147,7 @@ class PlayerViewModel @JvmOverloads constructor(
internal val gesturePreferences: GesturePreferences = Injekt.get(),
private val basePreferences: BasePreferences = Injekt.get(),
private val getCustomButtons: GetCustomButtons = Injekt.get(),
private val trackSelect: TrackSelect = Injekt.get(),
uiPreferences: UiPreferences = Injekt.get(),
) : ViewModel() {

Expand Down Expand Up @@ -398,13 +400,22 @@ class PlayerViewModel @JvmOverloads constructor(
}
}

/**
* When all subtitle/audio tracks are loaded, select the preferred one based on preferences,
* or select the first one in the list if trackSelect fails.
*/
fun onFinishLoadingTracks() {
val preferredSubtitle = activity.subtitleSelect.getPreferredSubtitleIndex(subtitleTracks.value)
preferredSubtitle?.let {
val preferredSubtitle = trackSelect.getPreferredTrackIndex(subtitleTracks.value)
(preferredSubtitle ?: subtitleTracks.value.firstOrNull())?.let {
activity.player.sid = it.id
activity.player.secondarySid = -1
}

val preferredAudio = trackSelect.getPreferredTrackIndex(audioTracks.value, subtitle = false)
(preferredAudio ?: audioTracks.value.getOrNull(1))?.let {
activity.player.aid = it.id
}

isLoadingTracks.update { _ -> true }
updateIsLoadingEpisode(false)
setPausedState()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ fun BottomRightPlayerControls(
onPipClick: () -> Unit,
modifier: Modifier = Modifier,
) {
val clickEvent = LocalPlayerButtonsClickEvent.current

Row(modifier) {
if (aniskipButton != null) {
Box(
Expand All @@ -60,7 +62,10 @@ fun BottomRightPlayerControls(
modifier = Modifier
.matchParentSize()
.combinedClickable(
onClick = onPressAniSkipButton,
onClick = {
clickEvent()
onPressAniSkipButton()
},
interactionSource = remember { MutableInteractionSource() },
indication = null,
),
Expand All @@ -77,7 +82,10 @@ fun BottomRightPlayerControls(
modifier = Modifier
.matchParentSize()
.combinedClickable(
onClick = { customButton.execute() },
onClick = {
clickEvent()
customButton.execute()
},
onLongClick = { customButton.executeLongPress() },
interactionSource = remember { MutableInteractionSource() },
indication = null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,6 @@ fun ScreenshotSheet(
icon = Icons.Outlined.Share,
onClick = {
onShare { takeScreenshot(cachePath, showSubtitles)!! }
onDismissRequest()
},
)
ActionButton(
Expand All @@ -73,7 +72,6 @@ fun ScreenshotSheet(
icon = Icons.Outlined.Save,
onClick = {
onSave { takeScreenshot(cachePath, showSubtitles)!! }
onDismissRequest()
},
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,35 @@ package eu.kanade.tachiyomi.util

import androidx.core.os.LocaleListCompat
import eu.kanade.tachiyomi.ui.player.PlayerViewModel.VideoTrack
import eu.kanade.tachiyomi.ui.player.settings.AudioPreferences
import eu.kanade.tachiyomi.ui.player.settings.SubtitlePreferences
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import java.util.Locale

class SubtitleSelect(private val subtitlePreferences: SubtitlePreferences) {
class TrackSelect(
private val subtitlePreferences: SubtitlePreferences = Injekt.get(),
private val audioPreferences: AudioPreferences = Injekt.get(),
) {

fun getPreferredSubtitleIndex(tracks: List<VideoTrack>): VideoTrack? {
val prefLangs = subtitlePreferences.preferredSubLanguages().get().split(",")
.filter { it.isNotEmpty() }
val whitelist = subtitlePreferences.subtitleWhitelist().get().split(",")
.filter { it.isNotEmpty() }
val blacklist = subtitlePreferences.subtitleBlacklist().get().split(",")
.filter { it.isNotEmpty() }
fun getPreferredTrackIndex(tracks: List<VideoTrack>, subtitle: Boolean = true): VideoTrack? {
val prefLangs = if (subtitle) {
subtitlePreferences.preferredSubLanguages().get()
} else {
audioPreferences.preferredAudioLanguages().get()
}.split(",").filter { it.isNotEmpty() }

val whitelist = if (subtitle) {
subtitlePreferences.subtitleWhitelist().get()
} else {
""
}.split(",").filter { it.isNotEmpty() }

val blacklist = if (subtitle) {
subtitlePreferences.subtitleBlacklist().get()
} else {
""
}.split(",").filter { it.isNotEmpty() }

val locales = prefLangs.map(::Locale).ifEmpty {
listOf(LocaleListCompat.getDefault()[0]!!)
Expand Down

0 comments on commit 5ca6e7a

Please sign in to comment.