package Ġdev . k xx cn . app _ with . ui . main . plan . add Ċ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . animation . Animator Listener Adapter Ċ import Ġandroid . graphics . Point Ċ import Ġandroid . graphics . Port er D uff Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . content . Context Compat Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . view . View Ċ import Ġcom . google . android . gms . ads . Inter stitial Ad Ċ import Ġdev . k xx cn . app _ with . R Ċ import Ġdev . k xx cn . app _ with . data . Data Repository Ċ import Ġdev . k xx cn . app _ with . data . model . plan . Plan Ċ import Ġdev . k xx cn . app _ with . data . remote . Remote DataSource Ċ import Ġdev . k xx cn . app _ with . ui . main . plan . Plan Pager Adapter Ċ import Ġdev . k xx cn . app _ with . util . Full Ads Helper Ċ import Ġdev . k xx cn . app _ with . util . Transition Utils Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . subjects . Publish Subject Ċ import Ġkotlinx . android . synt hetic . main . activity _ add _ plan .* Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . launch Ċ import Ġorg . jetbrains . ank o . backgroundColor Ċ import Ġorg . jetbrains . ank o . sdk 2 7 . coroutines . onClick Ċ import Ġorg . jetbrains . ank o . toast Ċ Ċ class ĠAdd Plan Activity Ġ: ĠAppCompatActivity (), ĠAdd Plan Contract . View Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcomposite Disposable Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġprivate Ġval Ġplan Subject Ġ= ĠPublish Subject . create < String >() ĊĠĠĠ Ġprivate Ġval Ġplace Subject Ġ= ĠPublish Subject . create < String >() ĊĠĠĠ Ġprivate Ġval Ġdate Subject Ġ= ĠPublish Subject . create < String >() ĊĠĠĠ Ġprivate Ġval Ġtime Subject Ġ= ĠPublish Subject . create < String >() ĊĊĠĠĠ Ġprivate Ġvar Ġadapter : ĠPlan Pager Adapter ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġid : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġplan : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġplace : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġdate : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġtime : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġplan Subscribe : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġplace Subscribe : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġdate Subscribe : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġtime Subscribe : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġwriter : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġtype Ġ= Ġ 0 ĊĊĠĠĠ Ġprivate Ġvar Ġscreen Height Ġ= Ġ 0 ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpresenter : ĠAdd Plan Contract . Presenter ĊĊĠĠĠ Ġprivate Ġvar Ġinter stitial Ad : ĠInter stitial Ad ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġset Presenter ( presenter : ĠAdd Plan Contract . Presenter ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . presenter Ġ= Ġpresenter Ġ?: Ġreturn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Loading Indicator ( is Showing : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfl _ loading ?. visibility Ġ= Ġif Ġ( is Showing ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ add _ plan ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( tb _ plan ) ĊĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Display Show Title Enabled ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Home As Up Indicator ( get Home Icon ( R . drawable . ic _ back )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdisplay Ġ= Ġwindow Manager . default Display ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= ĠPoint () ĊĠĠĠĠĠĠĠ Ġdisplay . getSize ( size ) ĊĠĠĠĠĠĠĠ Ġscreen Height Ġ= Ġsize . y ĊĊĠĠĠĠĠĠĠ Ġtype Ġ= Ġintent . getInt Extra ( EXTRA _ TYPE , ĠTYPE _ REGISTR ATION ) ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġintent . getInt Extra ( EXTRA _ ID , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġwriter Ġ= Ġintent . getString Extra ( EXTRA _ IDENTIFIER ) ĊĠĠĠĠĠĠĠ Ġplan Ġ= Ġintent . getString Extra ( EXTRA _ PLAN ) ĊĠĠĠĠĠĠĠ Ġplace Ġ= Ġintent . getString Extra ( EXTRA _ PLACE ) ĊĠĠĠĠĠĠĠ Ġdate Ġ= Ġintent . getString Extra ( EXTRA _ DATE ) ĊĠĠĠĠĠĠĠ Ġtime Ġ= Ġintent . getString Extra ( EXTRA _ TIME ) ĊĊĠĠĠĠĠĠĠ Ġpresenter Ġ= ĠAdd Plan Presenter ( this , ĠData Repository . getInstance ( Remote DataSource . getInstance ())) ĊĊĠĠĠĠĠĠĠ Ġinter stitial Ad Ġ= ĠFull Ads Helper . getInstance ( this ) ĊĊĠĠĠĠĠĠĠ Ġinit UI () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Support Navigate Up (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġon Back Pressed () ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġsv p _ plan . currentItem ĊĠĠĠĠĠĠĠ Ġif Ġ( position Ġ!= ĠPlan Pager Adapter . PAGE _ PLAN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ register . text Ġ= ĠgetString ( R . string . text _ next ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsv p _ plan . currentItem Ġ= Ġposition Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġif Ġ( svp _ plan . currentItem Ġ== ĠPlan Pager Adapter . PAGE _ PLACE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplace Subscribe ?. length Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplan Subscribe ?. length Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Clickable Button ( length ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! composite Disposable . is Disposed ) Ġcomposite Disposable . dispose () ĊĠĠĠĠĠĠĠ Ġpresenter . release () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Successful Register () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġanim ator Ġ= ĠTransition Utils . set Animation Slide Layout ( fl _ success , Ġscreen Height ) ĊĠĠĠĠĠĠĠ Ġanim ator . addListener ( object Ġ: ĠAn imator Listener Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Animation End ( animation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl av _ done . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl av _ done . play Animation () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl av _ done . add Animator Listener ( object Ġ: ĠAn imator Listener Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Animation End ( animation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinter stitial Ad ?. show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġanim ator . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Failed Request ( throwable : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast ( R . string . toast _ failed _ registration _ plan ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit UI () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Clickable Button ( 0 ) ĊĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( plan Subject . subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Clickable Button ( it . length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplan Subscribe Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( place Subject . subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Clickable Button ( it . length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplace Subscribe Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( date Subject . subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Clickable Button ( it . length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate Subscribe Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( time Subject . subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Clickable Button ( it . length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Subscribe Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠPlan Pager Adapter ( support FragmentManager , Ġplan Subject , Ġplace Subject , Ġdate Subject , Ġtime Subject , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplan , Ġplace , Ġdate , Ġtime ) ĊĠĠĠĠĠĠĠ Ġsv p _ plan . set Paging Enabled ( false ) ĊĠĠĠĠĠĠĠ Ġsv p _ plan . adapter Ġ= Ġadapter ĊĊĠĠĠĠĠĠĠ Ġtv _ register . onClick Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġsv p _ plan . currentItem ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġ!= ĠPlan Pager Adapter . PAGE _ TIME ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsv p _ plan . currentItem Ġ= Ġsv p _ plan . currentItem Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsv p _ plan . currentItem Ġ== ĠPlan Pager Adapter . PAGE _ PLACE Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplace Subscribe ?. length Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsv p _ plan . currentItem Ġ== ĠPlan Pager Adapter . PAGE _ DATE Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate Subscribe ?. length Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ register . text Ġ= ĠgetString ( R . string . text _ register ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Subscribe ?. length Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Clickable Button ( length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fl _ loading . visibility Ġ!= ĠView . VISIBLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type Ġ== ĠTYPE _ REGISTR ATION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . register Plan ( Plan ( writer , Ġplan Subscribe , Ġplace Subscribe , Ġtime Subscribe , Ġdate Subscribe )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( type Ġ== ĠTYPE _ EDIT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . update Plan ( Plan ( id , Ġplan Subscribe , Ġplace Subscribe , Ġtime Subscribe , Ġdate Subscribe )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Home Icon ( id : ĠInt ): ĠDrawable ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmenu Icon Ġ= ĠContext Compat . get Drawable ( this , Ġid ) ĊĠĠĠĠĠĠĠ Ġmenu Icon ?. setColor Filter ( Context Compat . getColor ( this , ĠR . color . primary _ icon ), ĠPort er D uff . Mode . SRC _ AT OP ) ĊĠĠĠĠĠĠĠ Ġreturn Ġmenu Icon ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Clickable Button ( length : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtv _ register . is Clickable Ġ= Ġlength Ġ!= Ġ 0 ĊĠĠĠĠĠĠĠ Ġtv _ register . isEnabled Ġ= Ġlength Ġ!= Ġ 0 ĊĠĠĠĠĠĠĠ Ġtv _ register . backgroundColor Ġ= Ġif Ġ( length Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( this , ĠR . color . background _ add _ plan _ possible ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( this , ĠR . color . background _ add _ plan _ imp ossible ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEX TRA _ TYPE Ġ= Ġ" EXTRA _ TYPE " ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEX TRA _ ID Ġ= Ġ" EXTRA _ ID " ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEX TRA _ PLAN Ġ= Ġ" EXTRA _ PLAN " ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEX TRA _ PLACE Ġ= Ġ" EXTRA _ PLACE " ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEX TRA _ DATE Ġ= Ġ" EXTRA _ DATE " ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEX TRA _ TIME Ġ= Ġ" EXTRA _ TIME " ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEX TRA _ IDENTIFIER Ġ= Ġ" EXTRA _ IDENTIFIER " ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ REGISTR ATION Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ EDIT Ġ= Ġ 1 ĊĠĠĠ Ġ} Ċ }