package Ġ` in `. av im ar ine . way po intr acing . ui Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġ` in `. av im ar ine . way po intr acing . R Ċ import Ġkotlinx . android . synt hetic . main . nav text drawer . view .* Ċ import Ġ` in `. av im ar ine . way po intr acing . TAG Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Build Ċ import Ġandroid . widget . TextView . AUTO _ SIZE _ TEXT _ TYPE _ NONE Ċ import Ġandroid . widget . TextView . AUTO _ SIZE _ TEXT _ TYPE _ UNIFORM ĊĊ Ċ class ĠNav Text Drawer ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: ĠConstraint Layout ( context , Ġattrs ) Ġ{ ĊĊĊĠĠĠ Ġprivate Ġvar Ġunits Enabled Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġvar Ġlabel Enabled Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġvar Ġdata Text : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġunits Text : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġlabel Text : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠtextColor Ġ= ĠColor . BLACK ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" In Init ") ĊĠĠĠĠĠĠĠ ĠLayoutInflater . from ( context ). inflate ( R . layout . nav text drawer , Ġthis ) ĊĠĠĠĠĠĠĠ Ġsetup Attributes ( attrs ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġset Label ( s : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( s == null ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Tv . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Tv . text Ġ= Ġs ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun ĠsetData ( s : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( s == null ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata TV . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata TV . text Ġ= Ġs ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġset Units ( s : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( s == null ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunits Tv . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunits Tv . text Ġ= Ġs ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset TextColor ( c : ĠInt ){ ĊĠĠĠĠĠĠĠ Ġdata TV . setTextColor ( c ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Attributes ( attrs : ĠAttributeSet ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG ," Setup Attributes ") ĊĠĠĠĠĠĠĠ Ġ// ĠObtain Ġa Ġtyped Ġarray Ġof Ġattributes ĊĠĠĠĠĠĠĠ Ġval Ġtyped Array Ġ= Ġcontext . theme . obtain Styled Attributes ( attrs , ĠR . style able . Nav Text Drawer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ// ĠExtract Ġcustom Ġattributes Ġinto Ġmember Ġvariables ĊĠĠĠĠĠĠĠ Ġlabel Text Ġ= Ġtyped Array . getString ( R . style able . Nav Text Drawer _ label Text ) ĊĠĠĠĠĠĠĠ Ġunits Text Ġ= Ġtyped Array . getString ( R . style able . Nav Text Drawer _ units Text ) ĊĠĠĠĠĠĠĠ Ġdata Text Ġ= Ġtyped Array . getString ( R . style able . Nav Text Drawer _ data Text ) ĊĠĠĠĠĠĠĠ Ġlabel Enabled Ġ= Ġtyped Array . getBoolean ( R . style able . Nav Text Drawer _ label Enabled , true ) ĊĠĠĠĠĠĠĠ Ġunits Enabled Ġ= Ġtyped Array . getBoolean ( R . style able . Nav Text Drawer _ units Enabled , true ) ĊĠĠĠĠĠĠĠ ĠtextColor Ġ= Ġtyped Array . getInt ( R . style able . Nav Text Drawer _ textColor , ĠColor . BLACK ) ĊĠĠĠĠĠĠĠ Ġval Ġdata Text Size Ġ= Ġtyped Array . get Dimension ( R . style able . Nav Text Drawer _ data Text Size , Ġ 1 2 f ) ĊĠĠĠĠĠĠĠ Ġdata TV . text Size Ġ= Ġdata Text Size ĊĊĠĠĠĠĠĠĠ Ġset Label ( label Text ) ĊĠĠĠĠĠĠĠ Ġset Units ( units Text ) ĊĠĠĠĠĠĠĠ ĠsetData ( data Text ) ĊĠĠĠĠĠĠĠ Ġset TextColor ( textColor ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! label Enabled ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Tv . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! units Enabled ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunits Tv . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( typed Array . getBoolean ( R . style able . Nav Text Drawer _ auto Text Size , false )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata TV . set AutoSize Text Type With Defaults ( AUTO _ SIZE _ TEXT _ TYPE _ UNIFORM ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunits Tv . set AutoSize Text Type With Defaults ( AUTO _ SIZE _ TEXT _ TYPE _ UNIFORM ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Tv . set AutoSize Text Type With Defaults ( AUTO _ SIZE _ TEXT _ TYPE _ UNIFORM ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata TV . set AutoSize Text Type With Defaults ( AUTO _ SIZE _ TEXT _ TYPE _ NONE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunits Tv . set AutoSize Text Type With Defaults ( AUTO _ SIZE _ TEXT _ TYPE _ NONE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Tv . set AutoSize Text Type With Defaults ( AUTO _ SIZE _ TEXT _ TYPE _ NONE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠTyped Array Ġobjects Ġare Ġshared Ġand Ġmust Ġbe Ġre cyc led . ĊĠĠĠĠĠĠĠ Ġtyped Array . recycle () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG ," on Draw ") ĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) ĊĊĠĠĠ Ġ} Ċ Ċ }