package Ġcom . sm k . pub lik . mak ass ar . inline Ċ Ċ import Ġand o . file . core . File Global Ċ import Ġand o . file . core . FileUtils Ċ import Ġand o . file . selector .* Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . content . res . Resources Compat Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġcom . or h ano but . logger . Logger Ċ import Ġcom . sm k . pub lik . mak ass ar . R Ċ import Ġwww . san ju . motion toast . Motion Toast Ċ Ċ /* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 ĠDesign ed Ġand Ġdeveloped Ġby ĠJose ph ĠSan j aya , ĠS . T ., ĠM . K om ., ĠAll ĠRights ĠReserved . Ċ Ġ* Ġ@ Github Ġ( https :// github . com / J ose ph San j aya ), Ċ Ġ* Ġ@ Linked In Ġ( https :// www . linkedin . com / in / j ose ph san j aya / )) Ċ Ġ*/ Ċ Ċ fun ĠFragment Activity . replace Fragment ( ĊĠĠĠ Ġfragment : ĠFragment , ĊĠĠĠ Ġis Back stack : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġis Animate : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġis Inclusive : ĠBoolean Ġ= Ġfalse Ċ ) Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . replace Fragment ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . fl Fragments , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Back stack , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Animate , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Inclusive ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Error Toast (" G agal Ġnavig asi .") ĊĠĠĠĠĠĠĠ ĠLogger . e ( e , Ġe . message . toString ()) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠFragment Activity . pop Back Stack () Ġ{ ĊĠĠĠ Ġsupport FragmentManager . pop Back Stack () Ċ } Ċ Ċ fun ĠAppCompatActivity . toolbar Changes ( title : ĠString , Ġis Back : ĠBoolean , Ġis Hide : ĠBoolean ) Ġ{ ĊĠĠĠ Ġsupport ActionBar ?. apply Ġ{ ĊĠĠĠĠĠĠĠ Ġelevation Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ ĠsetTitle ( title ) ĊĠĠĠĠĠĠĠ Ġset Display Home As Up Enabled ( is Back ) ĊĠĠĠĠĠĠĠ Ġif Ġ( is Hide ) Ġhide () Ġelse Ġshow () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠFragment Manager . replace Fragment ( ĊĠĠĠ Ġplaceholder : ĠInt , ĊĠĠĠ Ġfragment : ĠFragment , ĊĠĠĠ Ġis Back stack : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġis Animate : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġis Inclusive : ĠBoolean Ġ= Ġfalse Ċ ) Ġ{ ĊĠĠĠ Ġbegin Transaction (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Back stack ) ĠaddTo Back Stack ( null ) ĊĠĠĠĠĠĠĠ Ġif Ġ( is Animate ) Ġset Custom Animations ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . anim . slide _ in _ left , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . anim . slide _ out _ right , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . anim . slide _ in _ left , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . anim . slide _ out _ right ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġif Ġ( isIn clusive ) Ġpop Back Stack ( null , ĠFragment Manager . POP _ BACK _ STACK _ INCL USIVE ) ĊĠĠĠĠĠĠĠ Ġreplace ( placeholder , Ġfragment ) ĊĠĠĠ Ġ}. commit () Ċ } Ċ Ċ fun ĠActivity . show Toast ( type : ĠString , Ġtitle : ĠString , Ġmessage : ĠString ) Ġ{ ĊĠĠĠ ĠMotion Toast . dark Toast ( ĊĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠ Ġtitle , ĊĠĠĠĠĠĠĠ Ġmessage , ĊĠĠĠĠĠĠĠ Ġtype , ĊĠĠĠĠĠĠĠ ĠMotion Toast . GR AV ITY _ BOTTOM , ĊĠĠĠĠĠĠĠ ĠMotion Toast . LONG _ DURATION , ĊĠĠĠĠĠĠĠ ĠResources Compat . getFont ( this , ĠR . font . pop pins _ regular ) ĊĠĠĠ Ġ) Ċ } Ċ Ċ fun ĠActivity . clear Intent Data () Ġ{ ĊĠĠĠ Ġintent . replace Extras ( Intent ()) Ċ } Ċ Ċ fun ĠActivity . show Error Toast ( message : ĠString , Ġtitle : ĠString Ġ= Ġ" Error ") Ġ{ ĊĠĠĠ Ġshow Toast ( Motion Toast . TO AST _ ERROR , Ġtitle , Ġmessage ) Ċ } Ċ Ċ fun ĠActivity . show Success Toast ( message : ĠString , Ġtitle : ĠString Ġ= Ġ" Ber hasil ") Ġ{ ĊĠĠĠ Ġshow Toast ( Motion Toast . TO AST _ SUCCESS , Ġtitle , Ġmessage ) Ċ } Ċ Ċ fun ĠActivity . show Warning Toast ( message : ĠString , Ġtitle : ĠString Ġ= Ġ" Warning ") Ġ{ ĊĠĠĠ Ġshow Toast ( Motion Toast . TO AST _ WARNING , Ġtitle , Ġmessage ) Ċ } Ċ Ċ fun ĠActivity . show Info Toast ( message : ĠString , Ġtitle : ĠString Ġ= Ġ" Inform asi ") Ġ{ ĊĠĠĠ Ġshow Toast ( Motion Toast . TO AST _ INFO , Ġtitle , Ġmessage ) Ċ } Ċ Ċ fun ĠActivity . show Delete Toast ( message : ĠString , Ġtitle : ĠString Ġ= Ġ" Deleted ") Ġ{ ĊĠĠĠ Ġshow Toast ( Motion Toast . TO AST _ DELETE , Ġtitle , Ġmessage ) Ċ } Ċ Ċ fun ĠContext . choose Image ( request Code : ĠInt , Ġcallback : ĠFile Select CallBack ): ĠFile Selector Ġ{ ĊĠĠĠ Ġval Ġoptions Image Ġ= ĠFile Select Options (). apply Ġ{ ĊĠĠĠĠĠĠĠ ĠfileType Ġ= ĠFile Type . IMAGE ĊĠĠĠĠĠĠĠ ĠfileType Mismatch Tip Ġ= Ġ" T ipe Ġfile Ġtidak Ġdid uk ung " ĊĠĠĠĠĠĠĠ Ġmin Count Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġmax Count Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġmin Count Tip Ġ= Ġ" P ilih Ġminimal Ġ 1 Ġgam bar !" ĊĠĠĠĠĠĠĠ Ġmax Count Tip Ġ= Ġ" P ilih Ġminimal Ġ 1 Ġgam bar !" ĊĠĠĠĠĠĠĠ Ġfile Condition Ġ= Ġobject Ġ: ĠFile Select Condition Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġaccept ( fileType : ĠI FileType , Ġuri : ĠUri ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( fileType Ġ== ĠFile Type . IMAGE Ġ&& Ġuri Ġ!= Ġnull Ġ&& Ġ! uri . path . isNull Or Blank () Ġ&& Ġ! FileUtils . is Gif ( uri )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠFile Selector ĊĠĠĠĠĠĠĠ Ġ. with ( this ) ĊĠĠĠĠĠĠĠ Ġ. setRequest Code ( request Code ) ĊĠĠĠĠĠĠĠ Ġ. setType Mismatch Tip (" T ipe Ġfile Ġtidak Ġdid uk ung ") ĊĠĠĠĠĠĠĠ Ġ. set Min Count ( 1 , Ġ" P ilih Ġminimal Ġ 1 Ġgam bar !") ĊĠĠĠĠĠĠĠ Ġ. setMax Count ( 1 , Ġ" P ilih Ġminimal Ġ 1 Ġgam bar !") ĊĠĠĠĠĠĠĠ Ġ. set Over Limit Strategy ( File Global . OVER _ LIMIT _ EXCEPT _ ALL ) ĊĠĠĠĠĠĠĠ Ġ. set Mime Types (" image /* ") ĊĠĠĠĠĠĠĠ Ġ. apply Options ( options Image ) ĊĠĠĠĠĠĠĠ Ġ. filter ( object Ġ: ĠFile Select Condition Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġaccept ( fileType : ĠI FileType , Ġuri : ĠUri ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( fileType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile Type . IMAGE Ġ-> Ġ( uri Ġ!= Ġnull Ġ&& Ġ! uri . path . isNull Or Blank () Ġ&& Ġ! FileUtils . is Gif ( uri )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile Type . VIDEO Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile Type . AUDIO Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ. callback ( callback ) ĊĠĠĠĠĠĠĠ Ġ. choose () Ċ } Ċ