package Ġcom . mars ro ver photos . ui . mars Photo Ċ Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġkotlinx . android . synt hetic . main . mars _ photos _ activity .* Ċ import Ġorg . k oin . android . view model . ext . android . viewModel Ċ import Ġcom . mars ro ver photos . R Ċ import Ġcom . mars ro ver photos . entities . Status Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . content . Intent Ċ import Ġcom . mars ro ver photos . ui . ro ver Settings . R over Settings Activity Ċ import Ġandroid . app . Activity Ċ import Ġcom . mars ro ver photos . ui . base . Base Activity Ċ import Ġcom . module . domain . entities . R over Id Ċ Ċ class ĠM ars Photo Activity Ġ: ĠBase Activity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠPH OTO _ G ALL ERY _ COLUMNS _ NUMBER Ġ= Ġ 2 ĊĠĠĠ Ġprivate Ġval ĠOPEN _ SETTINGS _ REQUEST _ CODE Ġ= Ġ 1 ĊĊĠĠĠ Ġprivate Ġval Ġphotos ViewModel : ĠM ars Photo ViewModel Ġby ĠviewModel () ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlist Adapter : ĠM ars Photo Adapter ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . mars _ photos _ activity ) ĊĠĠĠĠĠĠĠ Ġlist Adapter Ġ= ĠM ars Photo Adapter () ĊĊĠĠĠĠĠĠĠ Ġre cycler _ view . layout Manager Ġ= ĠGrid LayoutManager ( this , ĠPH OTO _ G ALL ERY _ COLUMNS _ NUMBER ) ĊĠĠĠĠĠĠĠ Ġre cycler _ view . adapter Ġ= Ġlist Adapter ĊĠĠĠĠĠĠĠ Ġphotos ViewModel . fetch M ars Photos ( R over Id . CUR IOS ITY . id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġphotos ViewModel . getM ars Photo LiveData (). observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ?. response Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Error ( it . error ?. message !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . LOADING Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Progress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . SUCCESS FUL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOn ĠSuccessful Ġresponse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. data ?. let Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Adapter . update List ( response . photos ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . main _ menu , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate Options Menu ( menu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . getItem Id ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ item _ settings ĠĠ Ġ// this Ġitem Ġhas Ġyour Ġapp Ġicon ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġi Ġ= ĠIntent ( this , ĠR over Settings Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( i , ĠOPEN _ SETTINGS _ REQUEST _ CODE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠOPEN _ SETTINGS _ REQUEST _ CODE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġro ver Id Ġ= Ġdata ?. getString Extra ( R over Settings Activity . EXTRA _ SELECTED _ RO VER _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġro ver Id ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" ro ver Id ", ro ver Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphotos ViewModel . fetch M ars Photos ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }