Display conversations in unified inbox widget

pull/159/head
M66B 5 years ago
parent 55627735bd
commit c8ed3a4a33

@ -274,6 +274,8 @@ public interface DaoMessage {
LiveData<List<TupleMessageEx>> liveUnseenNotify();
String widget = "SELECT message.*, account.name AS accountName" +
", SUM(1 - message.ui_seen) AS unseen" +
", MAX(message.received) AS dummy" +
" FROM message" +
" JOIN account ON account.id = message.account" +
" JOIN folder ON folder.id = message.folder" +
@ -281,12 +283,15 @@ public interface DaoMessage {
" AND folder.unified" +
" AND message.ui_hide = 0" +
" AND message.ui_snoozed IS NULL" +
" GROUP BY account.id, CASE WHEN message.thread IS NULL THEN message.id ELSE message.thread END" +
" ORDER BY message.received DESC";
@Query(widget)
@SuppressWarnings(RoomWarnings.CURSOR_MISMATCH)
LiveData<List<TupleMessageWidget>> liveWidgetUnified();
@Query(widget)
@SuppressWarnings(RoomWarnings.CURSOR_MISMATCH)
List<TupleMessageWidget> getWidgetUnified();
@Query("SELECT COUNT(message.id) FROM message" +

@ -202,7 +202,7 @@ public class ServiceSynchronize extends ServiceBase {
!MessageHelper.equal(m1.from, m2.from) ||
!m1.received.equals(m2.received) ||
!Objects.equals(m1.subject, m2.subject) ||
!(m1.ui_seen == m2.ui_seen) ||
!(m1.unseen == m2.unseen) ||
!Objects.equals(m1.accountName, m2.accountName)) {
changed = true;
break;

@ -23,12 +23,15 @@ import java.util.Objects;
public class TupleMessageWidget extends EntityMessage {
public String accountName;
public int unseen;
@Override
public boolean equals(Object obj) {
if (obj instanceof TupleMessageEx) {
TupleMessageEx other = (TupleMessageEx) obj;
return (super.equals(obj) && Objects.equals(this.accountName, other.accountName));
return (super.equals(obj) &&
Objects.equals(this.accountName, other.accountName) &&
this.unseen == other.unseen);
}
return false;
}

@ -81,7 +81,11 @@ public class WidgetUnifiedRemoteViewsFactory implements RemoteViewsService.Remot
thread.putExtra("id", message.id);
views.setOnClickFillInIntent(R.id.llMessage, thread);
SpannableString from = new SpannableString(MessageHelper.formatAddressesShort(message.from));
String froms = MessageHelper.formatAddressesShort(message.from);
if (message.unseen > 1)
froms = context.getString(R.string.title_name_count, froms, Integer.toString(message.unseen));
SpannableString from = new SpannableString(froms);
SpannableString time = new SpannableString(Helper.getRelativeTimeSpanString(context, message.received));
SpannableString subject = new SpannableString(TextUtils.isEmpty(message.subject) ? "" : message.subject);
SpannableString account = new SpannableString(TextUtils.isEmpty(message.accountName) ? "" : message.accountName);

Loading…
Cancel
Save