mirror of
https://github.com/mihonapp/mihon.git
synced 2024-11-15 15:02:49 +01:00
Merge branch 'master' into sync-part-final
This commit is contained in:
commit
1bbdfff826
@ -77,7 +77,7 @@ internal fun GlobalSearchContent(
|
||||
title = fromSourceId?.let {
|
||||
"▶ ${source.name}".takeIf { source.id == fromSourceId }
|
||||
} ?: source.name,
|
||||
subtitle = LocaleHelper.getDisplayName(source.lang),
|
||||
subtitle = LocaleHelper.getLocalizedDisplayName(source.lang),
|
||||
onClick = { onClickSource(source) },
|
||||
) {
|
||||
when (result) {
|
||||
|
@ -34,7 +34,6 @@ import tachiyomi.core.i18n.stringResource
|
||||
import tachiyomi.i18n.MR
|
||||
import tachiyomi.presentation.core.components.material.Scaffold
|
||||
import tachiyomi.presentation.core.i18n.stringResource
|
||||
import java.util.Locale
|
||||
|
||||
class AppLanguageScreen : Screen() {
|
||||
|
||||
@ -104,9 +103,9 @@ class AppLanguageScreen : Screen() {
|
||||
for (i in 0..<parser.attributeCount) {
|
||||
if (parser.getAttributeName(i) == "name") {
|
||||
val langTag = parser.getAttributeValue(i)
|
||||
val displayName = LocaleHelper.getDisplayName(langTag)
|
||||
val displayName = LocaleHelper.getLocalizedDisplayName(langTag)
|
||||
if (displayName.isNotEmpty()) {
|
||||
langs.add(Language(langTag, displayName, Locale.forLanguageTag(langTag).displayName))
|
||||
langs.add(Language(langTag, displayName, LocaleHelper.getDisplayName(langTag)))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -17,10 +17,12 @@ import kotlinx.coroutines.MainScope
|
||||
import kotlinx.coroutines.flow.collectLatest
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.supervisorScope
|
||||
import logcat.LogPriority
|
||||
import tachiyomi.core.util.lang.launchIO
|
||||
import tachiyomi.core.util.lang.withIOContext
|
||||
import tachiyomi.core.util.lang.withUIContext
|
||||
import tachiyomi.core.util.system.ImageUtil
|
||||
import tachiyomi.core.util.system.logcat
|
||||
import java.io.BufferedInputStream
|
||||
import java.io.ByteArrayInputStream
|
||||
import java.io.InputStream
|
||||
@ -136,6 +138,7 @@ class PagerPageHolder(
|
||||
|
||||
val streamFn = page.stream ?: return
|
||||
|
||||
try {
|
||||
val (bais, isAnimated, background) = withIOContext {
|
||||
streamFn().buffered(16).use { stream ->
|
||||
process(item, stream).use { itemStream ->
|
||||
@ -171,6 +174,12 @@ class PagerPageHolder(
|
||||
}
|
||||
removeErrorLayout()
|
||||
}
|
||||
} catch (e: Throwable) {
|
||||
logcat(LogPriority.ERROR, e)
|
||||
withUIContext {
|
||||
setError()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun process(page: ReaderPage, imageStream: BufferedInputStream): InputStream {
|
||||
|
@ -23,10 +23,12 @@ import kotlinx.coroutines.flow.collectLatest
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.supervisorScope
|
||||
import kotlinx.coroutines.suspendCancellableCoroutine
|
||||
import logcat.LogPriority
|
||||
import tachiyomi.core.util.lang.launchIO
|
||||
import tachiyomi.core.util.lang.withIOContext
|
||||
import tachiyomi.core.util.lang.withUIContext
|
||||
import tachiyomi.core.util.system.ImageUtil
|
||||
import tachiyomi.core.util.system.logcat
|
||||
import java.io.BufferedInputStream
|
||||
import java.io.InputStream
|
||||
|
||||
@ -184,6 +186,7 @@ class WebtoonPageHolder(
|
||||
|
||||
val streamFn = page?.stream ?: return
|
||||
|
||||
try {
|
||||
val (openStream, isAnimated) = withIOContext {
|
||||
val stream = streamFn().buffered(16)
|
||||
val openStream = process(stream)
|
||||
@ -207,6 +210,12 @@ class WebtoonPageHolder(
|
||||
suspendCancellableCoroutine<Nothing> { continuation ->
|
||||
continuation.invokeOnCancellation { openStream.close() }
|
||||
}
|
||||
} catch (e: Throwable) {
|
||||
logcat(LogPriority.ERROR, e)
|
||||
withUIContext {
|
||||
setError()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun process(imageStream: BufferedInputStream): InputStream {
|
||||
|
@ -21,7 +21,7 @@ object LocaleHelper {
|
||||
} else if (b == "all") {
|
||||
1
|
||||
} else {
|
||||
getDisplayName(a).compareTo(getDisplayName(b))
|
||||
getLocalizedDisplayName(a).compareTo(getLocalizedDisplayName(b))
|
||||
}
|
||||
}
|
||||
|
||||
@ -34,16 +34,26 @@ object LocaleHelper {
|
||||
SourcesScreenModel.PINNED_KEY -> context.stringResource(MR.strings.pinned_sources)
|
||||
"other" -> context.stringResource(MR.strings.other_source)
|
||||
"all" -> context.stringResource(MR.strings.multi_lang)
|
||||
else -> getDisplayName(lang)
|
||||
else -> getLocalizedDisplayName(lang)
|
||||
}
|
||||
}
|
||||
|
||||
fun getDisplayName(lang: String): String {
|
||||
val normalizedLang = when (lang) {
|
||||
"zh-CN" -> "zh-Hans"
|
||||
"zh-TW" -> "zh-Hant"
|
||||
else -> lang
|
||||
}
|
||||
|
||||
return Locale.forLanguageTag(normalizedLang).displayName
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns display name of a string language code.
|
||||
*
|
||||
* @param lang empty for system language
|
||||
*/
|
||||
fun getDisplayName(lang: String?): String {
|
||||
fun getLocalizedDisplayName(lang: String?): String {
|
||||
if (lang == null) {
|
||||
return ""
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user