/******************************************************************************* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 ĠAlex and ros ĠSch ill ings Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġaws . apps . under the hood . ui . main Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . fragment . app . Dialog Fragment Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġaws . apps . under the hood . R Ċ import Ġaws . apps . under the hood . ui . dialogs . Dialog Factory Ċ import Ġaws . apps . under the hood . ui . sharing . Data Sh arer Ċ import Ġaws . apps . under the hood . ui . sharing . Export FileWriter Ċ import Ġaws . apps . under the hood . ui . sharing . Share Payload Ċ import Ġaws . apps . under the hood . ui . sharing . Share Payload Factory Ċ import Ġuk . co . alt 2 3 6 . under the hood . command runner . Command Runner Ċ import Ġuk . co . alt 2 3 6 . under the hood . command runner . model . Result Ċ Ċ class ĠMain Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġshare Payload Factory : ĠShare Payload Factory ĊĊĠĠĠ Ġprivate Ġvar Ġmodel : ĠMain ViewModel ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġview : ĠMain View ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġcommand Runner : ĠCommand Runner ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġshare Payload : ĠShare Payload ? Ġ= Ġnull ĊĊĠĠĠ Ġpublic Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġcommand Runner Ġ= ĠCommand Runner ( resources ) ĊĠĠĠĠĠĠĠ Ġshare Payload Factory Ġ= ĠShare Payload Factory ( resources ) ĊĊĠĠĠĠĠĠĠ Ġmodel Ġ= ĠViewModel Provider ( this ). get ( Main ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġview Ġ= ĠMain View ( this ) ĊĊĠĠĠĠĠĠĠ Ġval Ġname Observer : ĠObserver < Result > Ġ= ĠObserver Ġ{ ĠnewData Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. let Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Dialog Fragment By Tag ( FRAGMENT _ TAG _ PROGRESS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Results ( new Data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshare Payload Ġ= Ġshare Payload Factory . create ( new Data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠOb serve Ġthe ĠLive Data , Ġpassing Ġin Ġthis Ġactivity Ġas Ġthe ĠLifecycle Owner Ġand Ġthe Ġobserver . ĊĠĠĠĠĠĠĠ Ġmodel !!. current Data !!. observe ( this , Ġname Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġif Ġ( model ?. current Data ?. value ?. timestamp Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Info () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . main _ menu , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHandles Ġitem Ġselections ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġitem . itemId ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ about Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDialog Factory . create About Dialog ( this ). show ( support FragmentManager , ĠFR AG MENT _ TAG _ AB OUT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ share Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshare Payload ?. let Ġ{ Ġpayload Ġ-> ĠData Sh arer ( this ). share Data ( payload ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ to _ sd Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshare Payload ?. let Ġ{ Ġpayload Ġ-> ĠExport FileWriter ( this ). export Data ( payload ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ refresh Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Info () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrefresh Info () Ġ{ ĊĠĠĠĠĠĠĠ ĠDialog Factory . create Progress Dialog (). show ( support FragmentManager , ĠFR AG MENT _ TAG _ PROGRESS ) ĊĠĠĠĠĠĠĠ Ġcommand Runner ?. run Commands ( object Ġ: ĠCommand Runner . Callback < Result > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Commands Completed ( result : ĠResult ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel ?. current Data ?. post Value ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠFragment Activity . remove Dialog Fragment By Tag ( tag : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= Ġsupport FragmentManager . find Fragment By Tag ( tag ) ĊĠĠĠĠĠĠĠ Ġfragment ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= Ġit Ġas ĠDialog Fragment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFR AG MENT _ TAG _ PROGRESS Ġ= Ġ" PROGRESS _ FRAGMENT " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFR AG MENT _ TAG _ AB OUT Ġ= Ġ" AB OUT _ FRAGMENT " ĊĠĠĠ Ġ} Ċ }