/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠMd . ĠM ah mud ul ĠHas an ĠSh oh ag Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ċ Ġ* Ġ------------------------------------------------------------------------ Ċ Ġ* Ċ Ġ* ĠProject : ĠWhy ĠNot ĠCompose ! Ċ Ġ* ĠDevelop ed Ġby : Ġ@ Imag in ative Sh oh ag Ċ Ġ* Ċ Ġ* ĠMd . ĠM ah mud ul ĠHas an ĠSh oh ag Ċ Ġ* Ġimag in atives ho h ag @ gmail . com Ċ Ġ* Ċ Ġ* ĠSource : Ġhttps :// github . com / Imag in ative Sh oh ag / Why - Not - Compose Ċ Ġ*/ Ċ Ċ package Ġorg . imag in ativ ew orld . wh yn ot compose . ui . screens . composition . dialog Ċ Ċ import Ġandroid . content . res . Configuration Ċ import Ġandroidx . compose . foundation . layout . Column Ċ import Ġandroidx . compose . foundation . layout . fill MaxSize Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . foundation . remember Scroll State Ċ import Ġandroidx . compose . foundation . vertical Scroll Ċ import Ġandroidx . compose . material . AlertDialog Ċ import Ġandroidx . compose . material . Button Ċ import Ġandroidx . compose . material . Divider Ċ import Ġandroidx . compose . material . Sca ffold Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . material . Text Button Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . Mutable State Ċ import Ġandroidx . compose . runtime . mutable State Of Ċ import Ġandroidx . compose . runtime . remember Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . tool ing . preview . Preview Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġcom . google . ac comp an ist . in sets . navigation Bar sWith I me Padding Ċ import Ġcom . google . ac comp an ist . in sets . status Bars Padding Ċ import Ġorg . imag in ativ ew orld . wh yn ot compose . common . compose . composition s . App Component Ċ import Ġorg . imag in ativ ew orld . wh yn ot compose . common . compose . theme . App Theme Ċ import Ġorg . imag in ativ ew orld . wh yn ot compose . ui . screens . composition . dialog . elements . General Dialog Ċ Ċ @ Composable Ċ fun ĠDialog Screen () Ġ{ ĊĠĠĠ Ġval Ġopen Default Dialog Ġ= Ġremember Ġ{ Ġmutable State Of ( false ) Ġ} ĊĊĠĠĠ Ġval Ġopen Custom Dialog Ġ= Ġremember Ġ{ Ġmutable State Of ( false ) Ġ} ĊĊĠĠĠ ĠDialog Screen Skeleton ( ĊĠĠĠĠĠĠĠ Ġshow Default Dialog Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Default Dialog . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġshow Custom Dialog Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Custom Dialog . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġif Ġ( open Default Dialog . value ) Ġ{ ĊĠĠĠĠĠĠĠ ĠDefault AlertDialog ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= Ġopen Default Dialog ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( open Custom Dialog . value ) Ġ{ ĊĠĠĠĠĠĠĠ ĠGeneral Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog State Ġ= Ġopen Custom Dialog , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Are Ġyou Ġsure ?", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" This Ġcannot Ġbe Ġund one .", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpositive Btn Text Ġ= Ġ" Yes ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Positive Btn Clicked Ġ= Ġ{}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnegative Btn Text Ġ= Ġ" No ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Negative Btn Clicked Ġ= Ġ{} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Preview Ċ @ Composable Ċ fun ĠDialog Screen Skeleton Preview () Ġ{ ĊĠĠĠ ĠApp Theme Ġ{ ĊĠĠĠĠĠĠĠ ĠDialog Screen Skeleton () ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Preview ( ui Mode Ġ= ĠConfiguration . UI _ MODE _ N IGHT _ YES ) Ċ @ Composable Ċ fun ĠDialog Screen Skeleton Preview Dark () Ġ{ ĊĠĠĠ ĠApp Theme Ġ{ ĊĠĠĠĠĠĠĠ ĠDialog Screen Skeleton () ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠDialog Screen Skeleton ( ĊĠĠĠ Ġshow Default Dialog : Ġ() Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠ Ġshow Custom Dialog : Ġ() Ġ-> ĠUnit Ġ= Ġ{}, Ċ ) Ġ{ ĊĠĠĠ ĠScaffold ( ĊĠĠĠĠĠĠĠ ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. navigation Bar sWith I me Padding () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. status Bars Padding () ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill MaxSize () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. vertical Scroll ( remember Scroll State ()) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp Component . Header (" Dialog ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ---------------------------------------------------------------- ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ---------------------------------------------------------------- ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠDiv ider () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠButton ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. align ( Alignment . Center H orizontally ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( top Ġ= Ġ 3 2 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Default Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText (" Show ĠDefault ĠDialog ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ---------------------------------------------------------------- ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp Component . Medium Spacer () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠButton ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. align ( Alignment . Center H orizontally ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Custom Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText (" Show ĠCustom ĠDialog ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ---------------------------------------------------------------- ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ---------------------------------------------------------------- ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp Component . Big Spacer () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠDefault AlertDialog ( ĊĠĠĠ Ġstate : ĠMutable State < Boolean > Ċ ) Ġ{ ĊĠĠĠ ĠAlertDialog ( ĊĠĠĠĠĠĠĠ Ġon Dismiss Request Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDis miss Ġthe Ġdialog Ġwhen Ġthe Ġuser Ġclicks Ġoutside Ġthe Ġdialog Ġor Ġon Ġthe Ġback ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġbutton . ĠIf Ġyou Ġwant Ġto Ġdisable Ġthat Ġfunctionality , Ġsimply Ġuse Ġan Ġempty ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠonClose Request . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġ" Title ") ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" This Ġarea Ġtypically Ġcontains Ġthe Ġsupport ive Ġtext Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" which Ġpresents Ġthe Ġdetails Ġregarding Ġthe ĠDialog 's Ġpurpose ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġconfirm Button Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText Button ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText (" Confirm ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġdismiss Button Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText Button ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText (" Dismiss ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ } Ċ