From 323ddbf78fae8ba3c568abc3a5f1cd5156a4b2d7 Mon Sep 17 00:00:00 2001 From: Pierre HUBERT Date: Wed, 22 Aug 2018 18:34:31 +0200 Subject: [PATCH] Display date on conversation message --- .../client/data/utils/StringsUtils.java | 13 +++++++++ .../adapters/ConversationMessageAdapter.java | 28 +++++++++++++++++++ .../conversation_message_item_received.xml | 19 +++++++------ .../layout/conversation_message_item_sent.xml | 21 ++++++++------ app/src/main/res/values/dimens.xml | 3 ++ 5 files changed, 67 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/org/communiquons/android/comunic/client/data/utils/StringsUtils.java b/app/src/main/java/org/communiquons/android/comunic/client/data/utils/StringsUtils.java index 8d6190d..e0ac025 100644 --- a/app/src/main/java/org/communiquons/android/comunic/client/data/utils/StringsUtils.java +++ b/app/src/main/java/org/communiquons/android/comunic/client/data/utils/StringsUtils.java @@ -1,5 +1,7 @@ package org.communiquons.android.comunic.client.data.utils; +import java.text.SimpleDateFormat; +import java.util.Locale; import java.util.Random; /** @@ -47,4 +49,15 @@ public class StringsUtils { } + /** + * Format timestamp to string + * + * @param time The time to format + * @return Generated string + */ + public static String FormatDate(int time){ + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYY-MM-dd", + Locale.getDefault()); + return simpleDateFormat.format((long)1000*time); + } } diff --git a/app/src/main/java/org/communiquons/android/comunic/client/ui/adapters/ConversationMessageAdapter.java b/app/src/main/java/org/communiquons/android/comunic/client/ui/adapters/ConversationMessageAdapter.java index 888fe84..d912ae1 100644 --- a/app/src/main/java/org/communiquons/android/comunic/client/ui/adapters/ConversationMessageAdapter.java +++ b/app/src/main/java/org/communiquons/android/comunic/client/ui/adapters/ConversationMessageAdapter.java @@ -13,6 +13,8 @@ import org.communiquons.android.comunic.client.R; import org.communiquons.android.comunic.client.data.arrays.ConversationMessagesList; import org.communiquons.android.comunic.client.data.models.ConversationMessage; import org.communiquons.android.comunic.client.data.models.UserInfo; +import org.communiquons.android.comunic.client.data.utils.StringsUtils; +import org.communiquons.android.comunic.client.data.utils.Utilities; import org.communiquons.android.comunic.client.ui.views.EnlargeableWebImageView; import org.communiquons.android.comunic.client.ui.views.WebUserAccountImage; @@ -51,6 +53,8 @@ public class ConversationMessageAdapter extends RecyclerView.Adapter { */ private ConversationMessagesList mList; + private Utilities utils; + /** * Public class constructor * @@ -66,6 +70,8 @@ public class ConversationMessageAdapter extends RecyclerView.Adapter { this.mContext = context; this.mList = list; + utils = new Utilities(mContext); + } @Override @@ -119,6 +125,7 @@ public class ConversationMessageAdapter extends RecyclerView.Adapter { private class BaseMessageHolder extends RecyclerView.ViewHolder { private TextView mMessage; + private TextView mSentDate; private EnlargeableWebImageView mImage; BaseMessageHolder(@NonNull View itemView) { @@ -126,6 +133,17 @@ public class ConversationMessageAdapter extends RecyclerView.Adapter { mMessage = itemView.findViewById(R.id.message_body); mImage = itemView.findViewById(R.id.messageImage); + mSentDate = itemView.findViewById(R.id.text_message_time); + } + + /** + * Get the time a message was sent as a string + * + * @param message Information about the message + * @return Generated sent string + */ + String messageDate(ConversationMessage message){ + return StringsUtils.FormatDate(message.getTime_insert()); } /** @@ -145,6 +163,16 @@ public class ConversationMessageAdapter extends RecyclerView.Adapter { mImage.loadURL(message.getImage_path()); else mImage.removeImage(); + + + mSentDate.setText(messageDate(message)); + + if(pos < 1) + mSentDate.setVisibility(View.VISIBLE); + else if(messageDate(mList.get(pos-1)).equals(messageDate(message))) + mSentDate.setVisibility(View.GONE); + else + mSentDate.setVisibility(View.VISIBLE); } } diff --git a/app/src/main/res/layout/conversation_message_item_received.xml b/app/src/main/res/layout/conversation_message_item_received.xml index 35ec715..9c92e10 100644 --- a/app/src/main/res/layout/conversation_message_item_received.xml +++ b/app/src/main/res/layout/conversation_message_item_received.xml @@ -15,7 +15,8 @@ android:layout_marginStart="8dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent"> + app:layout_constraintTop_toBottomOf="@id/text_message_time" + tools:layout_editor_absoluteY="16dp"> - - + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + tools:text="5min" /> \ No newline at end of file diff --git a/app/src/main/res/layout/conversation_message_item_sent.xml b/app/src/main/res/layout/conversation_message_item_sent.xml index 1a21248..77e860c 100644 --- a/app/src/main/res/layout/conversation_message_item_sent.xml +++ b/app/src/main/res/layout/conversation_message_item_sent.xml @@ -10,16 +10,16 @@ + app:layout_constraintTop_toBottomOf="@+id/text_message_time" + tools:text="Hello, hello!" /> - + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 34c00b9..77251a7 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -32,4 +32,7 @@ 30dp + + + 8dp