package Ġhe b . apps . math trainer . ui . activities . quiz . cho os ers Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . widget . LinearLayout Ċ import Ġhe b . apps . math trainer . R Ċ import Ġhe b . apps . math trainer . data . quiz . category . Category Ċ import Ġhe b . apps . math trainer . memory . db . tasks . categories . Get Categories Task Ċ import Ġhe b . apps . math trainer . ui . dialogs . Error Dialog Ċ import Ġhe b . apps . math trainer . ui . dialogs . help . Help Category Dialog Ċ import Ġhe b . apps . math trainer . ui . widget . quiz . category . Category Bt Ċ import Ġhe b . apps . math trainer . utils . view . add Match Pr nt View Ċ Ċ class ĠChoose Category Activity Ġ: ĠBase Chooser Activity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlayout Holder : ĠLayout Holder ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Activity View ( R . layout . activity _ choose _ category ) ĊĠĠĠĠĠĠĠ Ġlayout Holder Ġ= ĠLayout Holder () ĊĊĠĠĠĠĠĠĠ Ġload Categories () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġload Ġcategories Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġload Categories () Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Loading View () ĊĊĠĠĠĠĠĠĠ Ġ// Ġget Ġcategories Ġfrom ĠDB ĊĠĠĠĠĠĠĠ Ġval Ġget Categories Task Ġ= ĠGet Categories Task ( application Context ) ĊĠĠĠĠĠĠĠ Ġget Categories Task . on Finish Listener Ġ= Ġ{ Ġcategories Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( categories . isNull OrEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow No Categories Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Categories B ts ( categories ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Loading View () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġget Categories Task . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġshow Ġnot Ġcategories Ġdialog Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġshow No Categories Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠError Dialog ( this @ Choose Category Activity ) ĊĠĠĠĠĠĠĠ Ġdialog . setMessage ( R . string . no _ categories _ error _ msg ) ĊĠĠĠĠĠĠĠ Ġdialog . setOn Dismiss Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġadd Ġcategories Ġbuttons Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġadd Categories B ts ( categories : ĠList < Category >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġbuild Ġviews ĊĠĠĠĠĠĠĠ Ġcategories . forEach Ġ{ Ġadd Category Bt ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġadd Ġcategory Ġbutton Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġadd Category Bt ( category : ĠCategory ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcategory Bt Ġ= ĠCategory Bt ( this , Ġcategory , Ġfalse ) Ġ// ĠTODO Ġneed Ġto Ġknow Ġif Ġbutton Ġis Ġlocked ĊĠĠĠĠĠĠĠ Ġcategory Bt . on ClickListener Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( category Bt . locked ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Lock Category Bt Dialog ( category Bt . category ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Choose Topic Activity ( category Bt . category ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcategory Bt . on Help ClickListener Ġ= Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Help Category Dialog ( category Bt . category ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlayout Holder . ll List Categories . add Match Pr nt View ( category Bt ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġshow Ġlock Ġcategory Ġbutton Ġdialog Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġshow Lock Category Bt Dialog ( category : ĠCategory ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġstart Ġchoose Ġtopic Ġactivity Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġstart Choose Topic Activity ( category : ĠCategory ) Ġ{ ĊĠĠĠĠĠĠĠ Ġintent s Manager . Cho os ers (). start Choose Topic Activity ( category . id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġshow Ġhelp Ġcategory Ġdialog Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġshow Help Category Dialog ( category : ĠCategory ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhelp Category Dialog Ġ= ĠHelp Category Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Choose Category Activity , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcategory ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġhelp Category Dialog . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Restore InstanceState ( savedInstanceState : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Restore InstanceState ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġ/* ĠsavedInstanceState . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrestore Ġhere ĊĠĠĠĠĠĠĠ Ġ} Ġ*/ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* Ġout State . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsave Ġhere ĊĠĠĠĠĠĠĠ Ġ} Ġ*/ ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠLayout Holder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġll List Categories : ĠLinearLayout Ġ= ĠfindViewById ( R . id . linear Layout _ categories ) ĊĠĠĠ Ġ} Ċ } Ċ