package Ġcom . kar h oo . uis dk . screen . rides . feedback Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . text . Editable Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroidx . annotation . Attr Res Ċ import Ġcom . kar h oo . uis dk . R Ċ import Ġcom . kar h oo . uis dk . base . listener . Simple Text Watcher Ċ import Ġcom . kar h oo . uis dk . base . validator . Empty Field Validator Ċ import Ġcom . kar h oo . uis dk . util . extension . show Soft Keyboard Ċ import Ġkotlinx . android . synt hetic . main . uis dk _ view _ r ated _ question . view . comment EditText Ċ import Ġkotlinx . android . synt hetic . main . uis dk _ view _ r ated _ question . view . comment EditText Layout Ċ import Ġkotlinx . android . synt hetic . main . uis dk _ view _ r ated _ question . view . question Text Ċ import Ġkotlinx . android . synt hetic . main . uis dk _ view _ r ated _ question . view . rating Widget Ċ Ċ /** Ċ Ġ* ĠWidget Ġfor Ġproviding Ġa Ġquestion Ġwith Ġa Ġrating Ġbar Ġand Ġcomment Ċ Ġ* ĠIs Ġconfigured Ġvia Ġlayout ĠXML . ĠSee Ġexample Ġif ĠFeedback View 's Ġlayout . Ċ Ġ*/ Ċ class ĠR ated Question View Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġ@ Attr Res Ġdef Style Attr : ĠInt Ġ= Ġ 0 ) ĊĠĠĠ Ġ: ĠFrame Layout ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĊĠĠĠ Ġvar ĠfieldId : ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġval Ġrating : ĠInt Ġby Ġlazy Ġ{ Ġrating Widget . rating . toInt () Ġ} ĊĊĠĠĠ Ġval Ġadditional Comments Ġby Ġlazy Ġ{ Ġcomment EditText . text . toString () Ġ} ĊĊĠĠĠ Ġvar Ġactions : ĠR ated Questions M VP . Actions ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġis Comment Added Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġvar Ġvalidated Ġ= Ġfalse ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠView . inflate ( context , ĠR . layout . uis dk _ view _ r ated _ question , Ġthis ) ĊĊĠĠĠĠĠĠĠ Ġwith ( context . obtain Styled Attributes ( attrs , ĠR . style able . R ated Question View )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquestion Text . text Ġ= ĠgetString ( R . style able . R ated Question View _ question ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfieldId Ġ= ĠgetString ( R . style able . R ated Question View _ field _ id ). or Empty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cycle () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset Listeners () ĊĠĠĠĠĠĠĠ Ġset Errors () ĊĠĠĠĠĠĠĠ Ġset Validators () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Listeners () Ġ{ ĊĠĠĠĠĠĠĠ Ġrating Widget . setOn Rating Bar ChangeListener Ġ{ Ġ_, Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck R ated Question Complete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomment EditText . request Focus () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomment EditText . show Soft Keyboard () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcomment EditText . add TextChanged Listener ( object Ġ: ĠSimple Text Watcher () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( comment EditText . editable Text . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Comment Added Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck R ated Question Invalid ated () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! is Comment Added ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Comment Added Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck R ated Question Complete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġcomment EditText . setOn Focus ChangeListener Ġ{ Ġ_, Ġhas Focus Ġ-> Ġcomment EditText Layout . set Focus ( has Focus ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Errors () Ġ{ ĊĠĠĠĠĠĠĠ Ġcomment EditText Layout . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ErrorMsg ( R . string . kh _ uis dk _ invalid _ empty _ field ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetError TextAppearance ( R . style . Text _ Red _ Small ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Validators () Ġ{ ĊĠĠĠĠĠĠĠ Ġcomment EditText Layout . set Validator ( Empty Field Validator ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck R ated Question Complete () Ġ{ ĊĠĠĠĠĠĠĠ Ġcomment EditText Layout . set Focus ( false ) ĊĠĠĠĠĠĠĠ Ġif Ġ( rating Widget . rating Ġ> Ġ 0 Ġ&& Ġcomment EditText . editable Text . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidated Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactions ?. on R ated Question View Complete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrating Widget . setOn Rating Bar ChangeListener Ġ{ Ġ_, Ġ_, Ġ_ Ġ-> Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck R ated Question Invalid ated () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( rating Widget . rating Ġ> Ġ 0 Ġ&& Ġcomment EditText . editable Text . isEmpty () Ġ&& Ġvalidated ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidated Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactions ?. on R ated Question Invalid ated () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ