aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/ui/ConversationFragment.java
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2017-08-01 11:33:39 +0200
committerChristian Schneppe <christian@pix-art.de>2017-08-01 11:34:59 +0200
commit23752c581f79640a38d87aa2a6914deac475447d (patch)
treecf55b54ad2ea305812beb919fa90ab2c9f82fd27 /src/main/java/de/pixart/messenger/ui/ConversationFragment.java
parentdbb0cf8ead030a624954d7e07161f71038d008bc (diff)
update datebubbles
Diffstat (limited to 'src/main/java/de/pixart/messenger/ui/ConversationFragment.java')
-rw-r--r--src/main/java/de/pixart/messenger/ui/ConversationFragment.java42
1 files changed, 16 insertions, 26 deletions
diff --git a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java
index 7deb54173..a243688d7 100644
--- a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java
+++ b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java
@@ -46,7 +46,6 @@ import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
-import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.UUID;
@@ -159,18 +158,19 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
@Override
public void run() {
final int oldPosition = messagesView.getFirstVisiblePosition();
- final Message message;
- if (oldPosition < messageList.size()) {
- message = messageList.get(oldPosition);
- } else {
- message = null;
+ Message message = null;
+ int childPos;
+ for (childPos = 0; childPos + oldPosition < messageList.size(); ++childPos) {
+ message = messageList.get(oldPosition + childPos);
+ if (message.getType() != Message.TYPE_STATUS) {
+ break;
+ }
}
- String uuid = message != null ? message.getUuid() : null;
- View v = messagesView.getChildAt(0);
+ final String uuid = message != null ? message.getUuid() : null;
+ View v = messagesView.getChildAt(childPos);
final int pxOffset = (v == null) ? 0 : v.getTop();
ConversationFragment.this.conversation.populateWithMessages(ConversationFragment.this.messageList);
try {
- updateDateBubbles();
updateStatusMessages();
} catch (IllegalStateException e) {
Log.d(Config.LOGTAG, "caught illegal state exception while updating status messages");
@@ -1137,7 +1137,6 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
if (this.conversation != null) {
conversation.populateWithMessages(ConversationFragment.this.messageList);
updateSnackBar(conversation);
- updateDateBubbles();
updateStatusMessages();
this.messageListAdapter.notifyDataSetChanged();
updateChatMsgHint();
@@ -1333,6 +1332,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
}
protected void updateStatusMessages() {
+ updateDateBubbles();
synchronized (this.messageList) {
if (showLoadMoreMessages(conversation)) {
this.messageList.add(0, Message.createLoadMoreMessage(conversation));
@@ -1341,22 +1341,12 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
}
protected void updateDateBubbles() {
- String first = null;
- String today = sdf.format(System.currentTimeMillis());
- int max = this.messageList.size();
- if (max == 0 || (max <= 1 && showLoadMoreMessages(conversation))) {
- this.messageList.add(0, Message.createDateMessage(conversation, getString(R.string.start_chatting)));
- } else if ((max > 0 && !showLoadMoreMessages(conversation)) || (max > 1 && showLoadMoreMessages(conversation))) {
- for (int i = 0; i < this.messageList.size(); i++) {
- Date date = new Date(this.messageList.get(i).getTimeSent());
- String last = sdf.format(date);
- if (first == null || !first.equals(last)) {
- first = last;
- String dateString = first;
- if (today.equals(first)) {
- dateString = getString(R.string.today);
- }
- this.messageList.add(i, Message.createDateMessage(conversation, dateString));
+ synchronized (this.messageList) {
+ for (int i = 0; i < this.messageList.size(); ++i) {
+ final Message current = this.messageList.get(i);
+ if (i == 0 || !UIHelper.sameDay(this.messageList.get(i - 1).getTimeSent(), current.getTimeSent())) {
+ this.messageList.add(i, Message.createDateSeparator(current));
+ i++;
}
}
}