package Ġcom . gmail . uia 0 5 9 4 6 6 . lis ka . widget Ċ Ċ import Ġandroid . app widget . App Widget Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . widget . Remote Views Ċ import Ġandroid . widget . Remote Views Service Ċ import Ġandroid . widget . Remote Views Service . Remote Views Factory Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġcom . gmail . uia 0 5 9 4 6 6 . lis ka . L is ka Application Ċ import Ġcom . gmail . uia 0 5 9 4 6 6 . lis ka . R Ċ import Ġcom . gmail . uia 0 5 9 4 6 6 . lis ka . data . Holder Result Ċ import Ġcom . gmail . uia 0 5 9 4 6 6 . lis ka . data . database . ListItem Ċ import Ġcom . gmail . uia 0 5 9 4 6 6 . lis ka . domain . List Repository Ċ import Ġcom . gmail . uia 0 5 9 4 6 6 . lis ka . domain . User Preferences Repository Impl Ċ import Ġcom . gmail . uia 0 5 9 4 6 6 . lis ka . widget . list widget . Widget Config Ċ import Ġkotlinx . coroutines . run Blocking Ċ Ċ class ĠStack Widget Service Ġ: ĠRemote Views Service () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġon Get View Factory ( intent : ĠIntent ): ĠRemote Views Factory ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( intent Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġextras Ġ= Ġintent . extras Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġval Ġwidget Id Ġ= Ġextras . getInt ( App Widget Manager . EXTRA _ APP WIDGET _ ID ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠStack Remote Views Factory ( this . application Context , Ġwidget Id ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠStack Remote Views Factory ( private Ġval ĠmContext : ĠContext , Ġval Ġwidget Id : ĠInt ) Ġ: ĊĠĠĠ ĠRemote Views Factory Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlist Repository : ĠList Repository Ġ= ĊĠĠĠĠĠĠĠ Ġ( mContext . application Context Ġas ĠL is ka Application ). list Repository ĊĠĠĠ Ġprivate Ġval Ġconfig Repo Ġ= ĠUser Preferences Repository Impl . getInstance ( mContext ) ĊĠĠĠ Ġvar Ġconfig : ĠWidget Config ? ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġconfig Ġ= Ġconfig Repo . getById ( widget Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġlist Item Ġ= Ġmutable ListOf < ListItem >() ĊĊĠĠĠ Ġoverride Ġfun Ġon DataSet Changed () Ġ{ ĊĠĠĠĠĠĠĠ Ġconfig Ġ= Ġconfig Repo . getById ( widget Id ) ĊĠĠĠĠĠĠĠ Ġif Ġ( config Ġ!= Ġnull Ġ&& Ġ! config !!. is List Deleted ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġlist Repository . getById ( config !!. id List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġis ĠH older Result . Success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Item . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Item . addAll ( result . data . data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Item . clear () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠIn Ġon Destroy () Ġyou Ġshould Ġtear Ġdown Ġanything Ġthat Ġwas Ġsetup Ġfor Ġyour Ġdata Ġsource , ĊĠĠĠĠĠĠĠ Ġ// Ġeg . Ġcurs ors , Ġconnections , Ġetc . ĊĠĠĠĠĠĠĠ Ġlist Item . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlist Item . count () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget View At ( position : ĠInt ): ĠRemote Views Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrow Ġ= ĠRemote Views ( mContext . packageName , ĠR . layout . widget _ row _ light ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( config Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow . setText View Text ( R . id . widget _ text , Ġlist Item [ position ]. title ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcm Ġ= ĠContext Compat . getColor ( mContext , Ġconfig !!. theme . textColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow . setTextColor ( R . id . widget _ text , Ġcm ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Comp lect ed Ġ= Ġlist Item [ position ]. isChecked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠcheckBox Ġ= Ġconfig !!. request Checkbox ( is Comp lect ed ) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow . set ImageView Resource ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . widget _ complete _ box , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcheckBox ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġextras Ġ= ĠBundle () ĊĠĠĠĠĠĠĠ Ġextras . put Int ( List Widget . EXTRA _ ITEM , Ġposition ) ĊĠĠĠĠĠĠĠ Ġextras . put Long ( List Widget . EXTRA _ LIST _ ID , Ġconfig ?. id List Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġextras . putString ( List Widget . EXTRA _ TITLE _ ITEM , Ġlist Item [ position ]. title ) ĊĠĠĠĠĠĠĠ Ġval Ġfill In Intent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠ Ġfill In Intent . put Extras ( extras ) ĊĠĠĠĠĠĠĠ Ġrow . setOn Click Fill In Intent ( R . id . widget _ row , Ġfill In Intent ) ĊĠĠĠĠĠĠĠ Ġreturn Ġrow ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Loading View (): ĠRemote Views ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget ViewType Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Id ( position : ĠInt ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġposition . to Long () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhas Stable Ids (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} Ċ }