package Ġby . nt nk . ms lus chedule . ui . add teacher Ċ Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġby . nt nk . ms lus chedule . R Ċ import Ġby . nt nk . ms lus chedule . data . Teacher Ċ import Ġby . nt nk . ms lus chedule . mvp . views . M vp Dialog Fragment Ċ import Ġby . nt nk . ms lus chedule . network . data . Schedule Filter Ċ import Ġby . nt nk . ms lus chedule . ui . adapters . Schedule Filter Adapter Ċ import Ġby . nt nk . ms lus chedule . ui . custom views . Loading Auto Complete TextView Ċ import Ġby . nt nk . ms lus chedule . utils . EMPTY _ STRING Ċ import Ġby . nt nk . ms lus chedule . utils . Simple Text Watcher Ċ import Ġcom . google . android . material . dialog . Material AlertDialog Builder Ċ import Ġcom . google . android . material . text field . TextInput Layout Ċ import Ġdagger . Lazy Ċ import Ġdagger . android . support . Android Support Injection Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠAdd Teacher Fragment Ġ: ĠM vp Dialog Fragment < Add Teacher Presenter , ĠAdd Teacher View >(), ĠAdd Teacher View Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlistener : ĠDialog Listener ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġteacher View : ĠLoading Auto Complete TextView ĊĊĠĠĠ Ġoverride Ġval Ġview : ĠAdd Teacher View ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġthis ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġinjected Presenter : ĠLazy < Add Teacher Presenter > ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Presenter (): ĠAdd Teacher Presenter Ġ= Ġinjected Presenter . get () ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ ĠAndroid Support Injection . inject ( this ) ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener Ġ= Ġcontext Ġas ĠDialog Listener ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠClass CastException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠClass CastException ("$ context Ġmust Ġimplement ĠDialog Listener ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Dialog ( savedInstanceState : ĠBundle ?): ĠDialog Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayout Ġ= ĠView . inflate ( activity , ĠR . layout . add _ teacher _ view , Ġnull ) ĊĠĠĠĠĠĠĠ Ġinit Views ( layout ) ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= Ġinit Material Dialog ( layout ) ĊĠĠĠĠĠĠĠ Ġdialog . window ?. attributes ?. window Animations Ġ= ĠR . style . Dialog Animation ĊĠĠĠĠĠĠĠ Ġdialog . setOn Show Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( it Ġas ĠAlertDialog ). get Button ( AlertDialog . BUTTON _ POSITIVE ). isEnabled Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . isValid Teacher ( teacher View . text . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġdialog ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Views ( layout : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġteacher View Ġ= Ġlayout . findViewById ( R . id . act v _ dialog _ teacher ) ĊĠĠĠĠĠĠĠ Ġteacher View . progress Bar Ġ= Ġlayout . findViewById ( R . id . progressbar _ dialog _ teacher ) ĊĠĠĠĠĠĠĠ Ġval Ġteacher TextInput Layout : ĠText Input Layout Ġ= Ġlayout . findViewById ( R . id . text input layout _ teacher ) ĊĠĠĠĠĠĠĠ Ġteacher View . setEnabled Focus able ( false ) ĊĠĠĠĠĠĠĠ Ġteacher View . setOn ItemClickListener Ġ{ Ġ_, Ġ_, Ġ_, Ġid Ġ-> Ġpresenter . set Teacher Value ( id . toInt ()) Ġ} ĊĠĠĠĠĠĠĠ Ġteacher View . add TextChanged Listener ( object Ġ: ĠSimple Text Watcher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġteacher TextInput Layout . error Ġ= ĠEMPTY _ STRING ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġis Enabled Ġ= Ġpresenter . isValid Teacher ( s . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( presenter . is Teacher Stored ( s . toString ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġteacher TextInput Layout . error Ġ= Ġresources . getString ( R . string . teacher _ already _ added ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( dialog Ġas ĠAlertDialog ). get Button ( AlertDialog . BUTTON _ POSITIVE ). isEnabled Ġ= Ġis Enabled ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Material Dialog ( layout : ĠView ): ĠDialog Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMaterial AlertDialog Builder ( require Activity (), ĠR . style . M sl u Theme _ Dialog _ Alert ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setBackground ( Context Compat . get Drawable ( require Context (), ĠR . drawable . rounded _ corners _ rect )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle (( R . string . add _ teacher _ title )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setView ( layout ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( R . string . button _ add ) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on New Teacher ( presenter . get Teacher ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( R . string . button _ cancel ) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . is Te achers NotEmpty () Ġ-> Ġpresenter . populate Te achers Adapter () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġteacher View . progress Bar Visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . get Te achers Schedule Filter () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpopulate Te achers View ( data : ĠSchedule Filter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġteacher View . progress Bar Visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġteacher View . setEnabled Focus able ( true ) ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= Ġinit Adapter ( data ) ĊĠĠĠĠĠĠĠ Ġadapter . is IgnoreCase Filter Active Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġteacher View . setAdapter ( adapter ) ĊĠĠĠĠĠĠĠ Ġteacher View . request Focus () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Adapter ( data : ĠSchedule Filter ): ĠSchedule Filter Adapter Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSchedule Filter Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Activity (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . layout . simple _ spinner _ dropdown _ item , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Error ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠ Ġlistener . onError ( t ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdismiss () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . dismiss () ĊĠĠĠĠĠĠĠ Ġpresenter . clear Dis pos ables () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠDialog Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon New Teacher ( teacher : ĠTe acher ) ĊĠĠĠĠĠĠĠ Ġfun ĠonError ( t : ĠThrowable ) ĊĠĠĠ Ġ} Ċ } Ċ