diff --git a/src/org/thoughtcrime/securesms/BindableConversationListItem.java b/src/org/thoughtcrime/securesms/BindableConversationListItem.java index d35460ad6..987ef4085 100644 --- a/src/org/thoughtcrime/securesms/BindableConversationListItem.java +++ b/src/org/thoughtcrime/securesms/BindableConversationListItem.java @@ -2,6 +2,8 @@ package org.thoughtcrime.securesms; import android.support.annotation.NonNull; +import com.b44t.messenger.DcLot; + import org.thoughtcrime.securesms.crypto.MasterSecret; import org.thoughtcrime.securesms.database.model.ThreadRecord; import org.thoughtcrime.securesms.mms.GlideRequests; @@ -12,6 +14,7 @@ import java.util.Set; public interface BindableConversationListItem extends Unbindable { public void bind(@NonNull ThreadRecord thread, + @NonNull DcLot dcSummary, @NonNull GlideRequests glideRequests, @NonNull Locale locale, @NonNull Set selectedThreads, boolean batchMode); } diff --git a/src/org/thoughtcrime/securesms/ConversationListAdapter.java b/src/org/thoughtcrime/securesms/ConversationListAdapter.java index 846430b97..11e15b889 100644 --- a/src/org/thoughtcrime/securesms/ConversationListAdapter.java +++ b/src/org/thoughtcrime/securesms/ConversationListAdapter.java @@ -27,6 +27,7 @@ import android.view.ViewGroup; import com.b44t.messenger.DcChat; import com.b44t.messenger.DcChatlist; +import com.b44t.messenger.DcLot; import org.thoughtcrime.securesms.connect.ApplicationDcContext; import org.thoughtcrime.securesms.connect.DcHelper; @@ -128,7 +129,9 @@ class ConversationListAdapter extends RecyclerView.Adapter { @Override public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) { ViewHolder holder = (ViewHolder)viewHolder; - holder.getItem().bind(dcContext.getThreadRecord(dcChatlist, i), glideRequests, locale, batchSet, batchMode); + DcChat chat = dcContext.getChat(dcChatlist.getChatId(i)); + DcLot summary = dcChatlist.getSummary(i, chat); + holder.getItem().bind(dcContext.getThreadRecord(summary, chat), summary, glideRequests, locale, batchSet, batchMode); } @Override diff --git a/src/org/thoughtcrime/securesms/ConversationListItem.java b/src/org/thoughtcrime/securesms/ConversationListItem.java index efcf0f66b..6c9a7d6b1 100644 --- a/src/org/thoughtcrime/securesms/ConversationListItem.java +++ b/src/org/thoughtcrime/securesms/ConversationListItem.java @@ -38,6 +38,8 @@ import android.widget.TextView; import com.amulyakhare.textdrawable.TextDrawable; import com.annimon.stream.Stream; +import com.b44t.messenger.DcLot; +import com.b44t.messenger.DcMsg; import org.thoughtcrime.securesms.components.AlertView; import org.thoughtcrime.securesms.components.AvatarImageView; @@ -69,6 +71,7 @@ public class ConversationListItem extends RelativeLayout private final static Typeface BOLD_TYPEFACE = Typeface.create("sans-serif-medium", Typeface.NORMAL); private final static Typeface LIGHT_TYPEFACE = Typeface.create("sans-serif", Typeface.NORMAL); + private DcLot dcSummary; private Set selectedThreads; private Recipient recipient; private long threadId; @@ -116,21 +119,24 @@ public class ConversationListItem extends RelativeLayout @Override public void bind(@NonNull ThreadRecord thread, + @NonNull DcLot dcSummary, @NonNull GlideRequests glideRequests, @NonNull Locale locale, @NonNull Set selectedThreads, boolean batchMode) { - bind(thread, glideRequests, locale, selectedThreads, batchMode, null); + bind(thread, dcSummary, glideRequests, locale, selectedThreads, batchMode, null); } public void bind(@NonNull ThreadRecord thread, + @NonNull DcLot dcSummary, @NonNull GlideRequests glideRequests, @NonNull Locale locale, @NonNull Set selectedThreads, boolean batchMode, @Nullable String highlightSubstring) { + this.dcSummary = dcSummary; this.selectedThreads = selectedThreads; this.recipient = thread.getRecipient(); this.threadId = thread.getThreadId(); @@ -277,19 +283,25 @@ public class ConversationListItem extends RelativeLayout } private void setStatusIcons(ThreadRecord thread) { - if (!thread.isOutgoing() || thread.isOutgoingCall() || thread.isVerificationStatusChange()) { + int state = dcSummary.getState(); + + if (state==DcMsg.DC_STATE_IN_FRESH || state==DcMsg.DC_STATE_IN_NOTICED) { deliveryStatusIndicator.setNone(); alertView.setNone(); - } else if (thread.isFailed()) { + } else if (state==DcMsg.DC_STATE_OUT_ERROR) { deliveryStatusIndicator.setNone(); alertView.setFailed(); } else { alertView.setNone(); - - if (thread.isPending()) deliveryStatusIndicator.setPending(); - else if (thread.isRemoteRead()) deliveryStatusIndicator.setRead(); - else if (thread.isDelivered()) deliveryStatusIndicator.setDelivered(); - else deliveryStatusIndicator.setSent(); + if(state==DcMsg.DC_STATE_OUT_MDN_RCVD) { + deliveryStatusIndicator.setRead(); + } + else if(state==DcMsg.DC_STATE_OUT_DELIVERED) { + deliveryStatusIndicator.setDelivered(); + } + else { + deliveryStatusIndicator.setPending(); + } } } @@ -301,7 +313,7 @@ public class ConversationListItem extends RelativeLayout } private void setUnreadIndicator(ThreadRecord thread) { - if (thread.isOutgoing() || thread.getUnreadCount() == 0) { + if (thread.getUnreadCount() == 0) { unreadIndicator.setVisibility(View.GONE); return; } diff --git a/src/org/thoughtcrime/securesms/ConversationListItemAction.java b/src/org/thoughtcrime/securesms/ConversationListItemAction.java index aeba02d27..22d513676 100644 --- a/src/org/thoughtcrime/securesms/ConversationListItemAction.java +++ b/src/org/thoughtcrime/securesms/ConversationListItemAction.java @@ -8,6 +8,8 @@ import android.util.AttributeSet; import android.widget.LinearLayout; import android.widget.TextView; +import com.b44t.messenger.DcLot; + import org.thoughtcrime.securesms.connect.DcHelper; import org.thoughtcrime.securesms.database.model.ThreadRecord; import org.thoughtcrime.securesms.mms.GlideRequests; @@ -40,7 +42,7 @@ public class ConversationListItemAction extends LinearLayout implements Bindable } @Override - public void bind(@NonNull ThreadRecord thread, @NonNull GlideRequests glideRequests, @NonNull Locale locale, @NonNull Set selectedThreads, boolean batchMode) { + public void bind(@NonNull ThreadRecord thread, @NonNull DcLot dcSummary, @NonNull GlideRequests glideRequests, @NonNull Locale locale, @NonNull Set selectedThreads, boolean batchMode) { this.description.setText(thread.getRecipient().getName()); } diff --git a/src/org/thoughtcrime/securesms/ConversationListItemInboxZero.java b/src/org/thoughtcrime/securesms/ConversationListItemInboxZero.java index cf9be6c99..d6e689f74 100644 --- a/src/org/thoughtcrime/securesms/ConversationListItemInboxZero.java +++ b/src/org/thoughtcrime/securesms/ConversationListItemInboxZero.java @@ -9,6 +9,8 @@ import android.support.annotation.RequiresApi; import android.util.AttributeSet; import android.widget.LinearLayout; +import com.b44t.messenger.DcLot; + import org.thoughtcrime.securesms.database.model.ThreadRecord; import org.thoughtcrime.securesms.mms.GlideRequests; @@ -39,7 +41,7 @@ public class ConversationListItemInboxZero extends LinearLayout implements Binda } @Override - public void bind(@NonNull ThreadRecord thread, @NonNull GlideRequests glideRequests, @NonNull Locale locale, @NonNull Set selectedThreads, boolean batchMode) { + public void bind(@NonNull ThreadRecord thread, @NonNull DcLot dcSummary, @NonNull GlideRequests glideRequests, @NonNull Locale locale, @NonNull Set selectedThreads, boolean batchMode) { } } diff --git a/src/org/thoughtcrime/securesms/connect/ApplicationDcContext.java b/src/org/thoughtcrime/securesms/connect/ApplicationDcContext.java index d6f79e5b4..f68b3bbc7 100644 --- a/src/org/thoughtcrime/securesms/connect/ApplicationDcContext.java +++ b/src/org/thoughtcrime/securesms/connect/ApplicationDcContext.java @@ -117,10 +117,8 @@ public class ApplicationDcContext extends DcContext { } @NonNull - public ThreadRecord getThreadRecord(DcChatlist chatlist, int i) { // adapted from ThreadDatabase.getCurrent() - int chatId = chatlist.getChatId(i); - DcChat chat = chatlist.getChat(i); - DcLot summary = chatlist.getSummary(i, chat); + public ThreadRecord getThreadRecord(DcLot summary, DcChat chat) { // adapted from ThreadDatabase.getCurrent() + int chatId = chat.getId(); int distributionType = chatId==DcChat.DC_CHAT_ID_ARCHIVED_LINK? ThreadDatabase.DistributionTypes.ARCHIVE : ThreadDatabase.DistributionTypes.CONVERSATION; String body = summary.getText1(); diff --git a/src/org/thoughtcrime/securesms/search/SearchListAdapter.java b/src/org/thoughtcrime/securesms/search/SearchListAdapter.java index 69c8f4c4e..79567f84f 100644 --- a/src/org/thoughtcrime/securesms/search/SearchListAdapter.java +++ b/src/org/thoughtcrime/securesms/search/SearchListAdapter.java @@ -8,6 +8,8 @@ import android.view.View; import android.view.ViewGroup; import android.widget.TextView; +import com.b44t.messenger.DcLot; + import org.thoughtcrime.securesms.ConversationListItem; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.database.model.ThreadRecord; @@ -55,7 +57,7 @@ class SearchListAdapter extends RecyclerView.Adapter eventListener.onConversationClicked(conversationResult)); }