package Ġcom . iz ho . save entry Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . graphics . drawable . Icon Ċ import Ġandroid . os . IB inder Ċ import Ġandroid . service . quick settings . Tile Ċ import Ġandroid . service . quick settings . Tile Service Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . lifecycle . Lifecycle Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . Service Lifecycle Dispatcher Ċ import Ġcom . iz ho . save entry . data . Visit With Location Ċ import Ġcom . iz ho . save entry . data . getApp Database Ċ import Ġcom . iz ho . save entry . settings . Preference Utils ĊĊ Ċ class ĠExpress Checkout Tile Service : ĠTile Service (), ĠLifecycle Owner Ġ{ ĊĠĠĠ Ġprivate Ġval Ġm Dispatcher Ġ= ĠService Lifecycle Dispatcher ( this ) ĊĠĠĠ Ġprivate Ġvar Ġnext Visit ToUse : Visit With Location ? Ġ= Ġnull ; ĊĠĠĠ Ġprivate Ġvar Ġhas Favorite Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġalways Use Scanner : Boolean Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġon Settings Changed Listener : SharedPreferences . On Shared Preference ChangeListener ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Dispatcher . on Service Pre Super On Create () ĊĠĠĠĠĠĠĠ Ġsuper . onCreate () ĊĠĠĠĠĠĠĠ Ġval Ġdatabase Ġ= Ġget App Database ( this , Ġreset Db Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠ Ġdatabase . dao . getAll Active Visit With Location (). observe ( this , ĠObserver Ġ{ Ġactive Vis its Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( active Vis its Ġ!= Ġnull Ġ&& Ġ! active Vis its . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Visit ToUse Ġ= Ġactive Vis its [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Visit ToUse Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġdatabase . dao . getAll Favorite Locations (). observe ( this , ĠObserver Ġ{ Ġfavour ites Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Favorite Ġ= Ġfavour ites . isNotEmpty () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġalways Use Scanner Ġ= ĠPreference Utils . getString Pref ( this , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . settings _ tile _ behavior , ĠgetString ( R . string . tile _ behavior _ scanner )) Ġ== ĠgetString ( R . string . tile _ behavior _ scanner ) ĊĠĠĠĠĠĠĠ Ġon Settings Changed Listener Ġ= ĠSharedPreferences . On Shared Preference ChangeListener Ġ{ Ġsp , Ġkey Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( key Ġ== ĠgetString ( R . string . settings _ tile _ behavior )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalways Use Scanner Ġ= ĠPreference Utils . getString Pref ( this , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . settings _ tile _ behavior , ĠgetString ( R . string . tile _ behavior _ scanner )) Ġ== ĠgetString ( R . string . tile _ behavior _ scanner ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Tile () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠPreference Utils . register Listener ( on Settings Changed Listener , Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart Command ( intent : ĠIntent ?, Ġflags : ĠInt , Ġstart Id : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġm Dispatcher . on Service Pre Super On Start () ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onStart Command ( intent , Ġflags , Ġstart Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart Listening () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart Listening () ĊĠĠĠĠĠĠĠ Ġupdate Tile () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Tile () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtile Ġ= Ġqs Tile ; ĊĠĠĠĠĠĠĠ Ġif Ġ( always Use Scanner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtile . label Ġ= Ġ" Scan ĠSafe Entry "; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtile . state Ġ= ĠTile . STATE _ IN ACTIVE ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtile . icon Ġ= ĠIcon . create With Resource ( this , ĠR . drawable . ic _ camera ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( next Visit ToUse Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtile . label Ġ= Ġ" Check ĠIn "; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtile . state Ġ= ĠTile . STATE _ IN ACTIVE ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtile . icon Ġ= ĠIcon . create With Resource ( this , ĠR . drawable . ic _ login ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtile . label Ġ= Ġ" Check ĠOut "; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtile . state Ġ= ĠTile . STATE _ ACTIVE ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtile . icon Ġ= ĠIcon . create With Resource ( this , ĠR . drawable . ic _ logout ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtile . update Tile () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onClick () ĊĠĠĠĠĠĠĠ Ġval Ġintent : Intent ĊĠĠĠĠĠĠĠ Ġif ( always Use Scanner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent Ġ= ĠIntent ( this , ĠLive Barcode Sc anning Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{// need Ġto Ġswitch Ġbetween Ġcheck Ġin Ġor Ġout ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( next Visit ToUse Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent Ġ= ĠIntent ( this , ĠCheck In Or Out Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" action ", Ġ" check Out ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" visit Id ", Ġnext Visit ToUse !!. visit . visit Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" url ", Ġnext Visit ToUse !!. location . url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent Ġ= ĠIntent ( this , ĠLive Barcode Sc anning Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġintent . flags Ġ= ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK ; ĊĠĠĠĠĠĠĠ Ġthis . startActivity ( intent ) ĊĊĠĠĠĠĠĠĠ Ġval Ġit Ġ= ĠIntent ( Intent . ACTION _ CLOSE _ SYSTEM _ DI AL O GS ) ĊĠĠĠĠĠĠĠ Ġthis . send Broadcast ( it ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ ĠPreference Utils . unregister Listener ( on Settings Changed Listener , Ġthis ) ĊĠĠĠĠĠĠĠ Ġm Dispatcher . on Service Pre Super On Destroy () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ( intent : ĠIntent ?): ĠI Binder ? Ġ{ ĊĠĠĠĠĠĠĠ Ġm Dispatcher . on Service Pre Super On Bind () ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Bind ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Tile Added () Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" You Ġcan Ġnow Ġcheck Ġin Ġor Ġout Ġfaster Ġ- Ġeven Ġwithout Ġunlock ing Ġyour Ġphone ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġsuper . on Tile Added () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Lifecycle (): ĠLifecycle Ġ= Ġm Dispatcher . lifecycle Ċ Ċ }