package Ġru . ad on ix is . vk cup docs . util Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . net . Uri Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . annotation . Color Int Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġjava . text . Decimal Format Ċ import Ġjava . text . Decimal Format Symbols Ċ import Ġjava . util .* Ċ import Ġkotlin . math . log 1 0 Ċ import Ġkotlin . math . pow Ċ Ċ object ĠUtils Ġ{ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġconvert Dp To Px ( dp : ĠFloat ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdp Ġ* ĠResources . getSystem (). display Metrics . density ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconvert Px To Dp ( px : ĠFloat ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpx Ġ/ ĠResources . getSystem (). display Metrics . density ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Snackbar ( view : ĠView , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback : ĠSn ackbar . Callback ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Color Int ĠbackgroundColor : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Color Int ĠtextColor : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Color Int Ġaction TextColor : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Text : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon View ClickListener : ĠView . OnClickListener ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar ĠonClick Listener Ġ= Ġon View ClickListener ĊĠĠĠĠĠĠĠ Ġif Ġ( on ClickListener Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Listener Ġ= ĠView . OnClickListener Ġ{ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsn ackbar Ġ= ĠSn ackbar ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. make ( view , Ġtext , ĠSn ackbar . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Callback ( callback !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAction TextColor ( action TextColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAction ( action Text , ĠonClick Listener ) ĊĠĠĠĠĠĠĠ Ġval Ġsb View Ġ= Ġsn ackbar . view ĊĠĠĠĠĠĠĠ Ġsb View . set BackgroundColor ( backgroundColor ) ĊĠĠĠĠĠĠĠ Ġval ĠtextView Ġ= Ġsb View . findViewById < TextView >( com . google . android . material . R . id . sn ackbar _ text ) ĊĠĠĠĠĠĠĠ ĠtextView . setTextColor ( textColor ) ĊĠĠĠĠĠĠĠ Ġsn ackbar . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetPath ( context : ĠContext , Ġuri : ĠUri ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( uri . scheme Ġ== Ġ" file ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( uri . path Ġ!= Ġnull ) Ġreturn Ġuri . path !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġproj Ġ= ĠarrayOf ( Media Store . Images . Media . DATA ) ĊĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= Ġcontext . content Resolver . query ( uri , Ġproj , Ġnull , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠ Ġval ĠcolumnIndex Ġ= Ġcursor !!. getColumnIndex OrThrow ( Media Store . Images . Media . DATA ) ĊĠĠĠĠĠĠĠ Ġcursor . moveTo First () ĊĠĠĠĠĠĠĠ Ġreturn Ġ" file ://" Ġ+ Ġcursor . getString ( column Index ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġformat FileSize ( size : ĠLong ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( size Ġ<= Ġ 0 ) Ġreturn Ġ" 0 ĠÐĳ " ĊĠĠĠĠĠĠĠ Ġval Ġunits Ġ= ĠarrayOf (" Ðĳ ", Ġ" Ðļ Ðĳ ", Ġ" Ðľ Ðĳ ", Ġ" Ðĵ Ðĳ ", Ġ" Ð¢ Ðĳ ") ĊĠĠĠĠĠĠĠ Ġval Ġdigit Groups Ġ= Ġ( log 1 0 ( size . toDouble ()) Ġ/ Ġlog 1 0 ( 1 0 2 4 . 0 )). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġsymbols Ġ= ĠDecimal Format Symbols ( Locale . US ) ĊĠĠĠĠĠĠĠ Ġreturn ĠDecimal Format ("# , ## 0 .# ", Ġsymbols ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. format ( size Ġ/ Ġ 1 0 2 4 . 0 . pow ( digit Groups . toDouble ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toString () Ġ+ Ġ" Ġ" Ġ+ Ġunits [ digit Groups ] ĊĠĠĠ Ġ} Ċ }