From 715fa3174dc62a61e3fbc07eaf2504ce93156146 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 3 Apr 2020 20:22:24 +0200 Subject: [PATCH] do not show the messages year, if it is the current one --- .../smsmessenger/adapters/MessagesAdapter.kt | 12 +++++- .../smsmessenger/extensions/Int.kt | 41 +++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Int.kt diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/MessagesAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/MessagesAdapter.kt index 787d5570..f1309562 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/MessagesAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/MessagesAdapter.kt @@ -1,18 +1,28 @@ package com.simplemobiletools.smsmessenger.adapters +import android.content.Context import android.graphics.Typeface +import android.text.format.DateFormat +import android.text.format.DateUtils +import android.util.Log import android.view.Menu import android.view.View import android.view.ViewGroup import android.widget.TextView import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter +import com.simplemobiletools.commons.extensions.baseConfig import com.simplemobiletools.commons.extensions.formatDate +import com.simplemobiletools.commons.extensions.getTimeFormat import com.simplemobiletools.commons.views.FastScroller import com.simplemobiletools.commons.views.MyRecyclerView import com.simplemobiletools.smsmessenger.R import com.simplemobiletools.smsmessenger.activities.SimpleActivity +import com.simplemobiletools.smsmessenger.extensions.formatDateOrTime +import com.simplemobiletools.smsmessenger.extensions.formatTime import com.simplemobiletools.smsmessenger.models.Message import kotlinx.android.synthetic.main.item_message.view.* +import java.util.* +import kotlin.collections.ArrayList class MessagesAdapter( activity: SimpleActivity, var messages: ArrayList, @@ -73,7 +83,7 @@ class MessagesAdapter( message_address.text = message.address message_body_short.text = message.body - message_date.text = message.date.formatDate(context) + message_date.text = message.date.formatDateOrTime(context) if (message.read) { message_address.setTypeface(null, Typeface.NORMAL) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Int.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Int.kt new file mode 100644 index 00000000..7ce87fe1 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Int.kt @@ -0,0 +1,41 @@ +package com.simplemobiletools.smsmessenger.extensions + +import android.content.Context +import android.text.format.DateFormat +import android.text.format.DateUtils +import android.text.format.Time +import com.simplemobiletools.commons.extensions.getTimeFormat +import java.util.* + +fun Int.formatTime(context: Context): String { + val cal = Calendar.getInstance(Locale.ENGLISH) + cal.timeInMillis = this * 1000L + return DateFormat.format("${context.getTimeFormat()}", cal).toString() +} + +// if the given date is today, we show only the time. Else we show only the date +fun Int.formatDateOrTime(context: Context): String { + val cal = Calendar.getInstance(Locale.ENGLISH) + cal.timeInMillis = this * 1000L + + return if (DateUtils.isToday(this * 1000L)) { + DateFormat.format(context.getTimeFormat(), cal).toString() + } else { + var format = context.config.dateFormat + if (isThisYear()) { + format = format.replace("y", "").trim().trim('-').trim('.').trim('/') + } + + DateFormat.format(format, cal).toString() + } +} + +fun Int.isThisYear(): Boolean { + val time = Time() + time.set(this * 1000L) + + val thenYear = time.year + time.set(System.currentTimeMillis()) + + return (thenYear == time.year) +}