package Ġru . bre ffi . story id sample . ui . it n Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . InputType Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroidx . core . widget . add TextChanged Listener Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . lifecycle . observe Ċ import Ġcom . bump tech . glide . load . engine . Disk Cache Strategy Ċ import Ġkotlinx . android . synt hetic . main . fragment _ it n .* Ċ import Ġkotlinx . android . synt hetic . main . layout _ doc _ image . view .* Ċ import Ġkotlinx . android . synt hetic . main . static _ hint _ edit text . view .* Ċ import Ġru . bre ffi . story id . profile . model .* Ċ import Ġru . bre ffi . story id sample . R Ċ import Ġru . bre ffi . story id sample . ui . common . glide . G lide App Ċ import Ġru . bre ffi . story id sample . ui . common . model . Change Monitor Ċ import Ġru . bre ffi . story id sample . ui . common . Image Fragment Ċ import Ġru . bre ffi . story id sample . utils . apply Mask Ċ import Ġru . bre ffi . story id sample . utils . or Null Ċ import Ġru . bre ffi . story id sample . utils . set Button Enabled Ċ import Ġjava . io . File Ċ import Ġjavax . inject . Inject ĊĊ Ċ class ĠI tn Fragment Ġ: ĠImage Fragment () Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar ĠviewModel Factory : ĠViewModel Provider . Factory ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠI tn ViewModel Ġby Ġview Models Ġ{ ĠviewModel Factory Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġprofile : ĠProfile Model ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġchange Monitor Ġ= ĠChange Monitor () ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠIT N _ TMP _ FILE Ġ= Ġ" tmp _ it n . jpg " ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance (): ĠI tn Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠI tn Fragment () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonSelect Image ( file : ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchange Monitor . item Changed ( IT N _ TMP _ FILE , Ġtrue ) ĊĠĠĠĠĠĠĠ ĠviewModel . set It n Image ( file ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonDelete Image ( fileName : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchange Monitor . item Changed ( IT N _ TMP _ FILE , Ġtrue ) ĊĠĠĠĠĠĠĠ ĠviewModel . delete Image () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Title ( context : ĠContext , Ġtoolbar Free Width : ĠInt ): ĠCharSequence Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠgetString ( R . string . title _ it n ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Layout Res Id (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR . layout . fragment _ it n ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġtv It n . text . apply Mask (" ________ ____ ") ĊĠĠĠĠĠĠĠ Ġtv It n . text . input Type Ġ= ĠInput Type . TYPE _ CLASS _ PHONE ĊĊĠĠĠĠĠĠĠ Ġchange Monitor . set ChangeListener Ġ{ Ġbutton Save . set Button Enabled ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġadd It n . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect Image ( IT N _ TMP _ FILE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbutton Save . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprofile Ġ= Ġprofile ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġit n Model Ġ= Ġit . it n . copy ( it n Ġ= Ġtv It n . getText (). or Null (), Ġfile Ġ= ĠviewModel . image It n . value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . copy ( it n Ġ= Ġit n Model ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . save Profile ( profile ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Monitor . reset () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Save . set Button Enabled ( false ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. set Result ( Activity . RESULT _ OK ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbutton Save . set Button Enabled ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ ĠviewModel . profile . observe First NonNull ( view Lifecycle Owner ) Ġ{ Ġprofile Model Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprofile Ġ= Ġprofile Model ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Profile It n ( profile Model . it n ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . image It n . observe ( view Lifecycle Owner ) Ġ{ Ġfile Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file Ġ!= Ġnull Ġ&& Ġfile . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset It n Image ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it n Img Layout . child Count Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd It n . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit n Img Layout . remove View At ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset It n Image ( image : ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it n Img Layout . child Count Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit n Img Layout . remove View At ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġit n View Ġ= ĠLayoutInflater . from ( context ). inflate ( R . layout . layout _ doc _ image , Ġit n Img Layout , Ġfalse ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit n View . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Image ( image ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide App . with ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. disk Cache Strategy ( Disk Cache Strategy . NONE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. skip Memory Cache ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( it n View . image ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit n Img Layout . addView ( it n View , Ġ 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it n Img Layout . child Count Ġ>= Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd It n . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Profile It n ( it n : ĠI tn Model ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtv It n . setText ( it n . it n ) ĊĊĠĠĠĠĠĠĠ Ġit n . file ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . set It n Image ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtv It n . text . add TextChanged Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Monitor . item Changed (" number ", Ġit . toString () Ġ!= Ġit n . it n ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ