package Ġcom . ag l ush kov . word teacher . shared . features . definitions . vm Ċ Ċ import Ġdev . icer ock . mo ko . resources . desc . Resource Ċ import Ġdev . icer ock . mo ko . resources . desc . StringDesc Ċ import Ġcom . ag l ush kov . word teacher . shared . events . Event Ċ import Ġcom . ag l ush kov . word teacher . shared . general .* Ċ import Ġcom . ag l ush kov . word teacher . shared . general . connectivity . Connectivity Manager Ċ import Ġcom . ag l ush kov . word teacher . shared . general . extensions . forward Ċ import Ġcom . ag l ush kov . word teacher . shared . general . item . Base View Item Ċ import Ġcom . ag l ush kov . word teacher . shared . general . resource . Resource Ċ import Ġcom . ag l ush kov . word teacher . shared . general . resource . getError String Ċ import Ġcom . ag l ush kov . word teacher . shared . general . resource . is Loaded Ċ import Ġcom . ag l ush kov . word teacher . shared . model . Word Teacher Definition Ċ import Ġcom . ag l ush kov . word teacher . shared . model . Word Teacher Word Ċ import Ġcom . ag l ush kov . word teacher . shared . model . toString Desc Ċ import Ġcom . ag l ush kov . word teacher . shared . repository . config . Config Ċ import Ġcom . ag l ush kov . word teacher . shared . repository . word definition . Word Definition Repository Ċ import Ġcom . ag l ush kov . word teacher . shared . res . MR Ċ import Ġcom . ark iv an ov . ess enty . parcel able . Parcelable Ċ import Ġcom . ark iv an ov . ess enty . parcel able . Parcel ize Ċ import Ġkotlinx . coroutines . Coroutine ExceptionHandler Ċ import Ġkotlinx . coroutines . Job Ċ import Ġkotlinx . coroutines . channels . Channel Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . flow . Mutable State Flow Ċ import Ġkotlinx . coroutines . flow . Sharing Started Ċ import Ġkotlinx . coroutines . flow . State Flow Ċ import Ġkotlinx . coroutines . flow . combine Ċ import Ġkotlinx . coroutines . flow . map Ċ import Ġkotlinx . coroutines . flow . receive As Flow Ċ import Ġkotlinx . coroutines . flow . state In Ċ import Ġkotlinx . coroutines . launch Ċ Ċ interface ĠDefinitions VM Ġ{ ĊĠĠĠ Ġfun Ġrestore ( newState : ĠState ) ĊĠĠĠ Ġfun Ġon Word Submitted ( word : ĠString ?, Ġfilter : ĠList < Word Teacher Word . Part Of Speech > Ġ= Ġempty List ()) ĊĠĠĠ Ġfun Ġon Try Again Clicked () ĊĠĠĠ Ġfun Ġon Part Of Speech Filter Updated ( filter : ĠList < Word Teacher Word . Part Of Speech >) ĊĠĠĠ Ġfun Ġon Part Of Speech Filter Clicked ( item : ĠDefinitions DisplayMode View Item ) ĊĠĠĠ Ġfun Ġon Part Of Speech Filter Close Clicked ( item : ĠDefinitions DisplayMode View Item ) ĊĠĠĠ Ġfun Ġon DisplayMode Changed ( mode : ĠDefinitions DisplayMode ) ĊĠĠĠ Ġfun Ġget Error Text ( res : ĠResource < *> ): ĠString Desc ? ĊĊĠĠĠ Ġval Ġstate : ĠState ĊĠĠĠ Ġval Ġdefinitions : ĠState Flow < Resource < List < Base View Item <* >>>> ĊĠĠĠ Ġval ĠdisplayMode State Flow : ĠState Flow < Definitions DisplayMode > ĊĠĠĠ Ġval Ġparts Of Speech Filter State Flow : ĠState Flow < List < Word Teacher Word . Part Of Speech >> ĊĠĠĠ Ġval Ġselected Parts Of Speech State Flow : ĠState Flow < List < Word Teacher Word . Part Of Speech >> ĊĠĠĠ Ġval Ġevent Flow : ĠFlow < Event > ĊĊĠĠĠ Ġ@ Parcel ize ĊĠĠĠ Ġclass ĠState ( ĊĠĠĠĠĠĠĠ Ġvar Ġword : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġ): ĠParcel able Ċ } Ċ Ċ open Ġclass ĠDefinitions VM Impl ( ĊĠĠĠ Ġprivate Ġval Ġconnectivity Manager : ĠConnect ivity Manager , ĊĠĠĠ Ġprivate Ġval Ġword Definition Repository : ĠWord Definition Repository , ĊĠĠĠ Ġprivate Ġval Ġid Generator : ĠId Generator , ĊĠĠĠ Ġoverride Ġvar Ġstate : ĠDefinitions VM . State Ċ ): ĠViewModel (), ĠDefinitions VM Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġevent Channel Ġ= ĠChannel < Event >( Channel . BUFFER ED ) ĊĠĠĠ Ġoverride Ġval Ġevent Flow Ġ= Ġevent Channel . receive As Flow () ĊĠĠĠ Ġprivate Ġval Ġdefinition Words Ġ= ĠMutable State Flow < Resource < List < Word Teacher Word >> >( Resource . Un initialized ()) ĊĊĠĠĠ Ġfinal Ġoverride Ġvar ĠdisplayMode State Flow Ġ= ĠMutable State Flow ( Definitions DisplayMode . By Source ) ĊĠĠĠ Ġfinal Ġoverride Ġvar Ġselected Parts Of Speech State Flow Ġ= ĠMutable State Flow < List < Word Teacher Word . Part Of Speech >>( emptyList ()) ĊĊĠĠĠ Ġoverride Ġval Ġdefinitions Ġ= Ġcombine ( ĊĠĠĠĠĠĠĠ Ġdefinition Words , ĊĠĠĠĠĠĠĠ ĠdisplayMode State Flow , ĊĠĠĠĠĠĠĠ Ġselected Parts Of Speech State Flow ĊĠĠĠ Ġ) Ġ{ Ġa , Ġb , Ġc Ġ-> ĠTrip le ( a , Ġb , Ġc ) Ġ} ĊĠĠĠ Ġ. map Ġ{ Ġ( word Definitions , ĠdisplayMode , Ġpart Of Speech Filter ) Ġ-> ĊĠĠĠĠĠĠĠ ĠLogger . v (" build Ġview Ġitems Ġ${ word Definitions . data ()?. size Ġ?: Ġ 0 }") ĊĠĠĠĠĠĠĠ Ġword Definitions . copy With ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild View Items ( word Definitions . data (). or Empty (), ĠdisplayMode , Ġpart Of Speech Filter ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ}. state In ( viewModel Scope , ĠSh aring Started . E ager ly , ĠResource . Un initialized ()) ĊĊĠĠĠ Ġoverride Ġval Ġparts Of Speech Filter State Flow Ġ= Ġdefinition Words . map Ġ{ ĊĠĠĠĠĠĠĠ Ġit . data (). or Empty (). map Ġ{ Ġword Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġword . definitions . keys ĊĠĠĠĠĠĠĠ Ġ}. flatten (). distinct () ĊĠĠĠ Ġ}. state In ( viewModel Scope , ĠSh aring Started . E ager ly , Ġempty List ()) ĊĊĠĠĠ Ġprivate Ġval Ġdisplay Modes Ġ= ĠlistOf ( Definitions DisplayMode . By Source , ĠDefinitions DisplayMode . Merged ) ĊĠĠĠ Ġprivate Ġvar Ġload Job : ĠJob ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġword : ĠString ? ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstate . word ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . word Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġinit Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġword ?. let Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġload IfNeeded ( it ) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrestore ( newState : ĠDefinitions VM . State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstate Ġ= ĠnewState ĊĠĠĠĠĠĠĠ Ġword ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload IfNeeded ( it ) ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġword Ġ= Ġ" owl " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload IfNeeded (" owl ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠĠĠĠĠ Ġevent Channel . cancel () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠEvents ĊĊĠĠĠ Ġoverride Ġfun Ġon Word Submitted ( word : ĠString ?, Ġfilter : ĠList < Word Teacher Word . Part Of Speech >) Ġ{ ĊĠĠĠĠĠĠĠ Ġselected Parts Of Speech State Flow . value Ġ= Ġfilter ĊĠĠĠĠĠĠĠ Ġif Ġ( word Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . word Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( word . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload IfNeeded ( word ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Part Of Speech Filter Updated ( filter : ĠList < Word Teacher Word . Part Of Speech >) Ġ{ ĊĠĠĠĠĠĠĠ Ġselected Parts Of Speech State Flow . value Ġ= Ġfilter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Part Of Speech Filter Clicked ( item : ĠDefinitions DisplayMode View Item ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent Channel . offer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShow Parts Of Speech Filter Dialog Event ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Parts Of Speech State Flow . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparts Of Speech Filter State Flow . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Part Of Speech Filter Close Clicked ( item : ĠDefinitions DisplayMode View Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġselected Parts Of Speech State Flow . value Ġ= Ġempty List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon DisplayMode Changed ( mode : ĠDefinitions DisplayMode ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( displayMode State Flow . value Ġ== Ġmode ) Ġreturn ĊĠĠĠĠĠĠĠ ĠdisplayMode State Flow . value Ġ= Ġmode ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Try Again Clicked () Ġ{ ĊĠĠĠĠĠĠĠ Ġload IfNeeded ( word !! ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠActions ĊĊĠĠĠ Ġprivate Ġfun Ġload IfNeeded ( word : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . word Ġ= Ġword ĊĊĠĠĠĠĠĠĠ Ġval Ġstate Flow Ġ= Ġword Definition Repository . obtain State Flow ( word ) ĊĠĠĠĠĠĠĠ Ġif Ġ( state Flow . value . is Loaded ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefinition Words . value Ġ= Ġif Ġ( definition Words . value Ġ!= Ġstate Flow . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Flow . value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠH ACK : Ġcopy Ġto Ġtrigger Ġflow Ġevent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Flow . value . copy () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload ( word ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload ( word : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtag Ġ= Ġ" Definitions VM . load " ĊĊĠĠĠĠĠĠĠ ĠLogger . v (" Start ĠLoading Ġ$ word ", Ġtag ) ĊĊĠĠĠĠĠĠĠ Ġload Job ?. cancel () ĊĠĠĠĠĠĠĠ Ġload Job Ġ= ĠviewModel Scope . launch ( Coroutine ExceptionHandler Ġ{ Ġ_, Ġe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . e (" Load ĠWord Ġexception Ġfor Ġ$ word Ġ${ e . message }", Ġtag ) ĊĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġword Definition Repository . define ( word , Ġfalse ). forward ( definition Words ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . v (" Finish ĠLoading Ġ$ word ", Ġtag ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild View Items ( ĊĠĠĠĠĠĠĠ Ġwords : ĠList < Word Teacher Word >, ĊĠĠĠĠĠĠĠ ĠdisplayMode : ĠDefinitions DisplayMode , ĊĠĠĠĠĠĠĠ Ġparts Of Speech Filter : ĠList < Word Teacher Word . Part Of Speech > ĊĠĠĠ Ġ): ĠList < Base View Item <* >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitems Ġ= Ġmutable ListOf < Base View Item <* >>() ĊĠĠĠĠĠĠĠ Ġif Ġ( words . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems . add ( Definitions DisplayMode View Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Part Of Speech Chip Text ( parts Of Speech Filter ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparts Of Speech Filter . isNotEmpty (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Modes , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Modes . indexOf ( displayMode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems . add ( Word Divider View Item ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( displayMode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDefinitions DisplayMode . Merged Ġ-> Ġadd Merged Words ( words , Ġparts Of Speech Filter , Ġitems ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġadd Words Group edBy Source ( words , Ġparts Of Speech Filter , Ġitems ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġgenerate Ids ( items ) ĊĠĠĠĠĠĠĠ Ġreturn Ġitems ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Part Of Speech Chip Text ( ĊĠĠĠĠĠĠĠ Ġpart Of Speech Filter : ĠList < Word Teacher Word . Part Of Speech >, ĊĠĠĠ Ġ): ĠString Desc Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( part Of Speech Filter . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString Desc . Resource ( MR . strings . definitions _ add _ filter ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Filter Ġ= Ġpart Of Speech Filter . first () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Filter . toString Desc () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠSet Ġunique Ġid Ġtaking Ġinto Ġaccount Ġthat Ġfor Ġthe Ġsame Ġitems Ġid Ġshouldn 't Ġchange ĊĠĠĠ Ġprivate Ġfun Ġgenerate Ids ( items : ĠMutable List < Base View Item <* >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprev Items Ġ= Ġdefinitions . value . data () Ġ?: Ġempty List () ĊĠĠĠĠĠĠĠ Ġval Ġmap : ĠMutable Map < Int , ĠMutable List < Base View Item <* >>> Ġ= Ġmutable Map Of () ĊĊĠĠĠĠĠĠĠ Ġ// ĠPut Ġitems Ġwith Ġids Ġin Ġmap ĊĠĠĠĠĠĠĠ Ġprev Items . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitems HashCode Ġ= Ġit . items HashCode () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠObtain Ġmutable Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠlistOf View Items : ĠMutable List < Base View Item <* >> Ġ= Ġmap [ items HashCode ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġmutable ListOf < Base View Item <* >> (). also Ġ{ Ġlist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ items HashCode ] Ġ= Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf View Items . add ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġset Ġids Ġfor Ġitem Ġnot Ġin Ġthe Ġmap ĊĠĠĠĠĠĠĠ Ġitems . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitems HashCode Ġ= Ġit . items HashCode () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap ListOf View Items Ġ= Ġmap [ items HashCode ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġmap ListOf View Items ?. first OrNull Ġ{ Ġlist Item Ġ-> Ġlist Item . items Ġ== Ġit . items Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . id Ġ= Ġitem . id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap ListOf View Items . remove ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . id Ġ= Ġid Generator . next Id () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Merged Words ( ĊĠĠĠĠĠĠĠ Ġwords : ĠList < Word Teacher Word >, ĊĠĠĠĠĠĠĠ Ġparts Of Speech Filter : ĠList < Word Teacher Word . Part Of Speech >, ĊĠĠĠĠĠĠĠ Ġitems : ĠMutable List < Base View Item <* >> ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġword Ġ= Ġmerge Words ( words , Ġparts Of Speech Filter ) ĊĊĠĠĠĠĠĠĠ Ġadd Word View Items ( word , Ġparts Of Speech Filter , Ġitems ) ĊĠĠĠĠĠĠĠ Ġitems . add ( Word Divider View Item ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Words Group edBy Source ( ĊĠĠĠĠĠĠĠ Ġwords : ĠList < Word Teacher Word >, ĊĠĠĠĠĠĠĠ Ġparts Of Speech Filter : ĠList < Word Teacher Word . Part Of Speech >, ĊĠĠĠĠĠĠĠ Ġitems : ĠMutable List < Base View Item <* >> ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( word Ġin Ġwords ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Added Ġ= Ġadd Word View Items ( word , Ġparts Of Speech Filter , Ġitems ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Added ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . add ( Word Divider View Item ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Word View Items ( ĊĠĠĠĠĠĠĠ Ġword : ĠWord Teacher Word , ĊĠĠĠĠĠĠĠ Ġparts Of Speech Filter : ĠList < Word Teacher Word . Part Of Speech >, ĊĠĠĠĠĠĠĠ Ġitems : ĠMutable List < Base View Item <* >> ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtop Index Ġ= Ġitems . size ĊĠĠĠĠĠĠĠ Ġfor Ġ( part Of Speech Ġin Ġword . definitions . keys . filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparts Of Speech Filter . isEmpty () Ġ|| Ġparts Of Speech Filter . contains ( it ) ĊĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems . add ( Word Part Of Speech View Item ( part Of Speech . toString Desc ())) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( def Ġin Ġword . definitions [ part Of Speech ]. or Empty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// items . add ( Word Header View Item ( StringDesc . Resource ( MR . strings . word _ section _ definition ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( d Ġin Ġdef . definitions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . add ( Word Definition View Item (" âĢ¢ Ġ$ d ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( def . examples . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . add ( Word Sub Header View Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString Desc . Resource ( MR . strings . word _ section _ examples ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInd ent . SMALL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( ex Ġin Ġdef . examples ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . add ( Word Example View Item ( ex , ĠInd ent . SMALL )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( def . syn onyms . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . add ( Word Sub Header View Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString Desc . Resource ( MR . strings . word _ section _ syn onyms ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInd ent . SMALL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( syn onym Ġin Ġdef . syn onyms ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . add ( Word Syn onym View Item ( syn onym , ĠInd ent . SMALL )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġhas New Items Ġ= Ġitems . size Ġ- Ġtop Index Ġ> Ġ 0 ĊĠĠĠĠĠĠĠ Ġif Ġ( has New Items ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems . add ( top Index , ĠWord Title View Item ( word . word , Ġword . types )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġword . tran scription ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . add ( top Index Ġ+ Ġ 1 , ĠWord Tran scription View Item ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġhas New Items ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmerge Words ( ĊĠĠĠĠĠĠĠ Ġwords : ĠList < Word Teacher Word >, ĊĠĠĠĠĠĠĠ Ġparts Of Speech Filter : ĠList < Word Teacher Word . Part Of Speech > ĊĠĠĠ Ġ): ĠWord Teacher Word Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( words . size Ġ== Ġ 1 ) Ġreturn Ġwords . first () ĊĊĠĠĠĠĠĠĠ Ġval Ġall Words Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠ Ġval Ġall Tran scriptions Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠ Ġval Ġall Definitions Ġ= Ġmutable Map Of < Word Teacher Word . Part Of Speech , ĠList < Word Teacher Definition >>() ĊĠĠĠĠĠĠĠ Ġval Ġall Types Ġ= Ġmutable ListOf < Config . Type >() ĊĊĠĠĠĠĠĠĠ Ġwords . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! all Words . contains ( it . word )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Words . add ( it . word ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . tran scription ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! all Tran scriptions . contains ( it )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Tran scriptions . add ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( part Of Speech Ġin Ġit . definitions . keys . filter Ġ{ Ġdefinition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparts Of Speech Filter . isEmpty () Ġ|| Ġparts Of Speech Filter . contains ( definition ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoriginal Defs Ġ= Ġit . definitions [ part Of Speech ] Ġas ? ĠMutable List Ġ?: Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlist Ġ= Ġall Definitions [ part Of Speech ] Ġas ? ĠMutable List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( list Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Definitions [ part Of Speech ] Ġ= Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . addAll ( original Defs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( type Ġin Ġit . types ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! all Types . contains ( type )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Types . add ( type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Word Ġ= Ġall Words . join ToString () ĊĠĠĠĠĠĠĠ Ġval Ġresult Tran scription Ġ= Ġif Ġ( all Tran scriptions . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Tran scriptions . join ToString () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠWord Teacher Word ( result Word , Ġresult Tran scription , Ġall Definitions , Ġall Types ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Error Text ( res : ĠResource < *> ): ĠString Desc ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhas Connection Ġ= Ġconnectivity Manager . is Device Online ĊĠĠĠĠĠĠĠ Ġval Ġhas Response Ġ= Ġtrue Ġ// ĠTODO : Ġhandle Ġerror Ġserver Ġresponse ĊĠĠĠĠĠĠĠ Ġreturn Ġres . getError String ( has Connection , Ġhas Response ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠShow Parts Of Speech Filter Dialog Event ( ĊĠĠĠ Ġval Ġparts Of Speech : ĠList < Word Teacher Word . Part Of Speech >, ĊĠĠĠ Ġval Ġselected Parts Of Speech : ĠList < Word Teacher Word . Part Of Speech >, ĊĠĠĠ Ġoverride Ġvar Ġis Handled : ĠBoolean Ġ= Ġfalse Ċ ): ĠEvent Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmark As Handled () Ġ{ ĊĠĠĠĠĠĠĠ Ġis Handled Ġ= Ġtrue ĊĠĠĠ Ġ} Ċ } Ċ