package Ġio . github . w ulkan owy . ui . modules . grade Ċ Ċ 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 . IN VISIBLE Ċ import Ġandroid . view . View . VISIBLE Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġio . github . w ulkan owy . R Ċ import Ġio . github . w ulkan owy . ui . base . Base Fragment Ċ import Ġio . github . w ulkan owy . ui . base . Base Fragment Pager Adapter Ċ import Ġio . github . w ulkan owy . ui . modules . grade . details . Grade Details Fragment Ċ import Ġio . github . w ulkan owy . ui . modules . grade . statistics . Grade Statistics Fragment Ċ import Ġio . github . w ulkan owy . ui . modules . grade . summary . Grade Summary Fragment Ċ import Ġio . github . w ulkan owy . ui . modules . main . Main View Ċ import Ġio . github . w ulkan owy . utils . dp To Px Ċ import Ġio . github . w ulkan owy . utils . setOn Select Page Listener Ċ import Ġkotlinx . android . synt hetic . main . fragment _ grade .* Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠGr ade Fragment Ġ: ĠBase Fragment (), ĠGr ade View , ĠMain View . Main Child View , ĠMain View . Title d View Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġpresenter : ĠGr ade Presenter ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġpager Adapter : ĠBase Fragment Pager Adapter ĊĊĠĠĠ Ġprivate Ġvar Ġse mester Switch Menu : ĠMenuItem ? Ġ= Ġnull ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠS AV ED _ SE ME STER _ KEY Ġ= Ġ" CURRENT _ SE ME STER " ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance () Ġ= ĠGr ade Fragment () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġtitle String Id Ġget () Ġ= ĠR . string . grade _ title ĊĊĠĠĠ Ġoverride Ġval ĠcurrentPage Index Ġget () Ġ= Ġgrade ViewPager . currentItem ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ grade , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġpresenter . on Attach View ( this , ĠsavedInstanceState ?. getInt ( SA VED _ SE ME STER _ KEY )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . action _ menu _ grade , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġse mester Switch Menu Ġ= Ġmenu . find Item ( R . id . grade Menu Se mester ) ĊĠĠĠĠĠĠĠ Ġpresenter . onCreate Menu () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( pager Adapter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer Id Ġ= Ġgrade ViewPager . id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Fragments With Title ( map Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGr ade Details Fragment . newInstance () Ġto ĠgetString ( R . string . all _ details ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGr ade Summary Fragment . newInstance () Ġto ĠgetString ( R . string . grade _ menu _ summary ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGr ade Statistics Fragment . newInstance () Ġto ĠgetString ( R . string . grade _ menu _ statistics ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith ( grade ViewPager ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġpager Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoff screen Page Limit Ġ= Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On Select Page Listener ( presenter :: on Page Selected ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith ( grade Tab Layout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup With ViewPager ( grade ViewPager ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Elevation Compat ( context . dp To Px ( 4 f )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġgrade Error Retry . setOnClickListener Ġ{ Ġpresenter . on Retry () Ġ} ĊĠĠĠĠĠĠĠ Ġgrade Error Details . setOnClickListener Ġ{ Ġpresenter . on Details Click () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( item . itemId Ġ== ĠR . id . grade Menu Se mester ) Ġpresenter . on Se mester Switch () ĊĠĠĠĠĠĠĠ Ġelse Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Fragment Re selected () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(:: presenter . isInitialized ) Ġpresenter . on View Re selected () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Content ( show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgrade ViewPager . visibility Ġ= Ġif Ġ( show ) ĠVIS IBLE Ġelse ĠIN VISIBLE ĊĠĠĠĠĠĠĠ Ġgrade Tab Layout . visibility Ġ= Ġif Ġ( show ) ĠVIS IBLE Ġelse ĠIN VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Progress ( show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgrade Progress . visibility Ġ= Ġif Ġ( show ) ĠVIS IBLE Ġelse ĠIN VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Error View ( show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgrade Error . visibility Ġ= Ġif Ġ( show ) ĠVIS IBLE Ġelse ĠIN VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetError Details ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgrade ErrorMessage . text Ġ= Ġmessage ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Se mester Switch ( show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġse mester Switch Menu ?. isVisible Ġ= Ġshow ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Se mester Dialog ( selectedIndex : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchoices Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . grade _ semester , Ġ 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . grade _ semester , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Single Choice Items ( choices , Ġselected Index ) Ġ{ Ġdialog , Ġwhich Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . on Se mester Selected ( which ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( R . string . grade _ switch _ semester ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( android . R . string . cancel ) Ġ{ Ġ_, Ġ_ Ġ-> Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Child Refresh () Ġ{ ĊĠĠĠĠĠĠĠ Ġpresenter . on Child View Refresh () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Child Fragment Loaded ( semester Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpresenter . on Child View Loaded ( semester Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnotify Child Load Data ( index : ĠInt , Ġse mester Id : ĠInt , Ġforce Refresh : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( pager Adapter . get Fragment Instance ( index ) Ġas ? ĠGr ade View . Grade Child View )?. on Parent Load Data ( semester Id , Ġforce Refresh ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnotify Child Parent Re selected ( index : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( pager Adapter . get Fragment Instance ( index ) Ġas ? ĠGr ade View . Grade Child View )?. on Parent Re selected () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnotify Child Se mester Change ( index : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( pager Adapter . get Fragment Instance ( index ) Ġas ? ĠGr ade View . Grade Child View )?. on Parent Change Se mester () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠĠĠĠĠ Ġout State . put Int ( SA VED _ SE ME STER _ KEY , Ġpresenter . selectedIndex ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġpresenter . on Detach View () ĊĠĠĠ Ġ} Ċ } Ċ