/* Ċ Ġ* ĠVo IP . ms ĠSMS Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 5 - 2 0 1 8 ĠMichael ĠK our las Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġnet . k our las . vo ip ms _ sms . utils Ċ Ċ import Ġandroid . content . Context Ċ import Ġnet . k our las . vo ip ms _ sms . R Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠReturns Ġa Ġcomparison Ġvalue Ġfor Ġtwo Ġdates Ġ( ex cluding Ġtimes ). Ċ Ġ* Ċ Ġ* Ġ@ param Ġfirst ĠThe Ġfirst Ġdate . Ċ Ġ* Ġ@ param Ġsecond ĠThe Ġsecond Ġdate . Ċ Ġ* Ġ@ return ĠThe Ġdifference Ġbetween Ġthe Ġdates ' Ġyear , Ġmonth , Ġor Ġday , Ġwh iche ver Ċ Ġ* Ġdiffers Ġfirst . Ċ Ġ*/ Ċ private Ġfun Ġcompare Date Without Time ( first : ĠCalendar , Ġsecond : ĠCalendar ): ĠInt Ġ{ ĊĠĠĠ Ġif Ġ( first . get ( Calendar . YEAR ) Ġ!= Ġsecond . get ( Calendar . YEAR )) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfirst . get ( Calendar . YEAR ) Ġ- Ġsecond . get ( Calendar . YEAR ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( first . get ( Calendar . MONTH ) Ġ!= Ġsecond . get ( Calendar . MONTH )) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfirst . get ( Calendar . MONTH ) Ġ- Ġsecond . get ( Calendar . MONTH ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġfirst . get ( Calendar . DAY _ OF _ MONTH ) Ġ- Ġsecond . get ( Calendar . DAY _ OF _ MONTH ) Ċ } Ċ Ċ /** Ċ Ġ* ĠGet Ġthe Ġformatted Ġdate Ġused Ġfor Ġthe Ġscroll Ġbar Ġon Ġthe Ġre cycler Ġview Ġin Ġthe Ċ Ġ* ĠCon versation Activity Ġand ĠNew Conversation Activity . Ċ Ġ* Ċ Ġ* Ġ@ param Ġdate ĠThe Ġdate Ġto Ġformat . Ċ Ġ* Ġ@ return ĠThe Ġformatted Ġdate . Ċ Ġ*/ Ċ fun Ġget ScrollBar Date ( date : ĠDate ): ĠString Ġ{ ĊĠĠĠ Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠ Ġcalendar . time Ġ= Ġdate ĊĊĠĠĠ Ġif Ġ( compare Date Without Time ( Calendar . getInstance (), Ġcalendar ) Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠToday : Ġh : mm Ġa ĊĠĠĠĠĠĠĠ Ġval Ġformat Ġ= ĠSimpleDateFormat (" h : mm Ġa ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocale . getDefault ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġformat . format ( date ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( Calendar . getInstance (). get ( Calendar . WEEK _ OF _ YEAR ) Ġ== Ġcalendar . get ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCalendar . WEEK _ OF _ YEAR ) Ġ&& ĠCalendar . getInstance (). get ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCalendar . YEAR ) Ġ== Ġcalendar . get ( Calendar . YEAR )) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġweek : ĠE EE ĊĠĠĠĠĠĠĠ Ġval Ġformat Ġ= ĠSimpleDateFormat (" EEE ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocale . getDefault ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġformat . format ( date ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( Calendar . getInstance (). get ( Calendar . YEAR ) Ġ== Ġcalendar . get ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCalendar . YEAR )) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġyear : ĠM MM ĊĠĠĠĠĠĠĠ Ġval Ġformat Ġ= ĠSimpleDateFormat (" MMM ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocale . getDefault ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġformat . format ( date ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠAny : Ġy yyy ĊĠĠĠ Ġval Ġformat Ġ= ĠSimpleDateFormat (" yyyy ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocale . getDefault ()) ĊĠĠĠ Ġreturn Ġformat . format ( date ) Ċ } Ċ Ċ /** Ċ Ġ* ĠForm ats Ġa Ġdate Ġfor Ġdisplay Ġin Ġthe Ġapplication . Ċ Ġ* Ċ Ġ* Ġ@ param Ġcontext ĠThe Ġspecified Ġcontext . Ċ Ġ* Ġ@ param Ġdate ĠThe Ġspecified Ġdate . Ċ Ġ* Ġ@ param Ġhide Time ĠIf Ġtrue , Ġomit s Ġthe Ġtime Ġfrom Ġthe Ġformatted Ġdate . Ċ Ġ* Ġ@ return ĠThe Ġformatted Ġdate . Ċ Ġ*/ Ċ fun Ġget Formatted Date ( context : ĠContext , Ġdate : ĠDate , Ġhide Time : ĠBoolean ): ĠString Ġ{ ĊĠĠĠ Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠ Ġcalendar . time Ġ= Ġdate ĊĊĠĠĠ Ġval Ġone Minute Ago Ġ= ĠCalendar . getInstance () ĊĠĠĠ Ġone Minute Ago . add ( Calendar . MINUTE , Ġ- 1 ) ĊĠĠĠ Ġif Ġ( one Minute Ago . time . before ( date )) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠLast Ġminute : ĠX Ġseconds Ġago ĊĠĠĠĠĠĠĠ Ġval Ġseconds Ġ= Ġ( Calendar . getInstance (). time . time ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- Ġcalendar . time . time ) Ġ/ Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( seconds Ġ< Ġ 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . utils _ date _ just _ now ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseconds . toString () Ġ+ Ġ" Ġ" Ġ+ Ġcontext . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . utils _ date _ seconds _ ago ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġone Hour Ago Ġ= ĠCalendar . getInstance () ĊĠĠĠ Ġone Hour Ago . add ( Calendar . HOUR _ OF _ DAY , Ġ- 1 ) ĊĠĠĠ Ġif Ġ( one Hour Ago . time . before ( date )) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠLast Ġhour : ĠX Ġminutes Ġago ĊĠĠĠĠĠĠĠ Ġval Ġminutes Ġ= Ġ( Calendar . getInstance (). time . time ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- Ġcalendar . time . time ) Ġ/ Ġ( 1 0 0 0 Ġ* Ġ 6 0 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( minutes Ġ== Ġ 1 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . utils _ date _ one _ minute _ ago ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġminutes . toString () Ġ+ Ġ" Ġ" Ġ+ Ġcontext . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . utils _ date _ minutes _ ago ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( compare Date Without Time ( Calendar . getInstance (), Ġcalendar ) Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠToday : Ġh : mm Ġa ĊĠĠĠĠĠĠĠ Ġval Ġformat Ġ= ĠSimpleDateFormat (" h : mm Ġa ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocale . getDefault ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġformat . format ( date ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( Calendar . getInstance (). get ( Calendar . WEEK _ OF _ YEAR ) Ġ== Ġcalendar . get ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCalendar . WEEK _ OF _ YEAR ) Ġ&& ĠCalendar . getInstance (). get ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCalendar . YEAR ) Ġ== Ġcalendar . get ( Calendar . YEAR )) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( hide Time ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġweek : ĠE EE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġformat Ġ= ĠSimpleDateFormat (" EEE ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocale . getDefault ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġformat . format ( date ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġweek : ĠE EE Ġh : mm Ġa ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġformat Ġ= ĠSimpleDateFormat (" EEE Ġh : mm Ġa ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocale . getDefault ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġformat . format ( date ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( Calendar . getInstance (). get ( Calendar . YEAR ) Ġ== Ġcalendar . get ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCalendar . YEAR )) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( hide Time ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġyear : ĠM MM Ġd ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġformat Ġ= ĠSimpleDateFormat (" MMM Ġd ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocale . getDefault ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġformat . format ( date ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġyear : ĠM MM Ġd Ġh : mm Ġa ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġformat Ġ= ĠSimpleDateFormat (" MMM Ġd , Ġh : mm Ġa ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocale . getDefault ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġformat . format ( date ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġif Ġ( hide Time ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠAny : ĠM MM Ġd , Ġy yyy ĊĠĠĠĠĠĠĠ Ġval Ġformat Ġ= ĠSimpleDateFormat (" MMM Ġd , Ġy yyy ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocale . getDefault ()) ĊĠĠĠĠĠĠĠ Ġformat . format ( date ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠAny : ĠM MM Ġd , Ġy yyy Ġh : mm Ġa ĊĠĠĠĠĠĠĠ Ġval Ġformat Ġ= ĠSimpleDateFormat (" MMM Ġd , Ġy yyy , Ġh : mm Ġa ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocale . getDefault ()) ĊĠĠĠĠĠĠĠ Ġformat . format ( date ) ĊĠĠĠ Ġ} Ċ } Ċ