package Ġcom . van ishing jar . cl lp . custom views Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . provider . Calendar Contract Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroidx . preference . Multi Select List Preference Ċ import Ġjava . util .* Ċ Ċ class ĠCalendar Multi List Preference ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġattrs : ĠAttributeSet ? Ċ ) Ġ: ĠMulti Select List Preference ( context , Ġattrs ) Ġ{ ĊĠĠĠ Ġ// var Ġcr : ĠContent Resolver ? Ġ= Ġnull ĊĠĠĠ Ġ// var Ġcursor : ĠCursor ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġprojection Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠ ĠCalendar Contract . Cal endars . CAL END AR _ DISPLAY _ NAME , ĊĠĠĠĠĠĠĠ ĠCalendar Contract . Cal endars . IS _ PRIMARY , ĊĠĠĠĠĠĠĠ ĠCalendar Contract . Cal endars ._ ID ĊĠĠĠ Ġ) ĊĠĠĠ Ġvar Ġselection Ġ= Ġ"(" Ġ+ ĠCalendar Contract . Cal endars . VISIBLE Ġ+ Ġ" Ġ= Ġ? )" ĊĠĠĠ Ġvar Ġselection Args Ġ= ĠarrayOf (" 1 ") ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġpopulate List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpopulate List () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġentries : ĠMutable List < CharSequence > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠArrayList () ĊĠĠĠĠĠĠĠ Ġval Ġentries Values : ĠMutable List < CharSequence > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠArrayList () ĊĠĠĠĠĠĠĠ Ġif Ġ( context . check Self Permission ( Manifest . permission . READ _ CAL END AR ) Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġcontext . check Self Permission ( Manifest . permission . WRITE _ CAL END AR ) Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcr Ġ= Ġcontext . content Resolver ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= Ġcr . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCalendar Contract . Cal endars . CONTENT _ URI , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprojection , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselection , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselection Args , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( cursor !!. moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġname Ġ= Ġcursor . getString ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprimary Ġ= Ġcursor . getString ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġcursor . getString ( 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( primary Ġ== Ġ" 1 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentries . add ( 0 , Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentries Values . add ( 0 , Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentries . add ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentries Values . add ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . close () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Entries ( entries . to Typed Array ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentry Values Ġ= Ġentries Values . to Typed Array () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }