package Ġcom . pand or ina . legend ary quotes . ui . fragment Ċ Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . animation . Property Values Holder Ċ import Ġandroid . animation . Value Animator Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . Menu Inflater Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroidx . core . content . res . Resources Compat Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . view pager 2 . widget . ViewPager 2 Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . pand or ina . legend ary quotes . R Ċ import Ġcom . pand or ina . legend ary quotes . data . Resources Ċ import Ġcom . pand or ina . legend ary quotes . databinding . Fragment Scroll able Quote Binding Ċ import Ġcom . pand or ina . legend ary quotes . model . Quote Ċ import Ġcom . pand or ina . legend ary quotes . ui . adapter . Scroll able Quotes Adapter Ċ import Ġcom . pand or ina . legend ary quotes . ui . view model . DataStore ViewModel Ċ import Ġcom . pand or ina . legend ary quotes . ui . view model . Quotes ViewModel Ċ import Ġcom . pand or ina . legend ary quotes . util . Util . configure ActionBar Ċ import Ġdagger . h ilt . android . Android EntryPoint ĊĊ Ċ @ Android EntryPoint Ċ class ĠScroll able Quote Fragment Ġ: ĊĠĠĠ ĠBase Fragment < Fragment Scroll able Quote Binding >( Fragment Scroll able Quote Binding :: inflate ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġquotes ViewModel : ĠQu otes ViewModel Ġby Ġview Models () ĊĠĠĠ Ġprivate Ġval Ġdata Store ViewModel : ĠData Store ViewModel Ġby Ġview Models () ĊĠĠĠ Ġprivate Ġvar Ġlist Ġ= ĠlistOf < Quote >() ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset ActionBar Configuration () ĊĠĠĠĠĠĠĠ Ġinit ViewPager () ĊĠĠĠĠĠĠĠ Ġobserve Background Image () ĊĊĠĠĠĠĠĠĠ Ġstart Image Changing Button Anim ( 1 . 1 f , Ġbinding . iv Change Bg ) ĊĠĠĠĠĠĠĠ Ġstart Image Changing Button Anim ( 1 . 0 5 f , Ġbinding . bg Change Image ) ĊĊĠĠĠĠĠĠĠ Ġbinding . lott ie Arrow Down . setOnClickListener Ġ{ Ġswipe ViewPager ( false ) Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . lott ie Arrow Up . setOnClickListener Ġ{ Ġswipe ViewPager ( true ) Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . iv Change Bg . setOnClickListener Ġ{ ĠonClick Image Change Button () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠonClick Image Change Button () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrandom Background Drawable Ġ= ĠResources . background List . random () ĊĠĠĠĠĠĠĠ Ġdata Store ViewModel . get Background Image . value ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ== Ġrandom Background Drawable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Image Change Button () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Store ViewModel . change Background Image ( random Background Drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġobserve Background Image () Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Store ViewModel . get Background Image . observe ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. center Crop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( binding . iv Change Bg ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit ViewPager () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . view Pager Quotes . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquotes ViewModel . quote List . observe ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= ĠScroll able Quotes Adapter ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck ViewPager State ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . view Pager Quotes . register On Page Change Callback ( object Ġ: ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView Pager 2 . On Page Change Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Sc rolled ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Offset : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Offset Pixels : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck ViewPager State ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" SetText I 1 8 n ") ĊĠĠĠ Ġfun Ġcheck ViewPager State ( position : ĠInt ){ ĊĠĠĠĠĠĠĠ Ġwhen ( list . size ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . lott ie Arrow Down . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . lott ie Arrow Up . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Page Position . text Ġ= ĠgetString ( R . string . page _ 0 _ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . lott ie Arrow Down . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . lott ie Arrow Up . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Page Position . text Ġ= ĠgetString ( R . string . page _ 1 _ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Page Position . text Ġ= Ġ"${ position Ġ+ Ġ 1 }/${ list . size }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . size Ġ- Ġ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . lott ie Arrow Down . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . lott ie Arrow Up . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . lott ie Arrow Up . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . lott ie Arrow Down . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . lott ie Arrow Down . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . lott ie Arrow Up . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset ActionBar Configuration () Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity ?. configure ActionBar ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . legend ary _ quotes ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Has Options Menu Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ quote _ list Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠScroll able Quote Fragment Directions . action Scroll able Quote Fragment To Quote List Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( action ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Image Changing Button Anim ( anim Value : ĠFloat , Ġview : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscale X Ġ= ĠProperty Values Holder . of Float ( View . SCALE _ X , Ġanim Value ) ĊĠĠĠĠĠĠĠ Ġval Ġscale Y Ġ= ĠProperty Values Holder . of Float ( View . SCALE _ Y , Ġanim Value ) ĊĠĠĠĠĠĠĠ Ġval Ġanim Ġ= ĠObject Animator . of Property Values Holder ( view , Ġscale X , Ġscale Y ) ĊĠĠĠĠĠĠĠ Ġanim . repeat Count Ġ= ĠValue Animator . INF IN ITE ĊĠĠĠĠĠĠĠ Ġanim . repeat Mode Ġ= ĠValue Animator . RE VERSE ĊĠĠĠĠĠĠĠ Ġanim . duration Ġ= Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠ Ġanim . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġswipe ViewPager ( is Up : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent ViewPager Position Ġ= Ġbinding . view Pager Quotes . currentItem ĊĠĠĠĠĠĠĠ Ġbinding . view Pager Quotes . setCurrent Item ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Up ) Ġcurrent ViewPager Position Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġcurrent ViewPager Position Ġ+ Ġ 1 , Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . menu . menu _ scroll able _ quotes , Ġmenu ) ĊĠĠĠ Ġ} Ċ }