package Ġcom . sun il son . fire note . presentation . widget Ċ Ċ import Ġandroid . app widget . App Widget Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroidx . core . graphics . Color Utils Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Remote Views Ċ import Ġandroid . widget . Remote Views Service Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . sun il son . fire note . R Ċ import Ġcom . sun il son . fire note . data . I Repository Ċ import Ġcom . sun il son . fire note . data . models . Element Ċ import Ġcom . sun il son . fire note . presentation . shared . type Bundle Ċ import Ġcom . sun il son . fire note . presentation . shared . type Checklist Ċ import Ġcom . sun il son . fire note . presentation . shared . type Note Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ Ċ class ĠWidget Remote Factory ( val Ġcontext : ĠContext , Ġval Ġrepository : ĠI Repository , Ġval Ġintent : ĠIntent ) Ġ: ĠRemote Views Service . Remote Views Factory Ġ{ ĊĊĠĠĠ Ġval Ġdis posable : ĠComposite Disposable Ġ= ĠComposite Disposable () ĊĠĠĠ Ġprivate Ġvar Ġdata Ġ= Ġmutable ListOf < Element >() ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Firebase Auth . getInstance (). currentUser Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdis posable . add ( repository . load All Elements ( Firebase Auth . getInstance (). currentUser !!. uid ). subscribe Ġ{ Ġlist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . forEach Ġ{ Ġdata . add ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Widget Manager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getInstance ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. notify App Widget ViewData Changed ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . getInt Extra ( App Widget Manager . EXTRA _ APP WIDGET _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Widget Manager . INVALID _ APP WIDGET _ ID ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . widget _ list view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġdis posable . dispose () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Loading View (): ĠRemote Views ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Id ( p 0 : ĠInt ): ĠLong Ġ= Ġp 0 . to Long () ĊĊĠĠĠ Ġoverride Ġfun Ġon DataSet Changed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Firebase Auth . getInstance (). currentUser Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelements Ġ= Ġrepository . load All Elements ( Firebase Auth . getInstance (). currentUser !!. uid ). blocking Get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelements . forEach Ġ{ Ġdata . add ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhas Stable Ids (): ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġfun Ġget View At ( p 0 : ĠInt ): ĠRemote Views Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġviews Ġ= ĠRemote Views ( context . packageName , ĠR . layout . widget _ list _ item ) ĊĠĠĠĠĠĠĠ Ġviews . setText View Text ( R . id . element List _ title , Ġdata [ p 0 ]. title ) ĊĠĠĠĠĠĠĠ Ġviews . setText View Text ( R . id . element List _ category , Ġdata [ p 0 ]. category . name ) ĊĠĠĠĠĠĠĠ Ġviews . setInt ( R . id . widget _ element List _ icon _ holder , Ġ" set BackgroundColor ", Ġdata [ p 0 ]. color ) ĊĠĠĠĠĠĠĠ Ġviews . setInt ( R . id . widget _ element List _ content , Ġ" set BackgroundColor ", ĠColor Utils . set Alpha Component ( data [ p 0 ]. color , Ġ 8 0 )) ĊĠĠĠĠĠĠĠ Ġwhen ( data [ p 0 ]. note Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Note Ġ-> Ġ Ġviews . set ImageView Resource ( R . id . widget _ element List _ icon , ĠR . drawable . ic _ note _ white _ 2 4 dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Checklist Ġ-> Ġ Ġviews . set ImageView Resource ( R . id . widget _ element List _ icon , ĠR . drawable . ic _ done _ all _ white _ 2 4 dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Bundle Ġ-> Ġ Ġviews . set ImageView Resource ( R . id . widget _ element List _ icon , ĠR . drawable . ic _ list _ white _ 2 4 dp ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif ( data [ p 0 ]. locked ) views . setView Visibility ( R . id . widget _ element List _ lock , ĠView . VISIBLE ) ĊĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠ Ġintent . putExtra (" open Element ", Ġdata [ p 0 ]. element ID ) ĊĠĠĠĠĠĠĠ Ġintent . action Ġ= ĠIntent . ACTION _ VIEW ĊĠĠĠĠĠĠĠ Ġintent . flags Ġ= ĠIntent . FLAG _ ACTIVITY _ CLEAR _ TOP ĊĠĠĠĠĠĠĠ Ġviews . setOn Click Fill In Intent ( R . id . widget _ list _ item , Ġintent ) ĊĠĠĠĠĠĠĠ Ġreturn Ġviews ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Count (): ĠInt Ġ= Ġdata . size ĊĠĠĠ Ġoverride Ġfun Ġget ViewType Count (): ĠInt Ġ= Ġ 1 Ċ }