import Ġandroid . view . Motion Event .* Ċ import Ġre net ik . android . event . registration . CS Registration Ċ import Ġre net ik . android . event . registration . pause Ċ import Ġre net ik . android . event . property . C SE vent Property Ċ import Ġre net ik . android . ui . view . C SH as Touch Event Ċ import Ġre net ik . android . core . kotlin . primitives . isTrue Ċ Ċ fun Ġ< T Ġ: ĠC SH as Touch Event > ĠT . on Touch ( function : Ġ( down : ĠBoolean ) Ġ-> ĠUnit ) Ġ= Ġapply Ġ{ ĊĠĠĠ Ġon Touch Event Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( it . action Mask ed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠACTION _ DOWN Ġ-> Ġtrue . also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġself . is Pressed Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfunction ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠACTION _ UP , ĠACTION _ CANCEL Ġ-> Ġtrue . also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġself . is Pressed Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfunction ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠACTION _ MOVE Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġ< T Ġ: ĠC SH as Touch Event > ĠT . on Touch Down ( function : Ġ() Ġ-> ĠUnit ) Ġ= Ġapply Ġ{ ĊĠĠĠ Ġon Touch Ġ{ Ġdown Ġ-> Ġif Ġ( down ) Ġfunction () Ġ} Ċ } Ċ Ċ fun Ġ< T Ġ: ĠC SH as Touch Event > ĠT . toggle Active If ( property : ĠC SE vent Property < Boolean >): ĠCS Registration Ġ{ ĊĠĠĠ Ġset Toggle Active ( property . value ) ĊĠĠĠ Ġval Ġproperty OnChange Ġ= Ġproperty . onChange Ġ{ Ġset Toggle Active ( property . value ) Ġ} ĊĠĠĠ Ġon Touch Active Toggle Ġ{ Ġon Ġ-> Ġproperty OnChange . pause (). use Ġ{ Ġproperty . value ( on ) Ġ} Ġ} ĊĠĠĠ Ġreturn Ġproperty OnChange Ċ } Ċ Ċ fun Ġ< T Ġ: ĠC SH as Touch Event > ĠT . toggle Selected If ( property : ĠC SE vent Property < Boolean >): ĠCS Registration Ġ{ ĊĠĠĠ Ġset Toggle Selected ( property . value ) ĊĠĠĠ Ġval Ġproperty OnChange Ġ= Ġproperty . onChange Ġ{ Ġset Toggle Selected ( property . value ) Ġ} ĊĠĠĠ Ġon Touch Selected Toggle Ġ{ Ġon Ġ-> Ġproperty OnChange . pause (). use Ġ{ Ġproperty . value ( on ) Ġ} Ġ} ĊĠĠĠ Ġreturn Ġproperty OnChange Ċ } Ċ Ċ fun Ġ< T Ġ: ĠC SH as Touch Event > ĠT . set Toggle Active ( pressed : ĠBoolean ) Ġ= Ġapply Ġ{ ĊĠĠĠ Ġself . is Activated Ġ= Ġpressed Ċ } Ċ Ċ fun Ġ< T Ġ: ĠC SH as Touch Event > ĠT . set Toggle Selected ( pressed : ĠBoolean ) Ġ= Ġapply Ġ{ ĊĠĠĠ Ġself . isSelected Ġ= Ġpressed Ċ } Ċ Ċ fun Ġ< T Ġ: ĠC SH as Touch Event > ĠT . on Touch Active Toggle ( function : Ġ( Boolean ) Ġ-> ĠUnit ) Ġ= Ġon Touch Ġ{ ĊĠĠĠ Ġif Ġ( it . isTrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! self . is Activated ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunction ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself . isSelected Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself . is Activated Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( self . is Activated ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself . is Pressed Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself . isSelected Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself . is Activated Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( self . is Activated ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself . isSelected Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunction ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself . is Activated Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself . isSelected Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġ< T Ġ: ĠC SH as Touch Event > ĠT . on Touch Selected Toggle ( function : Ġ( Boolean ) Ġ-> ĠUnit ) Ġ= Ġon Touch Ġ{ ĊĠĠĠ Ġif Ġ( it . isTrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! self . isSelected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunction ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself . is Activated Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself . isSelected Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( self . isSelected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself . is Pressed Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself . is Activated Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself . isSelected Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( self . isSelected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself . is Activated Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunction ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself . isSelected Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself . is Activated Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }