package Ġeu . kan ade . t ach iy omi . ui . setting Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . appcompat . app . AppCompat Delegate Ċ import Ġandroidx . preference . Preference Screen Ċ import Ġeu . kan ade . t ach iy omi . R Ċ import Ġeu . kan ade . t ach iy omi . data . preference . as Immediate Flow Ċ import Ġeu . kan ade . t ach iy omi . data . preference . as Immediate Flow In Ċ import Ġeu . kan ade . t ach iy omi . util . system . Side Nav Mode Ċ import Ġeu . kan ade . t ach iy omi . util . system . app Delegate Night Mode Ċ import Ġeu . kan ade . t ach iy omi . util . system . dp To Px Ċ import Ġeu . kan ade . t ach iy omi . util . system . get Pref Theme Ċ import Ġeu . kan ade . t ach iy omi . util . system . isIn Night Mode Ċ import Ġkotlinx . coroutines . flow . launch In Ċ import Ġkotlin . math . max Ċ import Ġeu . kan ade . t ach iy omi . data . preference . Preference Keys Ġas ĠKeys Ċ Ċ class ĠSettings Appearance Controller Ġ: ĠSettings Controller () Ġ{ ĊĊĠĠĠ Ġvar Ġlast Theme X Light : ĠInt ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġlast Theme X Dark : ĠInt ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġtheme Preference : ĠTheme Preference ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Suppress Lint (" Notify DataSet Changed ") ĊĠĠĠ Ġoverride Ġfun Ġsetup Preference Screen ( screen : ĠPreference Screen ) Ġ= Ġscreen . apply Ġ{ ĊĠĠĠĠĠĠĠ Ġtitle Res Ġ= ĠR . string . appearance ĊĊĠĠĠĠĠĠĠ Ġpreference Category Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Res Ġ= ĠR . string . app _ theme ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtheme Preference Ġ= Ġtheme Preference Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= Ġ" theme _ preference " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Res Ġ= ĠR . string . app _ theme ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Scroll Post ion Light Ġ= Ġlast Theme X Light ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Scroll Post ion Dark Ġ= Ġlast Theme X Dark ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsummary Ġ= Ġcontext . getString ( context . get Pref Theme ( preferences ). name Res ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Ġ= Ġthis @ Settings Appearance Controller . activity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġswitch Preference Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= Ġ" night _ mode _ switch " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Persistent Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Res Ġ= ĠR . string . follow _ system _ theme ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Checked Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences . night Mode (). get () Ġ== ĠAppCompat Delegate . MODE _ N IGHT _ FOLLOW _ SYSTEM ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonChange Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences . night Mode (). set ( AppCompat Delegate . MODE _ N IGHT _ FOLLOW _ SYSTEM ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. re create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences . night Mode (). set ( context . app Delegate Night Mode ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtheme Preference ?. fast Adapter Light ?. notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtheme Preference ?. fast Adapter Dark ?. notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences . night Mode (). as Immediate Flow Ġ{ Ġmode Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Checked Ġ= Ġmode Ġ== ĠAppCompat Delegate . MODE _ N IGHT _ FOLLOW _ SYSTEM ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. launch In ( view Scope ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġswitch Preference Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= ĠKeys . theme Dark A mo led ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Res Ġ= ĠR . string . pure _ black _ dark _ mode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences . night Mode (). as Immediate Flow In ( view Scope ) Ġ{ Ġmode Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Visible Ġ= Ġmode Ġ!= ĠAppCompat Delegate . MODE _ N IGHT _ NO ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonChange Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( context . isIn Night Mode ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. re create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtheme Preference ?. fast Adapter Dark ?. notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpreference Category Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Res Ġ= ĠR . string . details _ page ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswitch Preference Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= ĠKeys . theme M anga Details ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Res Ġ= ĠR . string . theme _ buttons _ based _ on _ cover ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpreference Category Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Res Ġ= ĠR . string . navigation ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġswitch Preference Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= ĠKeys . hide Bottom Nav On Scroll ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Res Ġ= ĠR . string . hide _ bottom _ nav ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsummary Res Ġ= ĠR . string . hide s _ on _ scroll ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġint List Preference ( activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= ĠKeys . side Nav Icon Alignment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Res Ġ= ĠR . string . side _ nav _ icon _ alignment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentries Res Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . top , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . center , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . bottom , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentry Range Ġ= Ġ 0 .. 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Visible Ġ= Ġmax ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . resources . display Metrics . width Pixels , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . resources . display Metrics . height Pixels ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ>= Ġ 7 2 0 . dp To Px ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġint List Preference ( activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= ĠKeys . side Nav Mode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Res Ġ= ĠR . string . use _ side _ navigation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= ĠSide Nav Mode . values () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentries Res Ġ= Ġvalues . map Ġ{ Ġit . string Res Ġ}. to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentry Values Ġ= Ġvalues . map Ġ{ Ġit . pref Value Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue Ġ= ĠSide Nav Mode . DEFAULT . pref Value ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonChange Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. re create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo Preference ( R . string . by _ default _ side _ nav _ info ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View ( view ) ĊĠĠĠĠĠĠĠ Ġtheme Preference Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save ViewState ( view : ĠView , Ġout State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġout State . put Int (:: last Theme X Light . name , Ġtheme Preference ?. last Scroll Post ion Light Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġout State . put Int (:: last Theme X Dark . name , Ġtheme Preference ?. last Scroll Post ion Dark Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Restore ViewState ( view : ĠView , Ġsaved ViewState : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Restore ViewState ( view , Ġsaved ViewState ) ĊĠĠĠĠĠĠĠ Ġlast Theme X Light Ġ= Ġsaved ViewState . getInt (:: last Theme X Light . name ) ĊĠĠĠĠĠĠĠ Ġlast Theme X Dark Ġ= Ġsaved ViewState . getInt (:: last Theme X Dark . name ) ĊĠĠĠĠĠĠĠ Ġtheme Preference ?. last Scroll Post ion Light Ġ= Ġlast Theme X Light ĊĠĠĠĠĠĠĠ Ġtheme Preference ?. last Scroll Post ion Dark Ġ= Ġlast Theme X Dark ĊĠĠĠ Ġ} Ċ } Ċ