package Ġcom . hal cy on mobile . multi plat for mp lay ground . ui Ċ Ċ import Ġandroidx . annotation . Drawable Res Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . compose . foundation . Image Ċ import Ġandroidx . compose . foundation . layout . Arrange ment Ċ import Ġandroidx . compose . foundation . layout . Box Ċ import Ġandroidx . compose . foundation . layout . Column Ċ import Ġandroidx . compose . foundation . layout . Padding Values Ċ import Ġandroidx . compose . foundation . layout . Row Ċ import Ġandroidx . compose . foundation . layout . Spacer Ċ import Ġandroidx . compose . foundation . layout . fill MaxSize Ċ import Ġandroidx . compose . foundation . layout . fill Max Width Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . foundation . layout . size Ċ import Ġandroidx . compose . foundation . layout . wrap Content Height Ċ import Ġandroidx . compose . foundation . layout . wrap Content Size Ċ import Ġandroidx . compose . foundation . remember Scroll State Ċ import Ġandroidx . compose . foundation . shape . Rounded Corner Shape Ċ import Ġandroidx . compose . foundation . vertical Scroll Ċ import Ġandroidx . compose . material . Button Ċ import Ġandroidx . compose . material . Circular Progress Indicator Ċ import Ġandroidx . compose . material . Floating ActionButton Ċ import Ġandroidx . compose . material . Icon Ċ import Ġandroidx . compose . material . Outlined Button Ċ import Ġandroidx . compose . material . Sca ffold Ċ import Ġandroidx . compose . material . Surface Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . collect As State Ċ import Ġandroidx . compose . runtime . getValue Ċ import Ġandroidx . compose . runtime . mutable State Of Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . graphics . Color Filter Ċ import Ġandroidx . compose . ui . res . string Resource Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . compose . runtime . remember Ċ import Ġandroidx . compose . ui . platform . Local Context Ċ import Ġandroidx . compose . ui . res . p ainter Resource Ċ import Ġandroidx . compose . ui . tool ing . preview . Preview Ċ import Ġandroidx . core . net . to Uri Ċ import Ġcom . google . ac comp an ist . co il . Co il Image Ċ import Ġcom . google . ac comp an ist . in sets . navigation Bars Padding Ċ import Ġcom . hal cy on mobile . multi plat for mp lay ground . R Ċ import Ġcom . hal cy on mobile . multi plat for mp lay ground . shared . util . to Image File Ċ import Ġcom . hal cy on mobile . multi plat for mp lay ground . ui . shared . Screenshots Ċ import Ġcom . hal cy on mobile . multi plat for mp lay ground . ui . theme . App Theme Ċ import Ġcom . hal cy on mobile . multi plat for mp lay ground . util . comp os ables . Back Bar Ċ import Ġcom . hal cy on mobile . multi plat for mp lay ground . view model . Application Detail ViewModel Ċ Ċ @ Composable Ċ fun ĠApplication Detail ( application Id : ĠLong , Ġup Press : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval ĠviewModel Ġ= ĊĠĠĠĠĠĠĠ Ġremember ( application Id ) Ġ{ ĠApplication Detail ViewModel ( application Id ) Ġ} ĊĠĠĠ Ġval Ġapplication With Detail Ġby ĠviewModel . application Detail Ui Model . collect As State () ĊĠĠĠ Ġval Ġstate Ġby ĠviewModel . state . collect As State () ĊĠĠĠ Ġval Ġcontent Resolver Ġ= Ġ( Local Context . current Ġas ĠAppCompatActivity ). content Resolver ĊĊĠĠĠ ĠScaffold ( ĊĠĠĠĠĠĠĠ Ġtop Bar Ġ= Ġ{ ĠBack Bar ( up Press Ġ= Ġup Press ) Ġ}, ĊĠĠĠĠĠĠĠ Ġfloating ActionButton Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġicon Res Ġ= Ġif Ġ( application With Detail ?. fav our ite Ġ== Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ fav our ites Ġelse ĠR . drawable . ic _ fav our ites _ empty ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state Ġ== ĠApplication Detail ViewModel . State . NORMAL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFloating ActionButton ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= ĠviewModel :: update F avour ite , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. navigation Bars Padding () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( 1 6 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpainter Ġ= Ġpainter Resource ( id Ġ= Ġicon Res ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApplication Detail ViewModel . State . LOADING Ġ-> ĠBox ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . fill MaxSize (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlignment . Center ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCircular Progress Indicator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApplication Detail ViewModel . State . NORMAL Ġ-> Ġapplication With Detail ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( 1 6 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. vertical Scroll ( remember Scroll State ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHeader ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageUrl Ġ= Ġit . icon , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġit . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeveloper Ġ= Ġit . developer ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Arrange ment Ġ= ĠArrange ment . Space Even ly , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. wrap Content Height () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( top Ġ= Ġ 1 6 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProperty ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġstring Resource ( id Ġ= ĠR . string . rating ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġit . rating . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Res Ġ= ĠR . drawable . ic _ rating ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProperty ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġstring Resource ( id Ġ= ĠR . string . downloads ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġit . downloads , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Res Ġ= ĠR . drawable . ic _ downloads ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDescription ( it . description ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠScreenshots ( screenshots Ġ= Ġit . screenshots . map Ġ{ Ġscreenshot Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscreenshot . image . to Uri (). to Image File ( content Resolver ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApplication Detail ViewModel . State . ERROR Ġ-> ĠColumn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. wrap Content Size ( Alignment . Center ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( 1 6 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġstring Resource ( id Ġ= ĠR . string . general _ error ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . align ( Alignment . Center H orizontally ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠApp Theme . typography . body 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠButton ( onClick Ġ= Ġ{ ĠviewModel . load Detail () Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġstring Resource ( id Ġ= ĠR . string . retry )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠHeader ( imageUrl : ĠString , Ġname : ĠString , Ġdeveloper : ĠString , Ġcategory : ĠString Ġ= Ġ" Update Ġthis ") Ġ{ ĊĠĠĠ Ġ// ĠTODO Ġupdate Ġcategory ĊĠĠĠ ĠRow Ġ{ ĊĠĠĠĠĠĠĠ ĠSurface ( shape Ġ= ĠRo unded Corner Shape ( 8 . dp )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCo il Image ( data Ġ= ĠimageUrl , Ġmodifier Ġ= ĠModifier . size ( 8 0 . dp ), Ġcontent Description Ġ= Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠColumn ( modifier Ġ= ĠModifier . padding ( horizontal Ġ= Ġ 1 6 . dp )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġname , Ġstyle Ġ= ĠApp Theme . typography . h 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġdeveloper , Ġstyle Ġ= ĠApp Theme . typography . body 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġcategory , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠApp Theme . typography . body 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( top Ġ= Ġ 8 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠProperty ( name : ĠString , Ġvalue : ĠString , Ġ@ Drawable Res Ġicon Res : ĠInt ) Ġ{ ĊĠĠĠ ĠRow Ġ{ ĊĠĠĠĠĠĠĠ ĠImage ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpainter Ġ= Ġpainter Resource ( id Ġ= Ġicon Res ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Filter Ġ= ĠColor Filter . tint ( App Theme . colors . secondary ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. align ( Alignment . Center Vert ically ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( end Ġ= Ġ 8 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠColumn Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġvalue , Ġstyle Ġ= ĠApp Theme . typography . h 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġname , Ġstyle Ġ= ĠApp Theme . typography . caption ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠDescription ( description : ĠString ) Ġ{ ĊĠĠĠ Ġval Ġ( show More , Ġupdate Show More ) Ġ= Ġremember Ġ{ Ġmutable State Of ( false ) Ġ} ĊĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( top Ġ= Ġ 1 6 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠText ( style Ġ= ĠApp Theme . typography . h 6 , Ġtext Ġ= Ġstring Resource ( id Ġ= ĠR . string . description )) ĊĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( top Ġ= Ġ 8 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠApp Theme . typography . body 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Lines Ġ= Ġif Ġ( show More ) ĠInt . MAX _ VALUE Ġelse Ġ 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġdescription ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠOut lined Button ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. align ( Alignment . Center H orizontally ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( top Ġ= Ġ 8 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ Ġupdate Show More (! show More ) Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( string Resource ( id Ġ= Ġif Ġ(! show More ) ĠR . string . show _ more Ġelse ĠR . string . show _ less )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠSp acer ( modifier Ġ= ĠModifier . navigation Bars Padding ()) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Preview (" description ") Ċ @ Composable Ċ fun ĠDescription Preview () Ġ{ ĊĠĠĠ ĠSurface Ġ{ ĊĠĠĠĠĠĠĠ ĠDescription ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Your Ġnext Ġjob Ġis Ġonly Ġone Ġdownload Ġaway . Ġ\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" From Ġregistration Ġto Ġemploy ment , Ġthe ĠRight Staff Ġapp Ġhelps Ġyou Ġthrough Ġthe Ġentire Ġh iring Ġprocess . ĠWe âĢĻ ll Ġguide Ġyou Ġto Ġa Ġnew Ġmedical Ġjob Ġin Ġjust Ġa Ġfew Ġsimple Ġt aps . ĠAll Ġyou Ġwill Ġneed Ġto Ġdo Ġis Ġdownload Ġthe Ġapp , Ġregister Ġyour Ġskills , Ġfill Ġin Ġyour Ġavailability , Ġchoose Ġyour Ġarea Ġof Ġwork , Ġupdate Ġyour Ġlocation Ġand Ġyou âĢĻ re Ġhalf way Ġto Ġrec iving Ġyour Ġfirst Ġshift ." ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Preview (" property ") Ċ @ Composable Ċ fun ĠProperty Preview () Ġ{ ĊĠĠĠ ĠSurface Ġ{ ĊĠĠĠĠĠĠĠ ĠProperty (" Rating ", Ġ" 5 . 0 ", ĠR . drawable . ic _ rating ) ĊĠĠĠ Ġ} Ċ }