package Ġcom . example . picture composer Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . widget .* Ċ import Ġcom . google . android . material . floating action button . Floating ActionButton Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . database . Data Snapshot Ċ import Ġcom . google . firebase . database . Database Error Ċ import Ġcom . google . firebase . database . Firebase Database Ċ import Ġcom . google . firebase . database . Value EventListener Ċ import Ġcom . squareup . pic asso . Pic asso Ċ Ċ class ĠGr ade Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġ// initialize Ġlateinit Ġvariables ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfirebase Database : ĠFirebase Database ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġg ra ded Photo : ĠImageView ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġback Button : ĠFloating ActionButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġnext Button : ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġhome Icon : ĠImageView ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġgrade : ĠRating Bar ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġth ir ds : ĠRating Bar ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfram ing : ĠRating Bar ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġexposure : ĠRating Bar ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġblur : ĠRating Bar ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlevel : ĠRating Bar ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ grade ) ĊĊĠĠĠĠĠĠĠ Ġ// populate Ġlateinit Ġvars ĊĠĠĠĠĠĠĠ Ġfirebase Database Ġ= ĠFirebase Database . getInstance () ĊĠĠĠĠĠĠĠ Ġg ra ded Photo Ġ= ĠfindViewById ( R . id . source Next ) ĊĠĠĠĠĠĠĠ Ġback Button Ġ= ĠfindViewById ( R . id . grade Back FAB ) ĊĠĠĠĠĠĠĠ Ġnext Button Ġ= ĠfindViewById ( R . id . next _ button ) ĊĊĠĠĠĠĠĠĠ Ġgrade Ġ= ĠfindViewById ( R . id . grade _ rating ) ĊĠĠĠĠĠĠĠ Ġth ir ds Ġ= ĠfindViewById ( R . id . rot _ rating ) ĊĠĠĠĠĠĠĠ Ġfram ing Ġ= ĠfindViewById ( R . id . frame _ rating ) ĊĠĠĠĠĠĠĠ Ġexposure Ġ= ĠfindViewById ( R . id . exp _ rating ) ĊĠĠĠĠĠĠĠ Ġblur Ġ= ĠfindViewById ( R . id . blur _ rating ) ĊĠĠĠĠĠĠĠ Ġlevel Ġ= ĠfindViewById ( R . id . level _ rating ) ĊĠĠĠĠĠĠĠ Ġhome Icon Ġ= ĠfindViewById ( R . id . grade Logo ) ĊĊĠĠĠĠĠĠĠ Ġ// get Ġthe Ġfirebase Ġuser 's ĠID Ġand Ġestablish Ġthe Ġreference Ġwe 'll Ġneed ĊĠĠĠĠĠĠĠ Ġval Ġcurrent UserID Ġ= ĠFirebase Auth . getInstance (). currentUser !!. uid ĊĠĠĠĠĠĠĠ Ġval Ġcurr Photo Key Ref Ġ= Ġfirebase Database . getReference (" UID /$ current UserID / curr Photo Key ") ĊĊĠĠĠĠĠĠĠ Ġ// retrieve Ġphoto Ġlink Ġsaved Ġas Ġ" most Ġrecent " Ġin Ġdb ĊĠĠĠĠĠĠĠ Ġcurr Photo Key Ref . add Value EventListener ( object Ġ: ĠValue EventListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancelled ( database Error : ĠDatabase Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Grade Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . photo _ ref _ error ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ LONG ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Data Change ( data Snapshot : ĠData Snapshot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpulled Key Ġ= Ġdata Snapshot . getValue ( String :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// now Ġwe Ġknow Ġwhich Ġphoto Ġto Ġrefer Ġto Ġ- Ġso Ġpull Ġthat Ġphotos Ġmetadata Ġnow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġphoto Ref Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirebase Database . getReference (" UID /$ current UserID / photo List /$ pul led Key ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphoto Ref . add Value EventListener ( object Ġ: ĠValue EventListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancelled ( database Error : ĠDatabase Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Grade Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . image _ data _ error ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ LONG ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Data Change ( data Snapshot : ĠData Snapshot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// get Ġthe Ġcurr Ġphoto ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurr Photo : ĠPhoto ? Ġ= Ġdata Snapshot . getValue ( Photo :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// if Ġit 's Ġnot Ġnull , Ġpopulate Ġthe Ġgrad ing Ġscreen Ġwith Ġits Ġinfo ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( curr Photo Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPic asso . get (). load ( curr Photo . url ). into ( graded Photo ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPopulate Ġgr ades ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrade . rating Ġ= Ġcurr Photo . grade . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġth ir ds . rating Ġ= Ġcurr Photo . th ir ds . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfram ing . rating Ġ= Ġcurr Photo . fr aming . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexposure . rating Ġ= Ġcurr Photo . ex posure . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblur . rating Ġ= Ġcurr Photo . blur . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlevel . rating Ġ= Ġcurr Photo . level . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// in Ġplace Ġof Ġthe Ġback Ġbutton , Ġwe Ġhave Ġa Ġgrid Ġbutton Ġthat Ġgoes Ġto Ġthe Ġportfolio ĊĠĠĠĠĠĠĠ Ġback Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠPortfolio Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// t apping Ġthe Ġphoto Ġcomposer Ġlogo Ġwill Ġtake Ġthe Ġuser Ġhome ĊĠĠĠĠĠĠĠ Ġhome Icon . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠNavigation Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġnext Ġbutton Ġgoes Ġto Ġsimilar Ġactivity Ġ( re cs Ġand Ġimg s ) ĊĠĠĠĠĠĠĠ Ġnext Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalt Intent Ġ= ĠIntent ( this , ĠSimilar Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( alt Intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }