/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠAnd rey ĠT ol pe ev Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . github . v ase 4 kin . team city app . home . view Ċ Ċ import Ġandroid . content . res . Color State List Ċ import Ġandroid . graphics . Point Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroid . view . View Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . core . graphics . Insets Ċ import Ġandroidx . core . view . View Compat Ċ import Ġandroidx . interpol ator . view . animation . Fast Out Slow In Interpolator Ċ import Ġcom . github . v ase 4 kin . team city app . R Ċ import Ġcom . github . v ase 4 kin . team city app . filter _ bottom _ sheet _ dialog . filter . Filter Ċ import Ġcom . github . v ase 4 kin . team city app . filter _ bottom _ sheet _ dialog . view . Filter Bottom Sheet Dialog Fragment Ċ import Ġcom . google . android . material . elevation . Elevation Overlay Provider Ċ import Ġcom . google . android . material . floating action button . Floating ActionButton Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġteam city app . libraries . on boarding . On boarding Manager Ċ import Ġteam city app . libraries . utils . get Theme Color Ċ import Ġuk . co . sam uel wall . material tap target prompt . Material Tap Target Prompt Ċ Ċ private Ġconst Ġval ĠTAG _ BOTTOM _ SHE ET Ġ= Ġ" Tag Ġfilter Ġbottom Ġsheet " Ċ private Ġconst Ġval ĠTIME _ PROMPT _ DELAY Ġ= Ġ 5 0 0 Ċ Ċ /** Ċ Ġ* Ġimpl Ġof Ġ[ Home View ] Ċ Ġ*/ Ċ class ĠHome View Impl ( private Ġval Ġactivity : ĠAppCompatActivity ) Ġ: ĠHome View Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġparent View : ĠView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfab : ĠFloating ActionButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtoolbar : ĠToolbar ĊĠĠĠ Ġprivate Ġvar Ġsn ackbar : ĠSn ackbar ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġlistener : ĠHome View . View Listener ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġhandler Ġ= ĠHandler ( Looper . get Main Looper ()) ĊĠĠĠ Ġprivate Ġval Ġrun n ables Ġ= Ġmutable ListOf < Runnable >() ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ{@ inheritDoc } ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġinit Views ( listener : ĠHome View . View Listener ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . listener Ġ= Ġlistener ĊĠĠĠĠĠĠĠ Ġparent View Ġ= Ġactivity . findViewById ( android . R . id . content ) ĊĠĠĠĠĠĠĠ Ġfab Ġ= Ġactivity . findViewById ( R . id . home _ floating _ action _ button ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ{@ inheritDoc } ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġshow F avorites Info Snackbar () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . sn ackbar Ġ= ĠSn ackbar . make ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent View , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . text _ info _ add , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . LENGTH _ LONG ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Anchor View ( fab ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAction ( R . string . text _ info _ add _ action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. on F avorites Sn ackBar Action Clicked () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsn ackbar ?. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ{@ inheritDoc } ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġdim iss Snackbar () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsn ackbar Ġ= Ġthis . sn ackbar ĊĠĠĠĠĠĠĠ Ġif Ġ( sn ackbar Ġ!= Ġnull Ġ&& Ġsn ackbar . is Shown ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackbar . dismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ{@ inheritDoc } ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġshow Filter Bottom Sheet ( filter : ĠFilter ) Ġ{ ĊĠĠĠĠĠĠĠ ĠFilter Bottom Sheet Dialog Fragment . create Bottom Sheet Dialog ( filter . code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show ( activity . support FragmentManager , ĠTAG _ BOTTOM _ SHE ET ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ{@ inheritDoc } ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġshow Filter Applied Sn ackBar () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . sn ackbar Ġ= ĠSn ackbar . make ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent View , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . text _ filters _ applied , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . LENGTH _ LONG ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Anchor View ( fab ) ĊĠĠĠĠĠĠĠ Ġsn ackbar ?. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ{@ inheritDoc } ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġshow Agents Filter Applied Sn ackBar () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . sn ackbar Ġ= ĠSn ackbar . make ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent View , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . text _ agents _ filters _ applied , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . LENGTH _ LONG ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Anchor View ( fab ) ĊĠĠĠĠĠĠĠ Ġsn ackbar ?. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ{@ inheritDoc } ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġshow Navigation Drawer Prompt ( listener : ĠOn boarding Manager . On Prompt Shown Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCreating Ġprompt ĊĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġget BackgroundColor () ĊĠĠĠĠĠĠĠ Ġval Ġnavigation Drawer Prompt Ġ= ĠMaterial Tap Target Prompt . Builder ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Primary Text ( R . string . title _ on boarding _ navigation _ drawer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Secondary Text ( R . string . text _ on boarding _ navigation _ drawer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Animation Interpolator ( Fast Out Slow In Interpolator ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setIcon ( R . drawable . ic _ menu _ black _ 2 4 dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setIcon Drawable Tint List ( Color State List . valueOf ( color )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setBackground Colour ( color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Capture Touch Event Outside Prompt ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Prompt State ChangeListener Ġ{ Ġ_, Ġ_ Ġ-> Ġlistener . on Prompt Shown () Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠShow Ġprompt ĊĠĠĠĠĠĠĠ Ġval Ġrunnable Ġ= ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnavigation Drawer Location On Screen Ġ= Ġget Navigation Drawer Location On Screen () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Drawer Prompt . setTarget ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Drawer Location On Screen . x . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Drawer Location On Screen . y . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Drawer Prompt . show () ĊĠĠĠĠĠĠĠ Ġ}. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun n ables . add ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġhandler . post Delayed ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrunnable , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTIME _ PROMPT _ DELAY . to Long () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Navigation Drawer Location On Screen (): ĠPoint Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcenter Of Drawer Image Ġ= Ġactivity . resources . get Dimension Pixel Size ( R . dim en . dp _ 2 4 ) ĊĠĠĠĠĠĠĠ Ġval Ġstatus Bar Insets Top Ġ= Ġget System Window Insets (). top ĊĠĠĠĠĠĠĠ Ġval Ġtop Ġ= Ġstatus Bar Insets Top Ġ+ Ġcenter Of Drawer Image ĊĠĠĠĠĠĠĠ Ġreturn ĠPoint ( center Of Drawer Image , Ġtop ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget System Window Insets (): ĠIn sets Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġkotlin . run Catch ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView Compat . getRoot Window Insets ( parent View )?. system Window Insets Ġ?: ĠIn sets . NONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult . get OrNull () Ġ?: ĠIn sets . NONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ{@ inheritDoc } ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġshow Add Fav Prompt ( listener : ĠOn boarding Manager . On Prompt Shown Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġget BackgroundColor () ĊĠĠĠĠĠĠĠ ĠMaterial Tap Target Prompt . Builder ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTarget ( fab ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Primary Text ( R . string . title _ on boarding _ add _ fav ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Secondary Text ( R . string . text _ on boarding _ add _ fav ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Animation Interpolator ( Fast Out Slow In Interpolator ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setBackground Colour ( color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Capture Touch Event Outside Prompt ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Prompt State ChangeListener Ġ{ Ġ_, Ġstate Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state Ġ== ĠMaterial Tap Target Prompt . STATE _ DIS MIS SED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Prompt Shown () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ{@ inheritDoc } ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġshow Running Build s Filter Prompt ( listener : ĠOn boarding Manager . On Prompt Shown Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġget BackgroundColor () ĊĠĠĠĠĠĠĠ ĠMaterial Tap Target Prompt . Builder ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTarget ( fab ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Primary Text ( R . string . title _ on boarding _ filter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Secondary Text ( R . string . text _ on boarding _ filter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Animation Interpolator ( Fast Out Slow In Interpolator ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setBackground Colour ( color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Capture Touch Event Outside Prompt ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Prompt State ChangeListener Ġ{ Ġ_, Ġstate Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state Ġ== ĠMaterial Tap Target Prompt . STATE _ DIS MIS SED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Prompt Shown () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ{@ inheritDoc } ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġshow Build s Queue Filter Prompt ( on Prompt Shown : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġget BackgroundColor () ĊĠĠĠĠĠĠĠ ĠMaterial Tap Target Prompt . Builder ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTarget ( fab ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Primary Text ( R . string . title _ on boarding _ filter _ queued ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Secondary Text ( R . string . text _ on boarding _ filter _ queued ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Animation Interpolator ( Fast Out Slow In Interpolator ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setBackground Colour ( color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Capture Touch Event Outside Prompt ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Prompt State ChangeListener Ġ{ Ġ_, Ġstate Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state Ġ== ĠMaterial Tap Target Prompt . STATE _ DIS MIS SED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Prompt Shown () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ{@ inheritDoc } ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġshow Agents Filter Prompt ( on Prompt Shown : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġget BackgroundColor () ĊĠĠĠĠĠĠĠ ĠMaterial Tap Target Prompt . Builder ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTarget ( fab ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Primary Text ( R . string . title _ on boarding _ filter _ agents ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Secondary Text ( R . string . text _ on boarding _ filter _ agents ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Animation Interpolator ( Fast Out Slow In Interpolator ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setBackground Colour ( color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Capture Touch Event Outside Prompt ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Prompt State ChangeListener Ġ{ Ġ_, Ġstate Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state Ġ== ĠMaterial Tap Target Prompt . STATE _ DIS MIS SED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Prompt Shown () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġun bind Resources () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun n ables . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . remove Callbacks ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrun n ables . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget BackgroundColor (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġelevation Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . resources . get Dimension ( R . dim en . dp _ 4 ) ĊĠĠĠĠĠĠĠ Ġreturn ĠE levation Overlay Provider ( activity ). composite Overlay IfNeeded ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . get Theme Color ( R . attr . color Primary Surface ), Ġelevation ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ