/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 Ġl ul ulu jo jo 1 2 3 Ċ Ġ* Ċ Ġ* Ġ ĠProfile Activity . kt Ċ Ġ* Ċ Ġ* Ġ Ġcreated Ġby : ĠL ara ĠB . Ċ Ġ* Ġ Ġlast Ġedit Ġ\ Ġby : Ġ 2 0 2 1 / 0 1 / 2 8 Ġ\ ĠL ara ĠB . Ċ Ġ*/ Ċ Ċ package Ġorg . battle cre atures . activities Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . view . animation . Animation Ċ import Ġandroid . view . animation . Animation Utils Ċ import Ġandroid . widget .* Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġorg . battle cre atures . R Ċ import Ġorg . battle cre atures . animations . ProgressBar Animation Ċ import Ġorg . battle cre atures . log ics . database . BC Database Ċ import Ġorg . battle cre atures . log ics . entities . Player Ċ Ċ /** Ċ Ġ* ĠThe Ġprofile Ġactivity Ġshowing Ġthe Ġuser 's Ġprofile Ċ Ġ*/ Ċ class ĠProfile Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġcompanion Ġobject { ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠStatic Ġconstant Ġwith Ġthe Ġclass Ġname Ġfor Ġlogging Ġpurposes ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG : ĠString Ġ= Ġ" Profile Activity " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPrivate Ġfield Ġfor Ġthe Ġscreen Out Animation ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġscreen Out Animation : ĠAnimation Ġ?= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAndroid Ġrelated ĠonCreate Ġmethod ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSuper Ġclasses ĠonCreate Ġmethod ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠInitial izing Ġthe Ġcontext Ġby Ġusing Ġthe Ġactivity _ profile . xml ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ profile ) ĊĊĠĠĠĠĠĠĠ Ġval Ġback Button Ġ: ĠImageView Ġ= ĠfindViewById ( R . id . back Button ) ĊĠĠĠĠĠĠĠ Ġval Ġchange Name Button Ġ: ĠImageView Ġ= ĠfindViewById ( R . id . change Name Button ) ĊĠĠĠĠĠĠĠ Ġval Ġconfirm Name Button Ġ: ĠImageView Ġ= ĠfindViewById ( R . id . confirm Name Button ) ĊĠĠĠĠĠĠĠ Ġval Ġplayer Name TextView Ġ: ĠTextView Ġ= ĠfindViewById ( R . id . player Name TextView ) ĊĠĠĠĠĠĠĠ Ġval Ġplayer Name EditText Ġ: ĠEditText Ġ= ĠfindViewById ( R . id . player Name EditText ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbc Database Ġ= ĠBC Database . get MainThread BC Database ( application Context ) ĊĠĠĠĠĠĠĠ Ġval Ġplayer DAO Ġ= Ġbc Database . player Dao () ĊĠĠĠĠĠĠĠ Ġval Ġown Profile Ġ= Ġplayer DAO . get Own Profile () ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe Ġviews Ġand Ġanimate Ġthem ĊĠĠĠĠĠĠĠ Ġset Text Views () ĊĠĠĠĠĠĠĠ Ġanimate Screen () ĊĠĠĠĠĠĠĠ Ġanimate ProgressBar () ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe ĠonClick Listener Ġfor Ġthe Ġchange Ġname Ġbutton ĊĠĠĠĠĠĠĠ Ġchange Name Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Name Button . is Clickable Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Name TextView . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Name Button . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Name EditText . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfirm Name Button . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfirm Name Button . is Clickable Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe ĠonClick Listener Ġfor Ġthe Ġconfirm Ġname Ġbutton ĊĠĠĠĠĠĠĠ Ġconfirm Name Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfirm Name Button . is Clickable Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġname Ġlength Ġhas Ġto Ġbe Ġbetween Ġ 1 Ġand Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( player Name EditText . length () Ġin Ġ 1 .. 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġown Profile !!. name Ġ= Ġplayer Name EditText . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSet Ġnew Ġname ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer DAO . update Player ( Player ( own Profile . id , Ġown Profile . exp , Ġown Profile . name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Name TextView . text Ġ= Ġown Profile . name ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Name EditText . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfirm Name Button . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Name Button . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Name TextView . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Name Button . is Clickable Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWarning Ġmessage Ġif Ġthe Ġname Ġis Ġtoo Ġlong Ġor Ġtoo Ġshort ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , ĠgetString ( R . string . wrong _ name _ length ), ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfirm Name Button . is Clickable Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe ĠonClick Listener Ġfor Ġthe Ġback Ġbutton ĊĠĠĠĠĠĠĠ Ġback Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠBack Ġto Ġhome Ġactivity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAndroid Ġrelated Ġon Back Pressed Ġmethod ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠAn imate Ġthe Ġscreen Ġbefore Ġgoing Ġback Ġto Ġhome Ġs ct ivity ĊĠĠĠĠĠĠĠ Ġanimate Screen Out () ĊĠĠĠĠĠĠĠ ĠThread { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( this . screen Out Animation Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile (! this . screen Out Animation !!. has Ended ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Ui Thread { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPrivate Ġmethod Ġpre paring Ġand Ġsetting Ġthe Ġtext Ġviews ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġset Text Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplayer Name TextView Ġ: ĠTextView Ġ= ĠfindViewById ( R . id . player Name TextView ) ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Level TextView Ġ: ĠTextView Ġ= ĠfindViewById ( R . id . current Level ) ĊĠĠĠĠĠĠĠ Ġval Ġnext Level TextView Ġ: ĠTextView Ġ= ĠfindViewById ( R . id . next Level ) ĊĠĠĠĠĠĠĠ Ġval Ġneeded Exp TextView Ġ: ĠTextView Ġ= ĠfindViewById ( R . id . needed Exp ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbc Database Ġ= ĠBC Database . get MainThread BC Database ( application Context ) ĊĠĠĠĠĠĠĠ Ġval Ġplayer DAO Ġ= Ġbc Database . player Dao () ĊĠĠĠĠĠĠĠ Ġval Ġown Profile Ġ= Ġplayer DAO . get Own Profile () ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġtext view Ġcontent ĊĠĠĠĠĠĠĠ Ġplayer Name TextView . text Ġ= Ġown Profile !!. name ĊĠĠĠĠĠĠĠ Ġcurrent Level TextView . text Ġ= Ġown Profile . get Level (). toString () ĊĠĠĠĠĠĠĠ Ġnext Level TextView . text Ġ= Ġ( own Profile . get Level () Ġ+ Ġ 1 ). toString () ĊĠĠĠĠĠĠĠ Ġneeded Exp TextView . text Ġ= Ġown Profile . get Exp For Next Level (). toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPrivate Ġmethod Ġpre paring Ġand Ġstarting Ġthe Ġanimation Ġfor Ġthe Ġscreen Ġinitialization ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġanimate Screen () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġback Button Ġ: ĠImageView Ġ= ĠfindViewById ( R . id . back Button ) ĊĠĠĠĠĠĠĠ Ġval Ġchange Name Button Ġ: ĠImageView Ġ= ĠfindViewById ( R . id . change Name Button ) ĊĠĠĠĠĠĠĠ Ġval Ġplayer Name TextView Ġ: ĠTextView Ġ= ĠfindViewById ( R . id . player Name TextView ) ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Level TextView Ġ: ĠTextView Ġ= ĠfindViewById ( R . id . current Level ) ĊĠĠĠĠĠĠĠ Ġval Ġnext Level TextView Ġ: ĠTextView Ġ= ĠfindViewById ( R . id . next Level ) ĊĠĠĠĠĠĠĠ Ġval Ġneeded Exp TextView Ġ: ĠTextView Ġ= ĠfindViewById ( R . id . needed Exp ) ĊĠĠĠĠĠĠĠ Ġval Ġneeded Exp TextView 1 Ġ: ĠTextView Ġ= ĠfindViewById ( R . id . needed Exp 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġneeded Exp TextView 2 Ġ: ĠTextView Ġ= ĠfindViewById ( R . id . needed Exp 2 ) ĊĠĠĠĠĠĠĠ Ġval ĠprogressBar Ġ: ĠProgress Bar Ġ= ĠfindViewById ( R . id . exp ProgressBar ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠPrepare Ġthe Ġscreen Ġanimation ĊĠĠĠĠĠĠĠ Ġval Ġscreen Animation : ĠAnimation Ġ= ĠAnimation Utils . load Animation ( this , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . anim . shield _ animation ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġscreen Animation . duration Ġ= Ġ 1 0 0 0 ĊĊĠĠĠĠĠĠĠ Ġ// ĠStart Ġthe Ġanimation ĊĠĠĠĠĠĠĠ Ġback Button . start Animation ( screen Animation ) ĊĠĠĠĠĠĠĠ Ġchange Name Button . start Animation ( screen Animation ) ĊĠĠĠĠĠĠĠ Ġplayer Name TextView . start Animation ( screen Animation ) ĊĠĠĠĠĠĠĠ Ġcurrent Level TextView . start Animation ( screen Animation ) ĊĠĠĠĠĠĠĠ Ġnext Level TextView . start Animation ( screen Animation ) ĊĠĠĠĠĠĠĠ Ġneeded Exp TextView . start Animation ( screen Animation ) ĊĠĠĠĠĠĠĠ Ġneeded Exp TextView 1 . start Animation ( screen Animation ) ĊĠĠĠĠĠĠĠ Ġneeded Exp TextView 2 . start Animation ( screen Animation ) ĊĠĠĠĠĠĠĠ ĠprogressBar . start Animation ( screen Animation ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPrivate Ġmethod Ġpre paring Ġand Ġstarting Ġthe Ġanimation Ġbefore Ġon Back Pressed ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġanimate Screen Out () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġback Button Ġ: ĠImageView Ġ= ĠfindViewById ( R . id . back Button ) ĊĠĠĠĠĠĠĠ Ġval Ġchange Name Button Ġ: ĠImageView Ġ= ĠfindViewById ( R . id . change Name Button ) ĊĠĠĠĠĠĠĠ Ġval Ġplayer Name TextView Ġ: ĠTextView Ġ= ĠfindViewById ( R . id . player Name TextView ) ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Level TextView Ġ: ĠTextView Ġ= ĠfindViewById ( R . id . current Level ) ĊĠĠĠĠĠĠĠ Ġval Ġnext Level TextView Ġ: ĠTextView Ġ= ĠfindViewById ( R . id . next Level ) ĊĠĠĠĠĠĠĠ Ġval Ġneeded Exp TextView Ġ: ĠTextView Ġ= ĠfindViewById ( R . id . needed Exp ) ĊĠĠĠĠĠĠĠ Ġval Ġneeded Exp TextView 1 Ġ: ĠTextView Ġ= ĠfindViewById ( R . id . needed Exp 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġneeded Exp TextView 2 Ġ: ĠTextView Ġ= ĠfindViewById ( R . id . needed Exp 2 ) ĊĠĠĠĠĠĠĠ Ġval ĠprogressBar Ġ: ĠProgress Bar Ġ= ĠfindViewById ( R . id . exp ProgressBar ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠPrepare Ġthe Ġscreen Ġanimation ĊĠĠĠĠĠĠĠ Ġthis . screen Out Animation Ġ= ĠAnimation Utils . load Animation ( this , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . anim . shield _ out _ animation ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġthis . screen Out Animation !!. duration Ġ= Ġ 1 0 0 0 ĊĊĠĠĠĠĠĠĠ Ġ// ĠStart Ġthe Ġanimation ĊĠĠĠĠĠĠĠ Ġback Button . start Animation ( this . screen Out Animation !! ) ĊĠĠĠĠĠĠĠ Ġchange Name Button . start Animation ( this . screen Out Animation !! ) ĊĠĠĠĠĠĠĠ Ġplayer Name TextView . start Animation ( this . screen Out Animation !! ) ĊĠĠĠĠĠĠĠ Ġcurrent Level TextView . start Animation ( this . screen Out Animation !! ) ĊĠĠĠĠĠĠĠ Ġnext Level TextView . start Animation ( this . screen Out Animation !! ) ĊĠĠĠĠĠĠĠ Ġneeded Exp TextView . start Animation ( this . screen Out Animation !! ) ĊĠĠĠĠĠĠĠ Ġneeded Exp TextView 1 . start Animation ( this . screen Out Animation !! ) ĊĠĠĠĠĠĠĠ Ġneeded Exp TextView 2 . start Animation ( this . screen Out Animation !! ) ĊĠĠĠĠĠĠĠ ĠprogressBar . start Animation ( this . screen Out Animation !! ) ĊĊĠĠĠĠĠĠĠ ĠThread { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( this . screen Out Animation Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ(! this . screen Out Animation !!. has Ended ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Ui Thread { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe Ġopacity Ġof Ġall Ġviews Ġto Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġback Button . alpha Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Name Button . alpha Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Name TextView . alpha Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Level TextView . alpha Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Level TextView . alpha Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġneeded Exp TextView . alpha Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġneeded Exp TextView 1 . alpha Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġneeded Exp TextView 2 . alpha Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠprogressBar . alpha Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPrivate Ġmethod Ġpre paring Ġand Ġstarting Ġthe Ġanimation Ġfor Ġthe Ġprogress Ġbar ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġanimate ProgressBar () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexp ProgressBar Ġ: ĠProgress Bar Ġ= ĠfindViewById ( R . id . exp ProgressBar ) ĊĠĠĠĠĠĠĠ Ġval Ġbc Database Ġ= ĠBC Database . get MainThread BC Database ( application Context ) ĊĠĠĠĠĠĠĠ Ġval Ġplayer DAO Ġ= Ġbc Database . player Dao () ĊĠĠĠĠĠĠĠ Ġval Ġown Profile Ġ= Ġplayer DAO . get Own Profile () ĊĊĠĠĠĠĠĠĠ Ġ// ĠPrepare Ġand Ġstart Ġthe Ġprogress Ġbar Ġanimation ĊĠĠĠĠĠĠĠ Ġexp ProgressBar . progress Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġexp ProgressBar . animation Ġ= ĠProgress Bar Animation ( exp ProgressBar , Ġexp ProgressBar . progress . toFloat (), Ġown Profile !!. get Exp Progress (). toFloat ()) ĊĠĠĠĠĠĠĠ Ġexp ProgressBar . animation . duration Ġ= Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠ Ġexp ProgressBar . animation . start Offset Ġ= Ġ 5 0 0 ĊĠĠĠĠĠĠĠ Ġexp ProgressBar . animation . set Interpolator ( this , Ġandroid . R . interpol ator . de cel erate _ cubic ) ĊĠĠĠĠĠĠĠ Ġexp ProgressBar . animate () ĊĊĠĠĠĠĠĠĠ Ġ// ĠWait Ġfor Ġprogress Ġbar Ġanimation Ġto Ġfinish ĊĠĠĠĠĠĠĠ ĠThread . sleep ( exp ProgressBar . animation . duration ) ĊĠĠĠ Ġ} Ċ }