package Ġteam 1 6 . easy tracker Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ListView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . google . android . material . sn ackbar . Base Transient Bottom Bar Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġteam 1 6 . easy tracker . database . Db Helper Ċ import Ġteam 1 6 . easy tracker . model . Tracking Ċ import Ġteam 1 6 . easy tracker . utils . CSV Converter Ċ import Ġteam 1 6 . easy tracker . utils . File Utility Ċ import Ġteam 1 6 . easy tracker . utils . Track ings Adapter Ċ Ċ class ĠTrack ings Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġval ĠREQUEST _ CODE _ CREATE _ FILE Ġ= Ġ 6 9 ; ĊĊĠĠĠ Ġlateinit Ġvar Ġtrack ings : ĠList < Tracking > ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ ĠMy Application . menu ?. clear () ĊĠĠĠĠĠĠĠ Ġactivity !!. menu Inflater . inflate ( R . menu . menu _ track ings , My Application . menu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ track ings , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġtrack ings Ġ= ĠDb Helper . getInstance (). load Finished Worker Track ings ( My Application . logged In Worker !!. getId ()) ĊĊĠĠĠĠĠĠĠ Ġval ĠlistView Ġ: ĠListView Ġ= Ġview . findViewById ( R . id . lv Track ings ) ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= Ġcontext ?. let Ġ{ ĠTrack ings Adapter ( it , Ġtrack ings . to Mutable List (), Ġactivity !! ) Ġ} ĊĠĠĠĠĠĠĠ ĠlistView . adapter Ġ= Ġadapter ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ) Ġ= Ġwhen Ġ( item . itemId ){ ĊĠĠĠĠĠĠĠ ĠR . id . item Create Tracking Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcreate Tracking Fragment Ġ= ĠCreate Tracking Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !!. support FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . fl Fragment , Ġcreate Tracking Fragment , Ġ" Create Tracking Fragment ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo Back Stack ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠR . id . item Export Time sheet Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrack ings Ġ= ĠDb Helper . getInstance (). load Worker Track ings ( My Application . logged In Worker !!. getId ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( track ings . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( view !! , ĠR . string . error _ export , ĠBase Transient Bottom Bar . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile Utility . open Create File Activity ( Uri . parse (". "), Ġactivity !! , ĠREQUEST _ CODE _ CREATE _ FILE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠAppCompatActivity . RESULT _ OK ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠREQUEST _ CODE _ CREATE _ FILE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe Ġurl Ġfrom Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew File Uri Ġ= Ġdata ?. data Ġ?: Ġthrow ĠException (" Failed Ġto Ġcreate Ġfile ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠoutputStream Ġ= Ġcontext !!. content Resolver . open OutputStream ( new File Uri ) !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwriter Ġ= ĠoutputStream . buffered Writer () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrows Ġ= Ġtrack ings . map Ġ{ ĠarrayOf ( it . name , Ġit . description , Ġit . startTime . toString (), Ġit . endTime . toString (), Ġit . bluetooth Device ) Ġ}. to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcsv String Ġ= ĠCSV Converter . serialize ( rows ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( csv String ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . flush () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠoutputStream . flush () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠoutputStream . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ ĠMy Application . menu ?. clear () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠ Ġ} Ċ }