package Ġbr . com . me i ado is . deco le . presentation . user . account Ċ Ċ import Ġandroid . Manifest . permission .* Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . text . InputType Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . input method . Editor Info Ċ import Ġandroid . widget . Array Adapter Ċ import Ġandroid . widget . Auto Complete TextView Ċ import Ġandroid . widget . EditText Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . view . children Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġbr . com . me i ado is . deco le . R Ċ import Ġbr . com . me i ado is . deco le . data . model . Segment Ċ import Ġbr . com . me i ado is . deco le . databinding . Activity Account Binding Ċ import Ġbr . com . me i ado is . deco le . presentation . auth . Login Activity Ċ import Ġbr . com . me i ado is . deco le . presentation . user . account . binding . Fields Enum Ċ import Ġbr . com . me i ado is . deco le . presentation . user . account . view model . Account ViewModel Ċ import Ġbr . com . me i ado is . deco le . presentation . user . account . view model . Account ViewModel Factory Ċ import Ġbr . com . me i ado is . deco le . util . Cor outines Ċ import Ġbr . com . me i ado is . deco le . util . Mask Ċ import Ġbr . com . me i ado is . deco le . util . dialog . Custom Dialog Ċ import Ġbr . com . me i ado is . deco le . util . exception . ClientException Ċ import Ġbr . com . me i ado is . deco le . util . exception . No Internet Exception Ċ import Ġbr . com . me i ado is . deco le . util . extension . long Snackbar Ċ import Ġbr . com . me i ado is . deco le . util . extension . short Snackbar Ċ import Ġbr . com . me i ado is . deco le . util . receiver . Network Change Receiver Ċ import Ġcom . google . android . material . sn ackbar . Base Transient Bottom Bar Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġcom . google . android . material . text field . TextInput EditText Ċ import Ġcom . google . android . material . text field . TextInput Layout Ċ import Ġcom . google . firebase . crash ly t ics . k tx . crash ly t ics Ċ import Ġcom . google . firebase . k tx . Firebase Ċ import Ġkotlinx . android . synt hetic . main . activity _ account .* Ċ import Ġorg . kode in . di . K ode in Aware Ċ import Ġorg . kode in . di . android . kode in Ċ import Ġorg . kode in . di . generic . instance Ċ import Ġkotlin . reflect . K Class Ċ Ċ class ĠAccount Activity Ġ: ĠAppCompatActivity (), ĠK ode in Aware , ĠAccount Listener Ġ{ ĊĠĠĠ Ġoverride Ġval Ġk ode in Ġby Ġk ode in () ĊĠĠĠ Ġprivate Ġval Ġfactory : ĠAccount ViewModel Factory Ġby Ġinstance () ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġaccount ViewModel : ĠAccount ViewModel ĊĠĠĠ Ġprivate Ġvar Ġm Network Receiver : ĠBroadcast Receiver ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġresult For After Permissions Granted : ĠInt Ġ= Ġ- 1 ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġaccount ViewModel Ġ= ĠViewModel Provider ( this , Ġfactory ). get ( Account ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġaccount ViewModel . account Listener Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġval Ġbinding : ĠActivity Account Binding Ġ= ĠData Binding Util . set ContentView ( this , ĠR . layout . activity _ account ) ĊĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Ġ= Ġaccount ViewModel ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Owner Ġ= Ġthis @ Account Activity ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm Network Receiver Ġ= ĠNetwork Change Receiver ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! it ) Ġset Content Visibility ( CONTENT _ NO _ INTER NET ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Ġ{ Ġunregister Network Receiver () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset Adapter To Segment Dropdown () ĊĠĠĠĠĠĠĠ Ġset Remove Error Listener () ĊĠĠĠĠĠĠĠ Ġset Click Listeners () ĊĠĠĠĠĠĠĠ Ġset Image Inputs () ĊĠĠĠĠĠĠĠ Ġset Input Masks () ĊĊĠĠĠĠĠĠĠ Ġinput _ company _ description . ime Options Ġ= ĠEditor Info . IME _ ACTION _ DONE ĊĠĠĠĠĠĠĠ Ġinput _ company _ description . set Raw InputType ( InputType . TYPE _ TEXT _ FLAG _ CAP _ SENT ENCES ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġregion ĠPermissions ĊĠĠĠ Ġprivate Ġfun Ġinit Pick ing From Gallery ( result Code : ĠInt , Ġshow Dialog : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( check Self Permission ( WRITE _ EXTERNAL _ STORAGE ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show Dialog Ġ&& Ġshould Show Request Permission R ationale ( READ _ EXTERNAL _ STORAGE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Request Permission R ationale ( result Code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Permissions ( array Of ( WRITE _ EXTERNAL _ STORAGE ), ĠREAD _ WRITE _ PERMISSION S _ RESULT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult For After Permissions Granted Ġ= ĠresultCode ĊĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpick Image From Gallery ( result Code ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Request Permission R ationale ( result Code : ĠInt ){ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠgetString ( R . string . storage _ permission _ ration ale _ message ) ĊĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= ĠgetString ( R . string . storage _ permission _ ration ale _ title ) ĊĊĠĠĠĠĠĠĠ ĠCustom Dialog ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create ( title , Ġmessage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Neutral Button ( getString ( R . string . ok )) Ġ{ Ġinit Pick ing From Gallery ( result Code , Ġfalse ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < String >, Ġgrant Results : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠREAD _ WRITE _ PERMISSION S _ RESULT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( grant Results . isNotEmpty () Ġ&& Ġgrant Results . all Ġ{ Ġit Ġ== ĠPackage Manager . PERMISSION _ GRAN TED Ġ})) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result For After Permissions Granted Ġ!= Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpick Image From Gallery ( result For After Permissions Granted ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// Ġend region ĊĊĠĠĠ Ġ// Ġregion ĠImage ĠPick ing ĊĠĠĠ Ġprivate Ġfun Ġpick Image From Gallery ( result Code : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ P ICK ) ĊĠĠĠĠĠĠĠ Ġintent . type Ġ= ĠDEFAULT _ IMAGE _ TYPE ĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , ĠresultCode ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( result Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity . RESULT _ OK Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIMAGE _ BAN NER _ RESULT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount ViewModel . company Data . value !!. banner . path Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetImage From FilePath ( data ) Ġ?: ĠString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( account ViewModel . company Data . value !!. banner . path . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount ViewModel . company Data . value !!. banner . type Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Resolver . getType ( data !!. data !! ) Ġ?: ĠDEFAULT _ IMAGE _ TYPE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount ViewModel . company Data . value !!. banner . name Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount ViewModel . get FileName ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount ViewModel . company Data . value !!. banner . path ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount ViewModel . company Data . value !!. banner . updated Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIMAGE _ LOG O _ RESULT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount ViewModel . company Data . value !!. thumbnail . path Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetImage From FilePath ( data ) Ġ?: ĠString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( account ViewModel . company Data . value !!. thumbnail . path . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount ViewModel . company Data . value !!. thumbnail . type Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Resolver . getType ( data !!. data !! ) Ġ?: ĠDEFAULT _ IMAGE _ TYPE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount ViewModel . company Data . value !!. thumbnail . name Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount ViewModel . get FileName ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount ViewModel . company Data . value !!. thumbnail . path ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount ViewModel . company Data . value !!. thumbnail . updated Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Image Pick Ex ", Ġex . message Ġ?: Ġ" No Ġmessage ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase . crash ly t ics . record Exception ( ex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetImage From FilePath ( data : ĠIntent ?): ĠString ? Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( data Ġ!= Ġnull Ġ&& Ġdata . data Ġ!= Ġnull ) ĠgetPath From URI ( data . data !! ) Ġelse ĠString () ĊĊĠĠĠ Ġprivate Ġfun ĠgetPath From URI ( content Uri : ĠUri ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= Ġcontent Resolver . query ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Uri , ĠarrayOf ( Media Store . Audio . Media . DATA ), Ġnull , Ġnull , Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval ĠcolumnIndex : ĠInt Ġ= Ġcursor ?. getColumnIndex OrThrow ( Media Store . Audio . Media . DATA ) Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠ Ġcursor ?. moveTo First () ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġcursor ?. getString ( column Index ) ĊĠĠĠĠĠĠĠ Ġcursor ?. close () ĊĠĠĠĠĠĠĠ Ġreturn Ġpath ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// Ġend region ĊĊĠĠĠ Ġ// Ġregion ĠLocal ĠFunctions ĊĠĠĠ Ġprivate Ġfun Ġinit ( on Finish : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Content Visibility ( CONTENT _ NO _ CONTENT ) ĊĠĠĠĠĠĠĠ Ġset Page ProgressBar Visibility ( true ) ĊĠĠĠĠĠĠĠ ĠCor outines . main Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount ViewModel . init () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Content Visibility ( CONTENT _ FORM ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Finish . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠNo Internet Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Content Visibility ( CONTENT _ NO _ INTER NET ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠClient Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Generic ErrorMessage () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase . crash ly t ics . record Exception ( ex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Generic ErrorMessage () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Page ProgressBar Visibility ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Content Visibility ( content Mode : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontainer _ layout . visibility Ġ= Ġif Ġ( content Mode Ġ== ĠCONTENT _ FORM ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠĠĠĠĠ Ġcontainer _ button . visibility Ġ= Ġcontainer _ layout . visibility ĊĠĠĠĠĠĠĠ Ġaccount _ no _ internet _ layout . visibility Ġ= Ġif Ġ( content Mode Ġ== ĠCONTENT _ NO _ INTER NET ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Page ProgressBar Visibility ( visible : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpage _ progress _ bar . visibility Ġ= Ġif Ġ( visible ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Generic ErrorMessage () Ġ{ ĊĠĠĠĠĠĠĠ Ġaccount _ root _ layout . long Snackbar ( getString ( R . string . getting _ data _ failed _ error _ message )) Ġ{ Ġsn ackbar Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackbar . setAction ( getString ( R . string . reload )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit Ġ{ Ġunregister Network Receiver () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackbar . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Image Inputs () Ġ{ ĊĠĠĠĠĠĠĠ Ġthumbnail _ fake _ input . br ing To Front () ĊĠĠĠĠĠĠĠ Ġthumbnail _ fake _ input . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Pick ing From Gallery ( IMAGE _ LOG O _ RESULT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbanner _ fake _ input . br ing To Front () ĊĠĠĠĠĠĠĠ Ġbanner _ fake _ input . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Pick ing From Gallery ( IMAGE _ BAN NER _ RESULT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Click Listeners () Ġ{ ĊĠĠĠĠĠĠĠ Ġtoolbar _ back _ button . setOnClickListener Ġ{ Ġfinish () Ġ} ĊĠĠĠĠĠĠĠ Ġtoolbar _ exit _ button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCor outines . main Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount ViewModel . on Log Out Button Click () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( this , ĠLogin Activity :: class . java ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . flags Ġ= ĠIntent . FLAG _ ACTIVITY _ CLEAR _ TASK Ġor ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġgo _ to _ change _ password . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( this , ĠChange Password Activity :: class . java ). also Ġ{ ĠstartActivity ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġprivate Ġfun Ġ< T : ĠView > Ġget First Child OfType List ( types : ĠArray < K Class < out ĠT >>, Ġchildren : ĠSequence < View >): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( child Ġin Ġchildren ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( type Ġin Ġtypes ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type . is Instance ( child )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġchild Ġas ĠT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( child Ġis ĠViewGroup ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġget First Child OfType List ( types , Ġchild . children ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Remove Error Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġforms : ĠArray < ViewGroup > Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount _ me _ form , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount _ company _ form , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompany _ banner _ frame , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompany _ thumbnail _ frame ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġaccepted Types : ĠArray < K Class < out ĠEditText >> Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText Input EditText :: class , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAuto Complete TextView :: class ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( form Ġin Ġforms ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( child Ġin Ġform . children ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( child Ġis ĠText Input Layout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġedit Text Ġ= Ġget First Child OfType List ( accepted Types , Ġchild . children ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text ?. add TextChanged Listener ( account ViewModel . on TextField Change ( child )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġri se ValidationError ( field : ĠFields Enum , ĠerrorMessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtext Input Layout : ĠText Input Layout ? Ġ= Ġwhen Ġ( field ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFields Enum . COMP ANY _ NAME Ġ-> Ġaccount _ company _ name _ input ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFields Enum . COMP ANY _ CEP Ġ-> Ġaccount _ company _ cep _ input ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFields Enum . COMP ANY _ CN PJ Ġ-> Ġaccount _ company _ c np j _ input ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFields Enum . COMP ANY _ CELL PHONE Ġ-> Ġaccount _ company _ telephone _ input ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFields Enum . COMP ANY _ EMAIL Ġ-> Ġaccount _ company _ mail _ input ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFields Enum . COMP ANY _ DESCRIPTION Ġ-> Ġaccount _ company _ description _ input ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFields Enum . COMP ANY _ C ITY Ġ-> Ġaccount _ company _ city _ input ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFields Enum . COMP ANY _ NE IGH B OR HO OD Ġ-> Ġaccount _ company _ neighbor hood _ input ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFields Enum . COMP ANY _ SEGMENT Ġ-> Ġaccount _ company _ segment _ input ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFields Enum . COMP ANY _ TH UMB NA IL Ġ-> Ġaccount _ company _ logo _ input ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFields Enum . COMP ANY _ BAN NER Ġ-> Ġaccount _ company _ banner _ input ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFields Enum . USER _ NAME Ġ-> Ġaccount _ me _ name _ input ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFields Enum . USER _ EMAIL Ġ-> Ġaccount _ me _ mail _ input ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtext Input Layout ?. error Ġ= ĠerrorMessage ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Action Error ( errorMessage : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Button Save Visibility ( true ) ĊĠĠĠĠĠĠĠ Ġaccount _ root _ layout . short Snackbar ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage Ġ?: ĠgetString ( R . string . error _ when _ exec uting _ the _ action ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Action Success () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Button Save Visibility ( true ) ĊĠĠĠĠĠĠĠ Ġaccount _ root _ layout . short Snackbar ( getString ( R . string . success _ when _ exec uting _ the _ action )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . add Callback ( object Ġ: ĠBase Transient Bottom Bar . Base Callback < Snackbar >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Dis missed ( transient Bottom Bar : ĠSn ackbar ?, Ġevent : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Action Started () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Button Save Visibility ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Button Save Visibility ( visible : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbtn _ save . visibility Ġ= Ġif Ġ( visible ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠĠĠĠĠ Ġprogress _ bar . visibility Ġ= Ġif Ġ( visible ) ĠView . GONE Ġelse ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Input Masks () Ġ{ ĊĠĠĠĠĠĠĠ Ġinput _ company _ telephone . add TextChanged Listener ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMask . mask ( Mask . get Tel Mask With CountryCode (" 5 5 "), Ġinput _ company _ telephone ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġinput _ company _ c np j . add TextChanged Listener ( Mask . mask ( Mask . CN PJ _ MASK , Ġinput _ company _ c np j )) ĊĠĠĠĠĠĠĠ Ġinput _ company _ cep . add TextChanged Listener ( Mask . mask ( Mask . CEP _ MASK , Ġinput _ company _ cep ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount ViewModel . on C ep Field Change ( input _ company _ cep . text . toString ()) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Adapter To Segment Dropdown () Ġ{ ĊĠĠĠĠĠĠĠ Ġaccount ViewModel . segments . observe ( this , ĠObserver Ġ{ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. let Ġ{ Ġsegments Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilled _ ex posed _ dropdown . setAdapter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArray Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . layout _ ex posed _ dropdown _ item , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsegments . map Ġ{ Ġit . name Ġ}. to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilled _ ex posed _ dropdown . input Type Ġ= ĠInput Type . TYPE _ NULL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( account ViewModel . company Data . value Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount ViewModel . company Data . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Segment Dropdown ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsegments , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount ViewModel . company Data . value ?. segment Name Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Segment Dropdown ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsegments , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount ViewModel . company Data . value ?. segment Name Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilled _ ex posed _ dropdown . setOn ItemClickListener Ġ{ Ġ_, Ġ_, Ġposition , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount ViewModel . company Data . value ?. segment Name Ġ= Ġsegments [ position ]. name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount ViewModel . company Data . value ?. segment Id Ġ= Ġsegments [ position ]. id Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Segment Dropdown ( segments : ĠList < Segment >, Ġsegment Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġm Segment Ġ= Ġsegments . first OrNull Ġ{ Ġit . name Ġ== Ġsegment Name Ġ} ĊĠĠĠĠĠĠĠ Ġfilled _ ex posed _ dropdown . setText ( m Segment ?. name , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġaccount ViewModel . company Data . value ?. segment Id Ġ= Ġm Segment ?. id Ġ?: Ġ- 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġunregister Network Receiver () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Network Receiver Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunregister Receiver ( m Network Receiver ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Network Receiver Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġunregister Network Receiver () ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// Ġend region ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠREAD _ WRITE _ PERMISSION S _ RESULT Ġ= Ġ 1 0 7 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠIMAGE _ BAN NER _ RESULT Ġ= Ġ 2 0 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠIMAGE _ LOG O _ RESULT Ġ= Ġ 2 0 0 ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ IMAGE _ TYPE Ġ= Ġ" image /* " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCONTENT _ NO _ INTER NET Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCONTENT _ NO _ CONTENT Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCONTENT _ FORM Ġ= Ġ 3 ĊĠĠĠ Ġ} Ċ }