package Ġio . s we ers . ps ync Ċ Ċ /** Ċ Ġ* ĠThis Ġrepresents Ġa Ġpreference Ġentry Ċ Ġ* Ċ Ġ* Ġ[ T ] Ġrepresents Ġthe Ġtype Ġof Ġvalue Ġthis Ġpreference Ġis Ġbacked Ġby , Ġsuch Ġas Ġa Ġboolean Ċ Ġ*/ Ċ class ĠPref Entry < T Ġ: ĠAny >( var Ġkey : ĠString , ĊĠĠĠ Ġvar ĠdefaultValue : ĠT ? Ġ= Ġnull , ĊĠĠĠ Ġres Type : ĠString ? Ġ= Ġnull ) Ġ: ĠComparable < Pref Entry <* >> Ġ{ ĊĠ Ġvar Ġdefault Type : ĠClass < *> ? Ġ= Ġnull ĊĠ Ġvar Ġvalue Type : ĠClass < *> ? Ġ= Ġnull ĊĊĠ Ġ// ĠFor Ġlist Ġtypes ĊĠ Ġvar Ġhas List Attributes Ġ= Ġfalse ĊĠ Ġvar Ġentries Getter Stmt : ĠString ? Ġ= Ġnull ĊĠ Ġvar Ġentry Values Getter Stmt : ĠString ? Ġ= Ġnull ĊĊĠ Ġ// ĠResource Ġspecific Ġinfo ĊĠ Ġvar Ġres Type : ĠString ? Ġ= Ġnull ĊĠ Ġvar Ġis Resource Ġ= Ġfalse ĊĠ Ġvar Ġresource DefaultValue Getter Stmt : ĠString ? Ġ= Ġnull ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġif Ġ( res Type Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġthis . res Type Ġ= Ġres Type ĊĠĠĠĠĠ Ġthis . is Resource Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠ ĠdefaultValue Ġ== Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . default Type Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġthis . valueType Ġ= Ġnull ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġis Resource Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . default Type Ġ= ĠString :: class . java ĊĠĠĠĠĠĠĠ Ġresolve Resource Info () ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠdefaultValue Ġis ĠBoolean Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . default Type Ġ= ĠBoolean :: class . java Primitive Type ĊĠĠĠĠĠĠĠ Ġthis . valueType Ġ= Ġthis . default Type ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠdefaultValue Ġis ĠInt Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . default Type Ġ= ĠInt :: class . java Primitive Type ĊĠĠĠĠĠĠĠ Ġthis . valueType Ġ= Ġthis . default Type ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠdefaultValue Ġis ĠString Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . default Type Ġ= ĠString :: class . java ĊĠĠĠĠĠĠĠ Ġthis . valueType Ġ= Ġthis . default Type ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠUnsupportedOperationException ( ĊĠĠĠĠĠĠĠĠĠ Ġ" Unsupported Ġtype : Ġ" Ġ+ ĠdefaultValue !!. java Class . simple Name ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠMark s Ġthis Ġentry Ġas Ġa Ġlist Ġpreference Ġif Ġthe Ġpassed Ġparameters Ġare Ġvalue Ġ@ array Ġresource Ġrefs ĊĠĠ Ġ*/ ĊĠ Ġinternal Ġfun Ġmark As List Preference ( entries : ĠString , Ġentry Values : ĠString ) Ġ{ ĊĠĠĠ Ġval Ġentries Name Ġ= Ġget Array ResourceName ( entries ) ĊĠĠĠ Ġif Ġ( entries Name Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġthis . entries Getter Stmt Ġ= Ġ" getText Array ( R . array .$ entries Name )" ĊĠĠĠĠĠ Ġthis . has List Attributes Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġentry Values Name Ġ= Ġget Array ResourceName ( entry Values ) ĊĠĠĠ Ġif Ġ( entry Values Name Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġthis . entry Values Getter Stmt Ġ= Ġ" getText Array ( R . array .$ entry Values Name )" ĊĠĠĠĠĠ Ġthis . has List Attributes Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġkey . hashCode () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} Ġelse Ġif Ġ( other Ġ== Ġnull Ġ|| Ġjava Class Ġ!= Ġother . java Class ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn ĠhashCode () Ġ== Ġother . hashCode () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġcompare To ( other : ĠPref Entry < *> ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġthis . key . compareTo ( other . key ) ĊĠ Ġ} ĊĊĊĠ Ġval Ġis Blank : ĠBoolean ĊĠĠĠ Ġget () Ġ= Ġkey . isBlank () ĊĊĠ Ġ// ĠTODO ĊĠ Ġ// ĠFloat ĊĠ Ġ// ĠLong ĊĠ Ġ// ĠString Ġset ĊĠ Ġ// ĠString [] Ġoverload Ġfor Ġarray ĊĠ Ġ// Ġint [] Ġoverload Ġfor Ġarray ĊĠ Ġprivate Ġfun Ġresolve Resource Info () Ġ{ ĊĠĠĠ Ġval Ġtype Ġ= Ġres Type ĊĠĠĠ Ġval Ġstatement : ĠString ĊĊĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠ Ġ" bool " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġstatement Ġ= Ġ" getBoolean (% s )" ĊĠĠĠĠĠĠĠ Ġvalue Type Ġ= ĠBoolean :: class . java Primitive Type ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" color " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġstatement Ġ= Ġ" getColor (% s )" ĊĠĠĠĠĠĠĠ Ġvalue Type Ġ= ĠInt :: class . java Primitive Type ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" integer " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġstatement Ġ= Ġ" getInteger (% s )" ĊĠĠĠĠĠĠĠ Ġvalue Type Ġ= ĠInt :: class . java Primitive Type ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" string " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġstatement Ġ= Ġ" getString (% s )" ĊĠĠĠĠĠĠĠ Ġvalue Type Ġ= ĠString :: class . java ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" array " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġstatement Ġ= Ġ" getText Array (% s )" ĊĠĠĠĠĠĠĠ Ġvalue Type Ġ= ĠArray < CharSequence >:: class . java ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġcan 't Ġhandle Ġthis Ġtype Ġyet , Ġforce Ġit Ġto Ġblank Ġout ĊĠĠĠĠĠĠĠ Ġthis . key Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġresource DefaultValue Getter Stmt Ġ= ĠString . format ( statement , Ġ" DEFAULT _ RES _ ID ") ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġ" Pref Entry ( key ='$ key ', ĠdefaultValue =$ defaultValue , Ġdefault Type =$ default Type , Ġvalue Type =$ valueType , Ġhas List Attributes =$ has List Attributes , Ġentries Getter Stmt =$ entries Getter Stmt , Ġentry Values Getter Stmt =$ entry Values Getter Stmt , Ġres Type =$ res Type , Ġis Resource =$ is Resource , Ġresource DefaultValue Getter Stmt =$ resource DefaultValue Getter Stmt )" ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠ Ġval ĠBL ANK Ġ= ĠPref Entry < Void >(" ", Ġnull , Ġnull ) ĊĊĠĠĠ Ġprivate Ġfun Ġget Array ResourceName ( ref : ĠString ?): ĠString ? Ġ{ ĊĠĠĠĠĠ Ġif Ġ( ref Ġ== Ġnull Ġ|| Ġ! ref . startsWith ("@ array /") Ġ|| Ġref . length Ġ< Ġ 7 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġreturn Ġref . substring ( 7 ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ