Show filtered, duplicate messages

This commit is contained in:
M66B 2019-10-01 13:56:48 +02:00
parent 88fc8efe81
commit 41ac05ac6e
5 changed files with 62 additions and 20 deletions

View File

@ -383,7 +383,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
ibHelp = itemView.findViewById(R.id.ibHelp);
pbLoading = itemView.findViewById(R.id.pbLoading);
if (compact)
if (compact && tvSubject != null)
if ("start".equals(subject_ellipsize))
tvSubject.setEllipsize(TextUtils.TruncateAt.START);
else if ("end".equals(subject_ellipsize))
@ -641,7 +641,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
boolean outbox = EntityFolder.OUTBOX.equals(message.folderType);
if (viewType == ViewType.THREAD)
view.setVisibility(!filter_duplicates || !message.duplicate ? View.VISIBLE : View.GONE);
card.setVisibility(!filter_duplicates || !message.duplicate ? View.VISIBLE : View.GONE);
// Text size
if (textSize != 0) {
@ -779,17 +779,11 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
if (viewType == ViewType.FOLDER)
tvFolder.setText(outbox ? message.identityEmail : message.accountName);
else if (type == null) {
String folderName = (message.folderDisplay == null
? Helper.localizeFolderName(context, message.folderName)
: message.folderDisplay);
tvFolder.setText((compact ? "" : message.accountName + "/") + folderName);
} else {
String folderName = (message.folderDisplay == null
? Helper.localizeFolderName(context, message.folderName)
: message.folderDisplay);
tvFolder.setText(message.accountName + "/" + folderName);
}
else if (type == null)
tvFolder.setText((compact ? "" : message.accountName + "/") + message.getFolderName(context));
else
tvFolder.setText(message.accountName + "/" + message.getFolderName(context));
tvFolder.setVisibility(compact &&
((viewType == ViewType.FOLDER && !outbox) || (viewType == ViewType.UNIFIED && type == null && inbox))
? View.GONE : View.VISIBLE);
@ -3420,6 +3414,9 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
@Override
public int getItemViewType(int position) {
TupleMessageEx message = differ.getItem(position);
if (filter_duplicates && message != null && message.duplicate)
return R.layout.item_message_duplicate;
return (compact ? R.layout.item_message_compact : R.layout.item_message_normal);
}
@ -3700,9 +3697,15 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
TupleMessageEx message = differ.getItem(position);
if (filter_duplicates && message != null && message.duplicate) {
holder.tvFolder.setText(context.getString(R.string.title_duplicate_in, message.getFolderName(context)));
holder.tvFolder.setAlpha(Helper.LOW_LIGHT);
return;
}
holder.unwire();
TupleMessageEx message = differ.getItem(position);
if (message == null || context == null)
holder.clear();
else {

View File

@ -2824,12 +2824,8 @@ class Core {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O)
setLightAndSound(mbuilder, light, sound);
String folderName = message.folderDisplay == null
? Helper.localizeFolderName(context, message.folderName)
: message.folderDisplay;
mbuilder.setContentTitle(info.getDisplayName(name_email))
.setSubText(message.accountName + " · " + folderName);
.setSubText(message.accountName + " · " + message.getFolderName(context));
DB db = DB.getInstance(context);

View File

@ -19,6 +19,8 @@ package eu.faircode.email;
Copyright 2018-2019 by Marcel Bokhorst (M66B)
*/
import android.content.Context;
import androidx.room.Ignore;
import java.util.Objects;
@ -47,7 +49,13 @@ public class TupleMessageEx extends EntityMessage {
public Long totalSize;
@Ignore
public boolean duplicate;
boolean duplicate;
String getFolderName(Context context) {
return (folderDisplay == null
? Helper.localizeFolderName(context, folderName)
: folderDisplay);
}
@Override
public boolean equals(Object obj) {

View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<eu.faircode.email.ViewCardOptional
android:id="@+id/card"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:foreground="?android:attr/selectableItemBackground">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/clItem"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/activatableItemBackground"
android:descendantFocusability="beforeDescendants"
android:focusable="true"
android:focusableInTouchMode="true">
<TextView
android:id="@+id/tvFolder"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="@string/title_duplicate_in"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</eu.faircode.email.ViewCardOptional>
</FrameLayout>

View File

@ -487,6 +487,7 @@
<string name="title_no_folders">No folders</string>
<string name="title_no_messages">No messages</string>
<string name="title_filters_active">One or more filters active</string>
<string name="title_duplicate_in">Duplicate in %1$s</string>
<string name="title_subject_reply">Re: %1$s</string>
<string name="title_subject_forward">Fwd: %1$s</string>