package Ġcom . nan ote ch nology . covid _ 1 9 statistic . ui Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view .* Ċ import Ġandroidx . appcompat . app . AppCompat Delegate Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . databinding . ViewData Binding Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġcom . github . mike phil . chart ing . components . Description Ċ import Ġcom . github . mike phil . chart ing . data . Pie Data Ċ import Ġcom . github . mike phil . chart ing . data . Pie DataSet Ċ import Ġcom . github . mike phil . chart ing . data . Pie Entry Ċ import Ġcom . github . mike phil . chart ing . utils . Entry X Comparator Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Dialog Ċ import Ġcom . nan ote ch nology . covid _ 1 9 statistic . R Ċ import Ġcom . nan ote ch nology . covid _ 1 9 statistic . databinding . Statistic Fragment Binding Ċ import Ġcom . nan ote ch nology . covid _ 1 9 statistic . util . convert Long ToDate Ċ import Ġcom . nan ote ch nology . covid _ 1 9 statistic . util . convert Long ToDate String Ċ import Ġcom . nan ote ch nology . covid _ 1 9 statistic . view model . Statistic ViewModel Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList Ċ import Ġkotlinx . android . synt hetic . main . chart _ bottom _ sheet . view .* Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . flow . first Ċ import Ġkotlinx . coroutines . launch Ċ Ċ @ Android EntryPoint Ċ class ĠStat istic Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġ@ Experimental Cor outines Api ĊĠĠĠ Ġprivate Ġval Ġstatistic ViewModel : ĠStat istic ViewModel Ġby Ġview Models () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠStat istic Fragment Binding ĊĊĠĠĠ Ġ@ Experimental Cor outines Api ĊĠĠĠ Ġ@ Suppress Lint (" SetText I 1 8 n ") ĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . inflate ( in flater , ĠR . layout . statistic _ fragment , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġbinding . lifecycle Owner Ġ= Ġthis . view Lifecycle Owner ĊĊĠĠĠĠĠĠĠ Ġstatistic ViewModel . progress Bar . observe ( view Lifecycle Owner ) Ġ{ Ġshow Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . progress Bar . visibility Ġ= Ġif Ġ( show ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġstatistic ViewModel . statistic . observe ( view Lifecycle Owner , Ġ{ Ġstatistics Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( statistics Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . total Cases TextView . text Ġ= Ġstatistics . cases . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . total Dead TextView . text Ġ= Ġstatistics . deaths . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . total Recover ies TextView . text Ġ= Ġstatistics . re covered . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . last Update TextView . text Ġ= ĠgetString ( R . string . update _ in ) Ġ+ Ġ" Ġ" Ġ+ Ġconvert Long ToDate String ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatistics . updated ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠ Ġ}) ĊĊĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Experimental Cor outines Api ĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ) Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ night _ mode Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . isChecked Ġ= Ġ! item . isChecked ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset UI Mode ( item , Ġitem . isChecked ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ share _ statistic Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsend Intent : ĠIntent Ġ= ĠIntent (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ= ĠIntent . ACTION _ SEND ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent . EXTRA _ TEXT , ĠgetString ( R . string . cases _ confirmed ) Ġ+ Ġbinding . total Cases TextView . text . toString () Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n " Ġ+ ĠgetString ( R . string . recovery _ cases ) Ġ+ Ġbinding . total Recover ies TextView . text . toString () Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n " Ġ+ ĠgetString ( R . string . deaths _ cases ) Ġ+ Ġbinding . total Dead TextView . text . toString () Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n " Ġ+ Ġbinding . last Update TextView . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" text / plain " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshare Intent Ġ= ĠIntent . create Chooser ( send Intent , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( share Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ chart Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Dialog Chart () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . statistic _ menu , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe Ġitem Ġstate ĊĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Checked Ġ= Ġstatistic ViewModel . read DataStore . first () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġmenu . find Item ( R . id . action _ night _ mode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . isChecked Ġ= Ġis Checked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset UI Mode ( item , Ġis Checked ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Experimental Cor outines Api ĊĠĠĠ Ġprivate Ġfun Ġopen Dialog Chart () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog Binding Ġ= ĠData Binding Util ĊĠĠĠĠĠĠĠ Ġ. inflate < ViewData Binding >( LayoutInflater . from ( context ), ĠR . layout . chart _ bottom _ sheet , Ġnull , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= Ġcontext ?. let Ġ{ ĠBottom Sheet Dialog ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġdialog ?. set ContentView ( dialog Binding . root . root View ) ĊĠĠĠĠĠĠĠ Ġstatistic ViewModel . deaths And Updated . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentries : ĠMutable List < Pie Entry > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCollections . sort ( entries , ĠEntry X Comparator ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . forEach Ġ{ Ġi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentries . add ( Pie Entry ( i . deaths . toFloat (), Ġconvert Long ToDate ( i . updated ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpie DataSet Ġ= ĠP ie DataSet ( entries , Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpie DataSet . set Colors ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . covid 1 9 _ green , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . covid 1 9 _ blue _ 2 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . covid 1 9 _ red , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . covid 1 9 _ yellow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġcontext ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpie Data Ġ= ĠP ie Data ( pie DataSet ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdescription : ĠDescription Ġ= Ġdialog Binding . root . root View . chart . description ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . text Ġ= ĠgetString ( R . string . statistics _ deaths _ per _ time ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . text Size Ġ= Ġ 1 6 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Binding . root . root View . chart . data Ġ= Ġpie Data ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Binding . root . root View . chart . invalidate () Ġ// Ġrefresh ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġdialog ?. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset UI Mode ( item : ĠMenuItem , Ġis Checked : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAppCompat Delegate . setDefault Night Mode ( AppCompat Delegate . MODE _ N IGHT _ YES ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatistic ViewModel . save To DataStore ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . setIcon ( R . drawable . ic _ night ) ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAppCompat Delegate . setDefault Night Mode ( AppCompat Delegate . MODE _ N IGHT _ NO ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatistic ViewModel . save To DataStore ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . setIcon ( R . drawable . ic _ day ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ