package Ġcom . fib el att i . dub lin bus . presentation . activities Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . widget . Default Item Animator Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . view . View Ċ import Ġandroid . view . WindowManager Ċ import Ġcom . fib el att i . dub lin bus . Android Application Ċ import Ġcom . fib el att i . dub lin bus . R Ċ import Ġcom . fib el att i . dub lin bus . base . Base Activity Ċ import Ġcom . fib el att i . dub lin bus . base . hide Keyboard Ċ import Ġcom . fib el att i . dub lin bus . base . toast Ċ import Ġcom . fib el att i . dub lin bus . data . models . Stop Information Ċ import Ġcom . fib el att i . dub lin bus . helpers . Utils Ċ import Ġcom . fib el att i . dub lin bus . helpers . if NotNull Ċ import Ġcom . fib el att i . dub lin bus . presentation . adapters . Search By Stop Number Adapter Ċ import Ġcom . fib el att i . dub lin bus . presentation . present ers . Search By Stop Presenter Ċ import Ġkotlinx . android . synt hetic . main . activity _ search .* Ċ import Ġkotlinx . android . synt hetic . main . toolbar _ default .* Ċ import Ġjavax . inject . Inject Ċ Ċ fun ĠContext . Search Activity Intent () Ġ= ĠIntent ( this , ĠSearch Activity :: class . java ) Ċ Ċ class ĠSearch Activity Ġ: ĠBase Activity (), ĠSearch By Stop Presenter . View Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġpresenter : ĠSearch By Stop Presenter ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġadapter : ĠSearch By Stop Number Adapter ĊĠĠĠ Ġvar Ġstop Id : ĠInt Ġ= Ġ- 1 ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ search ) ĊĊĠĠĠĠĠĠĠ ĠAndroid Application . app Component . inject ( this ) ĊĊĠĠĠĠĠĠĠ Ġpresenter . attach View ( this ) ĊĊĠĠĠĠĠĠĠ ĠsetUp Layout () ĊĠĠĠĠĠĠĠ ĠsetUp RecyclerView () ĊĠĠĠĠĠĠĠ ĠsetUp Listeners () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġpresenter . detach View () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp Layout () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ ĠsetTitle ( R . string . search _ activity _ title ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp RecyclerView () Ġ{ ĊĠĠĠĠĠĠĠ Ġre cycler _ view . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠĠĠ Ġre cycler _ view . item Animator Ġ= ĠDefault Item Animator () ĊĠĠĠĠĠĠĠ Ġre cycler _ view . adapter Ġ= Ġadapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp Listeners () Ġ{ ĊĠĠĠĠĠĠĠ Ġbutton _ search . setOnClickListener Ġ{ Ġvalidate Query And Search () Ġ} ĊĠĠĠĠĠĠĠ Ġbutton _ refresh . setOnClickListener Ġ{ Ġvalidate Query And Search () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate Query And Search () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( validate Query ( input _ stop _ id . text . toString ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Keyboard () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Progress () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstop Id Ġ= ĠInteger . valueOf ( input _ stop _ id . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . perform Search ( stop Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate Query ( query : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( query . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput _ layout _ stop _ id . error Ġ= ĠgetString ( R . string . search _ activity _ error _ stop _ number ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Focus ( input _ layout _ stop _ id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery . toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput _ layout _ stop _ id . error Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput _ layout _ stop _ id . isError Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch ( e : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput _ layout _ stop _ id . error Ġ= ĠgetString ( R . string . search _ activity _ error _ stop _ number ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Focus ( input _ layout _ stop _ id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrequest Focus ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( view . request Focus ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . set Soft Input Mode ( WindowManager . LayoutParams . SOFT _ INPUT _ STATE _ ALWAYS _ VISIBLE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Results () Ġ{ ĊĠĠĠĠĠĠĠ Ġre cycler _ view . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġplaceholder . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Placeholder () Ġ{ ĊĠĠĠĠĠĠĠ Ġre cycler _ view . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġplaceholder . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġresult F etched ( stop Information : ĠStop Information ) Ġ{ ĊĠĠĠĠĠĠĠ ĠUtils . if NotNull ( stop Information . error code , Ġstop Information . results ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠerrorCode , Ġresults Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Progress () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( errorCode Ġ== Ġ" 0 " Ġ&& Ġresults . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Results () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext _ view _ refresh _ time . text Ġ= ĠgetString ( R . string . search _ activity _ text _ refresh _ time , Ġstop Information . timestamp ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . clear List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . add Many ToList ( stop Information . results !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Placeholder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhandle Error ( errorMessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtoast ( errorMessage ) ĊĠĠĠ Ġ} Ċ } Ċ