/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 1 ĠX iz hi ĠZ hu Ċ Ġ* Ċ Ġ* Ġ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 Ġme . x iz zh u . android . j osh ua . search Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . text . Sp ann able StringBuilder Ċ import Ġandroid . text . style . BackgroundColor Span Ċ import Ġandroid . text . style . ForegroundColor Span Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . annotation . Color Int Ċ import Ġme . x iz zh u . android . j osh ua . R Ċ import Ġme . x iz zh u . android . j osh ua . core . Highlight Ċ import Ġme . x iz zh u . android . j osh ua . core . Settings Ċ import Ġme . x iz zh u . android . j osh ua . core . Ver se Index Ċ import Ġme . x iz zh u . android . j osh ua . ui .* Ċ import Ġme . x iz zh u . android . j osh ua . ui . recyclerview . Base Item Ċ import Ġme . x iz zh u . android . j osh ua . ui . recyclerview . Base ViewHolder Ċ import Ġjava . util .* Ċ Ċ class ĠSearch Ver se Item ( val Ġver se Index : ĠVer se Index , Ġprivate Ġval Ġbook ShortName : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġtext : ĠString , Ġprivate Ġval Ġquery : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Color Int Ġprivate Ġval Ġhighlight Color : ĠInt ) ĊĠĠĠ Ġ: ĠBase Item ( R . layout . item _ search _ verse , Ġ{ Ġinflater , Ġparent Ġ-> ĠSearch Ver se Item ViewHolder ( in flater , Ġparent ) Ġ}) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġdon 't Ġexpect Ġusers Ġto Ġchange Ġlocale Ġthat Ġfrequently . ĊĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" Constant Locale ") ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠDEFAULT _ LOCAL E Ġ= ĠLocale . getDefault () ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠBO OK _ NAME _ SIZE _ SPAN Ġ= Ġcreate Title Size Span () ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠBO OK _ NAME _ STYLE _ SPAN Ġ= Ġcreate Title Style Span () ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠKEY WORD _ SIZE _ SPAN Ġ= Ġcreate Keyword Size Span () ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠKEY WORD _ STYLE _ SPAN Ġ= Ġcreate Keyword Style Span () ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠSP AN N ABLE _ STRING _ BUILDER Ġ= ĠSp ann able StringBuilder () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠCallback Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġopen Ver se ( verse To Open : ĠVer se Index ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġtext For Display : ĠCharSequence Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġformat : ĊĠĠĠĠĠĠĠ Ġ// Ġ< short Ġbook Ġname > Ġ< chapter Ġver se Index >:< verse Ġver se Index > ĊĠĠĠĠĠĠĠ Ġ// Ġ< verse Ġtext > ĊĠĠĠĠĠĠĠ ĠSP AN N ABLE _ STRING _ BUILDER . clear All () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( book ShortName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (' Ġ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( verse Index . chapter Index Ġ+ Ġ 1 ). append (': '). append ( verse Index . verse Index Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Span ( BOOK _ NAME _ SIZE _ SPAN , ĠBO OK _ NAME _ STYLE _ SPAN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ('\ n ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( text ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġhighlight s Ġthe Ġkeywords ĊĠĠĠĠĠĠĠ Ġval Ġtext StartIndex Ġ= ĠSP AN N ABLE _ STRING _ BUILDER . length Ġ- Ġtext . length ĊĠĠĠĠĠĠĠ Ġval Ġlower Case Ġ= ĠSP AN N ABLE _ STRING _ BUILDER . toString (). lowercase ( DEFAULT _ LOCAL E ) ĊĠĠĠĠĠĠĠ Ġfor Ġ(( index , Ġkeyword ) Ġin Ġquery . trim (). replace ("\\ s +", Ġ" Ġ"). split (" Ġ"). with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġlower Case . indexOf ( keyword . lowercase ( DEFAULT _ LOCAL E ), Ġtext StartIndex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( start Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSP AN N ABLE _ STRING _ BUILDER . set Span ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġ 0 ) ĠKEY WORD _ SIZE _ SPAN Ġelse Ġcreate Keyword Size Span (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġ 0 ) ĠKEY WORD _ STYLE _ SPAN Ġelse Ġcreate Keyword Style Span (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart , Ġstart Ġ+ Ġkeyword . length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġhighlight s Ġthe Ġver se Ġif Ġneeded ĊĠĠĠĠĠĠĠ Ġif Ġ( highlight Color Ġ!= ĠHighlight . COLOR _ NONE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSP AN N ABLE _ STRING _ BUILDER . set Span ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBackground Color Span ( highlight Color ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFore ground Color Span ( if Ġ( highlight Color Ġ== ĠHighlight . COLOR _ BLUE ) ĠColor . WHITE Ġelse ĠColor . BLACK ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSP AN N ABLE _ STRING _ BUILDER . length Ġ- Ġtext . length , ĠSP AN N ABLE _ STRING _ BUILDER . length ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn @ lazy ĠSP AN N ABLE _ STRING _ BUILDER . to CharSequence () ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠSearch Ver se Item ViewHolder ( in flater : ĠLayoutInflater , Ġparent : ĠViewGroup ) ĊĠĠĠ Ġ: ĠBase ViewHolder < Search Ver se Item >( in flater . inflate ( R . layout . item _ search _ verse , Ġparent , Ġfalse )) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġtext Ġ= ĠitemView Ġas ĠTextView ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠitemView . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem ?. let Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( item View . activity Ġas ? ĠSearch Ver se Item . Callback )?. open Ver se ( item . verse Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalStateException (" Attached Ġactivity Ġ[ ${ item View . activity . java Class . name }] Ġdoes Ġnot Ġimplement ĠSearch Ver se Item . Callback ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbind ( settings : ĠSettings , Ġitem : ĠSearch Ver se Item , Ġpayload s : ĠList < Any >) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( text ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Settings With Primary Text ( settings ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġitem . text For Display ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ