package Ġcom . raf ael ds . r ussian helper . home Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . WindowManager Ċ import Ġandroid . view . animation . Linear Interpolator Ċ import Ġandroidx . appcompat . app . AlertDialog .* Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . AppCompat EditText Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . view . Gravity Compat Ċ import Ġandroidx . recyclerview . widget . Divider Item Decoration Ċ import Ġandroidx . recyclerview . widget . Item Touch Helper Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . google . android . material . floating action button . Floating ActionButton Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġcom . raf ael ds . r ussian helper . R Ċ import Ġcom . raf ael ds . r ussian helper . R ussian Helper Application Ċ import Ġcom . raf ael ds . r ussian helper . data . R ussian Word Ċ import Ġcom . raf ael ds . r ussian helper . details . Word Detail Activity Ċ import Ġjp . was ab eef . recyclerview . anim ators . Fade In Animator Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġjava . util .* Ċ import Ġjavax . inject . Inject ĊĊ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĠMainActivity View Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġpresenter : ĠMainActivity Presenter ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġword Adapter : ĠWord Adapter ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġ( application Ġas ĠR ussian Helper Application ). getComponent (). inject ( this ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( activity _ main _ toolbar ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Home As Up Indicator ( R . drawable . ic _ menu _ white _ 2 4 dp ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġactivity _ main _ navigation _ view . set Navigation ItemSelected Listener Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ cases Ġ-> Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ about Ġ-> Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity _ main _ drawer _ layout . close Draw ers () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġword Adapter Ġ= ĠWord Adapter () ĊĠĠĠĠĠĠĠ Ġword Adapter . click Listener Ġ= Ġpresenter :: on Item Click ĊĊĠĠĠĠĠĠĠ Ġactivity _ main _ recycler _ view . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanim ator Ġ= ĠF ade In Animator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . add Duration Ġ= Ġ 2 0 0 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . set Interpolator ( Linear Interpolator ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Animator Ġ= Ġanim ator ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġword Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Item Decoration ( Divider Item Decoration ( context , ĠLinearLayoutManager . VERTICAL )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd On Scroll Listener ( hide Fab On Scroll Up Listener ( activity _ main _ fab )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġswipe Touch Helper Ġ= ĠItem Touch Helper ( object Ġ: ĠSw ipe ToDelete Callback ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sw ip ed ( view Holder : ĠRecyclerView . ViewHolder , Ġdirection : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . on Item Swipe ( view Holder . item View . tag Ġas ĠR ussian Word ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġswipe Touch Helper . attach To RecyclerView ( activity _ main _ recycler _ view ) ĊĊĠĠĠĠĠĠĠ Ġactivity _ main _ fab . setOnClickListener Ġ{ Ġpresenter . on Fab Click () Ġ} ĊĊĠĠĠĠĠĠĠ Ġpresenter . attach View ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . menu _ activity _ main , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġmenu . find Item ( R . id . action _ search ) ĊĠĠĠĠĠĠĠ Ġactivity _ main _ search _ view . set MenuItem ( item ) ĊĠĠĠĠĠĠĠ Ġactivity _ main _ search _ view . setOn Query Text Listener ( word Adapter ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity _ main _ drawer _ layout . open Drawer ( Gravity Compat . START ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġpresenter . on Resume () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Inf late Params ") ĊĠĠĠ Ġoverride Ġfun Ġshow Add Word Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinfl ated Dialog View Ġ= Ġlayout Inflater . inflate ( R . layout . dialog _ add _ word , Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġalert Dialog Ġ= ĠBuilder ( this ). create () ĊĠĠĠĠĠĠĠ Ġalert Dialog . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Button ( BUTTON _ POSITIVE , ĠgetString ( R . string . save )) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmain Word Ġ= Ġinfl ated Dialog View . findViewById < AppCompat EditText >( R . id . dialog _ main _ word ). text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdescription Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfl ated Dialog View . findViewById < AppCompat EditText >( R . id . dialog _ description ). text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . on Save Click ( main Word , Ġdescription ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Button ( BUTTON _ NEGATIVE , ĠgetString ( R . string . cancel )) Ġ{ Ġ_, Ġ_ Ġ-> Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetTitle ( getString ( R . string . add _ new _ word _ title )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset View ( in fl ated Dialog View ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Cancel able ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow ?. set Soft Input Mode ( WindowManager . LayoutParams . SOFT _ INPUT _ STATE _ VISIBLE ) ĊĠĠĠĠĠĠĠ Ġ}. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate Word List ( results : ĠArrayList < R ussian Word >) Ġ{ ĊĠĠĠĠĠĠĠ Ġword Adapter . words Ġ= Ġresults ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Word Index ( id : ĠString ): ĠInt Ġ= Ġword Adapter . getIndex ( id ) ĊĊĠĠĠ Ġoverride Ġfun Ġinsert Word ( word : ĠR ussian Word , Ġindex : ĠInt ) Ġ= Ġword Adapter . addItem ( word , Ġindex ) ĊĊĠĠĠ Ġoverride Ġfun Ġdelete Word ( id : ĠString ) Ġ= Ġword Adapter . delete Item ( id ) ĊĊĠĠĠ Ġoverride Ġfun Ġopen Details Screen ( r ussian Word : ĠR ussian Word ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠWord Detail Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Word Detail Activity . EXTRA _ WORD , Ġr ussian Word ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Word Added Snackbar () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsn ackBar Ġ= ĠSn ackbar . make ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById ( R . id . activity _ main _ fab ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . word _ save _ successful ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . LENGTH _ LONG ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġsn ackBar . view . set BackgroundColor ( Context Compat . getColor ( this , ĠR . color . color Dark Green )) ĊĠĠĠĠĠĠĠ Ġsn ackBar . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Word Deleted Snackbar ( r ussian Word : ĠR ussian Word , Ġindex : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsn ackBar Ġ= ĠSn ackbar . make ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById ( R . id . activity _ main _ fab ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . word _ delete _ successful ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . LENGTH _ LONG ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġsn ackBar . setAction ( getString ( R . string . undo )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . on Undo Click ( r ussian Word , Ġindex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsn ackBar . setAction TextColor ( Context Compat . getColor ( this , ĠR . color . color White )) ĊĠĠĠĠĠĠĠ Ġsn ackBar . view . set BackgroundColor ( Context Compat . getColor ( this , ĠR . color . color Dark Green )) ĊĠĠĠĠĠĠĠ Ġsn ackBar . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide Fab On Scroll Up Listener ( fab : ĠFloating ActionButton ) Ġ= Ġobject Ġ: ĠRecyclerView . On Scroll Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sc rolled ( re cyclerView : ĠRecyclerView , Ġdx : ĠInt , Ġdy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Sc rolled ( re cyclerView , Ġdx , Ġdy ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdy Ġ> Ġ 0 Ġ-> Ġfab . hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdy Ġ< Ġ 0 Ġ-> Ġfab . show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ