/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ*/ Ċ Ċ package Ġandroidx . we ar . compose . material Ċ Ċ import Ġandroidx . compose . foundation . Scroll State Ċ import Ġandroidx . compose . foundation . background Ċ import Ġandroidx . compose . foundation . layout . Arrange ment Ċ import Ġandroidx . compose . foundation . layout . Column Ċ import Ġandroidx . compose . foundation . layout . Column Scope Ċ import Ġandroidx . compose . foundation . layout . fill MaxSize Ċ import Ġandroidx . compose . foundation . layout . fill Max Width Ċ import Ġandroidx . compose . foundation . layout . height Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . foundation . layout . Padding Values Ċ import Ġandroidx . compose . foundation . layout . Row Ċ import Ġandroidx . compose . foundation . layout . Spacer Ċ import Ġandroidx . compose . foundation . layout . width Ċ import Ġandroidx . compose . foundation . remember Scroll State Ċ import Ġandroidx . compose . foundation . vertical Scroll Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . Composition Local Provider Ċ import Ġandroidx . compose . runtime . getValue Ċ import Ġandroidx . compose . runtime . La unched Effect Ċ import Ġandroidx . compose . runtime . remember Updated State Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġkotlinx . coroutines . delay Ċ Ċ /** Ċ Ġ* Ġ[ AlertDialog ] Ġis Ġan Ġopinion ated , Ġfull Ġscreen Ġdialog . ĠThis Ġoverload Ġoffers Ġ 5 Ġslots Ġfor Ġtitle , Ċ Ġ* Ġnegative Ġbutton , Ġpositive Ġbutton , Ġoptional Ġicon Ġand Ġoptional Ġcontent . Ċ Ġ* ĠThe Ġbuttons Ġare Ġshown Ġside - by - side Ġbelow Ġthe Ġicon , Ġtext Ġand Ġcontent . Ċ Ġ* Ġ[ AlertDialog ] Ġis Ġscroll able Ġby Ġdefault Ġif Ġthe Ġcontent Ġis Ġt aller Ġthan Ġthe Ġviewport . Ċ Ġ* Ċ Ġ* ĠExample Ġof Ġan Ġ[ AlertDialog ] Ġwith Ġan Ġicon , Ġtitle , Ġbody Ġtext Ġand Ġbuttons : Ċ Ġ* Ġ@ sample Ġandroidx . we ar . compose . material . samples . AlertDialog With Buttons Ċ Ġ* Ċ Ġ* Ġ@ param Ġtitle ĠA Ġslot Ġfor Ġdisplaying Ġthe Ġtitle Ġof Ġthe Ġdialog , Ċ Ġ* Ġexpected Ġto Ġbe Ġone Ġor Ġtwo Ġlines Ġof Ġtext . Ċ Ġ* Ġ@ param Ġnegative Button ĠA Ġslot Ġfor Ġa Ġ[ Button ] Ġindicating Ġnegative Ġsentiment Ġ( e . g . ĠNo ). Ċ Ġ* ĠClick ing Ġthe Ġbutton Ġmust Ġremove Ġthe Ġdialog Ġfrom Ġthe Ġcomposition Ġhierarchy . Ċ Ġ* Ġ@ param Ġpositive Button ĠA Ġslot Ġfor Ġa Ġ[ Button ] Ġindicating Ġpositive Ġsentiment Ġ( e . g . ĠYes ). Ċ Ġ* ĠClick ing Ġthe Ġbutton Ġmust Ġremove Ġthe Ġdialog Ġfrom Ġthe Ġcomposition Ġhierarchy . Ċ Ġ* Ġ@ param Ġmodifier ĠModifier Ġto Ġbe Ġapplied Ġto Ġthe Ġdialog . Ċ Ġ* Ġ@ param Ġicon ĠOptional Ġslot Ġfor Ġan Ġicon Ġto Ġbe Ġshown Ġat Ġthe Ġtop Ġof Ġthe Ġdialog . Ċ Ġ* Ġ@ param Ġscroll State ĠThe Ġscroll Ġstate Ġfor Ġthe Ġdialog Ġso Ġthat Ġthe Ġscroll Ġposition Ġcan Ġbe Ġdisplayed Ċ Ġ* Ġe . g . Ġby Ġthe Ġ[ Position Indicator ] Ġpassed Ġto Ġ[ Sca ffold ]. Ċ Ġ* Ġ@ param ĠbackgroundColor Ġ[ Color ] Ġrepresenting Ġthe Ġbackground Ġcolor Ġfor Ġthe Ġdialog . Ċ Ġ* Ġ@ param Ġcontent Color Ġ[ Color ] Ġrepresenting Ġthe Ġcolor Ġfor Ġ[ content ]. Ċ Ġ* Ġ@ param Ġtitle Color Ġ[ Color ] Ġrepresenting Ġthe Ġcolor Ġfor Ġ[ title ]. Ċ Ġ* Ġ@ param Ġicon Tint Color ĠIcon Ġ[ Color ] Ġthat Ġdefaults Ġto Ġ[ content Color ], Ċ Ġ* Ġunless Ġspecifically Ġoverridden . Ċ Ġ* Ġ@ param Ġcontent Padding ĠThe Ġpadding Ġto Ġapply Ġaround Ġthe Ġwhole Ġof Ġthe Ġdialog 's Ġcontents . Ċ Ġ* Ġ@ param Ġcontent ĠA Ġslot Ġfor Ġadditional Ġcontent , Ġexpected Ġto Ġbe Ġ 2 - 3 Ġlines Ġof Ġtext . Ċ Ġ*/ Ċ @ Composable Ċ public Ġfun ĠAlertDialog ( ĊĠĠĠ Ġtitle : Ġ@ Composable Ġ() Ġ-> ĠUnit , ĊĠĠĠ Ġnegative Button : Ġ@ Composable Ġ() Ġ-> ĠUnit , ĊĠĠĠ Ġpositive Button : Ġ@ Composable Ġ() Ġ-> ĠUnit , ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠ Ġicon : Ġ@ Composable Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull , ĊĠĠĠ Ġscroll State : ĠScroll State Ġ= Ġremember Scroll State (), ĊĠĠĠ ĠbackgroundColor : ĠColor Ġ= ĠMaterial Theme . colors . background , ĊĠĠĠ Ġcontent Color : ĠColor Ġ= Ġcontent Color For ( backgroundColor ), ĊĠĠĠ Ġtitle Color : ĠColor Ġ= Ġcontent Color , ĊĠĠĠ Ġicon Tint Color : ĠColor Ġ= Ġcontent Color , ĊĠĠĠ Ġcontent Padding : ĠPadding Values Ġ= ĠDialog Defaults . Buttons Content Padding , ĊĠĠĠ Ġcontent : Ġ@ Composable Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull Ċ ) Ġ{ ĊĠĠĠ ĠDialog Impl ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier , ĊĠĠĠĠĠĠĠ Ġscroll State Ġ= Ġscroll State , ĊĠĠĠĠĠĠĠ Ġcontent Padding Ġ= Ġcontent Padding , ĊĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= ĠbackgroundColor , ĊĠĠĠĠĠĠĠ Ġcontent Color Ġ= Ġcontent Color , ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġweights To Center Vert ically Ġ= Ġ 0 . 5 f ĊĊĠĠĠĠĠĠĠ Ġ// ĠUse Ġ 5 0 : 5 0 Ġweights Ġto Ġcenter Ġthe Ġtitle Ġ+ Ġcontent Ġbetween Ġicon Ġand Ġbuttons ĊĠĠĠĠĠĠĠ ĠSp acer ( Modifier . fill Max Width (). weight ( weights To Center Vert ically )) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( icon Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDialog Icon Header ( icon Tint Color , Ġcontent Ġ= Ġicon ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠDialog Title ( title Color , Ġpadding Ġ= ĠDialog Defaults . Title Padding , Ġtitle ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( content Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDialog Body ( content ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠUse Ġ 5 0 : 5 0 Ġweights Ġto Ġcenter Ġthe Ġtitle Ġ+ Ġcontent Ġbetween Ġicon Ġand Ġbuttons ĊĠĠĠĠĠĠĠ ĠSp acer ( Modifier . fill Max Width (). weight ( weights To Center Vert ically )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠButtons ĊĠĠĠĠĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically , ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnegative Button () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSp acer ( modifier Ġ= ĠModifier . width ( Dialog Defaults . Button Spacing )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpositive Button () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ[ AlertDialog ] Ġis Ġan Ġopinion ated , Ġfull Ġscreen Ġdialog . Ċ Ġ* ĠThis Ġoverload Ġoffers Ġ 4 Ġslots Ġfor Ġtitle , Ġoptional Ġicon , Ġoptional Ġmessage Ġtext Ġand Ċ Ġ* Ġa Ġcontent Ġslot Ġexpected Ġto Ġbe Ġone Ġor Ġmore Ġvert ically Ġstack ed Ġ[ Chip ] s Ġor Ġ[ Toggle Chip ] s . Ċ Ġ* Ġ[ AlertDialog ] Ġis Ġscroll able Ġby Ġdefault Ġif Ġthe Ġcontent Ġis Ġt aller Ġthan Ġthe Ġviewport . Ċ Ġ* Ċ Ġ* ĠExample Ġof Ġan Ġ[ AlertDialog ] Ġwith Ġan Ġicon , Ġtitle , Ġmessage Ġtext Ġand Ġch ips : Ċ Ġ* Ġ@ sample Ġandroidx . we ar . compose . material . samples . AlertDialog With Chips Ċ Ġ* Ċ Ġ* Ġ@ param Ġtitle ĠA Ġslot Ġfor Ġdisplaying Ġthe Ġtitle Ġof Ġthe Ġdialog , Ċ Ġ* Ġexpected Ġto Ġbe Ġone Ġor Ġtwo Ġlines Ġof Ġtext . Ċ Ġ* Ġ@ param Ġmodifier ĠModifier Ġto Ġbe Ġapplied Ġto Ġthe Ġdialog . Ċ Ġ* Ġ@ param Ġicon ĠOptional Ġslot Ġfor Ġan Ġicon Ġto Ġbe Ġshown Ġat Ġthe Ġtop Ġof Ġthe Ġdialog . Ċ Ġ* Ġ@ param Ġmessage ĠOptional Ġslot Ġfor Ġadditional Ġmessage Ġcontent , Ġexpected Ġto Ġbe Ġ 2 - 3 Ġlines Ġof Ġtext . Ċ Ġ* Ġ@ param Ġscroll State ĠThe Ġscroll Ġstate Ġfor Ġthe Ġdialog Ġso Ġthat Ġthe Ġscroll Ġposition Ġcan Ġbe Ġdisplayed Ċ Ġ* Ġe . g . Ġby Ġthe Ġ[ Position Indicator ] Ġpassed Ġto Ġ[ Sca ffold ]. Ċ Ġ* Ġ@ param ĠbackgroundColor Ġ[ Color ] Ġrepresenting Ġthe Ġbackground Ġcolor Ġfor Ġthe Ġdialog . Ċ Ġ* Ġ@ param Ġcontent Color Ġ[ Color ] Ġrepresenting Ġthe Ġcolor Ġfor Ġ[ content ]. Ċ Ġ* Ġ@ param Ġtitle Color Ġ[ Color ] Ġrepresenting Ġthe Ġcolor Ġfor Ġ[ title ]. Ċ Ġ* Ġ@ param Ġicon Tint Color ĠIcon Ġ[ Color ] Ġthat Ġdefaults Ġto Ġ[ content Color ], Ċ Ġ* Ġunless Ġspecifically Ġoverridden . Ċ Ġ* Ġ@ param Ġcontent Padding ĠThe Ġpadding Ġto Ġapply Ġaround Ġthe Ġwhole Ġof Ġthe Ġdialog 's Ġcontents . Ċ Ġ* Ġ@ param Ġcontent ĠA Ġslot Ġfor Ġone Ġor Ġmore Ġsp aced Ġ[ Chip ] s , Ġstack ed Ġvert ically . Ċ Ġ*/ Ċ @ Composable Ċ public Ġfun ĠAlertDialog ( ĊĠĠĠ Ġtitle : Ġ@ Composable Ġ() Ġ-> ĠUnit , ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠ Ġicon : Ġ@ Composable Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull , ĊĠĠĠ Ġmessage : Ġ@ Composable Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull , ĊĠĠĠ Ġscroll State : ĠScroll State Ġ= Ġremember Scroll State (), ĊĠĠĠ ĠbackgroundColor : ĠColor Ġ= ĠMaterial Theme . colors . background , ĊĠĠĠ Ġcontent Color : ĠColor Ġ= Ġcontent Color For ( backgroundColor ), ĊĠĠĠ Ġtitle Color : ĠColor Ġ= Ġcontent Color , ĊĠĠĠ Ġicon Tint Color : ĠColor Ġ= Ġcontent Color , ĊĠĠĠ Ġcontent Padding : ĠPadding Values Ġ= ĠDialog Defaults . Chips Content Padding , ĊĠĠĠ Ġcontent : Ġ@ Composable ĠColumn Scope . () Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ ĠDialog Impl ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier , ĊĠĠĠĠĠĠĠ Ġscroll State Ġ= Ġscroll State , ĊĠĠĠĠĠĠĠ Ġcontent Padding Ġ= Ġcontent Padding , ĊĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= ĠbackgroundColor , ĊĠĠĠĠĠĠĠ Ġcontent Color Ġ= Ġcontent Color , ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( icon Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDialog Icon Header ( icon Tint Color , Ġcontent Ġ= Ġicon ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠDialog Title ( title Color , Ġpadding Ġ= ĠDialog Defaults . Title Padding , Ġcontent Ġ= Ġtitle ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( message Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDialog Body ( message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcontent () ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ[ Confirmation Dialog ] Ġis Ġan Ġopinion ated Ġdialog Ġthat Ġdisplays Ġa Ġmessage Ġto Ġthe Ġuser Ċ Ġ* Ġfor Ġ[ duration Millis ]. ĠIt Ġhas Ġa Ġslot Ġfor Ġan Ġicon Ġor Ġimage Ġ( which Ġcould Ġbe Ġanimated ). Ċ Ġ* Ċ Ġ* Ġ[ Confirmation Dialog ] Ġcan Ġalso Ġbe Ġacknowled ged Ġvia Ġswipe - to - dismiss Ġif Ġthe Ġdialog Ġis Ċ Ġ* Ġdisplayed Ġas Ġa Ġdestination Ġin Ġa Ġnavigation Ġgraph Ġe . g . Ġusing ĠSw ipe Dismiss able Nav Host . Ċ Ġ* Ċ Ġ* ĠExample Ġof Ġa Ġ[ Confirmation Dialog ] Ġwith Ġanimation : Ċ Ġ* Ġ@ sample Ġandroidx . we ar . compose . material . samples . Confirmation Dialog With Animation Ċ Ġ* Ċ Ġ* Ġ@ param Ġon Timeout ĠEvent Ġinvoked Ġwhen Ġthe Ġdialog Ġhas Ġbeen Ġshown Ġfor Ġ[ duration Millis ]. Ċ Ġ* ĠMust Ġremove Ġthe Ġ[ Confirmation Dialog ] Ġfrom Ġthe Ġcomposition . Ċ Ġ* Ġ@ param Ġmodifier ĠModifier Ġto Ġbe Ġapplied Ġto Ġthe Ġdialog . Ċ Ġ* Ġ@ param Ġicon ĠAn Ġoptional Ġslot Ġfor Ġdisplaying Ġan Ġicon Ġor Ġimage . Ċ Ġ* Ġ@ param Ġscroll State ĠThe Ġscroll Ġstate Ġfor Ġthe Ġdialog Ġso Ġthat Ġthe Ġscroll Ġposition Ġcan Ġbe Ġdisplayed Ċ Ġ* Ġe . g . Ġby Ġthe Ġ[ Position Indicator ] Ġpassed Ġto Ġ[ Sca ffold ]. Ċ Ġ* Ġ@ param Ġduration Millis ĠThe Ġnumber Ġof Ġmilliseconds Ġfor Ġwhich Ġthe Ġdialog Ġis Ġdisplayed , Ċ Ġ* Ġmust Ġbe Ġpositive . ĠExpected Ġto Ġbe Ġ[ Dialog Defaults . Short Duration ], Ġ[ Dialog Defaults . Long Duration ], Ċ Ġ* Ġor Ġ[ Dialog Defaults . In defin ite Duration ]. Ċ Ġ* Ġ@ param ĠbackgroundColor Ġ[ Color ] Ġrepresenting Ġthe Ġbackground Ġcolor Ġfor Ġthis Ġdialog . Ċ Ġ* Ġ@ param Ġcontent Color Ġ[ Color ] Ġrepresenting Ġthe Ġcontent Ġcolor Ġfor Ġthis Ġdialog . Ċ Ġ* Ġ@ param Ġicon Tint Color ĠIcon Ġ[ Color ] Ġthat Ġdefaults Ġto Ġthe Ġ[ content Color ], Ċ Ġ* Ġunless Ġspecifically Ġoverridden . Ċ Ġ* Ġ@ param Ġcontent Padding ĠThe Ġpadding Ġto Ġapply Ġaround Ġthe Ġwhole Ġof Ġthe Ġdialog 's Ġcontents . Ċ Ġ* Ġ@ param Ġcontent ĠA Ġslot Ġfor Ġthe Ġdialog Ġtitle , Ġexpected Ġto Ġbe Ġone Ġline Ġof Ġtext . Ċ Ġ*/ Ċ @ Composable Ċ public Ġfun ĠConfirm ation Dialog ( ĊĠĠĠ Ġon Timeout : Ġ() Ġ-> ĠUnit , ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠ Ġicon : Ġ@ Composable Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull , ĊĠĠĠ Ġscroll State : ĠScroll State Ġ= Ġremember Scroll State (), ĊĠĠĠ Ġduration Millis : ĠLong Ġ= ĠDialog Defaults . Short Duration , ĊĠĠĠ ĠbackgroundColor : ĠColor Ġ= ĠMaterial Theme . colors . background , ĊĠĠĠ Ġcontent Color : ĠColor Ġ= Ġcontent Color For ( backgroundColor ), ĊĠĠĠ Ġicon Tint Color : ĠColor Ġ= Ġcontent Color , ĊĠĠĠ Ġcontent Padding : ĠPadding Values Ġ= ĠDialog Defaults . Confirmation Content Padding , ĊĠĠĠ Ġcontent : Ġ@ Composable Ġ() Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ Ġrequire ( duration Millis Ġ> Ġ 0 ) Ġ{ Ġ" Duration Ġmust Ġbe Ġa Ġpositive Ġinteger " Ġ} ĊĊĠĠĠ Ġ// ĠAlways Ġrefer Ġto Ġthe Ġlatest Ġinputs Ġwith Ġwhich ĠConfirm ation Dialog Ġwas Ġre composed . ĊĠĠĠ Ġval Ġcurrent On Timeout Ġby Ġremember Updated State ( on Timeout ) ĊĊĠĠĠ ĠLa unched Effect ( duration Millis ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdelay ( duration Millis ) ĊĠĠĠĠĠĠĠ Ġcurrent On Timeout () ĊĠĠĠ Ġ} ĊĠĠĠ ĠDialog Impl ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier , ĊĠĠĠĠĠĠĠ Ġscroll State Ġ= Ġscroll State , ĊĠĠĠĠĠĠĠ Ġcontent Padding Ġ= Ġcontent Padding , ĊĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= ĠbackgroundColor , ĊĠĠĠĠĠĠĠ Ġcontent Color Ġ= Ġcontent Color , ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( icon Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDialog Icon Header ( icon Tint Color , Ġcontent Ġ= Ġicon ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠDialog Title ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Color Ġ= Ġcontent Color , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpadding Ġ= ĠDialog Defaults . Title Bottom Padding , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= Ġcontent ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠContains Ġthe Ġdefault Ġvalues Ġused Ġby Ġ[ AlertDialog ] Ġand Ġ[ Confirmation Dialog ]. Ċ Ġ*/ Ċ public Ġobject ĠDialog Defaults Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġthe Ġrecommended Ġcontent Padding Ġfor Ġ[ AlertDialog ] Ġwith Ġch ips , Ġused Ġto Ġdefine ĊĠĠĠĠ Ġ* Ġthe Ġspacing Ġaround Ġcontent Ġthat Ġmay Ġcontain Ġseveral Ġch ips . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġval ĠCh ips Content Padding ĊĠĠĠĠĠĠĠ Ġ@ Composable Ġget () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Round Device ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPadding Values ( start Ġ= Ġ 1 0 . dp , Ġend Ġ= Ġ 1 0 . dp , Ġtop Ġ= Ġ 2 4 . dp , Ġbottom Ġ= Ġ 7 0 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPadding Values ( start Ġ= Ġ 5 . dp , Ġend Ġ= Ġ 5 . dp , Ġtop Ġ= Ġ 2 0 . dp , Ġbottom Ġ= Ġ 6 4 . dp ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġthe Ġrecommended Ġcontent Padding Ġfor Ġ[ AlertDialog ] Ġwith Ġbuttons , Ġused Ġto Ġdefine ĊĠĠĠĠ Ġ* Ġthe Ġspacing Ġaround Ġcontent Ġfor Ġa Ġdialog Ġwith Ġicon , Ġtitle , Ġoptional Ġmessage Ġtext ĊĠĠĠĠ Ġ* Ġand Ġtwo Ġbuttons . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġval ĠButtons Content Padding ĊĠĠĠĠĠĠĠ Ġ@ Composable Ġget () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Round Device ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPadding Values ( start Ġ= Ġ 1 0 . dp , Ġend Ġ= Ġ 1 0 . dp , Ġtop Ġ= Ġ 2 4 . dp , Ġbottom Ġ= Ġ 4 0 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPadding Values ( start Ġ= Ġ 5 . dp , Ġend Ġ= Ġ 5 . dp , Ġtop Ġ= Ġ 2 0 . dp , Ġbottom Ġ= Ġ 3 8 . dp ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġthe Ġrecommended Ġcontent Padding Ġfor Ġ[ Confirmation Dialog ], ĊĠĠĠĠ Ġ* Ġused Ġto Ġdefine Ġthe Ġspacing Ġaround Ġcontent Ġfor Ġa Ġdialog Ġwith Ġoptional Ġicon Ġand Ġtitle . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġval ĠConfirm ation Content Padding ĊĠĠĠĠĠĠĠ Ġ@ Composable Ġget () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Round Device ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPadding Values ( start Ġ= Ġ 1 4 . dp , Ġend Ġ= Ġ 1 4 . dp , Ġtop Ġ= Ġ 2 4 . dp , Ġbottom Ġ= Ġ 2 4 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPadding Values ( start Ġ= Ġ 1 2 . dp , Ġend Ġ= Ġ 1 2 . dp , Ġtop Ġ= Ġ 2 0 . dp , Ġbottom Ġ= Ġ 2 0 . dp ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠShort Ġduration Ġfor Ġshowing Ġ[ Confirmation Dialog ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval ĠShort Duration Ġ= Ġ 4 0 0 0 L ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLong Ġduration Ġfor Ġshowing Ġ[ Confirmation Dialog ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval ĠLong Duration Ġ= Ġ 1 0 0 0 0 L ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠShow Ġ[ Confirmation Dialog ] Ġin def initely Ġ( supports Ġswipe - to - dismiss ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval ĠIn defin ite Duration Ġ= ĠLong . MAX _ VALUE ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSp acing Ġbetween Ġ[ Button ] s . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġval ĠButton Spacing Ġ= Ġ 1 2 . dp ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSp acing Ġbelow Ġ[ Icon ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġval ĠIcon Spacing Ġ= Ġ 8 . dp ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPadding Ġaround Ġbody Ġcontent . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġval ĠBody Padding ĊĠĠĠĠĠĠĠ Ġ@ Composable Ġget () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Round Device ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPadding Values ( start Ġ= Ġ 8 . dp , Ġend Ġ= Ġ 8 . dp , Ġtop Ġ= Ġ 4 . dp , Ġbottom Ġ= Ġ 1 6 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPadding Values ( start Ġ= Ġ 5 . dp , Ġend Ġ= Ġ 5 . dp , Ġtop Ġ= Ġ 4 . dp , Ġbottom Ġ= Ġ 1 6 . dp ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPadding Ġaround Ġtitle Ġtext . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġval ĠTitle Padding ĊĠĠĠĠĠĠĠ Ġ@ Composable Ġget () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Round Device ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPadding Values ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġ 1 4 . dp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Ġ= Ġ 1 4 . dp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Ġ= Ġ 0 . dp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Ġ= Ġ 1 2 . dp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPadding Values ( start Ġ= Ġ 5 . dp , Ġend Ġ= Ġ 5 . dp , Ġtop Ġ= Ġ 0 . dp , Ġbottom Ġ= Ġ 1 2 . dp ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBottom Ġpadding Ġfor Ġtitle Ġtext . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġval ĠTitle Bottom Padding ĊĠĠĠĠĠĠĠ Ġ@ Composable Ġget () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPadding Values ( start Ġ= Ġ 0 . dp , Ġend Ġ= Ġ 0 . dp , Ġtop Ġ= Ġ 0 . dp , Ġbottom Ġ= Ġ 1 6 . dp ) Ċ } Ċ Ċ /** Ċ Ġ* ĠCommon ĠW ear ĠMaterial Ġdialog Ġimplementation Ġthat Ġoffers Ġa Ġsingle Ġcontent Ġslot , Ċ Ġ* Ġfill s Ġthe Ġscreen Ġand Ġis Ġscroll able Ġby Ġdefault Ġif Ġthe Ġcontent Ġis Ġt aller Ġthan Ġthe Ġviewport . Ċ Ġ*/ Ċ @ Composable Ċ private Ġfun ĠDialog Impl ( ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠ Ġscroll State : ĠScroll State , ĊĠĠĠ ĠbackgroundColor : ĠColor , ĊĠĠĠ Ġcontent Color : ĠColor , ĊĠĠĠ Ġcontent Padding : ĠPadding Values , ĊĠĠĠ Ġcontent : Ġ@ Composable ĠColumn Scope . () Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠ Ġhorizontal Alignment Ġ= ĠAlignment . Center H orizontally , ĊĠĠĠĠĠĠĠ Ġvertical Arrange ment Ġ= ĠArrange ment . Center , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill MaxSize () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. background ( backgroundColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. vertical Scroll ( state Ġ= Ġscroll State ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( content Padding ), ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠComp osition Local Provider ( Local Content Color Ġprovides Ġcontent Color ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ[ Dialog Icon Header ] Ġdisplays Ġan Ġicon Ġat Ġthe Ġtop Ġof Ġthe Ġdialog Ċ Ġ* Ġfollowed Ġby Ġthe Ġrecommended Ġspacing . Ċ Ġ* Ċ Ġ* Ġ@ param Ġicon Tint Color Ġ[ Color ] Ġin Ġwhich Ġto Ġt int Ġthe Ġicon . Ċ Ġ* Ġ@ param Ġcontent ĠSlot Ġfor Ġan Ġicon . Ċ Ġ*/ Ċ @ Composable Ċ private Ġfun ĠDialog Icon Header ( ĊĠĠĠ Ġicon Tint Color : ĠColor , ĊĠĠĠ Ġcontent : Ġ@ Composable Ġ() Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ ĠComp osition Local Provider ( Local Content Color Ġprovides Ġicon Tint Color ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontent () ĊĠĠĠĠĠĠĠ ĠSp acer ( Modifier . fill Max Width (). height ( Dialog Defaults . Icon Spacing )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ[ Dialog Title ] Ġdisplays Ġthe Ġtitle Ġcontent Ġin Ġa Ġdialog Ġwith Ġthe Ġrecommended Ġpadding . Ċ Ġ* Ċ Ġ* Ġ@ param Ġtitle Color Ġ[ Color ] Ġin Ġwhich Ġthe Ġtitle Ġis Ġdisplayed . Ċ Ġ* Ġ@ param Ġpadding ĠThe Ġpadding Ġaround Ġthe Ġtitle Ġcontent . Ċ Ġ*/ Ċ @ Composable Ċ private Ġfun ĠDialog Title ( ĊĠĠĠ Ġtitle Color : ĠColor , ĊĠĠĠ Ġpadding : ĠPadding Values , ĊĠĠĠ Ġcontent : Ġ@ Composable Ġ() Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ ĠComp osition Local Provider ( ĊĠĠĠĠĠĠĠ ĠLocal Content Color Ġprovides Ġtitle Color , ĊĠĠĠĠĠĠĠ ĠLocal TextStyle Ġprovides ĠMaterial Theme . typography . title 3 ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠColumn ( modifier Ġ= ĠModifier . padding ( padding )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ[ Dialog Body ] Ġdisplays Ġthe Ġbody Ġcontent Ġin Ġa Ġdialog Ġwith Ġrecommended Ġpadding . Ċ Ġ*/ Ċ @ Composable Ċ private Ġfun ĠDialog Body ( ĊĠĠĠ Ġcontent : Ġ@ Composable Ġ() Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ ĠComp osition Local Provider ( ĊĠĠĠĠĠĠĠ ĠLocal TextStyle Ġprovides ĠMaterial Theme . typography . body 2 ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠColumn ( modifier Ġ= ĠModifier . padding ( Dialog Defaults . Body Padding )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ