package Ġcourse . examples . ui . alert dialog Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Dialog Fragment Ċ import Ġandroid . support . v 4 . app . Fragment Activity Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . ProgressBar Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠAlertDialog Activity Ġ: ĠFragment Activity () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠIdentifier Ġfor Ġeach Ġtype Ġof ĠDialog ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠAL ERT _ ID Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠPROG RESS _ ID Ġ= Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" AlertDialog Activity " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠAL ERT _ TAG Ġ= Ġ" AlertDialog " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Shutdown Button : ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Dialog : ĠDialog Fragment ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Progress Button : ĠProgress Bar ĊĊĠĠĠ Ġpublic Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . main ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSh ut Down ĠButton ĊĠĠĠĠĠĠĠ Ġm Shutdown Button Ġ= ĠfindViewById ( R . id . shutdown Button ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠProgress ĠButton ĊĠĠĠĠĠĠĠ Ġm Progress Button Ġ= ĠfindViewById ( R . id . in determinate Bar ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Shut Down Button Clicked ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Dialog UIElement ( ALERT _ ID ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠShow Ġdesired ĠDialog ĊĠĠĠ Ġprivate Ġfun Ġshow Dialog UIElement ( dialog ID : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( dialog ID ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠShow ĠAlertDialog ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAL ERT _ ID Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreate Ġa Ġnew ĠAlertDialog Fragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Dialog Ġ= ĠAlertDialog Fragment . newInstance () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠShow ĠAlertDialog Fragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Dialog . show ( support FragmentManager , ĠAL ERT _ TAG ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠShow ĠProgress Dialog ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPROG RESS _ ID Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Make ĠProgress Bar Ġvisible ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Progress Button . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠAbort Ġor Ġcomplete ĠSh ut Down Ġbased Ġon Ġvalue Ġof Ġshould Continue ĊĠĠĠ Ġinternal Ġfun Ġcontinue Shutdown ( should Continue : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( should Continue ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPrevent Ġfurther Ġinteraction Ġwith Ġthe ĠSh ut Down ĠButton ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Shutdown Button . isEnabled Ġ= Ġfalse ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠShow ĠProgress Dialog Ġas Ġshutdown Ġprocess Ġbegins ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Dialog UIElement ( PROGRESS _ ID ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFinish Ġthe ĠSh ut Down Ġprocess ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish Shutdown () ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAbort ĠSh ut Down Ġand Ġdismiss Ġdialog ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Dialog . dismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfinish Shutdown () Ġ{ ĊĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch ( context Ġ= ĠDispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 5 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }