package Ġkr . ac . sn u . hc il . om n itr ack . ui . pages . trigger . conditions . data Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Array Adapter Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . widget . AppCompat ImageView Ċ import Ġkr . ac . sn u . hc il . android . common . events . Event Ċ import Ġkr . ac . sn u . hc il . android . common . view . choice . Extended Spinner Ċ import Ġkr . ac . sn u . hc il . android . common . view . inflate Content Ċ import Ġkr . ac . sn u . hc il . android . common . view . text . Enter Hide Keyboard Editor ActionListener Ċ import Ġkr . ac . sn u . hc il . om n itr ack . R Ċ import Ġkr . ac . sn u . hc il . om n itr ack . core . triggers . conditions . OT Data D riven Trigger Condition Ċ import Ġjava . math . BigDecimal Ċ import Ġkotlin . properties . Deleg ates Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġyo un gh ok im Ġon Ġ 1 6 . Ġ 9 . Ġ 5 .. Ċ Ġ*/ Ċ class ĠData D riven Comparison Setting View Ġ: ĠLinearLayout , ĠText Watcher , ĠExtended Spinner . On ItemSelected Listener Ġ{ ĊĊĠĠĠ Ġvar Ġthreshold : ĠBigDecimal Ġ= ĠBigDecimal . ZERO ĊĠĠĠĠĠĠĠ Ġset Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ!= Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! number Field . text . toString (). to BigDecimal (). equals ( value )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnumber Field . setText ( value . to Plain String (), ĠTextView . Buffer Type . EDIT ABLE ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Threshold Changed . invoke ( this , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġcomparison : ĠO T Data D riven Trigger Condition . Comparison Method Ġby ĠDeleg ates . observable ( OT Data D riven Trigger Condition . Comparison Method . Ex ceed ) Ġ{ Ġprop , Ġold , Ġnew Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( old Ġ!= Ġnew ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner . selected Item Position Ġ= ĠO T Data D riven Trigger Condition . Comparison Method . values (). indexOf ( new ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Comparison Changed . invoke ( this , Ġnew ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġon Threshold Changed Ġ= ĠEvent < BigDecimal >() ĊĠĠĠ Ġval Ġon Comparison Changed Ġ= ĠEvent < OT Data D riven Trigger Condition . Comparison Method >() ĊĊĠĠĠ Ġprivate Ġval Ġspinner : ĠExtended Spinner ĊĠĠĠ Ġprivate Ġval Ġnumber Field : ĠEditText ĊĊĠĠĠ Ġprivate Ġval Ġadapter Ġ= ĠComparison Method Adapter () ĊĊĊĠĠĠ Ġconstructor ( context : ĠContext ?) Ġ: Ġsuper ( context ) ĊĠĠĠ Ġconstructor ( context : ĠContext ?, Ġattrs : ĠAttributeSet ?) Ġ: Ġsuper ( context , Ġattrs ) ĊĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġorientation Ġ= ĠLinearLayout . HORIZONTAL ĊĠĠĠĠĠĠĠ Ġinf late Content ( R . layout . condition er _ setting _ single _ numeric _ comparison , Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġspinner Ġ= ĠfindViewById ( R . id . ui _ comparison _ method ) ĊĠĠĠĠĠĠĠ Ġspinner . adapter Ġ= Ġadapter ĊĊĠĠĠĠĠĠĠ Ġnumber Field Ġ= ĠfindViewById ( R . id . ui _ comp ared _ number _ input ) ĊĊĠĠĠĠĠĠĠ Ġ// synchron ize ĊĠĠĠĠĠĠĠ Ġnumber Field . setText ( threshold . to Plain String (), ĠTextView . Buffer Type . EDIT ABLE ) ĊĠĠĠĠĠĠĠ Ġspinner . selected Item Position Ġ= ĠO T Data D riven Trigger Condition . Comparison Method . values (). indexOf ( comparison ) ĊĊĠĠĠĠĠĠĠ Ġ// add Ġevent Ġlisteners ĊĠĠĠĠĠĠĠ Ġspinner . on ItemSelected Listener Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġnumber Field . add TextChanged Listener ( this ) ĊĠĠĠĠĠĠĠ Ġnumber Field . setOn Editor ActionListener ( Enter Hide Keyboard Editor ActionListener ()) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon ItemSelected ( spinner : ĠExtended Spinner , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . comparison Ġ= Ġspinner . selected Item Ġas ĠO T Data D riven Trigger Condition . Comparison Method ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdecimal Ġ= Ġs . toString (). to BigDecimal OrNull () ĊĠĠĠĠĠĠĠ Ġif Ġ( decimal Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . threshold Ġ= Ġdecimal ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . number Field . setText ( threshold . to Plain String ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠComparison Method Adapter Ġ: ĠArray Adapter < OT Data D riven Trigger Condition . Comparison Method >( context , ĠR . layout . simple _ list _ element _ single _ big _ icon , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠO T Data D riven Trigger Condition . Comparison Method . values ()) Ġ{ ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget DropDown View ( position : ĠInt , ĠconvertView : ĠView ?, Ġparent : ĠViewGroup ): ĠView Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġget View ( position , ĠconvertView , Ġparent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . setBackground Resource ( R . drawable . bottom _ separator _ thin ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget View ( position : ĠInt , ĠconvertView : ĠView ?, Ġparent : ĠViewGroup ): ĠView Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠconvertView Ġ?: ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ). inflate ( R . layout . simple _ list _ element _ single _ big _ icon , Ġparent , Ġfalse ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( view . tag Ġ! is ĠMethod ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . tag Ġ= ĠMethod ViewHolder ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġholder Ġ= Ġview . tag Ġas ĠMethod ViewHolder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . bind ( getItem ( position )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinner Ġclass ĠMethod ViewHolder ( val Ġview : ĠView ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġicon View : ĠAppCompat ImageView Ġ= Ġview . findViewById ( R . id . textView ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġbind ( method : ĠO T Data D riven Trigger Condition . Comparison Method ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon View . setImage Resource ( method . symbol Image ResourceId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }