package Ġcom . github . ory an mat . t rel low idget . widget Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Color .* Ċ import Ġandroid . net . Uri Ċ import Ġandroid . support . annotation . Color Int Ċ import Ġandroid . support . annotation . Drawable Res Ċ import Ġandroid . support . annotation . Id Res Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Remote Views Ċ import Ġandroid . widget . Remote Views Service Ċ import Ġcom . github . ory an mat . t rel low idget . R Ċ import Ġcom . github . ory an mat . t rel low idget . model . Board List Ċ import Ġcom . github . ory an mat . t rel low idget . model . Card Ċ import Ġcom . github . ory an mat . t rel low idget . model . Label Ċ import Ġcom . github . ory an mat . t rel low idget . util .* Ċ import Ġcom . github . ory an mat . t rel low idget . util . Remote Views Util . set BackgroundColor Ċ import Ġcom . github . ory an mat . t rel low idget . util . Remote Views Util . setImage Ċ import Ġcom . github . ory an mat . t rel low idget . util . Remote Views Util . set ImageView Color Ċ import Ġcom . github . ory an mat . t rel low idget . util . Remote Views Util . setText View Ċ import Ġcom . github . ory an mat . t rel low idget . util . color . colors Ċ import Ġcom . github . ory an mat . t rel low idget . util . color . dim Ċ import Ġjava . util .* Ċ Ċ class ĠCard Remote View Factory ( private Ġval Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġapp Widget Id : ĠInt ) Ġ: ĠRemote Views Service . Remote Views Factory Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġcards : ĠList < Card > Ġ= ĠArrayList () ĊĠĠĠ Ġ@ Color Int Ġprivate Ġvar Ġcolor Ġ= Ġ 0 ĊĠĠĠ Ġ@ Color Int Ġprivate Ġvar Ġcolor Bg Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun Ġon DataSet Changed () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġlist Ġ= Ġcontext . getList ( app Widget Id ) ĊĠĠĠĠĠĠĠ Ġlist Ġ= ĠT rello API Util . instance . get Cards ( list ) ĊĠĠĠĠĠĠĠ Ġcolor Ġ= Ġcontext . get Card ForegroundColor () ĊĠĠĠĠĠĠĠ Ġcolor Bg Ġ= Ġcontext . get Card BackgroundColor () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Board List . ERROR Ġ!= Ġlist . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcards Ġ= Ġlist . cards ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġcolor . dim () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Bg Ġ= Ġcolor Bg . dim () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget View At ( position : ĠInt ): ĠRemote Views Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcard Ġ= Ġcards [ position ] ĊĠĠĠĠĠĠĠ Ġval Ġviews Ġ= ĠRemote Views ( context . packageName , ĠR . layout . card ) ĊĠĠĠĠĠĠĠ Ġset Card Background ( views , Ġcard ) ĊĠĠĠĠĠĠĠ Ġset Labels ( views , Ġcard ) ĊĠĠĠĠĠĠĠ ĠsetTitle ( views , Ġcard ) ĊĠĠĠĠĠĠĠ Ġset Bad ges ( views , Ġcard ) ĊĠĠĠĠĠĠĠ Ġ// set Divider ( views ) ĊĠĠĠĠĠĠĠ Ġset OnClick Fill In Intent ( views , Ġcard ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġviews ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset OnClick Fill In Intent ( views : ĠRemote Views , Ġcard : ĠCard ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ VIEW , ĠUri . parse ( card . url )) ĊĠĠĠĠĠĠĠ Ġviews . setOn Click Fill In Intent ( R . id . card , Ġintent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Bad ges ( views : ĠRemote Views , Ġcard : ĠCard ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Sub scribed ( views , Ġcard ) ĊĠĠĠĠĠĠĠ Ġset Votes ( views , Ġcard ) ĊĠĠĠĠĠĠĠ Ġset Due Date ( views , Ġcard ) ĊĠĠĠĠĠĠĠ Ġset Description ( views , Ġcard ) ĊĠĠĠĠĠĠĠ Ġset Comments ( views , Ġcard ) ĊĠĠĠĠĠĠĠ Ġset Checklist ( views , Ġcard ) ĊĠĠĠĠĠĠĠ Ġset Attachments ( views , Ġcard ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġno Ġbad ges , Ġset Ġas ĠG ONE ĊĠĠĠĠĠĠĠ Ġif Ġ( card . badges . subscribed . not () Ġand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( card . badges . votes Ġ<= Ġ 0 ) Ġand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( card . badges . due Ġ== Ġnull ) Ġand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard . badges . description . not () Ġand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( card . badges . comments Ġ<= Ġ 0 ) Ġand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( card . badges . check Items Ġ<= Ġ 0 ) Ġand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( card . badges . attachments Ġ<= Ġ 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġviews . setView Visibility ( R . id . badges _ layout , ĠView . GONE ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġviews . setView Visibility ( R . id . badges _ layout , ĠView . VISIBLE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetTitle ( views : ĠRemote Views , Ġcard : ĠCard ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset TextView ( context , Ġviews , ĠR . id . card _ title , Ġcard . name , Ġcolor , ĠR . dim en . card _ badges _ text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Card Background ( views : ĠRemote Views , Ġcard : ĠCard ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset BackgroundColor ( views , ĠR . id . card , Ġcolor Bg ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Sub scribed ( views : ĠRemote Views , Ġcard : ĠCard ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Badge ( views , ĠR . id . subscribed , ĠR . drawable . ic _ visibility _ white _ 2 4 dp , Ġcard . badges . subscribed ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Votes ( views : ĠRemote Views , Ġcard : ĠCard ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Int Badge ( views , ĠR . id . votes , ĠR . id . vote _ count , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ thumb _ up _ white _ 2 4 dp , Ġcard . badges . votes ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Description ( views : ĠRemote Views , Ġcard : ĠCard ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Badge ( views , ĠR . id . desc , ĠR . drawable . ic _ subject _ white _ 2 4 dp , Ġcard . badges . description ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Due Date ( views : ĠRemote Views , Ġcard : ĠCard ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvisible Ġ= Ġcard . badges . due Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġif Ġ( visible ) ĠDateTime Util . parse Date ( card . badges . due !! ) Ġelse Ġ"" ĊĠĠĠĠĠĠĠ Ġset Badge ( views , ĠR . id . due , ĠR . id . due _ string , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ access _ time _ white _ 2 4 dp , Ġtext , Ġvisible ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Checklist ( views : ĠRemote Views , Ġcard : ĠCard ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġ"${ card . badges . check Items Checked }/${ card . badges . check Items }" ĊĠĠĠĠĠĠĠ Ġval Ġvisible Ġ= Ġcard . badges . check Items Ġ> Ġ 0 ĊĠĠĠĠĠĠĠ Ġset Badge ( views , ĠR . id . checklist , ĠR . id . checklist _ count , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ check _ box _ white _ 2 4 dp , Ġtext , Ġvisible ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Comments ( views : ĠRemote Views , Ġcard : ĠCard ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Int Badge ( views , ĠR . id . comments , ĠR . id . comment _ count , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ chat _ bubble _ outline _ white _ 2 4 dp , Ġcard . badges . comments ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Attachments ( views : ĠRemote Views , Ġcard : ĠCard ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Int Badge ( views , ĠR . id . attachment , ĠR . id . attachment _ count , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ attachment _ white _ 2 4 dp , Ġcard . badges . attachments ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Int Badge ( views : ĠRemote Views , Ġ@ Id Res Ġview : ĠInt , Ġ@ Id Res ĠtextView : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Drawable Res Ġimage : ĠInt , Ġvalue : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Badge ( views , Ġview , ĠtextView , Ġimage , Ġvalue . toString (), Ġvalue Ġ> Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Badge ( views : ĠRemote Views , Ġ@ Id Res Ġview : ĠInt , Ġ@ Id Res ĠtextView : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Drawable Res Ġimage : ĠInt , Ġtext : ĠString , Ġvisible : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset TextView ( context , Ġviews , ĠtextView , Ġtext , Ġcolor , ĠR . dim en . card _ badges _ text ) ĊĠĠĠĠĠĠĠ Ġviews . setView Visibility ( textView , Ġif Ġ( visible ) ĠView . VISIBLE Ġelse ĠView . GONE ) ĊĠĠĠĠĠĠĠ Ġset Badge ( views , Ġview , Ġimage , Ġvisible ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Badge ( views : ĠRemote Views , Ġ@ Id Res Ġview : ĠInt , Ġ@ Drawable Res Ġimage : ĠInt , Ġvisible : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġviews . setView Visibility ( view , Ġif Ġ( visible ) ĠView . VISIBLE Ġelse ĠView . GONE ) ĊĠĠĠĠĠĠĠ Ġset ImageView Color ( views , Ġview , Ġcolor ) ĊĠĠĠĠĠĠĠ Ġset Image ( context , Ġviews , Ġview , Ġimage ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Labels ( views : ĠRemote Views , Ġcard : ĠCard ) Ġ{ ĊĠĠĠĠĠĠĠ Ġviews . removeAll Views ( R . id . labels _ layout ) ĊĠĠĠĠĠĠĠ Ġ// ĠDisable ĠLabels ĠListView Ġif Ġempty Ġ( so Ġno Ġpadding / margin Ġis Ġapplied ) ĊĠĠĠĠĠĠĠ Ġif Ġ( card . labels . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġviews . setView Visibility ( R . id . labels _ layout , ĠView . GONE ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġviews . setView Visibility ( R . id . labels _ layout , ĠView . VISIBLE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard . labels . forEach Ġ{ Ġset Label ( views , Ġit ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Label ( views : ĠRemote Views , Ġlabel : ĠLabel ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġlabel Color : ĠInt Ġ= Ġcolors [ label . color ] Ġ?: ĠColor . TRANSP ARENT ĊĠĠĠĠĠĠĠ Ġlabel Color Ġ= ĠColor . arg b ( alpha ( color ), Ġred ( label Color ), Ġgreen ( label Color ), Ġblue ( label Color )) ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠRemote Views ( context . packageName , ĠR . layout . label ) ĊĠĠĠĠĠĠĠ Ġset ImageView Color ( view , ĠR . id . label , Ġlabel Color ) ĊĠĠĠĠĠĠĠ Ġset Image ( context , Ġview , ĠR . id . label , ĠR . drawable . label _ big ) ĊĠĠĠĠĠĠĠ Ġviews . addView ( R . id . labels _ layout , Ġview ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// private Ġfun Ġset Divider ( views : ĠRemote Views ) Ġ= Ġset ImageView Color ( views , ĠR . id . list _ item _ divider , Ġcolor ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Count (): ĠInt Ġ= Ġcards . size ĊĊĠĠĠ Ġoverride Ġfun Ġget Loading View (): ĠRemote Views ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġget ViewType Count (): ĠInt Ġ= Ġ 1 ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Id ( position : ĠInt ): ĠLong Ġ= Ġposition . to Long () ĊĊĠĠĠ Ġoverride Ġfun Ġhas Stable Ids () Ġ= Ġtrue Ċ }