package Ġcom . gre yl abs dev . pex wall s . presentation . screen . search Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Parcelable Ċ import Ġandroid . view . View Ċ import Ġandroid . view . input method . Editor Info Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . recyclerview . widget . St agger ed Grid LayoutManager Ċ import Ġcom . gre yl abs dev . pex wall s . R Ċ import Ġcom . gre yl abs dev . pex wall s . presentation . base . Base Fragment Ċ import Ġcom . gre yl abs dev . pex wall s . presentation . collection . photo grid . Photo Grid Paging Adapter Ċ import Ġcom . gre yl abs dev . pex wall s . presentation . collection . photo grid . Photo Item Decoration Ċ import Ġcom . gre yl abs dev . pex wall s . presentation . const . Consts Ċ import Ġcom . gre yl abs dev . pex wall s . presentation . ext . dp To Pix Ċ import Ġcom . gre yl abs dev . pex wall s . presentation . ext . get Screen Height In Pixels Ċ import Ġcom . gre yl abs dev . pex wall s . presentation . ext . get Screen Width In Pixels Ċ import Ġcom . gre yl abs dev . pex wall s . presentation . ext . hide Keyboard Ċ import Ġcom . gre yl abs dev . pex wall s . presentation . model . Photo Model Ċ import Ġcom . gre yl abs dev . pex wall s . presentation . screen . photo . Photo Fragment Ċ import Ġcom . gre yl abs dev . pex wall s . presentation . view . Placeholder View Ċ import Ġkotlinx . android . synt hetic . main . fragment _ search .* Ċ import Ġkotlinx . android . synt hetic . main . layout _ toolbar _ search .* Ċ import Ġorg . k oin . android . view model . ext . android . viewModel Ċ Ċ class ĠSearch Fragment Ġ: ĠBase Fragment ( ĊĠĠĠ Ġlayout Res Id Ġ= ĠR . layout . fragment _ search Ċ ) Ġ{ ĊĠĠĠ Ġoverride Ġval ĠviewModel Ġby ĠviewModel < Search ViewModel >() ĊĠĠĠ Ġoverride Ġval Ġtoolbar Title : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġval Ġcontent View : ĠView ? Ġby Ġlazy Ġ{ Ġcontent _ ll Ġ} ĊĠĠĠ Ġoverride Ġval Ġplaceholder View : ĠPlace holder View ? Ġby Ġlazy Ġ{ Ġplaceholder _ view Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġphoto Card Margin Ġby Ġlazy Ġ{ Ġrequire Activity (). dp To Pix ( Consts . DEFAULT _ M ARGIN _ DP ) Ġ} ĊĠĠĠ Ġprivate Ġval Ġphoto Card Width Ġby Ġlazy Ġ{ Ġrequire Activity (). get Screen Width In Pixels () Ġ/ Ġ 2 Ġ} ĊĠĠĠ Ġprivate Ġval Ġphoto Card Height Ġby Ġlazy Ġ{ Ġrequire Activity (). get Screen Height In Pixels () Ġ/ Ġ 3 Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġphoto Grid Paging Adapter : ĠPhoto Grid Paging Adapter ĊĠĠĠ Ġprivate Ġvar Ġre cycler State : ĠParcel able ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġinit Photo Grid Paging Adapter () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġst agger ed Grid LayoutManager Ġ= ĠSt agger ed Grid LayoutManager ( 2 , ĠSt agger ed Grid LayoutManager . VERTICAL ) ĊĠĠĠĠĠĠĠ Ġphoto _ grid _ rv . layout Manager Ġ= Ġst agger ed Grid LayoutManager ĊĠĠĠĠĠĠĠ Ġphoto _ grid _ rv . adapter Ġ= Ġphoto Grid Paging Adapter ĊĠĠĠĠĠĠĠ Ġif Ġ( photo _ grid _ rv . item Decoration Count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġphoto _ grid _ rv . addItem Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPhoto Item Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphoto Card Margin . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Listeners () Ġ{ ĊĠĠĠĠĠĠĠ Ġsearch _ field _ ed t . setOn Editor ActionListener Ġ{ ĠtextView , Ġi , Ġkey Event Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== ĠEditor Info . IME _ ACTION _ DONE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . search ( textView . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Activity (). hide Keyboard () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit ViewModel Ob serving () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . init ViewModel Ob serving () ĊĠĠĠĠĠĠĠ ĠviewModel . photos . observe ( this , ĠObserver Ġ{ Ġnew Photo Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġphoto Grid Paging Adapter . items Ġ= Ġnew Photo ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġphoto _ grid _ rv . layout Manager ?. on Save InstanceState ()?. let Ġ{ Ġstate Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler State Ġ= Ġstate ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġre cycler State ?. let Ġ{ Ġstate Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġphoto _ grid _ rv . layout Manager ?. on Restore InstanceState ( state ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Photo Grid Paging Adapter () Ġ{ ĊĠĠĠĠĠĠĠ Ġphoto Grid Paging Adapter Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPhoto Grid Paging Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . photo Grid Paging Updater , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphoto Card Width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphoto Card Height , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConst s . DEFAULT _ COR NER _ RADIUS _ DP ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġphoto Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate To Full Photo ( photo ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnavigate To Full Photo ( photo Model : ĠPhoto Model ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnavigate To ( R . id . photo Fragment , ĠlistOf ( Pair ( Photo Fragment . ARG _ KEY , Ġphoto Model ))) ĊĠĠĠ Ġ} Ċ } Ċ