package Ġcom . alan . andy . gam er ec ord čĊč Ċ import Ġandroid . Manifest č Ċ import Ġandroid . content . Intent č Ċ import Ġandroid . content . pm . PackageManager č Ċ import Ġandroid . os . Bundle č Ċ import Ġandroid . support . v 7 . app . AppCompatActivity čĊč Ċ import Ġkotlinx . android . synt hetic . main . activity _ edit _ event .* č Ċ import Ġkotlinx . android . synt hetic . main . content _ edit _ event .* č Ċ import Ġjava . text . SimpleDateFormat č Ċ import Ġjava . util .* č Ċ import Ġandroid . graphics . Bitmap č Ċ import Ġandroid . provider . Media Store č Ċ import Ġandroid . support . v 4 . app . Activity Compat č Ċ import Ġandroid . support . v 4 . content . Context Compat č Ċ import Ġandroid . widget . Toast čĊčĊč Ċ class ĠEdit Event Activity Ġ: ĠAppCompatActivity () Ġ{ čĊčĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Event : ĠEvent Info čĊĠĠĠ Ġprivate Ġvar Ġm Bitmap : ĠBitmap ? Ġ= Ġnull čĊĠĠĠ Ġ// private Ġvar Ġimage : ĠString Ġ?= Ġnull čĊĠĠĠ Ġ// late init Ġvar Ġis M aj ong : ĠBoolean čĊčĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ čĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) čĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ edit _ event ) čĊčĊĠĠĠĠĠĠĠ Ġfab . setOnClickListener Ġ{ Ġ Ġ_ Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// only Ġwhen Ġsave Ġis Ġok : Ġwhich Ġmeans Ġinfo Ġhave Ġbeen Ġedited čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( save Edit ( true )) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġm Event Ġ= Ġget Event Record From Intent ( intent , Ġtrue ) čĊčĊĠĠĠĠĠĠĠ Ġedit Text _ Time . setText ( m Event . time . toCharArray (), Ġ 0 , Ġm Event . time . length ) čĊĠĠĠĠĠĠĠ Ġedit Text _ Fee . setText ( m Event . fee . toCharArray (), Ġ 0 , Ġm Event . fee . length ) čĊĠĠĠĠĠĠĠ Ġedit Text _ Comments . setText ( m Event . comments . toCharArray (), Ġ 0 , Ġm Event . comments . length ) čĊčĊĠĠĠĠĠĠĠ Ġswitch _ Is M aj ong . isChecked Ġ= Ġm Event . game type Ġ== Ġ" 1 " čĊčĊčĊĠĠĠĠĠĠĠ Ġif Ġ( m Event . photo Ġ!= Ġ" 0 " Ġ&& Ġm Event . photo Ġ!= Ġ"") Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= Ġread Player Event Bitmap ( application Context , Ġm Event . photo ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage _ preview . setImage Bitmap ( bitmap ) čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ/* switch _ Is M aj ong . setOn Checked ChangeListener { _, Ġis Checked Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠ Ġis M aj ong Ġ= Ġis Checked čĊĠĠĠĠĠĠĠ Ġ}*/ čĊčĊĠĠĠĠĠĠĠ Ġ// set Ġtoday Ġbutton Ġclick Ġhandler čĊĠĠĠĠĠĠĠ Ġbutton _ today . setOnClickListener Ġ{_ Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsimple DateFormat Ġ= ĠSimpleDateFormat (" yyyy - MM - dd ") čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Ġ= ĠDate ( System . currentTimeMillis ()) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Str Ġ= Ġsimple DateFormat . format ( date ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text _ Time . setText ( date Str . toCharArray (), Ġ 0 , Ġdate Str . length ) čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ// set Ġcamera Ġbutton Ġclick Ġhandler čĊĠĠĠĠĠĠĠ Ġbutton _ choose _ camera . setOnClickListener Ġ{_ Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠ Ġchoose Camera () čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġbutton _ choose _ gallery . setOnClickListener { _ Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Context Compat . check Self Permission ( this @ Edit Event Activity , ĠManifest . permission . READ _ EXTERNAL _ STORAGE ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( this @ Edit Event Activity , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( Manifest . permission . READ _ EXTERNAL _ STORAGE ), čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPER MISSION S _ REQUEST _ READ _ STORAGE ); čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchoose Photo () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ čĊĠĠĠĠĠĠĠ Ġsave Edit ( false ) čĊĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < String >, Ġgrant Results : ĠInt Array ) Ġ{ čĊčĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠPER MISSION S _ REQUEST _ READ _ STORAGE ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( grant Results [ 0 ] Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchoose Photo () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPermission ĠDen ied čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" Permission ĠDen ied ", ĠToast . LENGTH _ SHORT ). show () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġsuper . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( req : ĠInt , Ġres : ĠInt , Ġintent : ĠIntent ?) Ġ{ čĊčĊĠĠĠĠĠĠĠ Ġwhen Ġ( req ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠREQUEST _ CODE _ P ICK _ IMAGE Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( res Ġ== ĠRESULT _ OK ) Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri Ġ= Ġintent ?. data čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// val Ġbit Ġ= ĠBitmap Factory . decode Stream ( content Resolver . open InputStream ( uri )) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= Ġget Fit Sample Bitmap ( content Resolver . open InputStream ( uri ), Ġ 3 2 0 , Ġ 3 2 0 ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bitmap Ġ!= Ġ Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage _ preview . setImage Bitmap ( bitmap ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Bitmap Ġ= Ġbitmap čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// save Ġthe Ġpicture Ġto Ġfile čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// save Player Event Bitmap ( application Context , Ġm Player InfoList [ m Current Click Pos ]. name , Ġbitmap ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠ ĠREQUEST _ CODE _ TA KE _ IMAGE Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( res Ġ== ĠRESULT _ OK ) Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= Ġintent ?. extras čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= Ġbundle ?. get (" data ") Ġas ĠBitmap ? čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bitmap Ġ!= Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage _ preview . setImage Bitmap ( bitmap ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Bitmap Ġ= Ġbitmap čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// save Ġthe Ġpicture Ġto Ġfile čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// save Player Event Bitmap ( application Context , Ġm Player InfoList [ m Current Click Pos ]. name , Ġbitmap ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġsave Edit ( is Save : ĠBoolean ): ĠBoolean Ġ{ čĊčĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () čĊčĊĠĠĠĠĠĠĠ Ġif Ġ( is Save ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// get Ġall Ġinfo Ġfrom Ġedit Ġtext čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Ġ= Ġedit Text _ Time . text . toString () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfee Ġ= Ġedit Text _ Fee . text . toString () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomments Ġ= Ġedit Text _ Comments . text . toString () čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// only Ġwhen Ġthe Ġtext Ġare Ġnot Ġempty , Ġotherwise Ġdo Ġnothing čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( time . isNotEmpty () Ġ|| Ġfee . isNotEmpty () Ġ|| Ġcomments . isNotEmpty ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// set Ġall Ġinfo Ġinto Ġintent čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Event . time Ġ= Ġtime čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Event . fee Ġ= Ġfee čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Event . comments Ġ= Ġcomments čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( switch _ Is M aj ong . isChecked ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Event . game type Ġ= Ġ" 1 " čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Event . game type Ġ= Ġ" 0 " čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Event . photo Ġ= Ġ" 0 " čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Bitmap Ġ!= Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsimple DateFormat Ġ= ĠSimpleDateFormat (" yyyy - MM - dd _ HH : mm : ss ") // ĠHH : mm : ss čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Ġ= ĠDate ( System . currentTimeMillis ()) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġ" Game Record _ event _" Ġ+ Ġsimple DateFormat . format ( date ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġsave Player Event Bitmap ( application Context , Ġname , Ġm Bitmap Ġas ĠBitmap ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( res Ġ== Ġ 0 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Event . photo Ġ= Ġname čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO Ġget Ġposition čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Event . position Ġ= Ġ" 0 " čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Intent Extra From Event ( intent , Ġm Event ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( RESULT _ OK , Ġintent ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( RESULT _ C ANCE LED , Ġintent ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġreturn Ġfalse čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġchoose Photo () Ġ{ čĊčĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ P ICK ) čĊĠĠĠĠĠĠĠ Ġintent . type Ġ= Ġ" image /* " // çĽ¸ çīĩ ç±»åŀĭ čĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , ĠREQUEST _ CODE _ P ICK _ IMAGE ) čĊčĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġchoose Camera () Ġ{ čĊčĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Media Store . ACTION _ IMAGE _ CAPTURE ) čĊčĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , ĠREQUEST _ CODE _ TA KE _ IMAGE ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġcompanion Ġobject Ġ{ čĊĠĠĠĠĠĠĠ Ġconst Ġval ĠREQUEST _ CODE _ P ICK _ IMAGE Ġ= Ġ 1 0 1 čĊĠĠĠĠĠĠĠ Ġconst Ġval ĠREQUEST _ CODE _ TA KE _ IMAGE Ġ= Ġ 1 0 2 čĊčĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPER MISSION S _ REQUEST _ READ _ STORAGE Ġ= Ġ 6 čĊĠĠĠ Ġ} č Ċ } čĊ