/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠGe et esh ĠKal ak oti Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġio . ge et esh k . dot . utils Ċ Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . EditText Ċ import Ġcom . google . android . material . floating action button . Floating ActionButton Ċ import Ġcom . google . android . material . text field . TextInput EditText Ċ import Ġio . ge et esh k . dot . utils . Constants . Companion . SPACE _ PATTERN Ċ import Ġio . ge et esh k . dot . utils . Constants . Companion . english To M orse Code Ċ Ċ /** ĠRemoves Ġany Ġspaces Ġwith Ġlength Ġ> Ġ 1 Ġin Ġa ĠText Input EditText Ġ*/ Ċ fun ĠText Input EditText . remove Extra Whitespace () Ġ{ ĊĠĠĠ Ġset Text ( text . toString (). trim (). replace ( SPACE _ PATTERN , Ġ" Ġ")) Ċ } Ċ Ċ /** ĠConverts Ġa ĠString Ġto Ġm orse Ġcode Ġby Ġreferencing Ġmap Ġ*/ Ċ fun ĠString . to M orse (): ĠString Ġ{ ĊĠĠĠ Ġval Ġbuilder Ġ= ĠStringBuilder () ĊĠĠĠ ĠforEach Ġ{ ĊĠĠĠĠĠĠĠ Ġbuilder . append ( english To M orse Code [ it . toUpperCase ()]) ĊĠĠĠĠĠĠĠ Ġbuilder . append (" Ġ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġbuilder . toString (). trim () Ċ } Ċ Ċ /** ĠConverts Ġan ĠEdit able Ġto Ġm orse Ġcode Ġby Ġreferencing Ġmap Ġ*/ Ċ fun ĠEdit able . to M orse (): ĠString Ġ{ ĊĠĠĠ Ġval Ġbuilder Ġ= ĠStringBuilder () ĊĠĠĠ ĠforEach Ġ{ ĊĠĠĠĠĠĠĠ Ġbuilder . append ( english To M orse Code [ it . toUpperCase ()]) ĊĠĠĠĠĠĠĠ Ġbuilder . append (" Ġ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġbuilder . toString (). trim () Ċ } Ċ Ċ /** ĠExtension Ġto Ġmake Ġenabling Ġviews Ġlook Ġcleaner Ġ*/ Ċ fun ĠView . enable () Ġ{ ĊĠĠĠ Ġis Enabled Ġ= Ġtrue Ċ } Ċ Ċ /** ĠExtension Ġto Ġmake Ġdisabling Ġviews Ġlook Ġcleaner Ġ*/ Ċ fun ĠView . disable () Ġ{ ĊĠĠĠ Ġis Enabled Ġ= Ġfalse Ċ } Ċ Ċ /** ĠExtension Ġto Ġshow / hide ĠFloating ActionButton Ġbased Ġon Ġa Ġcondition Ġ*/ Ċ fun ĠFloating ActionButton . display ( visible : ĠBoolean ) Ġ{ ĊĠĠĠ Ġif Ġ( visible ) Ġshow () Ġelse Ġhide () Ċ } Ċ Ċ /** ĠKotlin ĠDSL Ġimplementation Ġof ĠText Watcher . on TextChanged Ġon ĠEditText */ Ċ fun ĠEditText . on TextChanged ( on TextChanged : Ġ( String ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġadd TextChanged Listener ( object Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( p 0 : ĠEdit able ?) Ġ{} ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( p 0 : ĠCharSequence ?, Ġp 1 : ĠInt , Ġp 2 : ĠInt , Ġp 3 : ĠInt ) Ġ{} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( p 0 : ĠCharSequence ?, Ġp 1 : ĠInt , Ġp 2 : ĠInt , Ġp 3 : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon TextChanged . invoke ( p 0 . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) Ċ }