Display date on conversation message

This commit is contained in:
Pierre HUBERT 2018-08-22 18:34:31 +02:00
parent b5a7df3f3d
commit 323ddbf78f
5 changed files with 67 additions and 17 deletions

View File

@ -1,5 +1,7 @@
package org.communiquons.android.comunic.client.data.utils; package org.communiquons.android.comunic.client.data.utils;
import java.text.SimpleDateFormat;
import java.util.Locale;
import java.util.Random; 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);
}
} }

View File

@ -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.arrays.ConversationMessagesList;
import org.communiquons.android.comunic.client.data.models.ConversationMessage; 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.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.EnlargeableWebImageView;
import org.communiquons.android.comunic.client.ui.views.WebUserAccountImage; import org.communiquons.android.comunic.client.ui.views.WebUserAccountImage;
@ -51,6 +53,8 @@ public class ConversationMessageAdapter extends RecyclerView.Adapter {
*/ */
private ConversationMessagesList mList; private ConversationMessagesList mList;
private Utilities utils;
/** /**
* Public class constructor * Public class constructor
* *
@ -66,6 +70,8 @@ public class ConversationMessageAdapter extends RecyclerView.Adapter {
this.mContext = context; this.mContext = context;
this.mList = list; this.mList = list;
utils = new Utilities(mContext);
} }
@Override @Override
@ -119,6 +125,7 @@ public class ConversationMessageAdapter extends RecyclerView.Adapter {
private class BaseMessageHolder extends RecyclerView.ViewHolder { private class BaseMessageHolder extends RecyclerView.ViewHolder {
private TextView mMessage; private TextView mMessage;
private TextView mSentDate;
private EnlargeableWebImageView mImage; private EnlargeableWebImageView mImage;
BaseMessageHolder(@NonNull View itemView) { BaseMessageHolder(@NonNull View itemView) {
@ -126,6 +133,17 @@ public class ConversationMessageAdapter extends RecyclerView.Adapter {
mMessage = itemView.findViewById(R.id.message_body); mMessage = itemView.findViewById(R.id.message_body);
mImage = itemView.findViewById(R.id.messageImage); 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()); mImage.loadURL(message.getImage_path());
else else
mImage.removeImage(); 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);
} }
} }

View File

@ -15,7 +15,8 @@
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toBottomOf="@id/text_message_time"
tools:layout_editor_absoluteY="16dp">
<org.communiquons.android.comunic.client.ui.views.WebUserAccountImage <org.communiquons.android.comunic.client.ui.views.WebUserAccountImage
android:id="@+id/account_image" android:id="@+id/account_image"
@ -45,7 +46,7 @@
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="0dp" android:layout_marginTop="0dp"
android:background="@drawable/conversation_message_otheruser_bg" android:background="@drawable/conversation_message_otheruser_bg"
android:maxWidth="240dp" android:maxWidth="220dp"
android:padding="8dp" android:padding="8dp"
android:textColor="@color/conversation_otheruser_messages_textColor" android:textColor="@color/conversation_otheruser_messages_textColor"
app:layout_constraintLeft_toRightOf="@+id/account_image" app:layout_constraintLeft_toRightOf="@+id/account_image"
@ -69,15 +70,17 @@
android:scaleType="fitStart"/> android:scaleType="fitStart"/>
<TextView
<!---<TextView
android:id="@+id/text_message_time" android:id="@+id/text_message_time"
tools:text="5min"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="@dimen/conversation_message_time_padding_top"
android:textSize="10sp" android:textSize="10sp"
app:layout_constraintLeft_toRightOf="@+id/message_body" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginLeft="4dp" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="@+id/message_body" />--> app:layout_constraintTop_toTopOf="parent"
tools:text="5min" />
</android.support.constraint.ConstraintLayout> </android.support.constraint.ConstraintLayout>

View File

@ -10,16 +10,16 @@
<TextView <TextView
android:id="@+id/message_body" android:id="@+id/message_body"
tools:text="Hello, hello!"
android:background="@drawable/conversation_message_currentuser_bg"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginRight="8dp"
android:background="@drawable/conversation_message_currentuser_bg"
android:maxWidth="240dp" android:maxWidth="240dp"
android:padding="8dp" android:padding="8dp"
android:textColor="#ffffff" android:textColor="#ffffff"
android:layout_marginEnd="8dp"
app:layout_constraintRight_toRightOf="parent" app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toBottomOf="@+id/text_message_time"
tools:text="Hello, hello!" />
<org.communiquons.android.comunic.client.ui.views.EnlargeableWebImageView <org.communiquons.android.comunic.client.ui.views.EnlargeableWebImageView
android:id="@+id/messageImage" android:id="@+id/messageImage"
@ -38,14 +38,17 @@
app:layout_constraintVertical_bias="0.0" app:layout_constraintVertical_bias="0.0"
app:srcCompat="@drawable/img_placeholder" /> app:srcCompat="@drawable/img_placeholder" />
<!--<TextView <TextView
android:id="@+id/text_message_time" android:id="@+id/text_message_time"
android:text="11:40"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="@dimen/conversation_message_time_padding_top"
android:text="11:40"
android:textSize="10sp" android:textSize="10sp"
android:layout_marginRight="4dp" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="@+id/message_body" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintRight_toLeftOf="@+id/message_body" />--> app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout> </android.support.constraint.ConstraintLayout>

View File

@ -32,4 +32,7 @@
<!-- Navigation bar --> <!-- Navigation bar -->
<dimen name="nav_bar_ic_height">30dp</dimen> <dimen name="nav_bar_ic_height">30dp</dimen>
<!-- Conversation fragment -->
<dimen name="conversation_message_time_padding_top">8dp</dimen>
</resources> </resources>