Show via identity, allow deleting outbound messages when identity is disabled

pull/147/head
M66B 7 years ago
parent 9da45704e0
commit 4311cbdce5

@ -88,6 +88,7 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.text.Collator;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
@ -195,6 +196,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
private TextView tvReplyTo;
private TextView tvCc;
private TextView tvBcc;
private TextView tvIdentity;
private TextView tvTimeEx;
private TextView tvSizeEx;
private TextView tvSubjectEx;
@ -267,6 +269,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
tvReplyTo = itemView.findViewById(R.id.tvReplyTo);
tvCc = itemView.findViewById(R.id.tvCc);
tvBcc = itemView.findViewById(R.id.tvBcc);
tvIdentity = itemView.findViewById(R.id.tvIdentity);
tvTimeEx = itemView.findViewById(R.id.tvTimeEx);
tvSizeEx = itemView.findViewById(R.id.tvSizeEx);
tvSubjectEx = itemView.findViewById(R.id.tvSubjectEx);
@ -737,6 +740,13 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
tvCc.setText(MessageHelper.formatAddresses(message.cc));
tvBcc.setText(MessageHelper.formatAddresses(message.bcc));
try {
InternetAddress via = new InternetAddress(message.identityEmail, message.identityName);
tvIdentity.setText(via.toString());
} catch (UnsupportedEncodingException ex) {
tvIdentity.setText(ex.getMessage());
}
tvTimeEx.setText(dtf.format(message.received));
tvSizeEx.setText(message.size == null ? null : Helper.humanReadableByteCount(message.size, true));
@ -887,7 +897,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
bnvActions.getMenu().findItem(R.id.action_delete).setVisible(
(inTrash && message.msgid != null) ||
(!inTrash && hasTrash && message.uid != null) ||
(inOutbox && !TextUtils.isEmpty(message.error)));
(inOutbox && (!TextUtils.isEmpty(message.error) || !message.identitySynchronize)));
bnvActions.getMenu().findItem(R.id.action_delete).setTitle(inTrash ? R.string.title_delete : R.string.title_trash);
bnvActions.getMenu().findItem(R.id.action_move).setVisible(

@ -49,6 +49,7 @@ public interface DaoMessage {
@Query("SELECT message.*" +
", account.name AS accountName, IFNULL(identity.color, account.color) AS accountColor, account.notify AS accountNotify" +
", folder.name AS folderName, folder.display AS folderDisplay, folder.type AS folderType" +
", identity.name AS identityName, identity.email AS identityEmail, identity.synchronize AS identitySynchronize" +
", COUNT(message.id) AS count" +
", " + unseen_unified + " AS unseen" +
", " + unflagged_unified + " AS unflagged" +
@ -88,6 +89,7 @@ public interface DaoMessage {
@Query("SELECT message.*" +
", account.name AS accountName, IFNULL(identity.color, account.color) AS accountColor, account.notify AS accountNotify" +
", folder.name AS folderName, folder.display AS folderDisplay, folder.type AS folderType" +
", identity.name AS identityName, identity.email AS identityEmail, identity.synchronize AS identitySynchronize" +
", COUNT(message.id) AS count" +
", " + unseen_folder + " AS unseen" +
", " + unflagged_folder + " AS unflagged" +
@ -119,6 +121,7 @@ public interface DaoMessage {
@Query("SELECT message.*" +
", account.name AS accountName, IFNULL(identity.color, account.color) AS accountColor, account.notify AS accountNotify" +
", folder.name AS folderName, folder.display AS folderDisplay, folder.type AS folderType" +
", identity.name AS identityName, identity.email AS identityEmail, identity.synchronize AS identitySynchronize" +
", 1 AS count" +
", CASE WHEN message.ui_seen THEN 0 ELSE 1 END AS unseen" +
", CASE WHEN message.ui_flagged THEN 0 ELSE 1 END AS unflagged" +
@ -201,6 +204,7 @@ public interface DaoMessage {
@Query("SELECT message.*" +
", account.name AS accountName, identity.color AS accountColor, account.notify AS accountNotify" +
", folder.name AS folderName, folder.display AS folderDisplay, folder.type AS folderType" +
", identity.name AS identityName, identity.email AS identityEmail, identity.synchronize AS identitySynchronize" +
", 1 AS count" +
", CASE WHEN message.ui_seen THEN 0 ELSE 1 END AS unseen" +
", CASE WHEN message.ui_flagged THEN 0 ELSE 1 END AS unflagged" +
@ -217,6 +221,7 @@ public interface DaoMessage {
@Query("SELECT message.*" +
", account.name AS accountName, IFNULL(identity.color, account.color) AS accountColor, account.notify AS accountNotify" +
", folder.name AS folderName, folder.display AS folderDisplay, folder.type AS folderType" +
", identity.name AS identityName, identity.email AS identityEmail, identity.synchronize AS identitySynchronize" +
", 1 AS count" +
", 1 AS unseen" +
", 0 AS unflagged" +

@ -28,6 +28,9 @@ public class TupleMessageEx extends EntityMessage {
public String folderName;
public String folderDisplay;
public String folderType;
public String identityName;
public String identityEmail;
public Boolean identitySynchronize;
public int count;
public int unseen;
public int unflagged;
@ -48,6 +51,9 @@ public class TupleMessageEx extends EntityMessage {
this.folderName.equals(other.folderName) &&
(this.folderDisplay == null ? other.folderDisplay == null : this.folderDisplay.equals(other.folderDisplay)) &&
this.folderType.equals(other.folderType) &&
(this.identityName == null ? other.identityName == null : this.identityName.equals(other.identityName)) &&
(this.identityEmail == null ? other.identityEmail == null : this.identityEmail.equals(other.identityEmail)) &&
(this.identitySynchronize == null ? other.identitySynchronize == null : this.identitySynchronize.equals(other.identitySynchronize)) &&
this.count == other.count &&
this.unseen == other.unseen &&
this.unflagged == other.unflagged &&

@ -460,6 +460,29 @@
app:layout_constraintStart_toEndOf="@id/tvBccTitle"
app:layout_constraintTop_toBottomOf="@id/tvCc" />
<TextView
android:id="@+id/tvIdentityTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:text="@string/title_via_identity"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvBcc" />
<TextView
android:id="@+id/tvIdentity"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:layout_marginEnd="6dp"
android:text="user@example.org"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textIsSelectable="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/tvIdentityTitle"
app:layout_constraintTop_toBottomOf="@id/tvBcc" />
<TextView
android:id="@+id/tvTimeExTitle"
android:layout_width="wrap_content"
@ -468,7 +491,7 @@
android:text="@string/title_received"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvBcc" />
app:layout_constraintTop_toBottomOf="@id/tvIdentity" />
<TextView
android:id="@+id/tvTimeEx"
@ -481,7 +504,7 @@
android:textIsSelectable="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/tvTimeExTitle"
app:layout_constraintTop_toBottomOf="@id/tvBcc" />
app:layout_constraintTop_toBottomOf="@id/tvIdentity" />
<TextView
android:id="@+id/tvSizeExTitle"
@ -796,7 +819,9 @@
android:id="@+id/grpAddress"
android:layout_width="0dp"
android:layout_height="0dp"
app:constraint_referenced_ids="tvFromExTitle,tvFromEx,tvToTitle,tvTo,tvReplyToTitle,tvReplyTo,tvCcTitle,tvCc,tvBccTitle,tvBcc,tvTimeExTitle,tvTimeEx,tvSizeExTitle,tvSizeEx,tvSubjectEx" />
app:constraint_referenced_ids="
tvFromExTitle,tvFromEx,tvToTitle,tvTo,tvReplyToTitle,tvReplyTo,tvCcTitle,tvCc,tvBccTitle,tvBcc,
tvIdentityTitle,tvIdentity,tvTimeExTitle,tvTimeEx,tvSizeExTitle,tvSizeEx,tvSubjectEx" />
<androidx.constraintlayout.widget.Group
android:id="@+id/grpHeaders"

@ -452,6 +452,29 @@
app:layout_constraintStart_toEndOf="@id/tvBccTitle"
app:layout_constraintTop_toBottomOf="@id/tvCc" />
<TextView
android:id="@+id/tvIdentityTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:text="@string/title_via_identity"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvBcc" />
<TextView
android:id="@+id/tvIdentity"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:layout_marginEnd="6dp"
android:text="user@example.org"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textIsSelectable="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/tvIdentityTitle"
app:layout_constraintTop_toBottomOf="@id/tvBcc" />
<TextView
android:id="@+id/tvTimeExTitle"
android:layout_width="wrap_content"
@ -460,7 +483,7 @@
android:text="@string/title_received"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvBcc" />
app:layout_constraintTop_toBottomOf="@id/tvIdentity" />
<TextView
android:id="@+id/tvTimeEx"
@ -473,7 +496,7 @@
android:textIsSelectable="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/tvTimeExTitle"
app:layout_constraintTop_toBottomOf="@id/tvBcc" />
app:layout_constraintTop_toBottomOf="@id/tvIdentity" />
<TextView
android:id="@+id/tvSizeExTitle"
@ -780,7 +803,8 @@
android:id="@+id/grpAddress"
android:layout_width="0dp"
android:layout_height="0dp"
app:constraint_referenced_ids="tvFromExTitle,tvFromEx,tvToTitle,tvTo,tvReplyToTitle,tvReplyTo,tvCcTitle,tvCc,tvBccTitle,tvBcc,tvTimeExTitle,tvTimeEx,tvSizeExTitle,tvSizeEx,tvSubjectEx" />
app:constraint_referenced_ids="tvFromExTitle,tvFromEx,tvToTitle,tvTo,tvReplyToTitle,tvReplyTo,tvCcTitle,tvCc,tvBccTitle,tvBcc,
tvIdentityTitle,tvIdentity,tvTimeExTitle,tvTimeEx,tvSizeExTitle,tvSizeEx,tvSubjectEx" />
<androidx.constraintlayout.widget.Group
android:id="@+id/grpDay"

@ -348,6 +348,7 @@
<string name="title_reply_to">Reply to:</string>
<string name="title_cc">CC:</string>
<string name="title_bcc">BCC:</string>
<string name="title_via_identity">Via:</string>
<string name="title_received">Received:</string>
<string name="title_size">Size:</string>
<string name="title_subject">Subject:</string>

Loading…
Cancel
Save