From ff15246ce280d5eff3cb33d3f6d7df1a269dcb52 Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 20 Jan 2019 13:27:35 +0000 Subject: [PATCH] Day headers can change --- .../eu/faircode/email/AdapterMessage.java | 42 ++++++++++++------- .../java/eu/faircode/email/EntityMessage.java | 10 ++--- 2 files changed, 31 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index 8ed396848d..86c601e6c7 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -403,27 +403,17 @@ public class AdapterMessage extends RecyclerView.Adapter 0) + prev = differ.getItem(position - 1); + message.day = getDay(prev, message); + if (message.day) tvDay.setText( DateUtils.getRelativeTimeSpanString( message.received, new Date().getTime(), DAY_IN_MILLIS, 0)); - grpDay.setVisibility(day ? View.VISIBLE : View.GONE); - + grpDay.setVisibility(message.day ? View.VISIBLE : View.GONE); itemView.setAlpha(message.uid == null && !EntityFolder.OUTBOX.equals(message.folderType) ? Helper.LOW_LIGHT : 1.0f); @@ -2083,9 +2073,29 @@ public class AdapterMessage extends RecyclerView.Adapter pagedList) { + TupleMessageEx prev = null; + for (TupleMessageEx message : pagedList) { + if (message != null) + message.day = getDay(prev, message); + prev = message; + } + differ.submitList(pagedList); } + boolean getDay(TupleMessageEx prev, TupleMessageEx cur) { + if (prev == null) + return true; + + Calendar cal0 = Calendar.getInstance(); + Calendar cal1 = Calendar.getInstance(); + cal0.setTimeInMillis(prev.received); + cal1.setTimeInMillis(cur.received); + int day0 = cal0.get(Calendar.DAY_OF_YEAR); + int day1 = cal1.get(Calendar.DAY_OF_YEAR); + return (day0 != day1); + } + PagedList getCurrentList() { return differ.getCurrentList(); } diff --git a/app/src/main/java/eu/faircode/email/EntityMessage.java b/app/src/main/java/eu/faircode/email/EntityMessage.java index 142f31c207..e165575c74 100644 --- a/app/src/main/java/eu/faircode/email/EntityMessage.java +++ b/app/src/main/java/eu/faircode/email/EntityMessage.java @@ -23,7 +23,6 @@ import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; -import android.net.Uri; import java.io.BufferedReader; import java.io.BufferedWriter; @@ -33,8 +32,6 @@ import java.io.FileWriter; import java.io.IOException; import java.io.Serializable; import java.util.Date; -import java.util.HashMap; -import java.util.Map; import java.util.Random; import javax.mail.Address; @@ -42,6 +39,7 @@ import javax.mail.Address; import androidx.annotation.NonNull; import androidx.room.Entity; import androidx.room.ForeignKey; +import androidx.room.Ignore; import androidx.room.Index; import androidx.room.PrimaryKey; @@ -143,7 +141,8 @@ public class EntityMessage implements Serializable { public String error; // volatile public Long last_attempt; // send - private static final Map emailLookupUri = new HashMap<>(); + @Ignore + public boolean day = false; static String generateMessageId() { StringBuilder sb = new StringBuilder(); @@ -260,7 +259,8 @@ public class EntityMessage implements Serializable { this.ui_browsed.equals(other.ui_browsed) && (this.ui_snoozed == null ? other.ui_snoozed == null : this.ui_snoozed.equals(other.ui_snoozed)) && (this.warning == null ? other.warning == null : this.warning.equals(other.warning)) && - (this.error == null ? other.error == null : this.error.equals(other.error))); + (this.error == null ? other.error == null : this.error.equals(other.error)) && + this.day == other.day); } return false; }