Added an option to change the notch mode

Option is enabled (not greyed out) in Reader settings only when a mobile supports notch. Default option is to NOT use the notch area on horizontal view. Also added polish translation to already fixed polish translation file.
This commit is contained in:
Jan Grabowski 2020-03-08 14:04:52 +01:00
parent 5f862f0ed8
commit bcec01c48b
6 changed files with 49 additions and 11 deletions

View file

@ -19,6 +19,8 @@ object PreferenceKeys {
const val fullscreen = "fullscreen"
const val isDefaultNotchMode = "pref_notch_mode"
const val keepScreenOn = "pref_keep_screen_on_key"
const val customBrightness = "pref_custom_brightness_key"

View file

@ -72,6 +72,8 @@ class PreferencesHelper(val context: Context) {
fun fullscreen() = rxPrefs.getBoolean(Keys.fullscreen, true)
fun notchDefaultCutoutMode() = rxPrefs.getBoolean(Keys.isDefaultNotchMode, false)
fun keepScreenOn() = rxPrefs.getBoolean(Keys.keepScreenOn, true)
fun customBrightness() = rxPrefs.getBoolean(Keys.customBrightness, false)

View file

@ -11,12 +11,7 @@ import android.graphics.Bitmap
import android.graphics.Color
import android.os.Build
import android.os.Bundle
import android.view.KeyEvent
import android.view.Menu
import android.view.MenuItem
import android.view.MotionEvent
import android.view.View
import android.view.WindowManager
import android.view.*
import android.view.animation.Animation
import android.view.animation.AnimationUtils
import android.widget.SeekBar
@ -34,9 +29,7 @@ import eu.kanade.tachiyomi.data.preference.getOrDefault
import eu.kanade.tachiyomi.ui.base.activity.BaseRxActivity
import eu.kanade.tachiyomi.ui.main.BiometricActivity
import eu.kanade.tachiyomi.ui.main.MainActivity
import eu.kanade.tachiyomi.ui.reader.ReaderPresenter.SetAsCoverResult.AddToLibraryFirst
import eu.kanade.tachiyomi.ui.reader.ReaderPresenter.SetAsCoverResult.Error
import eu.kanade.tachiyomi.ui.reader.ReaderPresenter.SetAsCoverResult.Success
import eu.kanade.tachiyomi.ui.reader.ReaderPresenter.SetAsCoverResult.*
import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter
import eu.kanade.tachiyomi.ui.reader.model.ReaderPage
import eu.kanade.tachiyomi.ui.reader.model.ViewerChapters
@ -45,11 +38,11 @@ import eu.kanade.tachiyomi.ui.reader.viewer.pager.L2RPagerViewer
import eu.kanade.tachiyomi.ui.reader.viewer.pager.R2LPagerViewer
import eu.kanade.tachiyomi.ui.reader.viewer.pager.VerticalPagerViewer
import eu.kanade.tachiyomi.ui.reader.viewer.webtoon.WebtoonViewer
import eu.kanade.tachiyomi.util.system.launchUI
import eu.kanade.tachiyomi.util.lang.plusAssign
import eu.kanade.tachiyomi.util.storage.getUriCompat
import eu.kanade.tachiyomi.util.system.GLUtil
import eu.kanade.tachiyomi.util.system.getResourceColor
import eu.kanade.tachiyomi.util.system.launchUI
import eu.kanade.tachiyomi.util.system.toast
import eu.kanade.tachiyomi.util.view.gone
import eu.kanade.tachiyomi.util.view.visible
@ -67,7 +60,7 @@ import rx.subscriptions.CompositeSubscription
import timber.log.Timber
import uy.kohesive.injekt.injectLazy
import java.io.File
import java.util.Date
import java.util.*
import java.util.concurrent.TimeUnit
import kotlin.math.abs
@ -692,6 +685,10 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>(),
subscriptions += preferences.colorFilterMode().asObservable()
.subscribe { setColorFilter(preferences.colorFilter().getOrDefault()) }
subscriptions += preferences.notchDefaultCutoutMode().asObservable()
.subscribe { setNotchCutoutMode(preferences.notchDefaultCutoutMode().getOrDefault()) }
}
/**
@ -804,6 +801,26 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>(),
}
}
/**
* Sets notch cutout mode to "DEFAULT" mode if true and "NEVER" mode if false.
* In "NEVER" mode the space next to the notch won't be used and filled with a black background.
*/
private fun setNotchCutoutMode(isDefault: Boolean) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
if (!isDefault) {
val currentOrientation = resources.configuration.orientation
if(currentOrientation == Configuration.ORIENTATION_LANDSCAPE) {
val params = window.attributes
params.layoutInDisplayCutoutMode =
WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER
}
}
}
}
/**
* Sets the brightness of the screen. Range is [-75, 100].
* From -75 to -1 a semi-transparent black view is overlaid with the minimum brightness.

View file

@ -87,6 +87,19 @@ class SettingsReaderController : SettingsController() {
defaultValue = false
}
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
val cutout = activity?.window?.decorView?.rootWindowInsets?.displayCutout
switchPreference {
key = Keys.isDefaultNotchMode
titleRes = R.string.pref_notch_display
summaryRes = R.string.pref_notch_display_summary
defaultValue = false
isEnabled = cutout != null // display option only when a mobile has a notch
}
}
preferenceCategory {
titleRes = R.string.pager_viewer

View file

@ -215,6 +215,8 @@
<string name="pref_double_tap_anim_speed">Szybkość podwójnego stuknięcia</string>
<string name="pref_show_page_number">Pokazuj numer strony</string>
<string name="pref_true_color">Kolor 32 bitowy</string>
<string name="pref_notch_display">Użyj przestrzeni sąsiadującej z notchem</string>
<string name="pref_notch_display_summary">Działa tylko w widoku horyzontalnym, tak by notch nachodził na wyświetlaną stronę</string>
<string name="pref_crop_borders">Przycinaj krawędzie</string>
<string name="pref_custom_brightness">Niestandardowa jasność</string>
<string name="pref_custom_color_filter">Niestandardowy filtr kolorów</string>

View file

@ -216,6 +216,8 @@
<string name="pref_double_tap_anim_speed">Double tap animation speed</string>
<string name="pref_show_page_number">Show page number</string>
<string name="pref_true_color">32-bit color</string>
<string name="pref_notch_display">Use space next to the notch</string>
<string name="pref_notch_display_summary">Works only for the landscape view for the notch to overlap the displayed page</string>
<string name="pref_crop_borders">Crop borders</string>
<string name="pref_custom_brightness">Use custom brightness</string>
<string name="pref_custom_color_filter">Use custom color filter</string>