package Ġru . a as mc . task ie . ui . notes Ċ Ċ import Ġandroid . net . Connectivity Manager Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġru . a as mc . task ie . App Ċ import Ġru . a as mc . task ie . databinding . Fragment Notes Binding Ċ import Ġru . a as mc . task ie . model . Success Ċ import Ġru . a as mc . task ie . model . Task Ċ import Ġru . a as mc . task ie . networking . Network Status Checker Ċ import Ġru . a as mc . task ie . ui . notes . dialog . Add Task Dialog Fragment Ċ import Ġru . a as mc . task ie . ui . notes . dialog . Task Options Dialog Fragment Ċ import Ġru . a as mc . task ie . utils . g one Ċ import Ġru . a as mc . task ie . utils . toast Ċ import Ġru . a as mc . task ie . utils . visible Ċ Ċ /** Ċ Ġ* ĠF etches Ġand Ġdisplays Ġnotes Ġfrom Ġthe ĠAPI . Ċ Ġ*/ Ċ class ĠNotes Fragment Ġ: ĠFragment (), ĠAdd Task Dialog Fragment . Task Added Listener , ĊĠĠĠ ĠTask Options Dialog Fragment . Task Option Selected Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġnetwork Status Checker Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠNetwork Status Checker ( activity ?. getSystem Service ( Connectivity Manager :: class . java )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠFragment Notes Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġbinding : ĠFragment Notes Binding Ġget () Ġ= Ġ_ binding !! ĊĠĠĠ Ġprivate Ġval Ġadapter Ġby Ġlazy Ġ{ ĠTask Adapter (:: on ItemSelected ) Ġ} ĊĠĠĠ Ġprivate Ġval Ġremote Api Ġ= ĠApp . remote Api ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠFragment Notes Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġinit Ui () ĊĠĠĠĠĠĠĠ Ġinit Listeners () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Ui () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . progress . visible () ĊĠĠĠĠĠĠĠ Ġbinding . no Data . visible () ĊĠĠĠĠĠĠĠ Ġbinding . tasks RecyclerView . layout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠ Ġbinding . tasks RecyclerView . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ ĠgetAll Tasks () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Listeners () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . add Task . setOnClickListener Ġ{ Ġadd Task () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon ItemSelected ( taskId : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠTask Options Dialog Fragment . newInstance ( taskId ) ĊĠĠĠĠĠĠĠ Ġdialog . set Task Option Selected Listener ( this ) ĊĠĠĠĠĠĠĠ Ġdialog . show ( child FragmentManager , Ġdialog . tag ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Task Added ( task : ĠTask ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . addData ( task ) ĊĠĠĠĠĠĠĠ Ġbinding . progress . g one () ĊĠĠĠĠĠĠĠ Ġbinding . no Data . g one () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Task () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠAdd Task Dialog Fragment () ĊĠĠĠĠĠĠĠ Ġdialog . set Task Added Listener ( this ) ĊĠĠĠĠĠĠĠ Ġdialog . show ( child FragmentManager , Ġdialog . tag ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetAll Tasks () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . progress . visible () ĊĠĠĠĠĠĠĠ Ġnetwork Status Checker . perform If Connected To Internet Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGlobal Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtasks Ġ= Ġremote Api . get Tasks () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tasks Ġis ĠSuccess ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon TaskList Received ( tasks . data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Get Tasks Failed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck List ( notes : ĠList < Task >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( notes . isEmpty ()) Ġbinding . no Data . visible () Ġelse Ġbinding . no Data . g one () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Tasks Received ( tasks : ĠList < Task >) Ġ= Ġadapter . setData ( tasks ) ĊĊĠĠĠ Ġprivate Ġfun Ġon TaskList Received ( tasks : ĠList < Task >) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . progress . g one () ĊĠĠĠĠĠĠĠ Ġcheck List ( tasks ) ĊĠĠĠĠĠĠĠ Ġon Tasks Received ( tasks ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Get Tasks Failed () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . progress . g one () ĊĠĠĠĠĠĠĠ Ġactivity ?. toast (" Failed Ġto Ġfetch Ġtasks !") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Task Deleted ( taskId : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . remove Task ( taskId ) ĊĠĠĠĠĠĠĠ Ġactivity ?. toast (" Task Ġdeleted !") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Task Completed ( taskId : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . remove Task ( taskId ) ĊĠĠĠĠĠĠĠ Ġactivity ?. toast (" Task Ġcompleted !") ĊĠĠĠ Ġ} Ċ }