package Ġcn . sy ut ung . lit en otes . widgets Ċ Ċ import Ġandroid . app widget . App Widget Manager Ċ import Ġandroid . app widget . App Widget Provider Ċ import Ġandroid . content . Context Ċ import Ġandroid . widget . Remote Views Ċ import Ġcn . sy ut ung . lit en otes . R Ċ import Ġcn . sy ut ung . lit en otes . date base . Todo Date base Ċ import Ġcn . sy ut ung . lit en otes . empty . Todos Empty Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ import Ġkotlin . concurrent . thread Ċ Ċ /** Ċ Ġ* ĠImplementation Ġof ĠApp ĠWidget Ġfunctionality . Ċ Ġ* ĠApp ĠWidget ĠConfiguration Ġimplemented Ġin Ġ[ Count down Days Widget Configure Activity ] Ċ Ġ*/ Ċ class ĠCount down Days Widget Ġ: ĠApp Widget Provider () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonUpdate ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġapp Widget Manager : ĠApp Widget Manager , ĊĠĠĠĠĠĠĠ Ġapp Widget Ids : ĠInt Array ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠThere Ġmay Ġbe Ġmultiple Ġwidgets Ġactive , Ġso Ġupdate Ġall Ġof Ġthem ĊĠĠĠĠĠĠĠ Ġfor Ġ( app Widget Id Ġin Ġapp Widget Ids ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate App Widget ( context , Ġapp Widget Manager , Ġapp Widget Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Deleted ( context : ĠContext , Ġapp Widget Ids : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWhen Ġthe Ġuser Ġdeletes Ġthe Ġwidget , Ġdelete Ġthe Ġpreference Ġassociated Ġwith Ġit . ĊĠĠĠĠĠĠĠ Ġfor Ġ( app Widget Id Ġin Ġapp Widget Ids ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Title Pref ( context , Ġapp Widget Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Enabled ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠEnter Ġrelevant Ġfunctionality Ġfor Ġwhen Ġthe Ġfirst Ġwidget Ġis Ġcreated ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Disabled ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠEnter Ġrelevant Ġfunctionality Ġfor Ġwhen Ġthe Ġlast Ġwidget Ġis Ġdisabled ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġfun Ġget Date Po or ( endDate Ġ Ġ: ĠCalendar , Ġnow Date Ġ: ĠCalendar , Ġtodos Empty Ġ: ĠTod os Empty ) Ġ: ĠInt Ċ { ĊĠĠĠ Ġvar Ġm Ġ= ĠMath . abs (( endDate . time In Millis Ġ- Ġnow Date . time In Millis ) Ġ/ Ġ( 1 0 0 0 Ġ* Ġ 3 6 0 0 Ġ* Ġ 2 4 )). toInt () ĊĠĠĠ Ġreturn Ġm Ċ Ċ } Ċ internal Ġfun Ġupdate App Widget ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġapp Widget Manager : ĠApp Widget Manager , ĊĠĠĠ Ġapp Widget Id : ĠInt Ċ ) Ġ{ ĊĠĠĠ Ġval Ġwidget Text Ġ= Ġload Title Pref ( context , Ġapp Widget Id ) ĊĠĠĠ Ġprintln ( widget Text ) ĊĠĠĠ Ġthread Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġp Ġ= ĠTodo Date base . getInstance ( context )?. todo Dao ?. get by Id ( widget Text ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠConstruct Ġthe ĠRemote Views Ġobject ĊĠĠĠĠĠĠĠ Ġval Ġviews Ġ= ĠRemote Views ( context . packageName , ĠR . layout . countdown _ days _ widget ) ĊĠĠĠĠĠĠĠ Ġif Ġ( p Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcalendar Ġ= ĠCalendar . getInstance (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsdf Ġ= ĠSimpleDateFormat (" yyyy - MM - dd ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcha Ġ= Ġget Date Po or ( p . date , calendar , p ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġviews . setText View Text ( R . id . widgets _ text , Ġp . text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( p . date . after ( calendar )){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġviews . setText View Text ( R . id . widgets _ date , Ġ" è¿ĺ åī © Ġ${ cha . toString ()} Ġ å¤© ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġviews . setText View Text ( R . id . widgets _ date , Ġ" å·² è¿ĩ åİ» Ġ${ cha . toString ()} Ġ å¤© ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġviews . setText View Text ( R . id . widgets _ now , Ġsdf . format ( p . date . time )) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġapp Widget Manager . update App Widget ( app Widget Id , Ġviews ) ĊĊĠĠĠ Ġ} ĊĊ Ċ } ĊĊ