package Ġspace . pal . sig . view . main Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view .* Ċ import Ġandroid . webkit . Web Chrome Client Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġcom . google . android . gms . maps . Camera Update Factory Ċ import Ġcom . google . android . gms . maps . Google Map Ċ import Ġcom . google . android . gms . maps . Support Map Fragment Ċ import Ġcom . google . android . gms . maps . model . Bitmap Descriptor Factory Ċ import Ġcom . google . android . gms . maps . model . LatLng Ċ import Ġcom . google . android . gms . maps . model . Marker Options Ċ import Ġcom . squareup . pic asso . Pic asso Ċ import Ġorg . k oin . android . ext . android . inject Ċ import Ġspace . pal . sig . R Ċ import Ġspace . pal . sig . databinding . Fragment Main Binding Ċ import Ġspace . pal . sig . model . dto . A str onomy Picture Of The Day Dto Ċ import Ġspace . pal . sig . model . dto . Iss Position Ċ import Ġspace . pal . sig . model . entity . A str onomy Picture Of The Day Ċ import Ġspace . pal . sig . model . entity . Launch WithData Ċ import Ġspace . pal . sig . model . entity . Road ster Ċ import Ġspace . pal . sig . view . Base Fragment Ċ import Ġspace . pal . sig . view . ap od . Ap od Activity Ċ import Ġspace . pal . sig . view . extra . About Activity Ċ import Ġspace . pal . sig . view . iss . Iss Activity Ċ import Ġspace . pal . sig . view . launch . Launch Activity Ċ Ċ /** Ċ Ġ* ĠSpace Now Ċ Ġ* ĠCreated Ġby ĠC atal in Ġon Ġ 1 2 / 2 0 / 2 0 2 0 Ċ Ġ**/ Ċ class ĠMain Fragment Ġ: ĠBase Fragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠFragment Main Binding ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠMain ViewModel Ġby Ġinject () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . inflate ( in flater , ĠR . layout . fragment _ main , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠĠĠĠĠ ĠviewModel . get A str onomy Picture Of The Day () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe ( view Lifecycle Owner ) Ġ{ Ġshow Ap od ( it ) Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . get Road ster () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe ( view Lifecycle Owner ) Ġ{ Ġshow Road ster ( it ) Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . getNext Launch () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe ( view Lifecycle Owner ) Ġ{ Ġshow Next Launch ( it ) Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . get Latest Launch () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe ( view Lifecycle Owner ) Ġ{ Ġshow Last Launch ( it ) Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . get Iss Position () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe ( view Lifecycle Owner ) Ġ{ Ġshow Iss Position ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ ĠviewModel . on Resume () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . on Pause () ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . menu _ main , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate Options Menu ( menu , Ġinflater ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( item . itemId Ġ== ĠR . id . about ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( require Context (), ĠAbout Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Next Launch ( launch WithData : ĠLaunch WithData ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġlaunch WithData ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlaunch Ġ= Ġit . launch ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . main Next Launch Preview . text Ġ= Ġlaunch . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrocket Ġ= Ġlaunch WithData . rocket ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimages Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch . links . flickr . original ?. let Ġ{ Ġlist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimages . addAll ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( images . isEmpty () Ġ&& Ġrocket Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimages . addAll ( rocket . images ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage : ĠString ? Ġ= Ġwhen Ġ( images . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġimages [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPic asso . get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. center Crop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( R . drawable . launch ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( binding . main Next Launch Image ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . main Next Launch Card . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( require Context (), ĠLaunch Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Launch Activity . LA UNCH _ ID , Ġlaunch . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Last Launch ( launch WithData : ĠLaunch WithData ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġlaunch WithData ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlaunch Ġ= Ġit . launch ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . main Last Launch Preview . text Ġ= Ġlaunch . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrocket Ġ= Ġlaunch WithData . rocket ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimages Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch . links . flickr . original ?. let Ġ{ Ġlist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimages . addAll ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( images . isEmpty () Ġ&& Ġrocket Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimages . addAll ( rocket . images ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage : ĠString ? Ġ= Ġwhen Ġ( images . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġimages [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPic asso . get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. center Crop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( R . drawable . launch ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( binding . main Last Launch Image ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . main Last Launch Card . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( require Context (), ĠLaunch Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Launch Activity . LA UNCH _ ID , Ġlaunch . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Ap od ( ap od : ĠA str onomy Picture Of The Day ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġap od ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ap od . media Type Ġ== ĠA str onomy Picture Of The Day Dto . IMAGE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . main Ap od Title . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( require Context (), ĠAp od Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Ap od Activity . A POD _ DATE , Ġap od . date ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . main Ap od Image . content Description Ġ= Ġap od . title ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPic asso . get (). load ( ap od . url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. center Crop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( binding . main Ap od Image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . main Ap od Video . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . main Ap od Image . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . main Ap od Title . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . main Ap od Video . settings . java Script Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . main Ap od Video . web Chrome Client Ġ= ĠWeb Chrome Client () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . main Ap od Video . load Url ( ap od . url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . main Ap od Video . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . main Ap od Image . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . main Ap od Title . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Road ster ( road ster : ĠRoad ster ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġroad ster ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . main Road ster Name . text Ġ= Ġroad ster . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . main Road ster Speed . text Ġ= ĠgetString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . road ster _ speed , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroad ster . speed K ph ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . main Road ster Card . setOnClickListener Ġ{ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Iss Position ( iss Position : ĠIss Position ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġiss Position ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġchild FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. find Fragment ById ( R . id . main _ iss _ map ) Ġas ĠSupport Map Fragment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap . getMap Async Ġ{ Ġgoogle Map Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgoogle Map . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgoogle Map . map Type Ġ= ĠGoogle Map . MAP _ TYPE _ T ERR AIN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgoogle Map . ui Settings . is Zoom Gest ures Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgoogle Map . ui Settings . is Scroll Gest ures Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlat Lng Ġ= ĠLat Lng ( iss Position . latitude , Ġiss Position . longitude ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgoogle Map . add Marker ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMarker Options (). position ( lat Lng ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. icon ( Bitmap Descriptor Factory . from Resource ( R . drawable . ic _ iss )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. z Index ( 3 . 0 f ). title ( getString ( R . string . iss )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcamera Update Ġ= ĠCamera Update Factory . new LatLng Zoom ( lat Lng , Ġ 1 . 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgoogle Map . animate Camera ( camera Update ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . main Iss Card . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( require Context (), ĠIss Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }