package Ġcom . lass i . presentation . builder Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Color Ċ import Ġandroidx . annotation . Color Res Ċ import Ġandroidx . annotation . Drawable Res Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġcom . lass i . common . utils . Key Utils Ċ import Ġcom . lass i . domain . media . L ass i Config Ċ import Ġcom . lass i . domain . media . L ass i Option Ċ import Ġcom . lass i . domain . media . MediaType Ċ import Ġcom . lass i . presentation . cam er av iew . controls . AspectRatio Ċ import Ġcom . lass i . presentation . crop per . Crop ImageView Ċ import Ġcom . lass i . presentation . medi ad irectory . L ass i Media Picker Activity Ċ Ċ class ĠL ass i ( private Ġval Ġcontext : ĠContext ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġ lass i Config Ġ= ĠL ass i Config () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLimit Ġmax Ġitem Ġselection ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Max Count ( max Count : ĠInt ): ĠL ass i Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġhandle Ġnegative Ġinput ĊĠĠĠĠĠĠĠ Ġ lass i Config . max Count Ġ= Ġif Ġ( max Count Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKey Utils . DEFAULT _ MEDIA _ COUNT ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Count ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġitem Ġgrid Ġsize Ġ(>= Ġ 2 Ġor Ġ<= 4 ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Grid Size ( grid Size : ĠInt ): ĠL ass i Ġ{ ĊĠĠĠĠĠĠĠ Ġ lass i Config . grid Size Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrid Size Ġ< ĠKey Utils . DEFAULT _ GRID _ SIZE Ġ-> ĠKey Utils . DEFAULT _ GRID _ SIZE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrid Size Ġ> ĠKey Utils . MAX _ GRID _ SIZE Ġ-> ĠKey Utils . MAX _ GRID _ SIZE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġgrid Size ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMedia Ġtype Ġ( MediaType . IMAGE , ĠMediaType . VIDEO , ĠMediaType . AUDIO , ĠMediaType . DOC ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset MediaType ( media Type : ĠMediaType ): ĠL ass i Ġ{ ĊĠĠĠĠĠĠĠ Ġ lass i Config . media Type Ġ= Ġmedia Type ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAllow ĠMedia Ġp icket Ġto Ġcapture / record Ġfrom Ġcamera Ġwhile Ġmultiple Ġmedia Ġselection ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġwith ( lass i Option : ĠL ass i Option ): ĠL ass i Ġ{ ĊĠĠĠĠĠĠĠ Ġ lass i Config . lass i Option Ġ= Ġ lass i Option ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFilter Ġvideos Ġby Ġmin Ġtime Ġin Ġseconds Ġ( only Ġfor ĠMediaType . VIDEO ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Min Time ( min Time : ĠLong ): ĠL ass i Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġhandle Ġnegative Ġinput ĊĠĠĠĠĠĠĠ Ġ lass i Config . min Time Ġ= Ġif Ġ( min Time Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmin Time ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKey Utils . DEFAULT _ DURATION ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFilter Ġvideos Ġby Ġmax Ġtime Ġin Ġseconds Ġ( only Ġfor ĠMediaType . VIDEO ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Max Time ( max Time : ĠLong ): ĠL ass i Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġhandle Ġnegative Ġinput ĊĠĠĠĠĠĠĠ Ġ lass i Config . max Time Ġ= Ġif Ġ( max Time Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Time ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKey Utils . DEFAULT _ DURATION ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġcomma Ġseparated Ġsupported Ġfiles Ġtypes Ġex . Ġpng , Ġj peg ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Supported File Types ( var arg Ġfile Types : ĠString ): ĠL ass i Ġ{ ĊĠĠĠĠĠĠĠ Ġ lass i Config . supported FileType Ġ= Ġfile Types . to Mutable List () ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġtoolbar Ġcolor Ġresource ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Toolbar Color (@ Color Res Ġtoolbar Color : ĠInt ): ĠL ass i Ġ{ ĊĠĠĠĠĠĠĠ Ġ lass i Config . toolbar Color Ġ= ĠContext Compat . getColor ( context , Ġtoolbar Color ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġtoolbar Ġcolor Ġhex ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Toolbar Color ( toolbar Color : ĠString ): ĠL ass i Ġ{ ĊĠĠĠĠĠĠĠ Ġ lass i Config . toolbar Color Ġ= ĠColor . parse Color ( toolbar Color ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġstatus Bar Ġcolor Ġresource Ġ( Only Ġapplicable Ġfor Ġ>= ĠL ol lip op ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset StatusBar Color (@ Color Res Ġstatus Bar Color : ĠInt ): ĠL ass i Ġ{ ĊĠĠĠĠĠĠĠ Ġ lass i Config . status Bar Color Ġ= ĠContext Compat . getColor ( context , Ġstatus Bar Color ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġstatus Bar Ġcolor Ġhex Ġ( Only Ġapplicable Ġfor Ġ>= ĠL ol lip op ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset StatusBar Color ( status Bar Color : ĠString ): ĠL ass i Ġ{ ĊĠĠĠĠĠĠĠ Ġ lass i Config . status Bar Color Ġ= ĠColor . parse Color ( status Bar Color ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġtoolbar Ġcolor Ġresource ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Toolbar Resource Color (@ Color Res Ġtoolbar Resource Color : ĠInt ): ĠL ass i Ġ{ ĊĠĠĠĠĠĠĠ Ġ lass i Config . toolbar Resource Color Ġ= ĠContext Compat . getColor ( context , Ġtoolbar Resource Color ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġtoolbar Ġcolor Ġhex ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Toolbar Resource Color ( toolbar Resource Color : ĠString ): ĠL ass i Ġ{ ĊĠĠĠĠĠĠĠ Ġ lass i Config . toolbar Resource Color Ġ= ĠColor . parse Color ( toolbar Resource Color ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġprogress bar Ġcolor Ġresource ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset ProgressBar Color (@ Color Res ĠprogressBar Color : ĠInt ): ĠL ass i Ġ{ ĊĠĠĠĠĠĠĠ Ġ lass i Config . progress Bar Color Ġ= ĠContext Compat . getColor ( context , ĠprogressBar Color ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġprogress bar Ġcolor Ġhex ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset ProgressBar Color ( progress Bar Color : ĠString ): ĠL ass i Ġ{ ĊĠĠĠĠĠĠĠ Ġ lass i Config . progress Bar Color Ġ= ĠColor . parse Color ( progress Bar Color ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġplace Ġholder Ġto Ġgrid Ġitems ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Place Holder (@ Drawable Res Ġplace Holder : ĠInt ): ĠL ass i Ġ{ ĊĠĠĠĠĠĠĠ Ġ lass i Config . place Holder Ġ= Ġplace Holder ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġerror Ġdrawable Ġto Ġgrid Ġitems ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠsetError Drawable (@ Drawable Res Ġerror Drawable : ĠInt ): ĠL ass i Ġ{ ĊĠĠĠĠĠĠĠ Ġ lass i Config . error Drawable Ġ= Ġerror Drawable ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġcrop Ġtype ( only Ġfor ĠMediaType . Image Ġand ĠSingle ĠImage ĠSelection ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Crop Type ( crop Type : ĠC rop ImageView . Crop Shape ): ĠL ass i Ġ{ ĊĠĠĠĠĠĠĠ Ġ lass i Config . crop Type Ġ= Ġcrop Type ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġcrop Ġ( only Ġfor ĠMediaType . Image Ġand ĠSingle ĠImage ĠSelection ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdisable Crop (): ĠL ass i Ġ{ ĊĠĠĠĠĠĠĠ Ġ lass i Config . is Crop Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġcrop ĠAs pect Ġratio ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Crop AspectRatio ( x : ĠInt , Ġy : ĠInt ): ĠL ass i Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaspect X Ġ= Ġif Ġ( x Ġ< Ġ 0 ) Ġ 1 Ġelse Ġx ĊĠĠĠĠĠĠĠ Ġval Ġaspect Y Ġ= Ġif Ġ( y Ġ< Ġ 0 ) Ġ 1 Ġelse Ġy ĊĠĠĠĠĠĠĠ Ġ lass i Config . crop AspectRatio Ġ= ĠAs pect Ratio . of ( aspect X , Ġaspect Y ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEnable Ġflip Ġimage Ġoption Ġwhile Ġimage Ġcro pping ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġenable Flip (): ĠL ass i Ġ{ ĊĠĠĠĠĠĠĠ Ġ lass i Config . enable Flip Image Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEnable Ġrotate Ġimage Ġoption Ġwhile Ġimage Ġcro pping ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġenable Rotate (): ĠL ass i Ġ{ ĊĠĠĠĠĠĠĠ Ġ lass i Config . enable Rotate Image Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEnable Ġactual Ġcircular Ġcrop Ġ( only Ġfor ĠMediaType . Image Ġand ĠC rop ImageView . Crop Shape . O VAL ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġenable Actual Circle Crop (): ĠL ass i Ġ{ ĊĠĠĠĠĠĠĠ Ġ lass i Config . enable Actual Circle Crop Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġcompression Ġr ation Ġbetween Ġ 0 Ġto Ġ 1 0 0 Ġ( Only Ġfor Ġsingle Ġimage Ġselection ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Compression R ation ( compression R ation : ĠInt ): ĠL ass i Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcompression Ġ= Ġif Ġ( compression R ation Ġ> Ġ 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 0 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompression R ation ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ lass i Config . compression R ation Ġ= Ġcompression ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġminimum Ġfile Ġsize Ġin ĠKB ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Min FileSize ( file Size : ĠLong ): ĠL ass i Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( file Size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ lass i Config . min FileSize Ġ= ĠfileSize ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġmaximum Ġfile Ġsize Ġin ĠKB ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Max FileSize ( file Size : ĠLong ): ĠL ass i Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( file Size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ lass i Config . max FileSize Ġ= ĠfileSize ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġintent Ġfor ĠL ass i Media Picker Activity Ġwith Ġconfig ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġbuild (): ĠIntent Ġ{ ĊĠĠĠĠĠĠĠ ĠL ass i Config . set Config ( lass i Config ) ĊĠĠĠĠĠĠĠ Ġreturn ĠIntent ( context , ĠL ass i Media Picker Activity :: class . java ) ĊĠĠĠ Ġ} Ċ } Ċ