package Ġcom . example . chess board _ importer . views Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Media Store Ċ import Ġandroidx . activity . view Models Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġcom . example . chess board _ importer . R Ċ import Ġcom . example . chess board _ importer . databinding . Activity Home Binding Ċ import Ġcom . example . chess board _ importer . view models . Home Activity ViewModel Ċ import Ġcom . example . chess board _ importer . views . camera _ module . Camera Activity Ċ Ċ import Ġcom . example . chess board _ importer . web services . Web Services Error Status Ċ import Ġcom . google . android . material . dialog . Material AlertDialog Builder Ċ Ċ class ĠHome Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Home Binding ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠHome Activity ViewModel Ġby Ġview Models () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠActivity Home Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĊĠĠĠĠĠĠĠ ĠviewModel . get AccessToken () ĊĊĠĠĠĠĠĠĠ Ġval Ġimage Uri Observer Ġ= ĠObserver < Uri ?> Ġ{ Ġnew Uri Ġ-> ĠviewModel . create Photo Data ( new Uri !! ) Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . imported Image Uri . observe ( this , image Uri Observer ) ĊĊĠĠĠĠĠĠĠ Ġval Ġapi Connection Observer Ġ= ĠObserver < Web Services Error Status > Ġ{ Ġerror Status Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( error Status Ġ== Ġ ĠWeb Services Error Status . CONNECTION ERROR ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Api Connection Error Dialog Window () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . api Connection Error Status . observe ( this , api Connection Observer ) ĊĊĠĠĠĠĠĠĠ ĠsetUp Click Listeners () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp Click Listeners (){ ĊĠĠĠĠĠĠĠ Ġbinding . btn Take Photo . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( this , ĠCamera Activity :: class . java ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . btn Import Photo . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimport Picture Intent Ġ= ĠIntent ( Intent . ACTION _ P ICK , Media Store . Images . Media . EXTERNAL _ CONTENT _ URI ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( import Picture Intent , ĠIMPORT _ PI CTURE _ REQUEST _ CODE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . btn Che ss board . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( this , ĠChe ss board Activity :: class . java ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠIMPORT _ PI CTURE _ REQUEST _ CODE Ġ&& ĠresultCode Ġ== ĠActivity . RESULT _ OK ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġphoto Uri : ĠUri ? Ġ= Ġdata ?. data ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( photo Uri Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . imported Image Uri . value Ġ= Ġphoto Uri ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( this , ĠChe ss board Activity :: class . java ). also Ġ{ ĠstartActivity ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Api Connection Error Dialog Window (){ ĊĠĠĠĠĠĠĠ Ġval ĠerrorMessage Dialog Ġ= ĠMaterial AlertDialog Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . style . Theme Overlay _ App _ Material AlertDialog ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( R . string . ErrorMessage Title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( R . string . ErrorMessage Api Connection ) ĊĠĠĠĠĠĠĠ ĠerrorMessage Dialog . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠIMPORT _ PI CTURE _ REQUEST _ CODE Ġ= Ġ 2 0 ĊĠĠĠ Ġ} Ċ } Ċ