package Ġcom . hour . hour . model Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . hour . hour . helper . Calendar Helper Ċ import Ġcom . hour . hour . helper . Csv Helper Ċ import Ġcom . hour . hour . helper . Logger Ċ import Ġcom . hour . hour . helper . Not Tracking List Helper Ċ import Ġcom . hour . hour . helper . Screen Unlock Helper Ċ import Ġcom . hour . hour . iface . Serializable ToJson Ċ import Ġorg . json . JSONArray Ċ import Ġorg . json . JSONObject Ċ import Ġjava . io . File Ċ Ċ @ Suppress (" Lift Return Or Assignment ") Ċ data Ġclass ĠUsage Digest ( ĊĠĠĠĠĠĠĠ Ġval Ġdate : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġsummar ies : ĠList < Usage Summary >, ĊĠĠĠĠĠĠĠ Ġval Ġtotal Time : ĠLong , ĊĠĠĠĠĠĠĠ Ġval Ġunlock Count : ĠInt Ċ ) Ġ: ĠSerializable ToJson Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoJson (): ĠJSONObject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsummary List Ġ= ĠJSONArray () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġsummar ies ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsummary List . put ( i . toJson ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠJSONObject () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put (" date ", Ġdate ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put (" total Time ", Ġtotal Time ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put (" unlock Count ", Ġunlock Count ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put (" summary List ", Ġsummary List ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" Usage Digest " ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom Json ( json : ĠJSONObject ): ĠUsage Digest Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsummary Ġ= Ġarray ListOf < Usage Summary >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsummary Json Ġ= Ġjson . get JSONArray (" summary List ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. ( summary Json . length () Ġ- Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġsummary Json . getJSONObject ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsummary . add ( Usage Summary . fromJson ( item )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . d ( TAG , Ġ" fromJson Ġfailed : Ġi Ġ= Ġ$ i ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠUsage Digest ( json . getString (" date "), Ġsummary , Ġjson . getLong (" total Time "), Ġjson . getInt (" unlock Count ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġmake ( context : ĠContext , Ġday : ĠString ): ĠUsage Digest Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( context . files Dir . path Ġ+ Ġ"/" Ġ+ Ġday ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecords Ġ= ĠCsv Helper . read ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . d ( TAG , Ġ" make Ġ$ day Ġ- Ġ${ records . size }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( records . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠUsage Digest ( day , ĠlistOf (), Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsummary Ġ= ĠUsage Summary . make Summary ( context , Ġrecords ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠUsage Digest ( day , Ġsummary , Ġsummary . map Ġ{ Ġit . use Time Total Ġ}. sum (), ĠScreen Unlock Helper . get Unlock Count ( context , Ġday )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġload Filtered ( context : ĠContext , Ġdays : ĠList < String >): ĠList < Usage Digest > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġl Ġ= Ġdays . map Ġ{ Ġload ( context , Ġit ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠNot Tracking List Helper . load Not Tracking List ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġl . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . copy ( sum maries Ġ= Ġit . sum maries . filter Ġ{ Ġ! list . contains ( it . packageName ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġload Filtered ( context : ĠContext , Ġday : ĠString ): ĠUsage Digest Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠNot Tracking List Helper . load Not Tracking List ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdigest Ġ= Ġload ( context , Ġday ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġdigest . sum maries . filter Ġ{ Ġ! list . contains ( it . packageName ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdigest . copy ( total Time Ġ= Ġs . map Ġ{ Ġit . use Time Total Ġ}. sum (), Ġsummar ies Ġ= Ġs ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġload ( context : ĠContext , Ġdays : ĠList < String >): ĠList < Usage Digest > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdays . map Ġ{ Ġload ( context , Ġit ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġload ( context : ĠContext , Ġday : ĠString ): ĠUsage Digest Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( day Ġ== ĠCalendar Helper . getDate Con dense d ( System . currentTimeMillis ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmake ( context , Ġday ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġcontext . get SharedPreferences ( TAG , ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstr Ġ= Ġpref . getString ( day , Ġnull ) Ġ?: Ġthrow ĠException (" record Ġ$ day Ġnot Ġfound ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠUsage Digest . fromJson ( JSONObject ( str )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdigest Ġ= Ġmake ( context , Ġday ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave ( context , Ġdigest ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdigest ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġsave ( context : ĠContext , Ġdigest : ĠUsage Digest ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Edit Ġ= Ġcontext . get SharedPreferences ( TAG , ĠContext . MODE _ PRIVATE ). edit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref Edit . putString ( digest . date , Ġdigest . toJson (). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref Edit . apply () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ