package Ġcz . q ase . android . form builder library . element Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Color State List Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . RadioButton Ċ import Ġandroid . widget . Radio Group Ċ import Ġandroidx . appcompat . widget . AppCompat RadioButton Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . graphics . Color Utils Ċ import Ġcz . q ase . android . form builder library . Form Style Bundle Ċ import Ġcz . q ase . android . form builder library . R Ċ import Ġcz . q ase . android . form builder library . common . set BackgroundColor ResourceId Ċ import Ġcz . q ase . android . form builder library . element . generic . Form Element Valid atable Ċ import Ġcz . q ase . android . form builder library . element . generic . Value Callback Ċ import Ġcz . q ase . android . form builder library . validator . Form Validator Ċ Ċ class ĠRadio Buttons Element < T >( ĊĠĠĠ Ġprivate Ġval Ġvalue : ĠT ? Ġ= Ġnull , ĊĠĠĠ Ġprivate Ġvar Ġavailable Values : ĠList < T >, ĊĠĠĠ Ġprivate Ġval Ġvalue Callback : ĠValue Callback < T >? Ġ= Ġnull , ĊĠĠĠ Ġform Validators : ĠMutable List < Form Validator < T >> Ġ= ĠArrayList (), ĊĠĠĠ Ġprivate Ġval Ġgroup Component : ĠInt Ġ= ĠR . layout . form _ group _ item _ padding , ĊĠĠĠ Ġprivate Ġval Ġform Style Bundle : ĠForm Style Bundle ? Ġ= Ġnull Ċ ) Ġ: ĠForm Element Valid atable < T >( form Validators ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġradio Group : ĠRadio Group ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġview Group : ĠViewGroup ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġhide () Ġ{ ĊĠĠĠĠĠĠĠ Ġview Group ?. visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow () Ġ{ ĊĠĠĠĠĠĠĠ Ġview Group ?. visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate View ( context : ĠContext , Ġform Style Bundle : ĠForm Style Bundle ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= Ġcontext . getSystem Service ( Context . LAYOUT _ IN FL ATER _ SERVICE ) Ġas ĠLayoutInflater ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( group Component , Ġnull ) Ġas ĠViewGroup ĊĠĠĠĠĠĠĠ Ġval Ġradio Group Ġ= ĠRadio Group ( context ) ĊĠĠĠĠĠĠĠ Ġfor Ġ(( i , Ġavailable Value ) Ġin Ġavailable Values . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġradio Button Ġ= ĠAppCompat RadioButton ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠRadio Group . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRadio Group . LayoutParams . WRAP _ CONTENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRadio Group . LayoutParams . WRAP _ CONTENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams . set Margins ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 2 0 , Ġ 0 , Ġ 2 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġradio Button . layout Params Ġ= Ġparams ĊĠĠĠĠĠĠĠĠĠĠĠ Ġradio Button . id Ġ= Ġi ĊĠĠĠĠĠĠĠĠĠĠĠ Ġradio Button . text Ġ= Ġavailable Value . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ== Ġavailable Value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġradio Button . isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġradio Button . setTextColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġform Style Bundle . primary TextColor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor State List Ġ= ĠColor State List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ArrayOf (- android . R . attr . state _ checked , Ġandroid . R . attr . state _ enabled ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ArrayOf ( android . R . attr . state _ checked , Ġandroid . R . attr . state _ enabled ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ArrayOf (- android . R . attr . state _ checked , Ġ- android . R . attr . state _ enabled ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ArrayOf ( android . R . attr . state _ checked , Ġ- android . R . attr . state _ enabled ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġint ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( context , Ġform Style Bundle . color Disabled Accent ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( context , Ġform Style Bundle . color Accent ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor Utils . blend ARGB ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġform Style Bundle . color Disabled Accent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor . BLACK , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 4 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor Utils . blend ARGB ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġform Style Bundle . color Accent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor . BLACK , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 4 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġradio Button . button Tint List Ġ= Ġcolor State List Ġ// set Ġthe Ġcolor Ġt int Ġlist ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġradio Group . addView ( radioButton ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġradio Group . orientation Ġ= ĠLinearLayout . HORIZONTAL ĊĠĠĠĠĠĠĠ Ġradio Group . setOn Checked ChangeListener Ġ{ Ġgroup : ĠRadio Group , Ġchecked Id : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Callback ?. callback ( available Values . get ( checked Id )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġview . addView ( radio Group ) ĊĠĠĠĠĠĠĠ Ġthis . radio Group Ġ= Ġradio Group ĊĠĠĠĠĠĠĠ Ġview . set BackgroundColor ResourceId ( context , Ġform Style Bundle . secondary BackgroundColor ) ĊĠĠĠĠĠĠĠ Ġview Group Ġ= Ġview ĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Val (): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġradio Group ?. checked RadioButton Id ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ>= Ġavailable Values . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġavailable Values . get ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġenable Element ( context : ĠContext , Ġform Style Bundle : ĠForm Style Bundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcorrect Style Bundle Ġ= Ġthis . form Style Bundle Ġ?: Ġform Style Bundle ĊĠĠĠĠĠĠĠ Ġradio Group ?. isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġfor Ġ( with Index Ġin Ġavailable Values . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġradio Button Ġ= Ġradio Group ?. findViewById < RadioButton >( with Index . index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġradio Button ?. isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġview Group ?. set BackgroundColor ResourceId ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , Ġcorrect Style Bundle . secondary BackgroundColor ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdisable Element ( context : ĠContext , Ġform Style Bundle : ĠForm Style Bundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcorrect Style Bundle Ġ= Ġthis . form Style Bundle Ġ?: Ġform Style Bundle ĊĠĠĠĠĠĠĠ Ġradio Group ?. isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġfor Ġ( with Index Ġin Ġavailable Values . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġradio Button Ġ= Ġradio Group ?. findViewById < RadioButton >( with Index . index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġradio Button ?. isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġview Group ?. set BackgroundColor ResourceId ( context , Ġcorrect Style Bundle . disabled BackgroundColor ) ĊĠĠĠ Ġ} Ċ }