mirror of https://github.com/M66B/FairEmail.git
Show filtered, duplicate messages
This commit is contained in:
parent
88fc8efe81
commit
41ac05ac6e
|
@ -383,7 +383,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||||
ibHelp = itemView.findViewById(R.id.ibHelp);
|
ibHelp = itemView.findViewById(R.id.ibHelp);
|
||||||
pbLoading = itemView.findViewById(R.id.pbLoading);
|
pbLoading = itemView.findViewById(R.id.pbLoading);
|
||||||
|
|
||||||
if (compact)
|
if (compact && tvSubject != null)
|
||||||
if ("start".equals(subject_ellipsize))
|
if ("start".equals(subject_ellipsize))
|
||||||
tvSubject.setEllipsize(TextUtils.TruncateAt.START);
|
tvSubject.setEllipsize(TextUtils.TruncateAt.START);
|
||||||
else if ("end".equals(subject_ellipsize))
|
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);
|
boolean outbox = EntityFolder.OUTBOX.equals(message.folderType);
|
||||||
|
|
||||||
if (viewType == ViewType.THREAD)
|
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
|
// Text size
|
||||||
if (textSize != 0) {
|
if (textSize != 0) {
|
||||||
|
@ -779,17 +779,11 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||||
|
|
||||||
if (viewType == ViewType.FOLDER)
|
if (viewType == ViewType.FOLDER)
|
||||||
tvFolder.setText(outbox ? message.identityEmail : message.accountName);
|
tvFolder.setText(outbox ? message.identityEmail : message.accountName);
|
||||||
else if (type == null) {
|
else if (type == null)
|
||||||
String folderName = (message.folderDisplay == null
|
tvFolder.setText((compact ? "" : message.accountName + "/") + message.getFolderName(context));
|
||||||
? Helper.localizeFolderName(context, message.folderName)
|
else
|
||||||
: message.folderDisplay);
|
tvFolder.setText(message.accountName + "/" + message.getFolderName(context));
|
||||||
tvFolder.setText((compact ? "" : message.accountName + "/") + folderName);
|
|
||||||
} else {
|
|
||||||
String folderName = (message.folderDisplay == null
|
|
||||||
? Helper.localizeFolderName(context, message.folderName)
|
|
||||||
: message.folderDisplay);
|
|
||||||
tvFolder.setText(message.accountName + "/" + folderName);
|
|
||||||
}
|
|
||||||
tvFolder.setVisibility(compact &&
|
tvFolder.setVisibility(compact &&
|
||||||
((viewType == ViewType.FOLDER && !outbox) || (viewType == ViewType.UNIFIED && type == null && inbox))
|
((viewType == ViewType.FOLDER && !outbox) || (viewType == ViewType.UNIFIED && type == null && inbox))
|
||||||
? View.GONE : View.VISIBLE);
|
? View.GONE : View.VISIBLE);
|
||||||
|
@ -3420,6 +3414,9 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getItemViewType(int position) {
|
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);
|
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
|
@Override
|
||||||
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
|
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();
|
holder.unwire();
|
||||||
|
|
||||||
TupleMessageEx message = differ.getItem(position);
|
|
||||||
if (message == null || context == null)
|
if (message == null || context == null)
|
||||||
holder.clear();
|
holder.clear();
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -2824,12 +2824,8 @@ class Core {
|
||||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O)
|
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O)
|
||||||
setLightAndSound(mbuilder, light, sound);
|
setLightAndSound(mbuilder, light, sound);
|
||||||
|
|
||||||
String folderName = message.folderDisplay == null
|
|
||||||
? Helper.localizeFolderName(context, message.folderName)
|
|
||||||
: message.folderDisplay;
|
|
||||||
|
|
||||||
mbuilder.setContentTitle(info.getDisplayName(name_email))
|
mbuilder.setContentTitle(info.getDisplayName(name_email))
|
||||||
.setSubText(message.accountName + " · " + folderName);
|
.setSubText(message.accountName + " · " + message.getFolderName(context));
|
||||||
|
|
||||||
DB db = DB.getInstance(context);
|
DB db = DB.getInstance(context);
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,8 @@ package eu.faircode.email;
|
||||||
Copyright 2018-2019 by Marcel Bokhorst (M66B)
|
Copyright 2018-2019 by Marcel Bokhorst (M66B)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
|
||||||
import androidx.room.Ignore;
|
import androidx.room.Ignore;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
@ -47,7 +49,13 @@ public class TupleMessageEx extends EntityMessage {
|
||||||
public Long totalSize;
|
public Long totalSize;
|
||||||
|
|
||||||
@Ignore
|
@Ignore
|
||||||
public boolean duplicate;
|
boolean duplicate;
|
||||||
|
|
||||||
|
String getFolderName(Context context) {
|
||||||
|
return (folderDisplay == null
|
||||||
|
? Helper.localizeFolderName(context, folderName)
|
||||||
|
: folderDisplay);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object obj) {
|
public boolean equals(Object obj) {
|
||||||
|
|
|
@ -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>
|
|
@ -487,6 +487,7 @@
|
||||||
<string name="title_no_folders">No folders</string>
|
<string name="title_no_folders">No folders</string>
|
||||||
<string name="title_no_messages">No messages</string>
|
<string name="title_no_messages">No messages</string>
|
||||||
<string name="title_filters_active">One or more filters active</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_reply">Re: %1$s</string>
|
||||||
<string name="title_subject_forward">Fwd: %1$s</string>
|
<string name="title_subject_forward">Fwd: %1$s</string>
|
||||||
|
|
Loading…
Reference in New Issue