package Ġio . github . w ulkan owy . ui . modules . attendance Ċ Ċ import Ġandroid . content . DialogInterface . BUTTON _ POSITIVE Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . Menu Inflater Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View . GONE Ċ import Ġandroid . view . View . IN VISIBLE Ċ import Ġandroid . view . View . VISIBLE Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . appcompat . view . Action Mode Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . google . android . material . datepicker . Calendar Constraints Ċ import Ġcom . google . android . material . datepicker . Material DatePicker Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġio . github . w ulkan owy . R Ċ import Ġio . github . w ulkan owy . data . db . entities . Attendance Ċ import Ġio . github . w ulkan owy . databinding . Dialog Exc use Binding Ċ import Ġio . github . w ulkan owy . databinding . Fragment Attendance Binding Ċ import Ġio . github . w ulkan owy . ui . base . Base Fragment Ċ import Ġio . github . w ulkan owy . ui . modules . attendance . summary . Attendance Summary Fragment Ċ import Ġio . github . w ulkan owy . ui . modules . main . MainActivity Ċ import Ġio . github . w ulkan owy . ui . modules . main . Main View Ċ import Ġio . github . w ulkan owy . ui . modules . message . send . SendMessage Activity Ċ import Ġio . github . w ulkan owy . ui . widgets . Divider Item Decoration Ċ import Ġio . github . w ulkan owy . utils . School Days Validator Ċ import Ġio . github . w ulkan owy . utils . dp To Px Ċ import Ġio . github . w ulkan owy . utils . get Theme Attr Color Ċ import Ġio . github . w ulkan owy . utils . school Year Start Ċ import Ġio . github . w ulkan owy . utils . to LocalDateTime Ċ import Ġio . github . w ulkan owy . utils . to Timestamp Ċ import Ġjava . time . LocalDate Ċ import Ġjavax . inject . Inject Ċ Ċ @ Android EntryPoint Ċ class ĠAtt endance Fragment Ġ: ĠBase Fragment < Fragment Attendance Binding >( R . layout . fragment _ attendance ), ĊĠĠĠ ĠAtt endance View , ĠMain View . Main Child View , ĊĠĠĠ ĠMain View . Title d View Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġpresenter : ĠAtt endance Presenter ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġatt endance Adapter : ĠAtt endance Adapter ĊĊĠĠĠ Ġoverride Ġval Ġexc use Success String : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠgetString ( R . string . attendance _ exc use _ success ) ĊĊĠĠĠ Ġoverride Ġval Ġexc use No Selection String : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠgetString ( R . string . attendance _ exc use _ no _ selection ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠS AV ED _ DATE _ KEY Ġ= Ġ" CURRENT _ DATE " ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance () Ġ= ĠAtt endance Fragment () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġtitle String Id Ġget () Ġ= ĠR . string . attendance _ title ĊĊĠĠĠ Ġoverride Ġval Ġis View Empty Ġget () Ġ= Ġatt endance Adapter . items . isEmpty () ĊĊĠĠĠ Ġoverride Ġval Ġcurrent Stack Size Ġget () Ġ= Ġ( activity Ġas ? ĠMainActivity )?. current Stack Size ĊĊĠĠĠ Ġoverride Ġval Ġexc use Action Mode : ĠBoolean Ġget () Ġ= Ġatt endance Adapter . exc use Action Mode ĊĊĠĠĠ Ġprivate Ġvar Ġaction Mode : ĠAction Mode ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġaction Mode Callback Ġ= Ġobject Ġ: ĠAction Mode . Callback Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate Action Mode ( mode : ĠAction Mode , Ġmenu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= Ġmode . menu Inflater ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . context _ menu _ exc use , Ġmenu ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Prepare Action Mode ( mode : ĠAction Mode , Ġmenu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmode . title Ġ= ĠgetString ( R . string . attendance _ exc use _ title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpresenter . on Prepare Action Mode () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Destroy Action Mode ( mode : ĠAction Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . on Destroy Action Mode () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Mode Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Action Item Clicked ( mode : ĠAction Mode , Ġmenu : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( menu . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . exc use Menu Submit Ġ-> Ġpresenter . on Exc use Submit Button Click () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠFragment Attendance Binding . bind ( view ) ĊĠĠĠĠĠĠĠ Ġmessage Container Ġ= Ġbinding . attendance Recycler ĊĠĠĠĠĠĠĠ Ġpresenter . on Attach View ( this , ĠsavedInstanceState ?. getLong ( SA VED _ DATE _ KEY )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( attendance Adapter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Listener Ġ= Ġpresenter :: on Attendance ItemSelected ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Exc use Checkbox Select Ġ= Ġpresenter :: on Exc use Checkbox Select ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith ( binding . attendance Recycler ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġatt endance Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Item Decoration ( Divider Item Decoration ( context )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġatt endance Swipe . setOn Refresh Listener ( presenter :: on Swipe Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġatt endance Swipe . setColor Scheme Colors ( require Context (). get Theme Attr Color ( R . attr . color Primary )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġatt endance Swipe . set Progress BackgroundColor Scheme Color ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (). get Theme Attr Color ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . attr . color Swipe Refresh ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġatt endance Error Retry . setOnClickListener Ġ{ Ġpresenter . on Retry () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġatt endance Error Details . setOnClickListener Ġ{ Ġpresenter . on Details Click () Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġatt endance Previous Button . setOnClickListener Ġ{ Ġpresenter . on Previous Day () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġatt endance Nav Date . setOnClickListener Ġ{ Ġpresenter . on Pick Date () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġatt endance Next Button . setOnClickListener Ġ{ Ġpresenter . onNext Day () Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġatt endance Exc use Button . setOnClickListener Ġ{ Ġpresenter . on Exc use Button Click () Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġatt endance Nav Container . set Elevation Compat ( require Context (). dp To Px ( 8 f )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . action _ menu _ attendance , Ġmenu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( item . itemId Ġ== ĠR . id . attendance Menu Summary ) Ġpresenter . on Summary Switch Selected () ĊĠĠĠĠĠĠĠ Ġelse Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate Data ( data : ĠList < Attendance >) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( attendance Adapter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems Ġ= Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate Navigation Day ( date : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . attendance Nav Date . text Ġ= Ġdate ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclear Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( attendance Adapter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems Ġ= Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġreset View () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . attendance Recycler . smooth Scroll To Position ( 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Fragment Re selected () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(:: presenter . isInitialized ) Ġpresenter . on View Re selected () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Fragment Changed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(:: presenter . isInitialized ) Ġpresenter . on Main View Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpop View () Ġ{ ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ? ĠMainActivity )?. pop View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Empty ( show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . attendance Empty . visibility Ġ= Ġif Ġ( show ) ĠVIS IBLE Ġelse ĠG ONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Error View ( show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . attendance Error . visibility Ġ= Ġif Ġ( show ) ĠVIS IBLE Ġelse ĠG ONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetError Details ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . attendance ErrorMessage . text Ġ= Ġmessage ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Progress ( show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . attendance Progress . visibility Ġ= Ġif Ġ( show ) ĠVIS IBLE Ġelse ĠG ONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġenable Swipe ( enable : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . attendance Swipe . isEnabled Ġ= Ġenable ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Content ( show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . attendance Recycler . visibility Ġ= Ġif Ġ( show ) ĠVIS IBLE Ġelse ĠG ONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Refresh ( show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . attendance Swipe . is Refresh ing Ġ= Ġshow ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Pre Button ( show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . attendance Previous Button . visibility Ġ= Ġif Ġ( show ) ĠVIS IBLE Ġelse ĠIN VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Next Button ( show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . attendance Next Button . visibility Ġ= Ġif Ġ( show ) ĠVIS IBLE Ġelse ĠIN VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Exc use Button ( show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . attendance Exc use Button . visibility Ġ= Ġif Ġ( show ) ĠVIS IBLE Ġelse ĠG ONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Attendance Dialog ( lesson : ĠAtt endance ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ? ĠMainActivity )?. show Dialog Fragment ( Attendance Dialog . newInstance ( lesson )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow DatePicker Dialog ( current Date : ĠLocalDate ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbase Date Ġ= Ġcurrent Date . school Year Start ĊĠĠĠĠĠĠĠ Ġval Ġrange Start Ġ= Ġbase Date . to Timestamp () ĊĠĠĠĠĠĠĠ Ġval Ġrange End Ġ= ĠLocalDate . now (). plus Week s ( 1 ). to Timestamp () ĊĊĠĠĠĠĠĠĠ Ġval Ġconstraints Builder Ġ= ĠCalendar Constraints . Builder (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Validator ( School Days Validator ( range Start , Ġrange End )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Start ( range Start ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset End ( range End ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdate Picker Ġ= ĠMaterial DatePicker . Builder . date Picker () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Calendar Constraints ( constraints Builder . build ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setSelection ( current Date . to Timestamp ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġdate Picker . add On Positive Button ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Ġ= Ġit . to LocalDateTime () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . on Date Set ( date . year , Ġdate . month Value , Ġdate . day OfMonth ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! parent FragmentManager . is State Saved ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate Picker . show ( parent FragmentManager , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Exc use Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog Binding Ġ= ĠDialog Exc use Binding . inflate ( LayoutInflater . from ( context )) ĊĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( R . string . attendance _ exc use _ title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setView ( dialog Binding . root ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( android . R . string . cancel ) Ġ{ Ġ_, Ġ_ Ġ-> Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Button ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBUTTON _ POSITIVE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . attendance _ exc use _ dialog _ submit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . on Exc use Dialog Submit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Binding . exc use Reason . text ?. toString (). or Empty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġopen Summary View () Ġ{ ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ? ĠMainActivity )?. push View ( Attendance Summary Fragment . newInstance ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart Action Mode () Ġ{ ĊĠĠĠĠĠĠĠ Ġaction Mode Ġ= Ġ( activity Ġas ĠMainActivity ?) ?. start Support Action Mode ( action Mode Callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart SendMessage Intent ( date : ĠLocalDate , Ġnumbers : ĠString , Ġreason : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġreason Full Text Ġ= ĠgetString ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . attendance _ exc use _ formula , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnumbers , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( reason . isNotBlank ()) Ġ" Ġ${ getString ( R . string . attendance _ exc use _ reason )} Ġ" Ġelse Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreason . if Blank Ġ{ Ġ"" Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( SendMessage Activity . getStart Intent ( require Context (), Ġreason Full Text )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Exc use Check boxes ( show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġatt endance Adapter . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexc use Action Mode Ġ= Ġshow ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfinish Action Mode () Ġ{ ĊĠĠĠĠĠĠĠ Ġaction Mode ?. finish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠĠĠĠĠ Ġout State . put Long ( SA VED _ DATE _ KEY , Ġpresenter . current Date . to Epoch Day ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġpresenter . on Detach View () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠ Ġ} Ċ } Ċ