/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠD re amp l ug ĠTechnologies ĠPrivate ĠLimited Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the ĠâĢľ License âĢĿ ); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan ĠâĢľ AS ĠIS âĢĿ ĠBASIS , ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġclub . cred . syn th . internals Ċ Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . os . Build Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . H aptic Feedback Constants Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġclub . cred . syn th . R Ċ import Ġclub . cred . syn th . Syn th Utils Ċ import Ġclub . cred . syn th . Syn th Utils . TYPE _ E LE V ATED _ FLAT Ċ import Ġclub . cred . syn th . Syn th Utils . TYPE _ E LE V ATED _ SOFT Ċ import Ġclub . cred . syn th . appear ances . Ne u Button Icon Appearance Ċ import Ġclub . cred . syn th . appear ances . Ne u Button Icon Appearance . Companion . get Ne u Button Icon Appearance Ċ import Ġclub . cred . syn th . appear ances . Ne u Flat Button Appearance Ċ import Ġclub . cred . syn th . appear ances . Ne u Flat Button Appearance . Companion . get Ne u Flat Button Appearance Ċ import Ġclub . cred . syn th . appear ances . Ne u Platform Appearance Ċ import Ġclub . cred . syn th . appear ances . Ne u Platform Appearance . Companion . get Ne u Platform Appearance Ċ import Ġclub . cred . syn th . dp Ċ import Ġclub . cred . syn th . draw ables . Ne u Compat Drawable Ċ import Ġclub . cred . syn th . draw ables . Ne u Flat Button Drawable Ċ import Ġclub . cred . syn th . draw ables . Ne u Soft Button Drawable Ċ import Ġclub . cred . syn th . dynamic Attr Ċ import Ġclub . cred . syn th . get Drawable Safe Ċ import Ġclub . cred . syn th . light en Ċ import Ġclub . cred . syn th . views . Syn th Button Ċ import Ġclub . cred . syn th . with Attrs Ċ import Ġkotlin . properties . ReadWrite Property Ċ Ċ internal Ġclass ĠSyn th Button Delegate ( private Ġval Ġview : ĠView ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcontext Ġ= Ġview . context ĊĊĠĠĠ Ġ// ĠCommon ĠProperties ĊĠĠĠ Ġvar Ġbutton Type : ĠInt Ġ= ĠTYPE _ E LE V ATED _ SOFT ĊĠĠĠ Ġvar Ġplatform Color : ĠInt Ġby Ġdynamic Attr ( Syn th Utils . default Base Color ) Ġ{ ĊĠĠĠĠĠĠĠ Ġne u Platform Appearance Ġ= ĠNe u Platform Appearance ( it ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġflat Button Color : ĠInt Ġby Ġdynamic Attr ( Syn th Utils . default Base Color ) Ġ{ ĊĠĠĠĠĠĠĠ Ġne u Flat Button Appearance Ġ= ĠNe u Flat Button Appearance ( it ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġcompat Color : ĠInt Ġby Ġdynamic Attr ( DEFAULT _ FLAT _ COMPAT _ COLOR ) ĊĠĠĠ Ġvar Ġcorner Radius : ĠFloat Ġby Ġdynamic Attr ( DEFAULT _ COR NER _ RADIUS . dp ) ĊĠĠĠ Ġvar Ġne u Platform Appearance : ĠNe u Platform Appearance Ġby Ġdynamic Attr ( Ne u Platform Appearance ( Syn th Utils . default Base Color )) ĊĊĠĠĠ Ġ// ĠOnly Ġfor ĠTYPE _ E LE V ATED _ FLAT ĊĠĠĠ Ġvar Ġne u Flat Button Appearance : ĠNe u Flat Button Appearance ? Ġby Ġdynamic Attr ( null ) ĊĊĠĠĠ Ġ// ĠProperties Ġspecific Ġto ĠNe u Button ĊĠĠĠ Ġvar Ġicon P it Radius : ĠFloat Ġby Ġdynamic Attr ( DEFAULT _ ICON _ P IT _ RADIUS . dp ) ĊĠĠĠ Ġvar Ġbutton Icon Drawable : ĠDrawable ? Ġby Ġdynamic Attr ( null ) ĊĠĠĠ Ġvar Ġne u Button Icon Appearance : ĠNe u Button Icon Appearance ? Ġby Ġdynamic Attr ( null ) ĊĊĠĠĠ Ġfun Ġhandle Attrs ( attrs : ĠAttributeSet ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . with Attrs ( attrs , ĠR . style able . Ne u Button ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Type Ġ= Ġget Int ( R . style able . Ne u Button _ ne u Button Type , Ġbutton Type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplatform Color Ġ= Ġget Color ( R . style able . Ne u Button _ ne u Platform Color , Ġplatform Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflat Button Color Ġ= Ġget Color ( R . style able . Ne u Button _ ne u Flat Button Color , Ġflat Button Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdefault Compat Color Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( button Type Ġ== ĠTYPE _ E LE V ATED _ FLAT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDEFAULT _ FLAT _ COMPAT _ COLOR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplatform Color . light en ( DEFAULT _ SOFT _ COMPAT _ LIGHT EN _ FACTOR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompat Color Ġ= Ġget Color ( R . style able . Ne u Button _ ne u Button Compat Color , Ġdefault Compat Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcorner Radius Ġ= Ġget Dimension ( R . style able . Ne u Button _ ne u Button Radius , Ġcorner Radius ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġne u Platform Appearance Ġ= Ġget Ne u Platform Appearance ( context , Ġplatform Color ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( button Type Ġ== ĠTYPE _ E LE V ATED _ FLAT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġne u Flat Button Appearance Ġ= Ġget Ne u Flat Button Appearance ( context , Ġflat Button Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( view Ġis ĠSyn th Button ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon P it Radius Ġ= Ġget Dimension ( R . style able . Ne u Button _ ne u Button Drawable P it Radius , Ġcorner Radius Ġ- ĠDEFAULT _ ICON _ RADIUS _ DIFF . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Icon Drawable Ġ= Ġget Drawable Safe ( context , ĠR . style able . Ne u Button _ ne u Button Drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdefault Icon P it Color Ġ= Ġif Ġ( button Type Ġ== ĠTYPE _ E LE V ATED _ FLAT ) Ġflat Button Color Ġelse Ġplatform Color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġne u Button Icon Appearance Ġ= Ġget Ne u Button Icon Appearance ( context , Ġbutton Type , Ġdefault Icon P it Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġupdate Background () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Background () Ġ{ ĊĠĠĠĠĠĠĠ Ġview . background Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ! Syn th Utils . is Compat Device () Ġ&& Ġbutton Type Ġ== ĠTYPE _ E LE V ATED _ SOFT Ġ-> ĠNe u Soft Button Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġne u Platform Appearance Ġ= Ġne u Platform Appearance , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcorner Radius Ġ= Ġcorner Radius ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ! Syn th Utils . is Compat Device () Ġ&& Ġbutton Type Ġ== ĠTYPE _ E LE V ATED _ FLAT Ġ-> ĠNe u Flat Button Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġne u Platform Appearance Ġ= Ġne u Platform Appearance , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcorner Radius Ġ= Ġcorner Radius , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġne u Flat Button Appearance Ġ= Ġne u Flat Button Appearance !! Ġ// Ġwon 't Ġbe Ġnull Ġfor ĠFL AT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSyn th Utils . is Compat Device () Ġ-> ĠNe u Compat Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Color Ġ= Ġcompat Color , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcorner Radius Ġ= Ġcorner Radius , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Inset Ġ= Ġif Ġ( button Type Ġ== ĠTYPE _ E LE V ATED _ FLAT ) ĠSyn th Utils . platform Gap Ġelse Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Illegal Ġstate . ĠPlease Ġuse Ġtype Ġelev ated _ soft Ġor Ġelev ated _ flat ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġon Touch Event ( event : ĠMotion Event ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . P Ġ&& Ġview . isEnabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġflag Ġ= Ġif Ġ( button Type Ġ== ĠTYPE _ E LE V ATED _ FLAT ) ĠH aptic Feedback Constants . FLAG _ IGNORE _ GLOBAL _ SETTING Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( event ?. action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ DOWN Ġ-> Ġview . perform H aptic Feedback ( H aptic Feedback Constants . KEY BOARD _ PRESS , Ġflag ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ UP Ġ-> Ġview . perform H aptic Feedback ( H aptic Feedback Constants . KEY BOARD _ RELEASE , Ġflag ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinline Ġfun Ġ< T > Ġdynamic Attr ( ĊĠĠĠĠĠĠĠ Ġinitial Value : ĠT , ĊĠĠĠĠĠĠĠ Ġcross inline ĠonChange : Ġ( T ) Ġ-> ĠUnit Ġ= Ġ{} ĊĠĠĠ Ġ): ĠRead Write Property < Any ?, ĠT > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġview . dynamic Attr ( initial Value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonChange ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Background () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ FLAT _ COMPAT _ COLOR Ġ= Ġ 0 xFF 3 6 5 BA 4 . toInt () ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ SOFT _ COMPAT _ LIGHT EN _ FACTOR Ġ= Ġ 0 . 0 3 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ COR NER _ RADIUS Ġ= Ġ 1 6 f ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ ICON _ P IT _ RADIUS Ġ= Ġ 8 f ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ ICON _ RADIUS _ DIFF Ġ= Ġ 8 f ĊĠĠĠ Ġ} Ċ } Ċ