/* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠA det un ji ĠD ahun si Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġcom . tun jid . rc switch control . view holders Ċ Ċ import Ġandroid . content . res . Color State List Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . view . isVisible Ċ import Ġcom . flask . color picker . Color Picker View Ċ import Ġcom . flask . color picker . builder . Color Picker Dialog Builder Ċ import Ġcom . google . android . material . dialog . Material AlertDialog Builder Ċ import Ġcom . rc switch control . zig bee . models . Z ig B ee Command Ċ import Ġcom . rc switch control . zig bee . models . Z ig B ee Input Ċ import Ġcom . rc switch control . zig bee . models . Z ig B ee Node Ċ import Ġcom . tun jid . android x . recyclerview . view binding . Binding ViewHolder Ċ import Ġcom . tun jid . android x . recyclerview . view binding . view Holder Delegate Ċ import Ġcom . tun jid . android x . recyclerview . view binding . view Holder From Ċ import Ġcom . tun jid . rc switch control . R Ċ import Ġcom . tun jid . rc switch control . control . Device Ċ import Ġcom . tun jid . rc switch control . control . Throttle Ċ import Ġcom . tun jid . rc switch control . control . color Ċ import Ġcom . tun jid . rc switch control . control . is Coordinator Ċ import Ġcom . tun jid . rc switch control . control . is On Ċ import Ġcom . tun jid . rc switch control . control . level Ċ import Ġcom . tun jid . rc switch control . control . throttle Color Changes Ċ import Ġcom . tun jid . rc switch control . databinding . View holder Z ig bee Device Binding Ċ import Ġcom . tun jid . rc switch control . utils . make Accessible For TV Ċ Ċ interface ĠZ ig B ee Device Listener Ġ: ĠDevice Long ClickListener Ġ{ ĊĠĠĠ Ġfun Ġsend ( command : ĠZ ig B ee Command ) Ċ } Ċ Ċ private Ġvar ĠBinding ViewHolder < View holder Z ig bee Device Binding >. device Ġby ĠviewHolder Delegate < Device . Z ig B ee >() Ċ private Ġvar ĠBinding ViewHolder < View holder Z ig bee Device Binding >. listener Ġby ĠviewHolder Delegate < Z ig B ee Device Listener >() Ċ private Ġval ĠBinding ViewHolder < View holder Z ig bee Device Binding >. diagnostic Options ĊĠĠĠ Ġget () Ġ= ĠlistOf NotNull ( ĊĠĠĠĠĠĠĠ ĠR . string . zig bee _ diagnostic _ node Ġto ĠZ ig B ee Input . Node , ĊĠĠĠĠĠĠĠ ĠR . string . zig bee _ diagnostic _ redis cover Ġto ĠZ ig B ee Input . Redis cover , ĊĠĠĠĠĠĠĠ Ġ( R . string . zig bee _ diagnostic _ enable _ join Ġto ĠZ ig B ee Input . Join ( duration Ġ= Ġ 6 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. take If Ġ{ Ġdevice . is Coordinator Ġ}, ĊĠĠĠĠĠĠĠ Ġ( R . string . zig bee _ diagnostic _ disable _ join Ġto ĠZ ig B ee Input . Join ( duration Ġ= Ġnull )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. take If Ġ{ Ġdevice . is Coordinator Ġ}, ĊĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. plus ( device . node . supported Features . map Ġ{ Ġit . name Res Ġto ĠZ ig B ee Input . Read ( it ) Ġ}) ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= ĠitemView . context ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . second ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠZ ig B ee Input . Read Ġ-> Ġcontext . getString ( R . string . zig bee _ diagnostic _ read _ attribute , Ġcontext . getString ( it . first )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġcontext . getString ( it . first ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġto Ġdevice . node . command ( it . second ) ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ fun ĠBinding ViewHolder < View holder Z ig bee Device Binding >. bind ( device : ĠDevice . Z ig B ee ) Ġ{ ĊĠĠĠ Ġthis . device Ġ= Ġdevice ĊĠĠĠ Ġhighlight ( device ) ĊĊĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠ Ġswitch Name . text Ġ= Ġdevice . name ĊĠĠĠĠĠĠĠ Ġtoggle . isVisible Ġ= Ġdevice . node . supports ( Z ig B ee Node . Feature . On Off ) ĊĠĠĠĠĠĠĠ Ġlevel er . isVisible Ġ= Ġdevice . node . supports ( Z ig B ee Node . Feature . Level ) ĊĠĠĠĠĠĠĠ Ġcolor Picker . isVisible Ġ= Ġdevice . node . supports ( Z ig B ee Node . Feature . Color ) ĊĊĠĠĠĠĠĠĠ Ġdevice . is On . let ( toggle :: setChecked ) ĊĠĠĠĠĠĠĠ Ġdevice . level ?. let ( level er :: setValue ) ĊĠĠĠĠĠĠĠ Ġdevice . color ?. let ( Color State List :: valueOf )?. let ( color Picker :: setIcon Tint ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠViewGroup . zig bee Device ViewHolder ( ĊĠĠĠ Ġlistener : ĠZ ig B ee Device Listener Ċ ) Ġ= ĠviewHolder From ( View holder Z ig bee Device Binding :: inflate ). apply Ġbinding @{ ĊĠĠĠ Ġthis . listener Ġ= Ġlistener ĊĠĠĠ Ġval Ġthrottle Ġ= ĠTh rottle Ġ{ Ġlistener . send ( device . node . command ( Z ig B ee Input . Level ( level Ġ= Ġit Ġ/ Ġ 1 0 0 F ))) Ġ} ĊĊĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠ Ġcard View . make Accessible For TV ( st rok ed Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ ĠitemView . setOnClickListener Ġ{ Ġlistener . on Clicked ( device ) Ġ} ĊĠĠĠĠĠĠĠ ĠitemView . setOn Long ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Long Clicked ( device ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtoggle . make Accessible For TV () ĊĠĠĠĠĠĠĠ Ġtoggle . setOnClickListener Ġ{ Ġlistener . send ( device . node . command ( Z ig B ee Input . Toggle ( is On Ġ= Ġtoggle . isChecked ))) Ġ} ĊĊĠĠĠĠĠĠĠ Ġlevel er . make Accessible For TV () ĊĠĠĠĠĠĠĠ Ġlevel er . add On ChangeListener Ġ{ Ġ_, Ġvalue , Ġfrom User Ġ-> Ġif Ġ( from User ) Ġthrottle . run ( value . toInt ()) Ġ} ĊĊĠĠĠĠĠĠĠ Ġz ig bee Icon . make Accessible For TV ( st rok ed Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġz ig bee Icon . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMaterial AlertDialog Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( R . string . zig bee _ diagnostic _ title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Items ( diagnostic Options . map Ġ{ Ġit . first Ġ}. to Typed Array ()) Ġ{ Ġ_, Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . send ( diagnostic Options [ index ]. second ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcolor Picker . make Accessible For TV ( st rok ed Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġcolor Picker . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor Picker Dialog Builder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( R . string . color _ picker _ choose ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. wheel Type ( Color Picker View . W HE EL _ TYPE . CIR CLE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show Light ness Slider ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show Alpha Slider ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. initial Color ( device . color Ġ?: ĠColor . WHITE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show Color Edit ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. density ( 1 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. throttle Color Changes Ġ{ Ġrgb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . send ( device . node . command ( Z ig B ee Input . Color ( rgb ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button (" ok ") Ġ{ _, Ġrgb , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . send ( device . node . command ( Z ig B ee Input . Color ( rgb ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button (" cancel ") Ġ{ _, Ġ_ Ġ-> Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ