package Ġcom . hs uan party . un box _ parity . view . ui . setting Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . hs uan party . un box _ parity . databinding . Setting Fragment Binding Ċ Ċ import Ġcom . hs uan party . un box _ parity . di . Injectable Ċ import Ġcom . hs uan party . un box _ parity . model . Preferences Helper Ċ import Ġcom . hs uan party . un box _ parity . utils . Log Message Ċ import Ġcom . hs uan party . un box _ parity . utils . My ViewModel Factory Ċ import Ġcom . hs uan party . un box _ parity . view . ui . Un box Par ity Activity Ċ import Ġcom . hs uan party . un box _ parity . view . ui . parity . Par ity Adapter Ċ import Ġcom . hs uan party . un box _ parity . view . ui . search . Search ViewModel Ċ import Ġcom . squareup . pic asso . Pic asso Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠSetting Fragment Ġ: ĠFragment (), ĠInjectable { ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠSetting Fragment :: class . java . simple Name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġfactory : ĠMy ViewModel Factory ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġm Preferences : ĠPreferences Helper ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġsearch ViewModel : ĠSearch ViewModel ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠSetting ViewModel ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Binding : ĠSetting Fragment Binding ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog Message . D ( TAG , Ġ" onCreate () ") ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ ĠLog Message . D ( TAG , Ġ" onCreate View () ") ĊĠĠĠĠĠĠĠ Ġm Binding Ġ= ĠSetting Fragment Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġinit UI () ĊĠĠĠĠĠĠĠ Ġinit Setting () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġm Binding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Providers . of ( this , Ġfactory ). get ( Setting ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġsearch ViewModel Ġ= ĠViewModel Providers . of ( this , Ġfactory ). get ( Search ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġsearch ViewModel . is Search Finish . observe ( this , ĠObserver < Int > Ġ{ Ġstatus Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSearch ViewModel . SEARCH _ START Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// update Recent View () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSearch ViewModel . SEARCH _ FIN ISH Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġsearch ViewModel . is Waiting LiveData . observe ( this , ĠObserver < Boolean > Ġ{ Ġis Waiting Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Waiting ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . waiting Dialog . setVisible With Animate ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . waiting Dialog . setVisible Immediate ly ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog Message . D ( TAG , Ġ" on Resume () ") ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĊĠĠĠĠĠĠĠ Ġupdate Recent View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog Message . D ( TAG , Ġ" on Pause () ") ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog Message . D ( TAG , Ġ" on Stop () ") ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog Message . D ( TAG , Ġ" on Destroy () ") ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit UI () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayout Manager Ġ= ĠLinearLayoutManager ( activity ) ĊĠĠĠĠĠĠĠ Ġlayout Manager . orientation Ġ= ĠRecyclerView . VERTICAL ĊĠĠĠĠĠĠĠ Ġm Binding . recent View . layout Manager Ġ= Ġlayout Manager ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠRecent Keyword Adapter () ĊĠĠĠĠĠĠĠ Ġm Binding . recent View . adapter Ġ= Ġadapter ĊĊĠĠĠĠĠĠĠ Ġm Binding . logout Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . logout ( activity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm Binding . manual Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠShow Ġapp Ġinstruction ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠUn box Par ity Activity ). show Introduction () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Setting () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠShow Ġprofile Ġinformation Ġon ĠUI ĊĠĠĠĠĠĠĠ Ġm Binding . userName . text Ġ= Ġm Preferences . userName ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m Preferences . photo . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPic asso . get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( m Preferences . photo ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. resize ( 3 0 0 , Ġ 3 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. center Crop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( m Binding . user Image ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Recent View () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog Message . D ( TAG , Ġ" update Recent View (), Ġlist . size : Ġ${ m Preferences . recent Keyword List . size }") ĊĠĠĠĠĠĠĠ Ġ// ĠUpdate Ġrecent Ġsearch Ġkeywords ĊĠĠĠĠĠĠĠ Ġ( m Binding . recent View . adapter Ġas ĠRecent Keyword Adapter ). m Recent Keyword List Ġ= Ġm Preferences . recent Keyword List ĊĠĠĠĠĠĠĠ Ġ( m Binding . recent View . adapter Ġas ĠRecent Keyword Adapter ). search ViewModel Ġ= Ġsearch ViewModel ĊĠĠĠĠĠĠĠ Ġm Binding . recent View . adapter ?. notify DataSet Changed () ĊĠĠĠ Ġ} Ċ } Ċ