refactor: Use J2K's cutout behaviour for Tachi's cutout support

Doesn't work at the moment (only work on landscape mode)
This commit is contained in:
ziro 2024-02-04 20:27:22 +07:00
parent 7daf8fefc7
commit 296c9eae67
Signed by: null2264
GPG key ID: BA64F8B60AF3EFB6
48 changed files with 163 additions and 118 deletions

View file

@ -35,7 +35,7 @@ android {
minSdk = AndroidConfig.minSdk
targetSdk = AndroidConfig.targetSdk
applicationId = "eu.kanade.tachiyomi"
versionCode = 120
versionCode = 121
versionName = "1.7.12"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled = true

View file

@ -1,9 +1,24 @@
package dev.yokai.domain.ui.settings
import androidx.annotation.StringRes
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.core.preference.PreferenceStore
import eu.kanade.tachiyomi.core.preference.getEnum
import eu.kanade.tachiyomi.data.preference.PreferenceKeys
class ReaderPreferences(private val preferenceStore: PreferenceStore) {
fun cutoutShort() = preferenceStore.getBoolean("cutout_short", true)
fun landscapeCutoutBehavior() = preferenceStore.getInt("landscape_cutout_behavior", 0)
fun pagerCutoutBehavior() = preferenceStore.getEnum(PreferenceKeys.pagerCutoutBehavior, CutoutBehaviour.SHOW)
fun landscapeCutoutBehavior() = preferenceStore.getEnum("landscape_cutout_behavior", LandscapeCutoutBehaviour.DEFAULT)
enum class CutoutBehaviour(@StringRes val titleResId: Int) {
SHOW(R.string.cutout_show),
HIDE(R.string.cutout_hide),
IGNORE(R.string.cutout_ignore),
}
enum class LandscapeCutoutBehaviour(@StringRes val titleResId: Int) {
HIDE(R.string.cutout_hide),
DEFAULT(R.string.cutout_landscape),
}
}

View file

@ -3,6 +3,9 @@ package eu.kanade.tachiyomi
import androidx.core.content.edit
import androidx.preference.PreferenceManager
import dev.yokai.domain.base.BasePreferences
import dev.yokai.domain.ui.settings.ReaderPreferences
import dev.yokai.domain.ui.settings.ReaderPreferences.CutoutBehaviour
import dev.yokai.domain.ui.settings.ReaderPreferences.LandscapeCutoutBehaviour
import eu.kanade.tachiyomi.data.backup.BackupCreatorJob
import eu.kanade.tachiyomi.data.download.DownloadProvider
import eu.kanade.tachiyomi.data.library.LibraryUpdateJob
@ -21,6 +24,7 @@ import eu.kanade.tachiyomi.network.PREF_DOH_CLOUDFLARE
import eu.kanade.tachiyomi.ui.library.LibraryPresenter
import eu.kanade.tachiyomi.ui.library.LibrarySort
import eu.kanade.tachiyomi.ui.reader.settings.OrientationType
import eu.kanade.tachiyomi.ui.reader.viewer.pager.PagerConfig
import eu.kanade.tachiyomi.ui.recents.RecentsPresenter
import eu.kanade.tachiyomi.util.system.launchIO
import eu.kanade.tachiyomi.util.system.toast
@ -277,6 +281,33 @@ object Migrations {
basePreferences.extensionInstaller().set(BasePreferences.ExtensionInstaller.PACKAGEINSTALLER)
}
}
if (oldVersion < 121) {
val readerPreferences: ReaderPreferences = Injekt.get()
try {
val oldCutoutBehaviour = prefs.getInt(PreferenceKeys.pagerCutoutBehavior, 0)
readerPreferences.pagerCutoutBehavior().set(
when (oldCutoutBehaviour) {
PagerConfig.CUTOUT_PAD -> CutoutBehaviour.HIDE
PagerConfig.CUTOUT_IGNORE -> CutoutBehaviour.IGNORE
else -> CutoutBehaviour.SHOW
}
)
} catch (_: Exception) {
readerPreferences.pagerCutoutBehavior().set(CutoutBehaviour.SHOW)
}
try {
val oldCutoutBehaviour = prefs.getInt("landscape_cutout_behavior", 0)
readerPreferences.landscapeCutoutBehavior().set(
when (oldCutoutBehaviour) {
0 -> LandscapeCutoutBehaviour.HIDE
else -> LandscapeCutoutBehaviour.DEFAULT
}
)
} catch (_: Exception) {
readerPreferences.landscapeCutoutBehavior().set(LandscapeCutoutBehaviour.DEFAULT)
}
}
return true
}

View file

@ -2,6 +2,8 @@ package eu.kanade.tachiyomi.data.backup
import android.content.Context
import android.net.Uri
import dev.yokai.domain.ui.settings.ReaderPreferences
import dev.yokai.domain.ui.settings.ReaderPreferences.CutoutBehaviour
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.backup.models.BackupCategory
import eu.kanade.tachiyomi.data.backup.models.BackupHistory
@ -25,6 +27,8 @@ import eu.kanade.tachiyomi.data.library.CustomMangaManager
import eu.kanade.tachiyomi.data.library.LibraryUpdateJob
import eu.kanade.tachiyomi.core.preference.AndroidPreferenceStore
import eu.kanade.tachiyomi.core.preference.PreferenceStore
import eu.kanade.tachiyomi.core.preference.getEnum
import eu.kanade.tachiyomi.data.preference.PreferenceKeys
import eu.kanade.tachiyomi.extension.ExtensionUpdateJob
import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.sourcePreferences
@ -407,6 +411,15 @@ class BackupRestorer(val context: Context, val notifier: BackupNotifier) {
return@forEach
}
// end j2k fork differences
// <-- yokai
if (key == "cutout_short" && value is BooleanPreferenceValue) {
preferenceStore.getEnum(PreferenceKeys.pagerCutoutBehavior, CutoutBehaviour.SHOW)
.set(if (value.value) CutoutBehaviour.SHOW else CutoutBehaviour.HIDE)
return@forEach
}
// --> yokai
when (value) {
is IntPreferenceValue -> {
if (prefs[key] is Int?) {

View file

@ -105,9 +105,6 @@ class PreferencesHelper(val context: Context, val preferenceStore: PreferenceSto
fun pageTransitions() = preferenceStore.getBoolean(Keys.enableTransitions, true)
// ReaderPrefs
fun pagerCutoutBehavior() = preferenceStore.getInt(Keys.pagerCutoutBehavior, 0)
fun doubleTapAnimSpeed() = preferenceStore.getInt(Keys.doubleTapAnimationSpeed, 500)
fun showPageNumber() = preferenceStore.getBoolean(Keys.showPageNumber, true)

View file

@ -72,6 +72,7 @@ import com.google.android.material.snackbar.Snackbar
import com.google.android.material.transition.platform.MaterialContainerTransform
import com.google.android.material.transition.platform.MaterialContainerTransformSharedElementCallback
import dev.yokai.domain.ui.settings.ReaderPreferences
import dev.yokai.domain.ui.settings.ReaderPreferences.LandscapeCutoutBehaviour
import eu.kanade.tachiyomi.BuildConfig
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.Chapter
@ -951,7 +952,7 @@ class ReaderActivity : BaseActivity<ReaderActivityBinding>() {
setNavColor(insets)
val systemInsets = insets.ignoredSystemInsets
val currentOrientation = resources.configuration.orientation
val isLandscapeFully = currentOrientation == Configuration.ORIENTATION_LANDSCAPE && readerPreferences.landscapeCutoutBehavior().get() == 1
val isLandscapeFully = currentOrientation == Configuration.ORIENTATION_LANDSCAPE && readerPreferences.landscapeCutoutBehavior().get() == LandscapeCutoutBehaviour.DEFAULT
val cutOutInsets = if (isLandscapeFully) insets.displayCutout else null
val vis = insets.isVisible(statusBars())
val fullscreen = preferences.fullscreen().get() && !isSplitScreen
@ -1827,18 +1828,14 @@ class ReaderActivity : BaseActivity<ReaderActivityBinding>() {
val params = window.attributes
if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE) {
params.layoutInDisplayCutoutMode =
if (readerPreferences.landscapeCutoutBehavior().get() == 0) {
if (readerPreferences.landscapeCutoutBehavior().get() == LandscapeCutoutBehaviour.HIDE) {
WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER
} else {
WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
}
} else {
params.layoutInDisplayCutoutMode =
if (readerPreferences.cutoutShort().get()) {
WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
} else {
WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER
}
WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
}
}
}
@ -1921,11 +1918,6 @@ class ReaderActivity : BaseActivity<ReaderActivityBinding>() {
.onEach { setCutoutMode() }
.launchIn(scope)
readerPreferences.cutoutShort().changes()
.drop(1)
.onEach { setCutoutMode() }
.launchIn(scope)
preferences.trueColor().changesIn(scope) { setTrueColor(it) }
preferences.fullscreen().changesIn(scope) { setFullscreen(it) }

View file

@ -41,7 +41,7 @@ class ReaderPagedView @JvmOverloads constructor(context: Context, attrs: Attribu
pageTransitions.bindToPreference(preferences.pageTransitions())
pagerNav.bindToPreference(preferences.navigationModePager())
pagerInvert.bindToPreference(preferences.pagerNavInverted())
extendPastCutout.bindToPreference(preferences.pagerCutoutBehavior())
extendPastCutout.bindToPreference(readerPreferences.pagerCutoutBehavior())
extendPastCutoutLandscape.bindToPreference(readerPreferences.landscapeCutoutBehavior()) {
needsActivityRecreate = true
}

View file

@ -25,6 +25,8 @@ import com.davemorrissey.labs.subscaleview.ImageSource
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.SCALE_TYPE_CENTER_INSIDE
import com.github.chrisbanes.photoview.PhotoView
import dev.yokai.domain.ui.settings.ReaderPreferences
import dev.yokai.domain.ui.settings.ReaderPreferences.CutoutBehaviour
import eu.kanade.tachiyomi.ui.reader.viewer.pager.PagerConfig
import eu.kanade.tachiyomi.ui.reader.viewer.webtoon.WebtoonSubsamplingImageView
import eu.kanade.tachiyomi.util.system.GLUtil
@ -161,7 +163,7 @@ open class ReaderPageImageView @JvmOverloads constructor(
val insetInfo = config.insetInfo ?: return
val topInsets = insetInfo.topCutoutInset
val bottomInsets = insetInfo.bottomCutoutInset
if (insetInfo.cutoutBehavior == PagerConfig.CUTOUT_START_EXTENDED &&
if (insetInfo.cutoutBehavior == CutoutBehaviour.SHOW &&
topInsets + bottomInsets > 0 &&
insetInfo.scaleTypeIsFullFit
) {
@ -180,15 +182,14 @@ open class ReaderPageImageView @JvmOverloads constructor(
setMinimumScaleType(config.minimumScaleType)
setMinimumDpi(1) // Just so that very small image will be fit for initial load
setCropBorders(config.cropBorders)
/*
if (config.insetInfo != null) {
val topInsets = config.insetInfo.topCutoutInset
val bottomInsets = config.insetInfo.bottomCutoutInset
setExtendPastCutout(
config.insetInfo.cutoutBehavior == PagerConfig.CUTOUT_START_EXTENDED &&
config.insetInfo.cutoutBehavior == CutoutBehaviour.SHOW &&
config.insetInfo.scaleTypeIsFullFit && topInsets + bottomInsets > 0,
)
if ((config.insetInfo.cutoutBehavior != PagerConfig.CUTOUT_IGNORE || !config.insetInfo.scaleTypeIsFullFit) &&
if ((config.insetInfo.cutoutBehavior != CutoutBehaviour.IGNORE || !config.insetInfo.scaleTypeIsFullFit) &&
android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q &&
config.insetInfo.isFullscreen
) {
@ -201,7 +202,6 @@ open class ReaderPageImageView @JvmOverloads constructor(
)
}
}
*/
setOnImageEventListener(
object : SubsamplingScaleImageView.DefaultOnImageEventListener() {
override fun onReady() {
@ -318,7 +318,7 @@ open class ReaderPageImageView @JvmOverloads constructor(
)
data class InsetInfo(
val cutoutBehavior: Int,
val cutoutBehavior: CutoutBehaviour,
val topCutoutInset: Float,
val bottomCutoutInset: Float,
val scaleTypeIsFullFit: Boolean,

View file

@ -1,6 +1,8 @@
package eu.kanade.tachiyomi.ui.reader.viewer.pager
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
import dev.yokai.domain.ui.settings.ReaderPreferences
import dev.yokai.domain.ui.settings.ReaderPreferences.CutoutBehaviour
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.ui.reader.settings.PageLayout
import eu.kanade.tachiyomi.ui.reader.viewer.ViewerConfig
@ -24,6 +26,7 @@ class PagerConfig(
scope: CoroutineScope,
private val viewer: PagerViewer,
preferences: PreferencesHelper = Injekt.get(),
readerPreferences: ReaderPreferences = Injekt.get(),
) :
ViewerConfig(preferences, scope) {
@ -48,7 +51,7 @@ class PagerConfig(
var readerTheme = 0
private set
var cutoutBehavior = 0
var cutoutBehavior: CutoutBehaviour = CutoutBehaviour.SHOW
private set
var isFullscreen = true
@ -99,7 +102,7 @@ class PagerConfig(
}
.launchIn(scope)
preferences.pagerCutoutBehavior()
readerPreferences.pagerCutoutBehavior()
.register({ cutoutBehavior = it }, { imagePropertyChangedListener?.invoke() })
preferences.zoomStart()

View file

@ -1,11 +1,10 @@
package eu.kanade.tachiyomi.ui.setting
import android.hardware.display.DisplayManager
import android.os.Build
import android.view.Display
import androidx.core.content.getSystemService
import androidx.preference.PreferenceScreen
import dev.yokai.domain.ui.settings.ReaderPreferences
import dev.yokai.domain.ui.settings.ReaderPreferences.CutoutBehaviour
import dev.yokai.domain.ui.settings.ReaderPreferences.LandscapeCutoutBehaviour
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferenceValues
import eu.kanade.tachiyomi.data.preference.changesIn
@ -127,21 +126,38 @@ class SettingsReaderController : SettingsController() {
titleRes = R.string.show_page_number
defaultValue = true
}
switchPreference {
bindTo(readerPreferences.cutoutShort())
titleRes = R.string.pref_cutout_short
isVisible = DeviceUtil.hasCutout(activity) || preferences.fullscreen().get()
listPreference(activity) {
bindTo(readerPreferences.pagerCutoutBehavior())
titleRes = R.string.cutout_area_behavior
val values = CutoutBehaviour.entries
entriesRes = values.map { it.titleResId }.toTypedArray()
entryValues = values.map { it.name }.toTypedArray().toList()
// Calling this once to show only on cutout
isVisible = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
activityBinding?.root?.rootWindowInsets?.displayCutout?.safeInsetTop != null ||
activityBinding?.root?.rootWindowInsets?.displayCutout?.safeInsetBottom != null
} else {
false
} && preferences.fullscreen().get()
// Calling this a second time in case activity is recreated while on this page
// Keep the first so it shouldn't animate hiding the preference for phones without
// cutouts
activityBinding?.root?.post {
isVisible = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
activityBinding?.root?.rootWindowInsets?.displayCutout?.safeInsetTop != null ||
activityBinding?.root?.rootWindowInsets?.displayCutout?.safeInsetBottom != null
} else {
false
} && preferences.fullscreen().get()
}
}
intListPreference(activity) {
listPreference(activity) {
bindTo(readerPreferences.landscapeCutoutBehavior())
title = "${context.getString(R.string.cutout_area_behavior)} (${context.getString(R.string.landscape)})"
entriesRes = arrayOf(
R.string.pad_cutout_areas,
R.string.ignore_cutout_areas,
)
entryRange = 0..1
defaultValue = 0
isVisible = DeviceUtil.hasCutout(activity)
val values = LandscapeCutoutBehaviour.entries
entriesRes = values.map { it.titleResId }.toTypedArray()
entryValues = values.map { it.name }.toTypedArray().toList()
isVisible = DeviceUtil.hasCutout(activity) && preferences.fullscreen().get()
}
}
@ -214,36 +230,6 @@ class SettingsReaderController : SettingsController() {
defaultValue = 1
}
intListPreference(activity) {
key = Keys.pagerCutoutBehavior
titleRes = R.string.cutout_area_behavior
entriesRes = arrayOf(
R.string.pad_cutout_areas,
R.string.start_past_cutout,
R.string.ignore_cutout_areas,
)
summaryRes = R.string.cutout_behavior_only_applies
entryRange = 0..2
defaultValue = 0
// Calling this once to show only on cutout
isVisible = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
activityBinding?.root?.rootWindowInsets?.displayCutout?.safeInsetTop != null ||
activityBinding?.root?.rootWindowInsets?.displayCutout?.safeInsetBottom != null
} else {
false
}
// Calling this a second time in case activity is recreated while on this page
// Keep the first so it shouldn't animate hiding the preference for phones without
// cutouts
activityBinding?.root?.post {
isVisible = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
activityBinding?.root?.rootWindowInsets?.displayCutout?.safeInsetTop != null ||
activityBinding?.root?.rootWindowInsets?.displayCutout?.safeInsetBottom != null
} else {
false
}
}
}
switchPreference {
bindTo(preferences.landscapeZoom())
titleRes = R.string.zoom_double_page_spreads

View file

@ -151,16 +151,18 @@ class MaterialSpinnerView constructor(context: Context, attrs: AttributeSet?) :
}
}
inline fun <reified T : Enum<T>> bindToPreference(pref: Preference<T>) {
inline fun <reified T : Enum<T>> bindToPreference(pref: Preference<T>, crossinline block: (T) -> Unit) {
val enumConstants = T::class.java.enumConstants
enumConstants?.indexOf(pref.get())?.let { setSelection(it) }
val popup = makeSettingsPopup(pref)
val popup = makeSettingsPopup(pref, block)
setOnTouchListener(popup.dragToOpenListener)
setOnClickListener {
popup.show()
}
}
inline fun <reified T : Enum<T>> bindToPreference(pref: Preference<T>) = bindToPreference(pref) { }
fun bindToIntPreference(
pref: Preference<Int>,
@ArrayRes intValuesResource: Int,
@ -177,7 +179,7 @@ class MaterialSpinnerView constructor(context: Context, attrs: AttributeSet?) :
}
}
inline fun <reified T : Enum<T>> makeSettingsPopup(preference: Preference<T>): PopupMenu {
inline fun <reified T : Enum<T>> makeSettingsPopup(preference: Preference<T>, crossinline block: (T) -> Unit): PopupMenu {
val popup = popup()
// Set a listener so we are notified if a menu item is clicked
@ -190,7 +192,10 @@ class MaterialSpinnerView constructor(context: Context, attrs: AttributeSet?) :
popup.setOnMenuItemClickListener { menuItem ->
val enumConstants = T::class.java.enumConstants
val pos = menuClicked(menuItem)
enumConstants?.get(pos)?.let { preference.set(it) }
enumConstants?.get(pos)?.let {
preference.set(it)
block.invoke(it)
}
true
}
return popup

View file

@ -858,7 +858,7 @@
<string name="add_tag">سِم</string>
<string name="mark_all_chapters_as_unread">أأحدِّد كلَّ الفصول غير مقروءة؟</string>
<string name="cutout_behavior_only_applies">لا ينطبق سلوك الحزِّ إلا في الوضع الطولي وفي أنواع معينة من التحجيم</string>
<string name="ignore_cutout_areas">تجاهَل الحزوز</string>
<string name="cutout_ignore">تجاهَل الحزوز</string>
<string name="start_past_cutout">ابدأ بعد الحزِّ</string>
<string name="pad_cutout_areas">أزح الحزوز</string>
<string name="cutout_area_behavior">سلوك الحَزِّ</string>

View file

@ -643,7 +643,7 @@
<string name="cutout_area_behavior">Поведение на зоната на изрязване</string>
<string name="pad_cutout_areas">Области на изрязване на подложката</string>
<string name="start_past_cutout">Започнете след изрязване</string>
<string name="ignore_cutout_areas">Игнориране на областите на изрязване</string>
<string name="cutout_ignore">Игнориране на областите на изрязване</string>
<string name="cutout_behavior_only_applies">Поведението на зоната на изрязване се прилага само в портретен режим с определени типове мащаби</string>
<string name="page_layout">Оформление на страница</string>
<string name="automatic_orientation">Автоматично (в зависимост от ориентацията)</string>

View file

@ -795,7 +795,7 @@
<string name="cutout_area_behavior">কাটআউট এলাকার আচরণ</string>
<string name="pad_cutout_areas">প্যাড কাটআউটএর এলাকা</string>
<string name="start_past_cutout">অতীত কাটআউট শুরু কর</string>
<string name="ignore_cutout_areas">কাটআউট এলাকা উপেক্ষা কর</string>
<string name="cutout_ignore">কাটআউট এলাকা উপেক্ষা কর</string>
<string name="cutout_behavior_only_applies">কাটআউট এলাকার আচরণ শুধুমাত্র নির্দিষ্ট স্কেলের প্রকারের সাথে প্রতিকৃতি মোডে প্রযোজ্য</string>
<string name="automatic_can_still_switch">স্বয়ংক্রিয় পৃষ্ঠা বিন্যাস ব্যবহার করার সময়, আপনি এখনও এই সেটিং ওভাররাইড না করে পড়ার সময় লেআউটগুলির মধ্যে স্যুইচ করতে পারেন</string>
<string name="show_on_long_press">দীর্ঘ প্রেসে দেখও</string>

View file

@ -743,7 +743,7 @@
<string name="gray_background">Gris</string>
<string name="switch_to_double">Canvia a pàgines dobles</string>
<string name="switch_to_single">Canvia a pàgina única</string>
<string name="ignore_cutout_areas">Ignora les àrees retallades</string>
<string name="cutout_ignore">Ignora les àrees retallades</string>
<string name="cutout_behavior_only_applies">El comportament de làrea retallada només saplica en mode vertical amb certs tipus descalat</string>
<string name="automatic_can_still_switch">Quan utilitzeu la distribució de pàgines automàtiques, podeu canviar igualment entre distribucions mentre llegiu sense canviar aquesta configuració</string>
<string name="continue_reading_chapter_">Continua llegint el capítol %1$s</string>

View file

@ -551,7 +551,7 @@
<string name="error_saving_cover">Při ukládání přebalu došlo k chybě</string>
<string name="cover_saved">Přebal uložen</string>
<string name="page_layout">Rozložení stránek</string>
<string name="ignore_cutout_areas">Ignorovat vyřežané oblasti</string>
<string name="cutout_ignore">Ignorovat vyřežané oblasti</string>
<string name="cutout_area_behavior">Chování oblasti výřezu</string>
<string name="both_axes">Na Obou Osách</string>
<string name="vertically">Vertikálně</string>

View file

@ -696,7 +696,7 @@
<string name="last_used_library_recents">Zuletzt benutzt (Bibliothek oder Neueste)</string>
<string name="custom_manga_info">Benutzerdefinierte Infos des Mangas</string>
<string name="mark_all_chapters_as_unread">Alle Kapitel als ungelesen markieren\?</string>
<string name="ignore_cutout_areas">Ausschnittbereiche ignorieren</string>
<string name="cutout_ignore">Ausschnittbereiche ignorieren</string>
<string name="start_past_cutout">Nach dem Ausschnitt starten</string>
<string name="pad_cutout_areas">Ausschnittbereich füllen</string>
<string name="cutout_area_behavior">Verhalten des Ausschnittbereichs</string>

View file

@ -671,7 +671,7 @@
<string name="automatic_orientation">Αυτόματη (βάση προσανατολισμού)</string>
<string name="page_layout">Διάταξη σελίδας</string>
<string name="cutout_behavior_only_applies">Η συμπεριφορά της περιοχής αποκοπής ισχύει μόνο σε λειτουργία πορτραίτου με ορισμένους τύπους κλίμακας</string>
<string name="ignore_cutout_areas">Παράβλεψη περιοχών αποκοπής</string>
<string name="cutout_ignore">Παράβλεψη περιοχών αποκοπής</string>
<string name="start_past_cutout">Έναρξη μετά την αποκοπή</string>
<string name="pad_cutout_areas">Γέμισμα περιοχής αποκοπής</string>
<string name="cutout_area_behavior">Συμπεριφορά περιοχής αποκοπής</string>

View file

@ -657,7 +657,7 @@
<string name="use_first_source">Utilice la primera fuente con alternativa</string>
<string name="custom_manga_info">Información sobre las series personalizadas</string>
<string name="mark_all_chapters_as_unread">¿Marcar todos los capítulos como no leídos\?</string>
<string name="ignore_cutout_areas">Ignorar áreas recortadas</string>
<string name="cutout_ignore">Ignorar áreas recortadas</string>
<string name="start_past_cutout">Empezar más allá del recorte</string>
<string name="cutout_area_behavior">Comportamiento del área de corte</string>
<string name="both_axes">Ambos Ejes</string>

View file

@ -509,7 +509,7 @@
<string name="automatic_orientation">Automatikoa (orientazioan oinarrituta)</string>
<string name="about_this_">Honi buruz %1$s</string>
<string name="start_past_cutout">Hasi mozketaren ostean</string>
<string name="ignore_cutout_areas">Ez egin kasurik mozturiko eremuei</string>
<string name="cutout_ignore">Ez egin kasurik mozturiko eremuei</string>
<string name="keep_both_on_service">Mantendu biak %1$s-n eta ordeztu lokalean soilik</string>
<string name="custom_manga_info">Mangaren informazio pertsonalizatua</string>
<string name="finished_reading_date">Irakurketa-amaitze data</string>

View file

@ -610,7 +610,7 @@
<string name="clear_cached_covers_non_library">Tyhjennä välimuistiin tallennetut kannet, joita ei ole kirjastossa</string>
<string name="delete_old_covers_in_library_used_">Poista kirjastossasi olevat vanhat ja käyttämättömät välimuistiin tallennetut mangakannet, jotka on päivitetty.
\nTällä hetkellä käytössä: %1$s</string>
<string name="ignore_cutout_areas">Jätä leikkausalueet huomiotta</string>
<string name="cutout_ignore">Jätä leikkausalueet huomiotta</string>
<string name="start_past_cutout">Aloita leikkauksen jälkeen</string>
<string name="pad_cutout_areas">Täytä leikkausalueet</string>
<string name="clean_up_cached_covers">Poista välimuistissa olevat kannet</string>

View file

@ -817,7 +817,7 @@
<string name="pref_update_only_completely_read_summary">I-update lang ang manga kung walang kabanatang di pa nabasa (lahat nabasa)</string>
<string name="both_axes">Pareho</string>
<string name="cutout_area_behavior">Gagawin sa cutout area</string>
<string name="ignore_cutout_areas">Balewalain ang mga cutout area</string>
<string name="cutout_ignore">Balewalain ang mga cutout area</string>
<string name="all_but_bookmarked_chapters">Lahat ng walang pananda</string>
<string name="clear_tags">Tanggalin ang mga tag</string>
<string name="reset_cover">I-reset ang pabalat</string>

View file

@ -689,7 +689,7 @@
<string name="crash_log_saved">Rapports de plantage sauvegardés</string>
<string name="updated_to_">Mise à jour de v%1$s</string>
<string name="pressing_back_to_start">Revenir à l\'écran de démarrage en appuyant sur retour</string>
<string name="ignore_cutout_areas">Ignorer les zones de découpe</string>
<string name="cutout_ignore">Ignorer les zones de découpe</string>
<string name="previous">Précédent</string>
<string name="next">Suivant</string>
<string name="menu">menu</string>

View file

@ -724,7 +724,7 @@
<string name="add_x_to">Dodaj %1$s u …</string>
<string name="move_x_to">Premjesti %1$s u …</string>
<string name="use_last_saved_migration_preferences">Za grupno migriranje koristi zadnje spremljene postavke i izvore prije migracije</string>
<string name="ignore_cutout_areas">Zanemari područja izreska</string>
<string name="cutout_ignore">Zanemari područja izreska</string>
<string name="start_past_cutout">Počni izvan izreska</string>
<string name="pad_cutout_areas">Područjima izreska dodaj odmak</string>
<string name="cutout_area_behavior">Ponašanje područja izreska</string>

View file

@ -638,7 +638,7 @@
<string name="automatic_can_still_switch">Ketika menggunakan tata letak halaman secara otomatis, Anda masih dapat menukar tata letak ketika sedang membaca tanpa menimpa pengaturan ini</string>
<string name="page_layout">Tata letak halaman</string>
<string name="cutout_behavior_only_applies">Tingkah area potong hanya diterapkan pada mode tegak dengan beberapa jenis skala</string>
<string name="ignore_cutout_areas">Abaikan area potong</string>
<string name="cutout_ignore">Abaikan area potong</string>
<string name="start_past_cutout">Mulai potong terakhir</string>
<string name="pad_cutout_areas">Area potong pad</string>
<string name="cutout_area_behavior">Tingkah area potong</string>

View file

@ -825,7 +825,7 @@
<string name="no_match_found">Nessun risultato trovato</string>
<string name="source_unsupported">Fonte non supportata</string>
<string name="custom_manga_info">Informazioni serie personalizzate</string>
<string name="ignore_cutout_areas">Ignora aree ritagliate</string>
<string name="cutout_ignore">Ignora aree ritagliate</string>
<string name="pad_cutout_areas">Riempi aree ritagliate</string>
<plurals name="_updates_pending">
<item quantity="one">%d aggiornamento in attesa</item>

View file

@ -691,7 +691,7 @@
\nダウンロードを削除しますか</item>
</plurals>
<string name="show_on_long_press">長押しで表示</string>
<string name="ignore_cutout_areas">カットアウト領域を無視</string>
<string name="cutout_ignore">カットアウト領域を無視</string>
<string name="automatic_removal">自動削除</string>
<string name="search_">%1$sを検索</string>
<string name="date_fetched">登録された日付</string>

View file

@ -717,7 +717,7 @@
<string name="dont_migrate">마이그레이션하지 않음</string>
<string name="details_page">세부내용 페이지</string>
<string name="turn_off_">%s 끄기</string>
<string name="ignore_cutout_areas">컷아웃 영역 무시</string>
<string name="cutout_ignore">컷아웃 영역 무시</string>
<string name="page_layout">페이지 레이아웃</string>
<string name="remember_this_choice">이 선택을 기억하십시오</string>
<string name="stop_migrating">마이그레이션을 중지하시겠습니까\?</string>

View file

@ -632,7 +632,7 @@
<string name="last_used_library_recents">Akhir digunakan (Pustaka atau Terkini)</string>
<string name="custom_manga_info">Maklumat manga tersuai</string>
<string name="mark_all_chapters_as_unread">Tanda semua bab sebagai belum dibaca\?</string>
<string name="ignore_cutout_areas">Abai kawasan bertakuk</string>
<string name="cutout_ignore">Abai kawasan bertakuk</string>
<string name="start_past_cutout">Mula selepas kawasan bertakuk</string>
<string name="pad_cutout_areas">Berpad kawasan bertakuk</string>
<string name="cutout_area_behavior">Kelakuan kawasan bertakuk</string>

View file

@ -820,7 +820,7 @@
<string name="automatic_can_still_switch">Ved bruk av automatisk sideoppsett kan du fremdeles bytte mellom oppsett mens du leser, uten å overstyre denne innstillingen</string>
<string name="page_layout">Sideoppsett</string>
<string name="cutout_behavior_only_applies">Oppførsel for utklippsområde har kun innvirkning i stående sideretning med noen skaleringstyper</string>
<string name="ignore_cutout_areas">Ignorer utklipte områder</string>
<string name="cutout_ignore">Ignorer utklipte områder</string>
<string name="start_past_cutout">Start etter utklipp</string>
<string name="cutout_area_behavior">Oppførsel for utklippsområde</string>
<string name="if_disabled_transition_will_skip">Hvis avskrudd vil overgangssiden hoppes over hvis neste kapittel er innlastet</string>

View file

@ -867,7 +867,7 @@
<string name="automatic_orientation">स्वचालित (अभिमुखीकरणमा आधारित)</string>
<string name="switch_to_single">एकल पृष्ठमा स्विच गर्नुहोस्</string>
<string name="smart_based_on_page">स्मार्ट (पृष्ठमा आधारित)</string>
<string name="ignore_cutout_areas">कटआउट क्षेत्रहरू बेवास्ता गर्नुहोस्</string>
<string name="cutout_ignore">कटआउट क्षेत्रहरू बेवास्ता गर्नुहोस्</string>
<string name="cutout_behavior_only_applies">कटआउट क्षेत्र व्यवहार निश्चित स्केल प्रकारहरूसँग पोर्ट्रेट मोडमा मात्र लागू हुन्छ</string>
<string name="search_chapters">अध्यायहरू खोज्नुहोस्</string>
<string name="mark_all_chapters_as_unread">सबै अध्यायहरू नपढिएको रूपमा चिन्ह लगाउने हो\?</string>

View file

@ -652,7 +652,7 @@
<string name="last_used_library_recents">Laatst gebruikt (Bibliotheek of Nieuwste)</string>
<string name="custom_manga_info">Aangepaste manga-informatie</string>
<string name="mark_all_chapters_as_unread">Alle hoofstukken als ongelezen markeren\?</string>
<string name="ignore_cutout_areas">Uitgeknipte gebieden negeren</string>
<string name="cutout_ignore">Uitgeknipte gebieden negeren</string>
<string name="start_past_cutout">Beginnen na het uitgeknipte gebied</string>
<string name="pad_cutout_areas">Uitgesneden gebied opvullen</string>
<string name="cutout_area_behavior">Gedrag van het uitgesneden gebied</string>

View file

@ -730,7 +730,7 @@
<string name="last_used_library_recents">Ostatnio użyte (Biblioteka lub Ostatnie)</string>
<string name="custom_manga_info">Własna informacja o mandze</string>
<string name="mark_all_chapters_as_unread">Oznaczyć wszystkie rozdziały jako nieprzeczytane\?</string>
<string name="ignore_cutout_areas">Ignoruj obszary wycięcia</string>
<string name="cutout_ignore">Ignoruj obszary wycięcia</string>
<string name="start_past_cutout">Zacznij za wycięciem</string>
<string name="pad_cutout_areas">Wypełnij obszar wycięcia</string>
<string name="cutout_area_behavior">Zachowanie obszaru wycięcia</string>

View file

@ -770,7 +770,7 @@
<string name="automatic_can_still_switch">Ao usar o layout de página automático, você ainda pode mudar entre os layouts enquanto lê sem sobrepôr esta configuração</string>
<string name="page_layout">Layout de página</string>
<string name="cutout_behavior_only_applies">O comportamento da área de corte da tela aplica apenas no modo paisagem com certos tipos de escala</string>
<string name="ignore_cutout_areas">Ignorar as áreas de corte da tela</string>
<string name="cutout_ignore">Ignorar as áreas de corte da tela</string>
<string name="start_past_cutout">Iniciar após o corte da tela</string>
<string name="pad_cutout_areas">Preencher as áreas de corte da tela</string>
<plurals name="pages_plural">

View file

@ -738,7 +738,7 @@
<string name="automatic_can_still_switch">Ao usar o layout de página automático, ainda pode mudar entre os layouts enquanto lê sem sobrepôr esta configuração</string>
<string name="page_layout">Layout de página</string>
<string name="cutout_behavior_only_applies">O comportamento da área de corte do ecrã aplica apenas no modo paisagem com certos tipos de escala</string>
<string name="ignore_cutout_areas">Ignorar as áreas de corte do ecrã</string>
<string name="cutout_ignore">Ignorar as áreas de corte do ecrã</string>
<string name="start_past_cutout">Iniciar após o corte do ecrã</string>
<string name="pad_cutout_areas">Preencher as áreas de corte do ecrã</string>
<string name="cutout_area_behavior">Comportamento da área de corte do ecrã</string>

View file

@ -485,7 +485,7 @@
<string name="automatic_can_still_switch">În timp ce utilizați aspectul automat al paginii, puteți comuta între diferitele aspecte în timp ce citiți fără a suprascrie această setare</string>
<string name="page_layout">Aspect pagină</string>
<string name="cutout_behavior_only_applies">Comportamentul zonei de decupaj se aplică numai în modul portret cu anumite tipuri de scală</string>
<string name="ignore_cutout_areas">Ignoră zonele de decupaj</string>
<string name="cutout_ignore">Ignoră zonele de decupaj</string>
<string name="start_past_cutout">Începeți după decupaj</string>
<string name="cutout_area_behavior">Comportamentul zonei de decupare</string>
<string name="both_axes">Ambele axe</string>

View file

@ -721,7 +721,7 @@
<string name="show_unread_count">Показывать значки и счётчик непрочитанных глав</string>
<string name="show_unread_badges">Показывать значки непрочитанных глав</string>
<string name="hide_unread_badges">Скрыть значки непрочитанных глав</string>
<string name="ignore_cutout_areas">Игнорировать области выреза</string>
<string name="cutout_ignore">Игнорировать области выреза</string>
<string name="cutout_area_behavior">Поведение области выреза</string>
<string name="pad_cutout_areas">Блокнотная область выреза</string>
<string name="start_past_cutout">Начать с прошлого выреза</string>

View file

@ -666,7 +666,7 @@
</plurals>
<string name="hide_bottom_nav">Cua automaticamente su butone de navigatzione</string>
<string name="custom_manga_info">Informatziones personalizadas de su manga</string>
<string name="ignore_cutout_areas">Ignora sas àreas segadas</string>
<string name="cutout_ignore">Ignora sas àreas segadas</string>
<string name="cutout_area_behavior">Cumportamentu de s\'àrea de segadura</string>
<string name="filter_languages">Filtra sas limbas</string>
<string name="selection">Seletzione</string>

View file

@ -677,7 +677,7 @@
<string name="sort_by_ignoring_articles">Sortiraj ignorisanjem članova</string>
<string name="restrictions_">Ograničenja: %1$s</string>
<string name="smart_based_on_page">Pametno (na osnovu stranice)</string>
<string name="ignore_cutout_areas">Zanemarite područja izreza</string>
<string name="cutout_ignore">Zanemarite područja izreza</string>
<string name="page_layout">Raspored na stranici</string>
<plurals name="pages_plural">
<item quantity="one">%1$d strana</item>

View file

@ -577,7 +577,7 @@
<string name="automatic_can_still_switch">När du använder automatisk sidlayout kan du ändå växla mellan layouter medan du läser utan att åsidosätta denna inställning</string>
<string name="page_layout">Sidlayout</string>
<string name="cutout_behavior_only_applies">Beteende för skärningsområde gäller endast i stående läge med vissa skaltyper</string>
<string name="ignore_cutout_areas">Ignorera utskärningsområden</string>
<string name="cutout_ignore">Ignorera utskärningsområden</string>
<string name="start_past_cutout">Börja efter utskärningen</string>
<string name="pad_cutout_areas">Pad utskärning områden</string>
<string name="cutout_area_behavior">Beteende för utskärningsområdet</string>

View file

@ -847,7 +847,7 @@
<string name="tag">แท็ก</string>
<string name="amount_of_pages_to_preload">จำนวนหน้าที่จะโหลดล่วงหน้าเมื่ออ่าน ค่าที่สูงขึ้นจะส่งผลให้ประสบการณ์การอ่านราบรื่นขึ้น แต่จะต้องใช้พื้นที่แคชและเครือข่ายที่มากขึ้น</string>
<string name="smart_by_theme">อัตโนมัติ (ตามธีม)</string>
<string name="ignore_cutout_areas">ไม่สนใจพื้นที่ที่ตัดออก</string>
<string name="cutout_ignore">ไม่สนใจพื้นที่ที่ตัดออก</string>
<string name="cutout_behavior_only_applies">ลักษณะการทำงานของพื้นที่ที่ตัดออกจะใช้ได้เฉพาะในโหมดแนวตั้งตามขนาดที่กำหนด</string>
<string name="search_manually">ค้นหาด้วยตนเอง</string>
<string name="include_extra_search_parameter">รวมพารามิเตอร์การค้นหาเพิ่มเติมเมื่อค้นหา</string>

View file

@ -538,7 +538,7 @@
<item quantity="one">%1$d sayfa</item>
<item quantity="other">%1$d sayfa</item>
</plurals>
<string name="ignore_cutout_areas">Kesme alanlarını yoksay</string>
<string name="cutout_ignore">Kesme alanlarını yoksay</string>
<string name="single_page">Tek Sayfa</string>
<string name="page_layout">Sayfa düzeni</string>
<string name="pad_cutout_areas">Kesme alanlarını dolgula</string>

View file

@ -842,7 +842,7 @@
<string name="cutout_area_behavior">Поведінка вирізу</string>
<string name="pad_cutout_areas">Заповніть площу вирізу</string>
<string name="start_past_cutout">Почати після вирізання</string>
<string name="ignore_cutout_areas">Ігнорувати виріз</string>
<string name="cutout_ignore">Ігнорувати виріз</string>
<string name="cutout_behavior_only_applies">Поведінка вирізу вживається лише в портретному режимі з визначеними типами масштабів</string>
<string name="automatic_orientation">Автоматичне (на основі орієнтації)</string>
<string name="custom_manga_info">Користувальницька інформація про манґу</string>

View file

@ -625,7 +625,7 @@
<string name="automatic_can_still_switch">Khi sử dụng dạng trang tự động, bạn có thể chuyển qua từng loại dạng trang trong khi đọc mà không cần ghi đè cài đặt này</string>
<string name="page_layout">Dạng trang</string>
<string name="cutout_behavior_only_applies">Hành vị cắt khu vực chỉ được áp dụng trong chế độ dọc với một số kiểu tỉ lệ</string>
<string name="ignore_cutout_areas">Bỏ qua khu vực bị cắt</string>
<string name="cutout_ignore">Bỏ qua khu vực bị cắt</string>
<string name="start_past_cutout">Bắt đầu sau phần bị cắt</string>
<string name="pad_cutout_areas">Chèn khoảng trống vào khu vực bị cắt</string>
<string name="cutout_area_behavior">Hành vi khi cắt khu vực</string>

View file

@ -648,7 +648,7 @@
<string name="saves_error_logs">将错误记录保存到文件中,以便与开发人员共享</string>
<string name="crash_log_saved">崩溃日志已保存</string>
<string name="updated_to_">已更新到 v%1$s</string>
<string name="ignore_cutout_areas">忽略刘海屏区域</string>
<string name="cutout_ignore">忽略刘海屏区域</string>
<string name="pad_cutout_areas">平板刘海屏区域</string>
<string name="cutout_area_behavior">刘海屏行为</string>
<string name="mark_all_chapters_as_unread">标记所有章节为未读?</string>

View file

@ -896,7 +896,7 @@
<string name="remove_crop">移除裁剪</string>
<string name="vertically">縱向</string>
<string name="both_axes">兩個軸</string>
<string name="ignore_cutout_areas">忽略切割區域</string>
<string name="cutout_ignore">忽略切割區域</string>
<string name="cutout_behavior_only_applies">切割區域行為僅適用於特定縮放類型的直向模式</string>
<plurals name="pages_plural">
<item quantity="other">%1$d 頁</item>

View file

@ -135,14 +135,14 @@
</string-array>
<string-array name="cutout_behavior">
<item>@string/pad_cutout_areas</item>
<item>@string/start_past_cutout</item>
<item>@string/ignore_cutout_areas</item>
<item>@string/cutout_show</item>
<item>@string/cutout_hide</item>
<item>@string/cutout_ignore</item>
</string-array>
<string-array name="cutout_behavior_landscape">
<item>@string/pad_cutout_areas</item>
<item>@string/ignore_cutout_areas</item>
<item>@string/cutout_hide</item>
<item>@string/cutout_landscape</item>
</string-array>
<string-array name="clean_up_downloads">

View file

@ -500,9 +500,12 @@
<string name="cutout_area_behavior">Cutout area behavior</string>
<string name="pad_cutout_areas">Pad cutout areas</string>
<string name="start_past_cutout">Start past cutout</string>
<string name="ignore_cutout_areas">Ignore cutout areas</string>
<string name="cutout_behavior_only_applies">Cutout area behavior only applies in portrait mode with certain scale types</string>
<string name="pref_cutout_short">Show content in cutout area</string>
<string name="cutout_landscape">Same as portrait</string>
<string name="cutout_show">Show content in cutout area</string>
<string name="cutout_hide">Hide content in cutout area</string>
<string name="cutout_ignore">Ignore cutout areas</string>
<string name="page_layout">Page layout</string>
<string name="automatic_can_still_switch">While using automatic page layout, you can still switch between layouts while reading without overriding this setting</string>
<string name="automatic_orientation">Automatic (based on orientation)</string>