package Ġcom . example . custom _ sn ackbar . ui Ċ Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Type face Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . widget . Seek Bar Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġcom . example . custom _ sn ackbar . R Ċ import Ġcom . example . custom _ sn ackbar . utils . theme Const Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġcom . k ish and ong a . cs bx . Custom Snackbar Ċ import Ġcom . sky do ves . color picker view . Color Picker Dialog Ċ import Ġcom . sky do ves . color picker view . listeners . Color Envelope Listener Ċ import Ġkotlinx . android . synt hetic . main . activity _ coordinator _ layout .* Ċ import Ġkotlinx . android . synt hetic . main . content _ app .* Ċ Ċ class ĠCoord inator Layout Act Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġval Ġtheme Const Ġ= Ġintent . getInt Extra ( theme Const , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġset Theme ( if Ġ( theme Const Ġ== Ġ 0 ) ĠR . style . AppCompat _ No ActionBar Ġelse ĠR . style . Material _ No ActionBar ) ĊĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ coordinator _ layout ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar _ layout ) ĊĠĠĠĠĠĠĠ Ġtitle Ġ= ĠgetString ( R . string . lbl _ with _ coordinator _ layout ) ĊĊĠĠĠĠĠĠĠ Ġvar ĠtextColor Ġ= ĠColor . WHITE ĊĠĠĠĠĠĠĠ Ġvar Ġbg Color Ġ= ĠColor . TRANSP ARENT ĊĠĠĠĠĠĠĠ Ġvar ĠborderColor Ġ= ĠColor . TRANSP ARENT ĊĠĠĠĠĠĠĠ Ġvar Ġaction Txt Color Ġ= ĠContext Compat . getColor ( this , ĠR . color . color Accent ) ĊĊĠĠĠĠĠĠĠ Ġbtn Action TextColor . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor Picker Dialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle (" Color Picker ĠDialog ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( getString ( android . R . string . ok ), ĠColor Envelope Listener Ġ{ Ġenvelope , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġll Action TextColor . set BackgroundColor ( envelope . color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Txt Color Ġ= Ġenvelope . color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( getString ( android . R . string . cancel )) Ġ{ Ġdi : ĠDialog Interface , Ġ_: ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdi . cancel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbtn TextColor . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor Picker Dialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle (" Color Picker ĠDialog ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( getString ( android . R . string . ok ), ĠColor Envelope Listener Ġ{ Ġenvelope , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġll TextColor . set BackgroundColor ( envelope . color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextColor Ġ= Ġenvelope . color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( getString ( android . R . string . cancel )) Ġ{ Ġdi : ĠDialog Interface , Ġ_: ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdi . cancel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbtn Bg Color . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor Picker Dialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle (" Color Picker ĠDialog ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( getString ( android . R . string . ok ), ĠColor Envelope Listener Ġ{ Ġenvelope , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġll Bg Color . set BackgroundColor ( envelope . color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbg Color Ġ= Ġenvelope . color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( getString ( android . R . string . cancel )) Ġ{ Ġdi : ĠDialog Interface , Ġ_: ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdi . cancel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbtn BorderColor . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor Picker Dialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle (" Color Picker ĠDialog ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( getString ( android . R . string . ok ), ĠColor Envelope Listener Ġ{ Ġenvelope , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġll BorderColor . set BackgroundColor ( envelope . color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠborderColor Ġ= Ġenvelope . color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( getString ( android . R . string . cancel )) Ġ{ Ġdi : ĠDialog Interface , Ġ_: ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdi . cancel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsb Padding . setOn Seek Bar ChangeListener ( object Ġ: ĠSeek Bar . On Seek Bar ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Progress Changed ( p 0 : ĠSeek Bar ?, Ġp 1 : ĠInt , Ġp 2 : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Padding Indicator . text Ġ= Ġp 0 ?. progress . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonStart Tracking Touch ( p 0 : ĠSeek Bar ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Stop Tracking Touch ( p 0 : ĠSeek Bar ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġsb Corner Radius . setOn Seek Bar ChangeListener ( object Ġ: ĠSeek Bar . On Seek Bar ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Progress Changed ( p 0 : ĠSeek Bar ?, Ġp 1 : ĠInt , Ġp 2 : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Corner Radius Indicator . text Ġ= Ġp 0 ?. progress . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonStart Tracking Touch ( p 0 : ĠSeek Bar ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Stop Tracking Touch ( p 0 : ĠSeek Bar ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġsb Border Width . setOn Seek Bar ChangeListener ( object Ġ: ĠSeek Bar . On Seek Bar ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Progress Changed ( p 0 : ĠSeek Bar ?, Ġp 1 : ĠInt , Ġp 2 : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Border Indicator . text Ġ= Ġp 0 ?. progress . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonStart Tracking Touch ( p 0 : ĠSeek Bar ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Stop Tracking Touch ( p 0 : ĠSeek Bar ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġvar Ġsn ackbar : ĠCustom Snackbar ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġbtn Show . setOnClickListener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġed Message ?. text ?. trim (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( msg . isBlank () Ġ|| Ġmsg . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġed Message . error Ġ= Ġ" Please ĠEnter ĠMessage " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Duration : ĠInt Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrb Length In defin ite . isChecked Ġ-> ĠSn ackbar . LENGTH _ IN DEFIN ITE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrb Length Long . isChecked Ġ-> ĠSn ackbar . LENGTH _ LONG ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠSn ackbar . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype face : ĠType face Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrb Bold . isChecked Ġ-> ĠType face . default From Style ( Type face . BOLD ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrb Bold Italic . isChecked Ġ-> ĠType face . default From Style ( Type face . BOLD _ ITAL IC ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrb Italic . isChecked Ġ-> ĠType face . default From Style ( Type face . ITAL IC ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠType face . default From Style ( Type face . NORMAL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackbar Ġ= ĠCustom Snackbar ( this , Ġroot ). show Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Type face ( type face ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Type face ( type face ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextColor ( textColor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbackgroundColor ( bgColor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġborder ( sb Border Width . progress , ĠborderColor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpadding ( sb Padding . progress ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcorner Radius ( sb Corner Radius . progress . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration ( time Duration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction TextColor ( action Txt Color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage ( msg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( rb With Action . isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Action ( android . R . string . ok ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbtn Hide . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackbar ?. dismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ