package Ġby . nt nk . ms lus chedule . ui . weekday Ċ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . res . Configuration Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Parcelable Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View Tree Observer Ċ import Ġandroid . view . WindowManager Ċ import Ġandroid . view . animation . Alpha Animation Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . core . app . Nav Utils Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . interpol ator . view . animation . Fast Out Slow In Interpolator Ċ import Ġandroidx . recyclerview . widget . Item Touch Helper Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġby . nt nk . ms lus chedule . R Ċ import Ġby . nt nk . ms lus chedule . data . Lesson Ċ import Ġby . nt nk . ms lus chedule . data . Note Ċ import Ġby . nt nk . ms lus chedule . data . Week day With Less ons Ċ import Ġby . nt nk . ms lus chedule . mvp . views . M vp Activity Ċ import Ġby . nt nk . ms lus chedule . ui . adapters . Note RecyclerView Adapter Ċ import Ġby . nt nk . ms lus chedule . ui . adapters . VIEW TYPE _ NOTE Ċ import Ġby . nt nk . ms lus chedule . ui . custom views . Item Swipe Callback Ċ import Ġby . nt nk . ms lus chedule . utils .* Ċ import Ġcom . google . android . material . chip . Chip Ċ import Ġcom . google . android . material . chip . Chip Drawable Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġdagger . Lazy Ċ import Ġdagger . android . Android Injection Ċ import Ġdagger . android . Android Injector Ċ import Ġdagger . android . Dispatch ing Android Injector Ċ import Ġdagger . android . Has Android Injector Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . rx kotlin . plus Assign Ċ import Ġio . reactivex . rx kotlin . subscribe By Ċ import Ġkotlinx . android . synt hetic . main . activity _ weekday .* Ċ import Ġtim ber . log . Tim ber Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠWeek day Activity Ġ: ĠM vp Activity < Week day Presenter , ĠWeek day View >(), ĊĠĠĠĠĠĠĠ ĠWeek day View , ĊĠĠĠĠĠĠĠ ĠHas Android Injector Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġre cyclerView : ĠRecyclerView ĊĠĠĠ Ġprivate Ġvar Ġweek day Id : ĠInt Ġ= ĠINVALID _ VALUE ĊĠĠĠ Ġprivate Ġvar Ġlayout Manager Saved State : ĠParcel able ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġdis pos ables Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġprivate Ġval Ġadapter : ĠNote RecyclerView Adapter ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġre cyclerView . adapter Ġas ĠNote RecyclerView Adapter ? Ġ?: ĠNote RecyclerView Adapter () ĊĊĠĠĠ Ġoverride Ġval Ġview : ĠWeek day View ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġthis ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġdispatch ing Android Injector : ĠDispatch ing Android Injector < Any > ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġinjected Presenter : ĠLazy < Week day Presenter > ĊĊĠĠĠ Ġoverride Ġfun Ġandroid Injector (): ĠAndroid Injector < Any > Ġ= Ġdispatch ing Android Injector ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Presenter (): ĠWeek day Presenter Ġ= Ġinjected Presenter . get () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠAndroid Injection . inject ( this ) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ weekday ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĊĠĠĠĠĠĠĠ Ġweek day Id Ġ= Ġintent ?. getInt Extra ( ARG _ WEEK DAY _ ID , ĠINVALID _ VALUE ) Ġ?: ĠINVALID _ VALUE ĊĠĠĠĠĠĠĠ Ġlayout Manager Saved State Ġ= ĠsavedInstanceState ?. get Parcelable ( ARG _ LAYOUT _ MANAGER _ SA VED _ STATE ) ĊĊĠĠĠĠĠĠĠ Ġre cyclerView Ġ= ĠfindViewById ( R . id . recyclerview _ weekday ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( this @ Week day Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġthis @ Week day Activity . adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġswipe Handler Ġ= Ġcreate Swipe Handler () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Touch Helper Ġ= ĠItem Touch Helper ( swipe Handler ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Touch Helper . attach To RecyclerView ( re cyclerView ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfab _ weekday . setOnClickListener Ġ{ Ġshow Note Edit Layout () Ġ} ĊĠĠĠĠĠĠĠ Ġbutton _ save _ note . setOnClickListener Ġ{ Ġon Save Note Click () Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġbutton Inactive Tint Ġ= ĠContext Compat . getColor ( this @ Week day Activity , ĠR . color . ic _ save _ note _ inactive _ tint ) ĊĠĠĠĠĠĠĠ Ġbutton _ save _ note . setColor Filter ( button Inactive Tint ) ĊĠĠĠĠĠĠĠ Ġedit text _ note . add TextChanged Listener ( object Ġ: ĠSimple Text Watcher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġif Ġ( s . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( this @ Week day Activity , ĠR . color . ic _ save _ note _ inactive _ tint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( this @ Week day Activity , ĠR . color . ic _ save _ note _ tint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton _ save _ note . setColor Filter ( color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġinit On Long Click Note Listener () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O _ MR 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnight Mode Ġ= Ġresources . configuration . ui Mode Ġand ĠConfiguration . UI _ MODE _ N IGHT _ MASK ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( night Mode Ġ== ĠConfiguration . UI _ MODE _ N IGHT _ NO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġui Flags Ġ= ĠWindow Manager . LayoutParams . FLAG _ DR AWS _ SYSTEM _ BAR _ BACK GRO UN DS Ġor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ LIGHT _ NAV IG ATION _ BAR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . decor View . system Ui Visibility Ġ= Ġui Flags ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Note Edit Layout () Ġ{ ĊĠĠĠĠĠĠĠ Ġfab _ weekday . visibility Ġ= ĠView . IN VISIBLE ĊĊĠĠĠĠĠĠĠ Ġval Ġedit Not el ayout Anim Delay : ĠLong Ġ= Ġ 5 0 ĊĠĠĠĠĠĠĠ Ġval Ġedit Note Layout Anim Duration : ĠLong Ġ= Ġ 1 0 0 ĊĊĠĠĠĠĠĠĠ Ġval ĠbackgroundColor Ġ= ĠContext Compat . getColor ( application Context , ĠR . color . un focused _ background ) ĊĠĠĠĠĠĠĠ Ġlayout _ edit _ note . set BackgroundColor ( backgroundColor ) ĊĠĠĠĠĠĠĠ Ġlayout _ edit _ note . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġlayout _ edit _ note . is Focus able Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġlayout _ edit _ note . is Clickable Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġlayout _ edit _ note . translation Y Ġ= Ġlayout _ edit _ note . height . toFloat () ĊĠĠĠĠĠĠĠ Ġlayout _ edit _ note . animate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. translation Y ( 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Start Delay ( edit Not el ayout Anim Delay ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Duration ( edit Note Layout Anim Duration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Interpolator ( Fast Out Slow In Interpolator ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Listener ( object Ġ: ĠSimple Animator Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalpha Animation Ġ= ĠAlpha Animation ( 0 f , Ġ 1 f ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Offset Ġ= Ġedit Not el ayout Anim Delay ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġedit Note Layout Anim Duration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout _ edit _ note ?. start Animation ( alpha Animation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout _ edit _ note ?. animate ()?. set Listener ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. start () ĊĊĠĠĠĠĠĠĠ Ġscroll _ view _ ch ips . translation Y Ġ= Ġscroll _ view _ ch ips . height . toFloat () ĊĠĠĠĠĠĠĠ Ġscroll _ view _ ch ips . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġscroll _ view _ ch ips . animate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. translation Y ( 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Start Delay ( edit Not el ayout Anim Delay Ġ+ Ġedit Note Layout Anim Duration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Duration ( 1 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Interpolator ( Fast Out Slow In Interpolator ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. start () ĊĊĠĠĠĠĠĠĠ Ġedit text _ note . request Focus () ĊĊĠĠĠĠĠĠĠ Ġval Ġinput Method Manager Ġ= Ġget System Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĠĠĠĠĠĠĠ Ġinput Method Manager . show Soft Input ( edit text _ note , ĠInput Method Manager . SHOW _ IMP LICIT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Save Note Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( edit text _ note . text ?. isNotBlank () Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected Note Id Ġ= Ġadapter . getSelected Note Id () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsubject Ġ= Ġget Checked Chip Text () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected Note Id Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdated Note Ġ= ĠNote ( selected Note Id , Ġedit text _ note . text . toString (), Ġsubject ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . update Selected Note ( updated Note ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . update Note ( updated Note , Ġweek day Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . insert Note ( Note ( 0 , Ġedit text _ note . text . toString (), Ġsubject ), Ġweek day Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Edit Note Layout ( reset Views Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide Edit Note Layout ( reset Views : ĠBoolean , Ġis Edit Note Layout Anim Enabled : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġimm Ġ= Ġget System Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĠĠĠĠĠĠĠ Ġimm . hide Soft Input From Window ( edit text _ note . window Token , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġedit Note Layout Anim Duration : ĠLong Ġ= Ġ 1 0 0 ĊĊĠĠĠĠĠĠĠ Ġfab _ weekday . scale X Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġfab _ weekday . scale Y Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġfab _ weekday . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġfab _ weekday . animate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Duration ( 1 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. scale Y ( 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. scale X ( 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Start Delay ( edit Note Layout Anim Duration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Interpolator ( Fast Out Slow In Interpolator ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. start () ĊĊĠĠĠĠĠĠĠ Ġval ĠbackgroundColor Ġ= ĠContext Compat . getColor ( application Context , ĠR . color . transparent ) ĊĠĠĠĠĠĠĠ Ġlayout _ edit _ note . set BackgroundColor ( backgroundColor ) ĊĠĠĠĠĠĠĠ Ġlayout _ edit _ note . is Clickable Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġlayout _ edit _ note . is Focus able Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Edit Note Layout Anim Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout _ edit _ note . animate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. translation Y ( edit text _ note . height . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Duration ( edit Note Layout Anim Duration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Interpolator ( Fast Out Slow In Interpolator ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Listener ( object Ġ: ĠSimple Animator Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscroll _ view _ ch ips ?. translation Y Ġ= Ġscroll _ view _ ch ips . height . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscroll _ view _ ch ips ?. visibility Ġ= ĠView . IN VISIBLE ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout _ edit _ note ?. visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout _ edit _ note ?. animate ()?. set Listener ( null ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( reset Views Ġ|| Ġadapter . getSelected Note Id () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreset Edit Note Layout Views () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. start () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscroll _ view _ ch ips . translation Y Ġ= Ġscroll _ view _ ch ips . height . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscroll _ view _ ch ips . visibility Ġ= ĠView . IN VISIBLE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout _ edit _ note . visibility Ġ= ĠView . IN VISIBLE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( reset Views Ġ|| Ġadapter . getSelected Note Id () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreset Edit Note Layout Views () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreset Edit Note Layout Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . de select Note () ĊĠĠĠĠĠĠĠ Ġedit text _ note ?. text ?. clear () ĊĠĠĠĠĠĠĠ Ġch ips _ subjects ?. clear Check () ĊĠĠĠĠĠĠĠ Ġscroll _ view _ ch ips ?. scrollTo ( 0 , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Checked Chip Text (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġch ips _ subjects . child Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchip Ġ= Ġch ips _ subjects . getChild At ( i ) Ġas ĠCh ip ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( chip . id Ġ== Ġch ips _ subjects . checked Chip Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġchip . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠEMPTY _ STRING ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Swipe Handler (): ĠItem Swipe Callback Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠItem Swipe Callback ( re cyclerView . context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Swipe Dirs ( re cyclerView : ĠRecyclerView , ĠviewHolder : ĠRecyclerView . ViewHolder ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( view Holder . item ViewType Ġ== ĠVIEW TYPE _ NOTE Ġ&& Ġadapter . getSelected Note Id () Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . get Swipe Dirs ( re cyclerView , ĠviewHolder ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNO _ DI REC ION ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sw ip ed ( view Holder : ĠRecyclerView . ViewHolder , Ġdirection : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( note , Ġnote View Color , Ġnote Sub group Position ) Ġ= Ġadapter . remove Note ( view Holder . adapter Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimate Zero Notes View () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . delete Note ( note . id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnote Deleted Ġ= Ġresources . getString ( R . string . sn ackbar _ note _ deleted ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( constraint layout _ weekday , Ġnote Deleted , ĠSn ackbar . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAction ( resources . getString ( R . string . sn ackbar _ action _ undo )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . restore Note ( note , Ġweek day Id , Ġnote View Color , Ġnote Sub group Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġanimate Zero Notes View () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( adapter . item Count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalpha Animation Ġ= ĠAlpha Animation ( 0 f , Ġ 1 f ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Offset Ġ= Ġ 2 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ 1 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext view _ zer on otes . start Animation ( alpha Animation ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext view _ zer on otes . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit On Long Click Note Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġdis pos ables Ġ+= Ġadapter . on Long Click Observable . subscribe By ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Next Ġ= Ġ{ Ġnote Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġch ips _ subjects . child Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchip Ġ= Ġch ips _ subjects . getChild At ( i ) Ġas ĠCh ip ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchip . isChecked Ġ= Ġchip . text Ġ== Ġnote . subject ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit text _ note . setText ( note . text , ĠTextView . Buffer Type . EDIT ABLE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Note Edit Layout () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonError Ġ= Ġ{ Ġthrowable Ġ-> ĠTim ber . e ( throwable ) Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġif Ġ( weekday Id Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNav Utils . navigate Up From Same Task ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġconstraint layout _ weekday . view Tree Observer . add On Global Layout Listener ( on Keyboard State ChangeListener ) ĊĠĠĠĠĠĠĠ Ġpresenter . init Week day View ( weekday Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ Ġif Ġ( adapter . getSelected Note Id () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Edit Note Layout ( reset Views Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġconstraint layout _ weekday . view Tree Observer . remove On Global Layout Listener ( on Keyboard State ChangeListener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġon Keyboard State ChangeListener Ġ= Ġobject Ġ: ĠView Tree Observer . On Global Layout Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġis Keyboard Visible Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Global Layout () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheight Diff Ġ= Ġconstraint layout _ weekday . root View . height Ġ- Ġconstraint layout _ weekday . height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwas Keyboard Visible Ġ= Ġis Keyboard Visible ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Keyboard Visible Ġ= Ġheight Diff Ġ> Ġapplication Context . dip To Pixels ( 2 0 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Keyboard Visible Ġ&& Ġwas Keyboard Visible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Edit Note Layout ( reset Views Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Keyboard Visible Ġ= Ġis Keyboard Visible ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠĠĠĠĠ Ġout State . put Parcelable ( ARG _ LAYOUT _ MANAGER _ SA VED _ STATE , Ġre cyclerView . layout Manager ?. on Save InstanceState ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġdis pos ables . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( layout _ edit _ note . visibility Ġ== ĠView . VISIBLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Edit Note Layout ( reset Views Ġ= Ġtrue , Ġis Edit Note Layout Anim Enabled Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( item . itemId Ġ== Ġandroid . R . id . home ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNav Utils . navigate Up From Same Task ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit View ( weekday With Less ons : ĠWeek day With Less ons < Lesson >, Ġdata : ĠList < Note >) Ġ{ ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. title Ġ= ĠAndroid Utils . get Week day From Tag ( weekday With Less ons . weekday , Ġapplication Context ) ĊĊĠĠĠĠĠĠĠ Ġadapter . init Data ( data , Ġweek day With Less ons . lessons , Ġresources ) ĊĠĠĠĠĠĠĠ Ġif Ġ( adapter . item Count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext view _ zer on otes . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager ?. on Restore InstanceState ( layout Manager Saved State ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( ch ips _ subjects . child Count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlesson Subject s Ġ= Ġweek day With Less ons . lessons ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġif Ġ( it . type Ġ!= ĠEMPTY _ STRING ) Ġ"${ it . subject }, Ġ${ it . type }" Ġelse Ġit . subject Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toSet () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lesson Subject s . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġch ips _ subjects . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( lesson Subject Ġin Ġlesson Subject s ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lesson Subject Ġ== ĠEMPTY _ STRING ) Ġcontinue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchip Ġ= ĠCh ip ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchip Drawable Ġ= ĠCh ip Drawable . createFrom Attributes ( this , Ġnull , Ġ 0 , ĠR . style . M sl u Theme _ Chip _ Choice ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchip . set Chip Drawable ( chip Drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchip . setText Appearance Resource ( R . style . M sl u Theme _ Chip _ Text _ Appearance ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchip . text Ġ= Ġlesson Subject ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġch ips _ subjects . addView ( chip ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd Note ( note : ĠNote ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtext view _ zer on otes . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġadapter . add Note ( note ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrestore Note ( note : ĠNote , Ġcolor : ĠInt , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtext view _ zer on otes . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġadapter . restore Note ( note , Ġcolor , Ġposition ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠARG _ WEEK DAY _ ID Ġ= Ġ" weekday Id " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠARG _ LAYOUT _ MANAGER _ SA VED _ STATE Ġ= Ġ" arg LayoutManager Saved State " ĊĊĠĠĠĠĠĠĠ Ġfun ĠstartActivity ( context : ĠContext , Ġweek day Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠWeek day Activity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( ARG _ WEEK DAY _ ID , Ġweek day Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ