/* Ċ Ġ* ĠLicensed Ġunder ĠApache - 2 . 0 Ċ Ġ* Ċ Ġ* ĠDesign ed Ġand Ġdeveloped Ġby ĠA id an ĠFol le st ad Ġ(@ af ol le st ad ) Ċ Ġ*/ Ċ package Ġcom . af ol le st ad . material dialogs . internal . main Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . Paint . Style . FILL Ċ import Ġandroid . graphics . Paint . Style . ST RO KE Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View . Measure Spec . AT _ MO ST Ċ import Ġandroid . view . View . Measure Spec . EX ACT LY Ċ import Ġandroid . view . View . Measure Spec . UNSPECIFIED Ċ import Ġandroid . view . View . Measure Spec . getSize Ċ import Ġandroid . view . View . Measure Spec . make Measure Spec Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroidx . annotation . Color Int Ċ import Ġcom . af ol le st ad . material dialogs . Material Dialog Ċ import Ġcom . af ol le st ad . material dialogs . R Ċ import Ġcom . af ol le st ad . material dialogs . internal . button . Dialog ActionButton Layout Ċ import Ġcom . af ol le st ad . material dialogs . utils . dim en Px Ċ Ċ val ĠDEBUG _ COLOR _ PIN K Ġ= ĠColor . parse Color ("# E AA 3 CF ") Ċ val ĠDEBUG _ COLOR _ DARK _ PIN K Ġ= ĠColor . parse Color ("# E 0 6 6 B 1 ") Ċ val ĠDEBUG _ COLOR _ BLUE Ġ= ĠColor . parse Color ("# B 5 FA FB ") Ċ Ċ /** Ċ Ġ* ĠThe Ġroot Ġlayout Ġof Ġa Ġdialog . ĠContains Ġa Ġ[ Dialog Title Layout ], Ġ[ Dialog Content Layout ], Ċ Ġ* Ġand Ġ[ Dialog ActionButton Layout ]. Ċ Ġ* Ċ Ġ* Ġ@ author ĠA id an ĠFol le st ad Ġ( af ol le st ad ) Ċ Ġ*/ Ċ internal Ġclass ĠDialog Layout ( ĊĠ Ġcontext : ĠContext , ĊĠ Ġattrs : ĠAttributeSet ? Ċ ) Ġ: ĠFrame Layout ( context , Ġattrs ) Ġ{ ĊĊĠ Ġvar ĠmaxHeight : ĠInt Ġ= Ġ 0 ĊĠ Ġvar Ġdebug Mode : ĠBoolean Ġ= Ġfalse ĊĊĠ Ġprivate Ġval Ġframe Margin Vertical Ġ= Ġdim en Px ( R . dim en . md _ dialog _ frame _ margin _ vertical ) ĊĠ Ġprivate Ġvar Ġdebug Paint : ĠPaint ? Ġ= Ġnull ĊĊĠ Ġinternal Ġval Ġframe Margin Vertical Less Ġ= Ġdim en Px ( R . dim en . md _ dialog _ frame _ margin _ vertical _ less ) ĊĊĠ Ġinternal Ġlateinit Ġvar Ġdialog : ĠMaterial Dialog ĊĠ Ġinternal Ġlateinit Ġvar Ġtitle Layout : ĠDialog Title Layout ĊĠ Ġinternal Ġlateinit Ġvar Ġcontent Layout : ĠDialog Content Layout ĊĠ Ġinternal Ġlateinit Ġvar Ġbuttons Layout : ĠDialog ActionButton Layout ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġset Will Not Draw ( false ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Finish Inf late () Ġ{ ĊĠĠĠ Ġsuper . on Finish Inf late () ĊĠĠĠ Ġtitle Layout Ġ= ĠfindViewById ( R . id . md _ title _ layout ) ĊĠĠĠ Ġcontent Layout Ġ= ĠfindViewById ( R . id . md _ content _ layout ) ĊĠĠĠ Ġbuttons Layout Ġ= ĠfindViewById ( R . id . md _ button _ layout ) ĊĠ Ġ} ĊĊĠ Ġinternal Ġfun Ġinvalidate Div iders ( ĊĠĠĠ Ġsc rolled Down : ĠBoolean , ĊĠĠĠ Ġat Bottom : ĠBoolean ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġtitle Layout . draw Divider Ġ= Ġsc rolled Down ĊĠĠĠ Ġbuttons Layout . draw Divider Ġ= Ġat Bottom ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Measure ( ĊĠĠĠ Ġwidth Measure Spec : ĠInt , ĊĠĠĠ Ġheight Measure Spec : ĠInt ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġval Ġspec Width Ġ= Ġget Size ( width Measure Spec ) ĊĠĠĠ Ġvar Ġspec Height Ġ= Ġget Size ( height Measure Spec ) ĊĠĠĠ Ġif Ġ( spec Height Ġ> ĠmaxHeight ) Ġ{ ĊĠĠĠĠĠ Ġspec Height Ġ= ĠmaxHeight ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtitle Layout . measure ( ĊĠĠĠĠĠĠĠ Ġmake Measure Spec ( spec Width , ĠEX ACT LY ), ĊĠĠĠĠĠĠĠ Ġmake Measure Spec ( 0 , ĠUNS PE CI FIED ) ĊĠĠĠ Ġ) ĊĠĠĠ Ġif Ġ( buttons Layout . shouldBe Visible ()) Ġ{ ĊĠĠĠĠĠ Ġbuttons Layout . measure ( ĊĠĠĠĠĠĠĠĠĠ Ġmake Measure Spec ( spec Width , ĠEX ACT LY ), ĊĠĠĠĠĠĠĠĠĠ Ġmake Measure Spec ( 0 , ĠUNS PE CI FIED ) ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġtitle And Buttons Height Ġ= ĊĠĠĠĠĠ Ġtitle Layout . meas ured Height Ġ+ Ġbuttons Layout . meas ured Height ĊĠĠĠ Ġval Ġremaining Height Ġ= Ġspec Height Ġ- Ġtitle And Buttons Height ĊĠĠĠ Ġcontent Layout . measure ( ĊĠĠĠĠĠĠĠ Ġmake Measure Spec ( spec Width , ĠEX ACT LY ), ĊĠĠĠĠĠĠĠ Ġmake Measure Spec ( remaining Height , ĠAT _ MO ST ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġtotal Height Ġ= Ġtitle Layout . meas ured Height Ġ+ ĊĠĠĠĠĠĠĠ Ġcontent Layout . meas ured Height Ġ+ ĊĠĠĠĠĠĠĠ Ġbuttons Layout . meas ured Height ĊĠĠĠ Ġset Measured Dimension ( spec Width , Ġtotal Height ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Layout ( ĊĠĠĠ Ġchanged : ĠBoolean , ĊĠĠĠ Ġleft : ĠInt , ĊĠĠĠ Ġtop : ĠInt , ĊĠĠĠ Ġright : ĠInt , ĊĠĠĠ Ġbottom : ĠInt ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġval Ġtitle Left Ġ= Ġ 0 ĊĠĠĠ Ġval Ġtitle Top Ġ= Ġ 0 ĊĠĠĠ Ġval Ġtitle Right Ġ= Ġmeasured Width ĊĠĠĠ Ġval Ġtitle Bottom Ġ= Ġtitle Layout . meas ured Height ĊĠĠĠ Ġtitle Layout . layout ( ĊĠĠĠĠĠĠĠ Ġtitle Left , ĊĠĠĠĠĠĠĠ Ġtitle Top , ĊĠĠĠĠĠĠĠ Ġtitle Right , ĊĠĠĠĠĠĠĠ Ġtitle Bottom ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġbuttons Top Ġ= ĊĠĠĠĠĠ Ġmeasured Height Ġ- Ġbuttons Layout . meas ured Height ĊĠĠĠ Ġif Ġ( buttons Layout . shouldBe Visible ()) Ġ{ ĊĠĠĠĠĠ Ġval Ġbuttons Left Ġ= Ġ 0 ĊĠĠĠĠĠ Ġval Ġbuttons Right Ġ= Ġmeasured Width ĊĠĠĠĠĠ Ġval Ġbuttons Bottom Ġ= Ġmeasured Height ĊĠĠĠĠĠ Ġbuttons Layout . layout ( ĊĠĠĠĠĠĠĠĠĠ Ġbuttons Left , ĊĠĠĠĠĠĠĠĠĠ Ġbuttons Top , ĊĠĠĠĠĠĠĠĠĠ Ġbuttons Right , ĊĠĠĠĠĠĠĠĠĠ Ġbuttons Bottom ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġcontent Left Ġ= Ġ 0 ĊĠĠĠ Ġval Ġcontent Right Ġ= Ġmeasured Width ĊĠĠĠ Ġcontent Layout . layout ( ĊĠĠĠĠĠĠĠ Ġcontent Left , ĊĠĠĠĠĠĠĠ Ġtitle Bottom , ĊĠĠĠĠĠĠĠ Ġcontent Right , ĊĠĠĠĠĠĠĠ Ġbuttons Top ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠ Ġsuper . on Draw ( canvas ) ĊĊĠĠĠ Ġif Ġ( debug Mode ) Ġ{ ĊĠĠĠĠĠ Ġval Ġcontent Padding Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( title Layout . should Not Be Visible ()) Ġframe Margin Vertical Less Ġelse Ġframe Margin Vertical ĊĠĠĠĠĠ Ġif Ġ( title Layout . should Not Be Visible ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠContent Ġtop Ġspacing ĊĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Layout . bottom . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmeasured Width . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Layout . bottom . toFloat () Ġ+ Ġcontent Padding , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdebug Paint ( DEBUG _ COLOR _ BLUE ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ// ĠContent Ġbottom Ġspacing ĊĠĠĠĠĠ Ġcanvas . draw Rect ( ĊĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠ Ġbuttons Layout . top . toFloat () Ġ- Ġcontent Padding , ĊĠĠĠĠĠĠĠĠĠ Ġmeasured Width . toFloat (), ĊĠĠĠĠĠĠĠĠĠ Ġbuttons Layout . top . toFloat (), ĊĠĠĠĠĠĠĠĠĠ Ġdebug Paint ( DEBUG _ COLOR _ BLUE ) ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġdebug Paint ( ĊĠĠĠ Ġ@ Color Int Ġcolor : ĠInt , ĊĠĠĠ Ġstroke : ĠBoolean Ġ= Ġfalse ĊĠ Ġ): ĠPaint Ġ{ ĊĠĠĠ Ġif Ġ( debug Paint Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġdebug Paint Ġ= ĠPaint () ĊĠĠĠ Ġ} ĊĠĠĠ Ġdebug Paint !!. style Ġ= Ġif Ġ( stroke ) ĠST RO KE Ġelse ĠF ILL ĊĠĠĠ Ġdebug Paint !!. color Ġ= Ġcolor ĊĠĠĠ Ġreturn Ġdebug Paint !! ĊĠ Ġ} Ċ } Ċ