package Ġde . r ki . cor on aw arn app . ui . cor on atest . rat . profile . qrcode Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroidx . coordinator layout . widget . Coordinator Layout Ċ import Ġandroidx . core . text . bold Ċ import Ġandroidx . core . text . build Sp anned String Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . navigation . Nav Options Ċ import Ġandroidx . navigation . fragment . Fragment Navigator Extras Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġco il . load Any Ċ import Ġcom . google . android . material . app bar . AppBar Layout Ċ import Ġcom . google . android . material . dialog . Material AlertDialog Builder Ċ import Ġde . r ki . cor on aw arn app . R Ċ import Ġde . r ki . cor on aw arn app . cor on atest . ant igen . profile . RAT Profile Ċ import Ġde . r ki . cor on aw arn app . databinding . Rat Profile Qr Code Fragment Binding Ċ import Ġde . r ki . cor on aw arn app . ui . qrcode . fullscreen . Qr Code FullScreen Fragment Args Ċ import Ġde . r ki . cor on aw arn app . util . Time And Date Extensions . to Day Format Ċ import Ġde . r ki . cor on aw arn app . util . co il . loading View Ċ import Ġde . r ki . cor on aw arn app . util . di . Auto Inject Ċ import Ġde . r ki . cor on aw arn app . util . join To Sp ann able Ċ import Ġde . r ki . cor on aw arn app . util . qrcode . co il . Co il Qr Code Ċ import Ġde . r ki . cor on aw arn app . util . ui . do Navigate Ċ import Ġde . r ki . cor on aw arn app . util . ui . pop Back Stack Ċ import Ġde . r ki . cor on aw arn app . util . ui . view Binding Ċ import Ġde . r ki . cor on aw arn app . util . view model . C WA ViewModel Factory Provider Ċ import Ġde . r ki . cor on aw arn app . util . view model . c wa ViewModels Ċ import Ġjavax . inject . Inject Ċ import Ġkotlin . math . abs Ċ Ċ class ĠR AT Profile Qr Code Fragment Ġ: ĠFragment ( R . layout . rat _ profile _ qr _ code _ fragment ), ĠAuto Inject Ġ{ ĊĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar ĠviewModel Factory : ĠC WA ViewModel Factory Provider . Factory ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠR AT Profile Qr Code Fragment ViewModel Ġby Ġc wa ViewModels Ġ{ ĠviewModel Factory Ġ} ĊĠĠĠ Ġprivate Ġval Ġbinding : ĠR at Profile Qr Code Fragment Binding Ġby Ġview Binding () ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Toolbar Overlay () ĊĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Bar Layout . add On Offset Changed Listener ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Bar Layout . On Offset Changed Listener Ġ{ Ġapp Bar Layout , Ġvertical Offset Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalpha Ġ= Ġ 1 . 0 f Ġ- Ġabs ( vertical Offset Ġ/ Ġ( app Bar Layout . total Scroll Range . toFloat () Ġ* Ġ 0 . 5 f )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle . alpha Ġ= Ġalpha ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġnext Button . setOnClickListener Ġ{ ĠviewModel . onNext () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar . set Navigation OnClickListener Ġ{ ĠviewModel . onClose () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar . setOn MenuItem ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . rat _ profile _ information Ġ-> Ġdo Navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR AT Profile Qr Code Fragment Directions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. action Rat Profile Qr Code Fragment To Rat Profile On boarding Fragment ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . rat _ profile _ edit Ġ-> Ġdo Navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR AT Profile Qr Code Fragment Directions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. action Rat Profile Qr Code Fragment To Rat Profile Create Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . rat _ profile _ delete Ġ-> Ġconfirm Deletion Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġqr Code Image . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . open FullScreen () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . profile . observe ( view Lifecycle Owner ) Ġ{ Ġperson Profile Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperson Profile . profile ?. let Ġ{ Ġbind Person Info ( it ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġperson Profile ?. qr Code ?. let Ġ{ ĠCo il Qr Code ( content Ġ= Ġit ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġqr Code Image . load Any ( request ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcross fade ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading View ( qr Code Image , ĠprogressBar ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . events . observe ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Qr Code Navigation . Back Ġ-> Ġpop Back Stack () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Qr Code Navigation . Open Scanner Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnav Options Ġ= ĠNav Options . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pop Up To ( R . id . rat Profile Qr Code Fragment , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ to _ universal _ scanner , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Options , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFragment Navigator Extras ( binding . next Button Ġto Ġbinding . next Button . transition Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠProfile Qr Code Navigation . Full Qr Code Ġ-> Ġfind Nav Controller (). navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ global _ qr Code FullScreen Fragment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQ r Code FullScreen Fragment Args ( it . qr Code ). to Bundle (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFragment Navigator Extras ( binding . qr Code Image Ġto Ġbinding . qr Code Image . transition Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfirm Deletion Dialog () Ġ{ ĊĠĠĠĠĠĠĠ ĠMaterial AlertDialog Builder ( require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( getString ( R . string . rat _ qr _ code _ profile _ dialog _ title )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( getString ( R . string . rat _ qr _ code _ profile _ dialog _ message )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( getString ( R . string . rat _ qr _ code _ profile _ dialog _ positive _ button )) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . delete Profile () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( getString ( R . string . rat _ qr _ code _ profile _ dialog _ negative _ button )) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNo - Op ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbind Person Info ( rat Profile : ĠR AT Profile ) Ġ= Ġwith ( rat Profile ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġbuild Sp anned String Ġ{ Ġbold Ġ{ Ġappend ("$ firstName Ġ$ lastName ") Ġ} Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġbirth Date Ġ= Ġbirth Date ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . rat _ qr _ code _ profile _ birth _ date , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbirth Date . to Day Format () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}. or Empty () ĊĊĠĠĠĠĠĠĠ Ġval Ġaddress Ġ= Ġ"$ zip Code Ġ$ city " ĊĠĠĠĠĠĠĠ Ġbinding . profile Info . text Ġ= ĠarrayOf ( name , Ġbirth Date , Ġstreet , Ġaddress , Ġphone , Ġemail ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . isNotBlank () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. join To Sp ann able ("\ n ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Toolbar Overlay () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġrequire Context (). resources . display Metrics . width Pixels ĊĊĠĠĠĠĠĠĠ Ġval Ġparams : ĠCoord inator Layout . LayoutParams Ġ= Ġbinding . nested ScrollView . layout Params ĊĠĠĠĠĠĠĠĠĠĠĠ Ġas Ġ( Coordinator Layout . LayoutParams ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtext Params Ġ= Ġbinding . title . layout Params Ġas Ġ( LinearLayout . LayoutParams ) ĊĠĠĠĠĠĠĠ Ġtext Params . bottom Margin Ġ= Ġ( width Ġ/ Ġ 2 ) Ġ- Ġ 2 4 Ġ/* Ġ 2 4 Ġis Ġspace Ġbetween Ġscreen Ġborder Ġand ĠQ r Code Ġ*/ ĊĠĠĠĠĠĠĠ Ġbinding . title . request Layout () Ġ/* Ġ 2 4 Ġis Ġspace Ġbetween Ġscreen Ġborder Ġand ĠQ r Code Ġ*/ ĊĊĠĠĠĠĠĠĠ Ġval Ġbehavior : ĠApp Bar Layout . Scrolling View Behavior Ġ= Ġparams . behavior Ġas Ġ( AppBar Layout . Scrolling View Behavior ) ĊĠĠĠĠĠĠĠ Ġbehavior . overlay Top Ġ= Ġ( width Ġ/ Ġ 2 ) Ġ- Ġ 2 4 ĊĠĠĠ Ġ} Ċ } Ċ