package Ġcom . so kar creative . step per view Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Input Filter Ċ import Ġandroid . text . Sp anned Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . widget . Radio Group Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* ĊĊĊĊĊ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġhandler Ġ= ĠHandler () ĊĊĠĠĠ Ġprivate Ġval Ġrunnable Step Count Update Ġ= ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠ Ġsetup Step per View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Step per View (){ ĊĠĠĠĠĠĠĠ Ġval Ġstep Count Ġ= Ġtry { Ġedit Text Step Count . text . toString (). toInt OrNull () Ġ} Ġcatch Ġ( e : ĠException ){ Ġnull Ġ} ĊĠĠĠĠĠĠĠ Ġif ( step Count Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstep per View . count Ġ Ġ= Ġstep Count ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitles Ġ= Ġarray ListOf < CharSequence >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġstep Count ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitles . add (" Step Ġ${ i + 1 }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstep per View . titles Ġ= Ġtitles . to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstep per View . step ( 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġsetup Step per View () ĊĠĠĠĠĠĠĠ Ġstep per View . step ( 2 ) ĊĠĠĠĠĠĠĠ Ġbutton Prev Step . setOnClickListener Ġ{ Ġif ( step per View . current Position - 1 Ġ>= Ġ 0 Ġ&& Ġstep per View . current Position - 1 Ġ< Ġstep per View . count ) Ġstep per View . step ( step per View . current Position - 1 ) Ġ} ĊĠĠĠĠĠĠĠ Ġbutton Next Step . setOnClickListener Ġ{ Ġif ( step per View . current Position + 1 Ġ< Ġstep per View . count Ġ&& Ġstep per View . current Position + 1 Ġ>= Ġ 0 ) Ġstep per View . step ( step per View . current Position + 1 ) Ġ} ĊĠĠĠĠĠĠĠ Ġedit Text Step Count . filters Ġ= ĠarrayOf ( Input Filter MinMax ( 0 , Ġ 1 0 )) ĊĠĠĠĠĠĠĠ Ġedit Text Step Count . add TextChanged Listener ( object Ġ: ĠText Watcher { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . remove Callbacks ( run nable Step Count Update ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . post Delayed ( run nable Step Count Update , Ġ 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġradio Group Titles . setOn Checked ChangeListener (({ Ġradio Group : ĠRadio Group , Ġ_: ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstep per View . show Titles Ġ= Ġwhen ( radio Group . checked RadioButton Id ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . radioButton Hide Titles Ġ-> ĠStep per View . HIDE _ TIT LES ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . radioButton Show Current Titles Ġ-> ĠStep per View . SHOW _ CURRENT _ TITLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . radioButton Show All Titles Ġ-> ĠStep per View . SHOW _ ALL _ TIT LES ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠStep per View . HIDE _ TIT LES ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstep per View . step ( step per View . current Position ) ĊĠĠĠĠĠĠĠ Ġ})) ĊĠĠĠĠĠĠĠ Ġradio Button Show Current Titles . isChecked Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠInput Filter MinMax ( val Ġmin : ĠInt Ġ= Ġ 0 , Ġval Ġmax : ĠInt Ġ= Ġ 0 ) Ġ: ĠInput Filter Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfilter ( source : ĠCharSequence , Ġstart : ĠInt , Ġend : ĠInt , Ġdest : ĠSp anned , Ġd start : ĠInt , Ġd end : ĠInt ): ĠCharSequence ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= ĠInteger . parseInt ( dest . toString () Ġ+ Ġsource . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isIn Range ( min , Ġmax , Ġinput )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( n fe : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġis InRange ( a : ĠInt , Ġb : ĠInt , Ġc : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( b Ġ> Ġa ) Ġc Ġ>= Ġa Ġ&& Ġc Ġ<= Ġb Ġelse Ġc Ġ>= Ġb Ġ&& Ġc Ġ<= Ġa ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ