package Ġcom . k ier on qu inn . app . discover kill er . ui . screens . settings . background picker Ċ Ċ import Ġandroid . animation . Layout Transition Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . res . Color State List Ċ import Ġandroid . graphics . drawable . Color Drawable Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . graphics . Color Utils Ċ import Ġandroidx . core . view . Window Insets Compat Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . core . view . update Padding Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroidx . view pager 2 . widget . ViewPager 2 Ċ import Ġcom . k ier on qu inn . app . discover kill er . R Ċ import Ġcom . k ier on qu inn . app . discover kill er . components . settings . Settings Ċ import Ġcom . k ier on qu inn . app . discover kill er . components . splash . Remote Splash Loader Ċ import Ġcom . k ier on qu inn . app . discover kill er . databinding . Fragment Settings Background Picker Binding Ċ import Ġcom . k ier on qu inn . app . discover kill er . ui . activities . Settings Background Picker Activity Ċ import Ġcom . k ier on qu inn . app . discover kill er . ui . base . Bound Fragment Ċ import Ġcom . k ier on qu inn . app . discover kill er . utils . extensions . on Apply Insets Ċ import Ġkotlinx . coroutines . flow . collect Ċ import Ġorg . k oin . android . ext . android . inject Ċ import Ġjava . io . Serializable Ċ Ċ class ĠSettings Background Picker Fragment : ĠBound Fragment < Fragment Settings Background Picker Binding >( Fragment Settings Background Picker Binding :: inflate ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ CURRENT _ POS Ġ= Ġ" current _ pos " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġval ĠviewModel Ġby Ġinject < Settings Background Picker ViewModel >() ĊĠĠĠ Ġprivate Ġval Ġsettings Ġby Ġinject < Settings >() ĊĊĠĠĠ Ġprivate Ġval ĠbackgroundColor Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġmon et . get BackgroundColor Secondary ( require Context ()) Ġ?: Ġmon et . get BackgroundColor ( require Context ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġbottom Padding Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġresources . get Dimension ( R . dim en . padding _ 1 6 ). toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġadapter Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠSettings Background Picker Adapter ( this @ Settings Background Picker Fragment , Ġempty List ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġpage Change Callback Ġ= Ġobject : ĠView Pager 2 . On Page Change Callback () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Selected ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Page Selected ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . items . get OrNull ( position )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Sheet With Item ( it . type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Pos Ġ= ĠsavedInstanceState ?. getInt ( KEY _ CURRENT _ POS ) ĊĠĠĠĠĠĠĠ Ġbinding . root . layout Transition . enable Transition Type ( Layout Transition . CHANG ING ) ĊĠĠĠĠĠĠĠ Ġsetup Toolbar () ĊĠĠĠĠĠĠĠ Ġsetup ViewPager () ĊĠĠĠĠĠĠĠ Ġsetup Bottom Sheet () ĊĠĠĠĠĠĠĠ Ġsetup ClickListener () ĊĠĠĠĠĠĠĠ Ġload Splash Scre ens ( current Pos ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup ClickListener (){ ĊĠĠĠĠĠĠĠ Ġlifecycle Scope . launch When Res umed Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . click Event . collect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoggle Controls () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup ViewPager (){ ĊĠĠĠĠĠĠĠ Ġwith ( binding . settings Background Picker View pager ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġthis @ Settings Background Picker Fragment . adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoff screen Page Limit Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister On Page Change Callback ( page Change Callback ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( getChild At ( 0 ) Ġas ? ĠRecyclerView )?. over Scroll Mode Ġ= ĠRecyclerView . OVER _ SCROLL _ NE VER ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtoggle Controls (){ ĊĠĠĠĠĠĠĠ Ġbinding . settings Background Picker Hide able . isVisible Ġ= Ġ! binding . settings Background Picker Hide able . isVisible ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Notify DataSet Changed ") ĊĠĠĠ Ġprivate Ġfun Ġload Splash Scre ens ( current Pos : ĠInt ?) Ġ= Ġlifecycle Scope . launch When Res umed Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . get Splash Screen Options ( require Context (), Ġsettings . overlay App ). collect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= Ġit . first ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdefault Ġ= Ġit . second ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . items Ġ= Ġoptions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( options . size Ġ> Ġ 1 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( require Context (), ĠgetString ( R . string . configuration _ app _ mon et _ toast ), ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Option Ġ= Ġsettings . overlay Background . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( this Ġ== ĠRemote Splash Loader . Splash Screen Type . DEFAULT ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapplied Pos Ġ= Ġoptions . indexOf First Ġ{ Ġsplash Ġ-> Ġsplash . type Ġ== Ġcurrent Option Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( applied Pos Ġ!= Ġ- 1 Ġ|| Ġcurrent Pos Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . settings Background Picker View pager . currentItem Ġ= Ġcurrent Pos Ġ?: Ġapplied Pos ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Bottom Sheet (){ ĊĠĠĠĠĠĠĠ Ġwith ( binding . settings Background Picker Sheet ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Tint List Ġ= ĠColor State List . valueOf ( backgroundColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbackground . alpha Ġ= Ġ 1 9 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Apply Insets Ġ{ Ġview , Ġin sets Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbottom Inset Ġ= Ġin sets . get Insets ( Window Insets Compat . Type . navigation Bars ()). bottom ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . update Padding ( bottom Ġ= Ġbottom Padding Ġ+ Ġbottom Inset ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwith ( binding . settings Background Picker Apply ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaccent Ġ= Ġmon et . get Accent Color ( require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset TextColor ( accent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstroke Color Ġ= ĠColor State List . valueOf ( accent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Apply Clicked ( binding . settings Background Picker View pager . currentItem ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Toolbar (){ ĊĠĠĠĠĠĠĠ Ġwith ( binding . toolbar ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= ĠgetString ( R . string . configuration _ app _ mon et ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Icon Ġ= ĠContext Compat . get Drawable ( require Context (), ĠR . drawable . ic _ back ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Navigation OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Activity (). finish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Ġ= ĠColor Drawable ( Color Utils . set Alpha Component ( backgroundColor , Ġ 1 9 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Apply Insets Ġ{ Ġview , Ġin sets Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequired Insets Ġ= Ġin sets . get Insets ( Window Insets Compat . Type . status Bars () Ġor ĠWindow Insets Compat . Type . navigation Bars ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . update Padding ( top Ġ= Ġrequired Insets . top , Ġleft Ġ= Ġrequired Insets . left , Ġright Ġ= Ġrequired Insets . right ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetTitle TextAppearance ( require Context (), ĠR . style . Toolbar Title ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġbinding . settings Background Picker View pager . currentItem ĊĠĠĠĠĠĠĠ Ġif ( position Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout State . put Int ( KEY _ CURRENT _ POS , Ġbinding . settings Background Picker View pager . currentItem ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Apply Clicked ( selected Page : ĠInt ){ ĊĠĠĠĠĠĠĠ Ġrequire Activity (). set Result ( Activity . RESULT _ OK , ĠIntent (). putExtra ( Settings Background Picker Activity . KEY _ SELECTED _ SPL ASH _ TYPE , Ġadapter . items [ selected Page ]. type Ġas ĠSerializable )) ĊĠĠĠĠĠĠĠ Ġrequire Activity (). finish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Sheet With Item ( type : ĠRemote Splash Loader . Splash Screen Type ){ ĊĠĠĠĠĠĠĠ Ġbinding . settings Background Picker Title . text Ġ= ĠgetString ( type . title Res ) ĊĠĠĠĠĠĠĠ Ġbinding . settings Background Picker Info . text Ġ= ĠgetString ( type . desc Res ) ĊĠĠĠ Ġ} Ċ Ċ }