package Ġcom . example . food delivery app . ui . setting Ċ Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Radio Group Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġcom . example . food delivery app . R Ċ import Ġcom . example . food delivery app . databinding . Fragment Settings Binding Ċ import Ġcom . example . food delivery app . model . entity . User Ċ import Ġcom . example . food delivery app . model . entity . profile . UserRequest Ċ import Ġcom . example . food delivery app . ui . profile . Profile Fragment Ċ import Ġcom . example . food delivery app . utils . Resource Ċ import Ġcom . example . food delivery app . utils . g one Ċ import Ġcom . example . food delivery app . utils . show Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ Ċ @ Android EntryPoint Ċ class ĠSetting Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġ_ binding : ĠFragment Settings Binding ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠSetting ViewModel Ġby Ġview Models () ĊĠĠĠ Ġprivate Ġvar Ġimage : ĠInt Ġ= ĠR . mip map . no _ data ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠFragment Settings Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġ_ binding . root ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġinit Views () ĊĠĠĠĠĠĠĠ Ġadd Listeners () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Views () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . getUser (). observe ( view Lifecycle Owner , Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( response . status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResource . Status . LOADING Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ binding . progress Bar . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResource . Status . SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Field ( response . data ?. user ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Setting Visible ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResource . Status . ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Setting Visible ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Field ( user : ĠUser ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ binding . name EditText . setText ( user ?. name ) ĊĠĠĠĠĠĠĠ Ġ_ binding . mail EditText . setText ( user ?. email ) ĊĠĠĠĠĠĠĠ Ġ_ binding . address EditText . setText ( user ?. address ) ĊĠĠĠĠĠĠĠ Ġ_ binding . phoneNumber EditText . setText ( user ?. phone ) ĊĠĠĠĠĠĠĠ Ġuser ?. payment Method ?. let Ġ{ Ġ_ binding . payment Radio Group . check ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġimage Ġ= ĠProfile Fragment . getImage Resource ( user ?. profile Image ) ĊĠĠĠĠĠĠĠ Ġ_ binding . avatar ImageView . setImage Resource ( Profile Fragment . getImage Resource ( user ?. profile Image )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Listeners () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ binding . avatar Constraint Layout . setOnClickListener Ġ{ Ġchange Avatar ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ_ binding . update Button . setOnClickListener Ġ{ Ġupdate User () Ġ} ĊĠĠĠĠĠĠĠ Ġ_ binding . back ImageView . setOnClickListener Ġ{ Ġfind Nav Controller (). pop Back Stack () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġchange Avatar ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdesign : ĠView Ġ= Ġlayout Inflater . inflate ( R . layout . item _ avatar _ select , Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġradio Group : ĠRadio Group Ġ= Ġdesign . findViewById ( R . id . avatar Radio Group ) ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAlertDialog . Builder ( view . context ) ĊĠĠĠĠĠĠĠ Ġbuilder . setView ( design ) ĊĊĠĠĠĠĠĠĠ Ġval Ġselected Id Ġ= Ġget RadioButton Id ( image ) ĊĠĠĠĠĠĠĠ Ġradio Group . check ( selected Id ) ĊĠĠĠĠĠĠĠ Ġradio Group . setOn Checked ChangeListener Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Ġ= Ġget ImageView ( radio Group . checked RadioButton Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbuilder . set Positive Button ( getString ( R . string . save )) Ġ{ Ġ_: ĠDialog Interface , Ġ_: ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ binding . avatar ImageView . setImage Resource ( image ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbuilder . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate User () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġ_ binding . name EditText . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġmail Ġ= Ġ_ binding . mail EditText . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġphone Ġ= Ġ_ binding . phoneNumber EditText . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġaddress Ġ= Ġ_ binding . address EditText . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġpayment Method Ġ= Ġ_ binding . payment Radio Group . checked RadioButton Id ĊĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠUser Request ( mail , Ġname , Ġaddress , Ġphone , Ġimage . toString (), Ġpayment Method ) ĊĠĠĠĠĠĠĠ ĠviewModel . update User ( user ). observe ( view Lifecycle Owner , Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( response . status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResource . Status . LOADING Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ binding . progress Bar . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResource . Status . SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( R . id . action _ setting Fragment _ to _ profile Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Setting Visible ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResource . Status . ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Setting Visible ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Setting Visible ( isVisible : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ binding . progress Bar . g one () ĊĠĠĠĠĠĠĠ Ġ_ binding . container . isVisible Ġ= Ġis Visible ĊĠĠĠĠĠĠĠ Ġif Ġ( isVisible . not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle (" Error ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage (" There Ġis Ġa Ġproblem ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button (" Cancel ") Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). pop Back Stack () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġget ImageView ( id : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . avatar RadioButton 1 Ġ-> ĠR . mip map . avatar _ 1 _ foreground ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . avatar RadioButton 2 Ġ-> ĠR . mip map . avatar _ 2 _ foreground ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . avatar RadioButton 3 Ġ-> ĠR . mip map . avatar _ 3 _ foreground ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . avatar RadioButton 4 Ġ-> ĠR . mip map . avatar _ 4 _ foreground ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . avatar RadioButton 5 Ġ-> ĠR . mip map . avatar _ 5 _ foreground ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . avatar RadioButton 6 Ġ-> ĠR . mip map . avatar _ 6 _ foreground ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . avatar RadioButton 7 Ġ-> ĠR . mip map . avatar _ 7 _ foreground ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . avatar RadioButton 8 Ġ-> ĠR . mip map . avatar _ 8 _ foreground ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . avatar RadioButton 9 Ġ-> ĠR . mip map . avatar _ 9 _ foreground ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . mip map . no _ data ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget RadioButton Id ( image : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( image ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . mip map . avatar _ 1 _ foreground Ġ-> ĠR . id . avatar RadioButton 1 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . mip map . avatar _ 2 _ foreground Ġ-> ĠR . id . avatar RadioButton 2 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . mip map . avatar _ 3 _ foreground Ġ-> ĠR . id . avatar RadioButton 3 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . mip map . avatar _ 4 _ foreground Ġ-> ĠR . id . avatar RadioButton 4 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . mip map . avatar _ 5 _ foreground Ġ-> ĠR . id . avatar RadioButton 5 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . mip map . avatar _ 6 _ foreground Ġ-> ĠR . id . avatar RadioButton 6 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . mip map . avatar _ 7 _ foreground Ġ-> ĠR . id . avatar RadioButton 7 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . mip map . avatar _ 8 _ foreground Ġ-> ĠR . id . avatar RadioButton 8 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . mip map . avatar _ 9 _ foreground Ġ-> ĠR . id . avatar RadioButton 9 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ } ĊĊ