package Ġus . kol ler . calendar widget . util Ċ Ċ import Ġandroid . app widget . App Widget Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . SharedPreferences Ċ import Ġcom . google . gson . Gson Ċ import Ġus . kol ler . calendar widget . R Ċ Ċ /** Ċ Ġ* ĠHelper Ġclass Ġto Ġeasily Ġload Ġand Ġstore ĠCalendar Widget Prefs Ġin ĠSharedPreferences . Ċ Ġ* Ġ*/ Ċ class ĠP refs ( private Ġval Ġcontext : ĠContext ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠDAY S _ SHO WN _ IN _ WIDGET : ĠInt Ġ= Ġ 7 ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġamount Ġof Ġdays Ġthe Ġwidget Ġshows Ġcalendar Ġevents Ġfor . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun ĠgetDefault Days Shown In Widget (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠDAY S _ SHO WN _ IN _ WIDGET ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Shared Prefs ( context : ĠContext ): ĠSharedPreferences Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġload Ġpreferences Ġfile Ġkey Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref File Key Ġ= Ġcontext . getString ( R . string . preference _ file _ key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġretrieve ĠSharedPreferences Ġinstance Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcontext . get SharedPreferences ( pref File Key , ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLoad Ġthe Ġcurrently Ġstored ĠCalendar Widget Prefs Ġfor Ġa Ġgiven Ġwidget Id . ĊĠĠĠĠ Ġ* Ġ@ param Ġwidget Id ĊĠĠĠĠ Ġ* Ġ@ return Ġstored ĠCalendar Widget Prefs Ġfor Ġgiven Ġwidget Id ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġfun Ġload Widget Prefs ( widget Id : ĠInt ): ĠCalendar Widget Prefs Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* Ġretrieve Ġshared Ġprefs Ġinstance Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġshared Prefs Ġ= Ġget Shared Prefs ( context ) ĊĠĠĠĠĠĠĠ Ġ/* Ġload Ġshared Ġprefs Ġkey Ġand Ġformat Ġwith Ġwidget Id Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= ĠString . format ( context . getString ( R . string . calendar _ widget _ prefs _ key ), Ġwidget Id ) ĊĠĠĠĠĠĠĠ Ġ/* Ġload Ġjson Ġfrom Ġshared Ġprefs Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġshared Prefs . getString ( key , ĠGson (). toJson ( Calendar Widget Prefs ()) Ġ/* Ġdefault Ġvalue Ġempty Ġ*/) ĊĠĠĠĠĠĠĠ Ġ/* Ġconvert Ġjson Ġback Ġto ĠCalendar Widget Prefs Ġinstance Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġprefs Ġ= ĠGson (). fromJson ( json , ĠCalendar Widget Prefs :: class . java ) ĊĠĠĠĠĠĠĠ Ġprefs . context Ġ= Ġcontext ĊĠĠĠĠĠĠĠ Ġreturn Ġprefs ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStore ĠCalendar Widget Prefs Ġfor Ġa Ġgiven Ġwidget Id . ĊĠĠĠĠ Ġ* Ġ@ param Ġprefs ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġfun Ġstore Widget Prefs ( prefs : ĠCalendar Widget Prefs ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* Ġretrieve Ġshared Ġprefs Ġinstance Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġshared Prefs Ġ= Ġget Shared Prefs ( context ) ĊĠĠĠĠĠĠĠ Ġ/* Ġload Ġshared Ġprefs Ġkey Ġand Ġformat Ġwith Ġwidget Id Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= ĠString . format ( context . getString ( R . string . calendar _ widget _ prefs _ key ), Ġprefs . widget Id ) ĊĠĠĠĠĠĠĠ Ġwith ( shared Prefs . edit ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġconvert Ġto Ġjson Ġand Ġwrite Ġto Ġshared Ġprefs Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( key , ĠGson (). toJson ( prefs )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠData Ġclass Ġto Ġencaps ulate Ġpreferences Ġfor Ġa Ġcalendar Ġwidget . Ċ Ġ* Ġ*/ Ċ data Ġclass ĠCalendar Widget Prefs ( ĊĠĠĠ Ġval Ġwidget Id : ĠInt Ġ= ĠApp Widget Manager . INVALID _ APP WIDGET _ ID , ĊĠĠĠ Ġvar Ġcalendar Ids : ĠList < Long > Ġ= Ġempty List (), ĊĠĠĠ Ġvar Ġdays Shown : ĠInt Ġ= ĠP refs . getDefault Days Shown In Widget (), ĊĠĠĠ Ġvar Ġtheme : ĠInt Ġ= ĠTHE ME _ AUTO Ċ ) Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġcontext : ĠContext ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTHE ME _ AUTO : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTHE ME _ DARK : ĠInt Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTHE ME _ LIGHT : ĠInt Ġ= Ġ 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġwidget Ġis Ġdisplayed Ġin Ġa Ġlight Ġenvironment , Ġfalse Ġotherwise ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġfun Ġis Light Theme (): ĠBoolean Ġ= Ġwhen Ġ( theme ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTHE ME _ DARK Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ ĠTHE ME _ LIGHT Ġ-> Ġtrue ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠTODO : Ġauto Ġdetect Ġtheme Ġ(# 4 ) Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }