package Ġde . r ki . cor on aw arn app . ui . presence tracing . organ izer . details Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . view . accessibility . Accessibility Event Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroidx . coordinator layout . widget . Coordinator Layout Ċ import Ġandroidx . core . view . is G one Ċ import Ġandroidx . core . view . isIn visible Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . navigation . fragment . Fragment Navigator Extras Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . navigation . fragment . nav Args Ċ import Ġcom . google . android . material . app bar . AppBar Layout Ċ import Ġcom . google . android . material . transition . Material Container Transform Ċ import Ġcom . google . android . material . transition . Material Shared Axis Ċ import Ġde . r ki . cor on aw arn app . R Ċ import Ġde . r ki . cor on aw arn app . databinding . Trace Location Organ izer Qr Code Detail Fragment Binding Ċ import Ġde . r ki . cor on aw arn app . ui . view . on Offset Change Ċ 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 . Context Extensions . get Drawable Compat Ċ import Ġde . r ki . cor on aw arn app . util . di . Auto Inject Ċ import Ġde . r ki . cor on aw arn app . util . ui . do Navigate Ċ import Ġde . r ki . cor on aw arn app . util . ui . observe 2 Ċ 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 Ass isted Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠQ r Code Detail Fragment Ġ: ĠFragment ( R . layout . trace _ location _ organ izer _ qr _ code _ detail _ fragment ), ĠAuto Inject Ġ{ ĊĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar ĠviewModel Factory : ĠC WA ViewModel Factory Provider . Factory ĊĊĠĠĠ Ġprivate Ġval Ġnav Args Ġby Ġnav Args < Qr Code Detail Fragment Args >() ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠQ r Code Detail ViewModel Ġby Ġc wa ViewModels Ass isted ( ĊĠĠĠĠĠĠĠ Ġfactory Producer Ġ= Ġ{ ĠviewModel Factory Ġ}, ĊĠĠĠĠĠĠĠ Ġconstructor Call Ġ= Ġ{ Ġfactory , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfactory Ġas ĠQ r Code Detail ViewModel . Factory ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfactory . create ( nav Args . trace Location Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġbinding : ĠTrace Location Organ izer Qr Code Detail Fragment Binding Ġby Ġview Binding () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġshared Element Enter Transition Ġ= ĠMaterial Container Transform () ĊĠĠĠĠĠĠĠ Ġshared Element Return Transition Ġ= ĠMaterial Container Transform () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġset Toolbar Overlay () ĊĊĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Bar Layout . on Offset Change Ġ{ Ġtitle Alpha , Ġsubtitle Alpha Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle . alpha Ġ= Ġtitle Alpha ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubtitle . alpha Ġ= Ġsubtitle Alpha ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Shadow Visibility () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot . view Tree Observer . add On Global Layout Listener Ġ{ Ġcheck Shadow Visibility () Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Icon Ġ= Ġcontext . get Drawable Compat ( R . drawable . ic _ close _ white ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Content Description Ġ= ĠgetString ( R . string . accessibility _ close ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Navigation OnClickListener Ġ{ ĠviewModel . on Back Button Press () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġqr Code Print Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexit Transition Ġ= ĠMaterial Shared Axis ( Material Shared Axis . Z , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre enter Transition Ġ= ĠMaterial Shared Axis ( Material Shared Axis . Z , Ġfalse ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on Print Qr Code () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġqr Code Clone Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . duplicate Trace Location () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot . transition Name Ġ= Ġnav Args . trace Location Id . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġqr Code Image . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . open FullScreen () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . route To Screen . observe 2 ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQ r Code Detail Navigation Events . Navigate Back Ġ-> Ġpop Back Stack () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠQ r Code Detail Navigation Events . Navigate To Duplicate Fragment Ġ-> Ġdo Navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQ r Code Detail Fragment Directions . action Qr Code Detail Fragment To Trace Location Create Fragment ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . category , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . trace Location ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠQ r Code Detail Navigation Events . Navigate To Qr Code Post er Fragment Ġ-> Ġdo Navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQ r Code Detail Fragment Directions . action Qr Code Detail Fragment To Qr Code Post er Fragment ( it . location Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠQ r Code Detail Navigation Events . Navigate To FullScreen Qr Code Ġ-> Ġfind Nav Controller (). navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ global _ qr Code FullScreen Fragment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQ r Code FullScreen Fragment Args ( it . qrcode Text , Ġit . correction Level ). to Bundle (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFragment Navigator Extras ( binding . qr Code Image Ġto Ġbinding . qr Code Image . transition Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . ui State . observe 2 ( this ) Ġ{ Ġui State Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle . text Ġ= Ġui State . description ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubtitle . text Ġ= Ġui State . address ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ui State . start DateTime Ġ!= Ġnull Ġ&& Ġui State . end DateTime Ġ!= Ġnull ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠstartTime Ġ= Ġui State . start DateTime !!. to DateTime () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠendTime Ġ= Ġui State . end DateTime !!. to DateTime () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Date . is G one Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Day Ġ= ĠstartTime . to LocalDate (). toString (" dd . MM . yyyy ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Hour Ġ= ĠstartTime . to Local Time (). toString (" HH : mm ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġend Day Ġ= ĠendTime . to LocalDate (). toString (" dd . MM . yyyy ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġend Hour Ġ= ĠendTime . to Local Time (). toString (" HH : mm ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Date . text Ġ= Ġif Ġ( startTime . to LocalDate () Ġ== ĠendTime . to LocalDate ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (). getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . trace _ location _ organ izer _ detail _ item _ duration , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Day , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Hour , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Hour ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (). getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . trace _ location _ organ izer _ detail _ item _ duration _ multiple _ days , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Day , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Hour , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Day , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Hour ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Date . is G one Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . progress Bar . hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . qr Code Image . setImage Bitmap ( ui State . bitmap ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠTrace Location Organ izer Qr Code Detail Fragment Binding . check Shadow Visibility () Ġ{ ĊĠĠĠĠĠĠĠ Ġshadow View . isIn visible Ġ= Ġnested ScrollView . bottom Ġ<= Ġshadow View . y ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ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 . subtitle . 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 . subtitle . 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 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġbinding . content Container . send Accessibility Event ( Accessibility Event . TYPE _ AN NOUN CE MENT ) ĊĠĠĠ Ġ} Ċ } Ċ