package Ġse . loc ut us . sl . re alt id hem . events Ċ Ċ import Ġandroid . app . job . Job Parameters Ċ import Ġandroid . app . job . JobService Ċ import Ġandroid . app widget . App Widget Manager Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġjava . util . logging . Logger Ċ import Ġandroid . widget . Remote Views Ċ import Ġse . loc ut us . sl . re alt id hem . R Ċ import Ġse . loc ut us . sl . re alt id hem . activity . WIDGET _ CONFIG _ PRE FS Ċ import Ġse . loc ut us . sl . re alt id hem . net . Network Manager Ċ import Ġse . loc ut us . sl . re alt id hem . widget . Standard Widget Provider . Companion . set Pending Intent s Ċ import Ġse . loc ut us . sl . re alt id hem . widget . get Widget Layout Id Ċ Ċ const Ġval ĠW ID GET _ CONFIG _ UPDATED Ġ= Ġ" widget _ config _ updated " Ċ Ċ class ĠWidget Broadcast Receiver Ġ Ġ: ĠBroadcast Receiver () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġwidget Touch Handler Ġ: ĠWidget Touch Handler ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġfun Ġget Touch Handler ( context Ġ: ĠContext ) Ġ: ĠWidget Touch Handler Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( widget Touch Handler Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . info (" Creating Ġmain Ġwidget Ġhandler ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidget Touch Handler Ġ= ĠWidget Touch Handler ( context !! , ĠNetwork Manager ( context )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwidget Touch Handler !! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval ĠLOG Ġ= ĠLogger . getLogger ( Widget Broadcast Receiver :: class . java . name ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext ?, Ġincoming Intent : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( context Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . warning (" Broadcast Ġwithout Ġcontext Ġ: (" ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġget Touch Handler ( context !! ) ĊĠĠĠĠĠĠĠ Ġval Ġwidget Id Ġ= Ġincoming Intent !!. getInt Extra ( App Widget Manager . EXTRA _ APP WIDGET _ ID , Ġ 0 ) ĊĠĠĠĠĠĠĠ ĠLOG . info (" Received Ġintent Ġ$ incoming Intent Ġwith Ġextra Ġ$ widget Id Ġaction Ġ${ incoming Intent . action }") ĊĊĠĠĠĠĠĠĠ Ġif Ġ( WIDGET _ CONFIG _ UPDATED . equals ( incoming Intent . action )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . info (" Received Ġbroadcast Ġabout Ġupdated Ġconfig Ġfor Ġ$ widget Id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidget Touch Handler !!. config Updated ( widget Id , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidget Touch Handler !!. widget Tou ched ( widget Id , Ġincoming Intent . action ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ class ĠReset Widget Ġ: ĠJob Service () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġon Stop Job ( params : ĠJob Parameters ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ ĠWidget Broadcast Receiver . LOG . info (" job Ġstopped !") ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Remove Views ( widget Id Ġ: ĠInt ) Ġ: ĠRemote Views Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠWidget Broadcast Receiver . widget Touch Handler ĊĠĠĠĠĠĠĠ Ġval Ġprefs Ġ= Ġget SharedPreferences ( WIDGET _ CONFIG _ PRE FS , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( handler Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġhandler . in Memory State . get Remove Views ( widget Id , Ġprefs , this , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠRemote Views ( packageName , Ġget Widget Layout Id ( prefs , Ġwidget Id )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart Job ( params : ĠJob Parameters ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwidget Id : ĠInt Ġ= Ġparams !!. extras . getInt ( App Widget Manager . EXTRA _ APP WIDGET _ ID ) ĊĠĠĠĠĠĠĠ ĠWidget Broadcast Receiver . LOG . info (" job Ġstarted , Ġclearing Ġwidget Ġ$ widget Id !") ĊĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= Ġget System Service ( Context . APP WIDGET _ SERVICE ) Ġas ĠApp Widget Manager ĊĠĠĠĠĠĠĠ Ġval Ġviews Ġ= Ġget Remove Views ( widget Id ) ĊĠĠĠĠĠĠĠ Ġviews . setText View Text ( R . id . widget line 2 , Ġ ĠgetString ( R . string . idle _ line 2 )) ĊĠĠĠĠĠĠĠ Ġviews . setText View Text ( R . id . widget line 1 , ĠgetString ( R . string . idle _ line 1 )) ĊĠĠĠĠĠĠĠ Ġviews . setText View Text ( R . id . widget min , Ġ"") ĊĠĠĠĠĠĠĠ Ġset Pending Intent s ( this , Ġviews , Ġwidget Id , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġmanager . update App Widget ( widget Id , Ġviews ) ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} Ċ Ċ }