package org.gsm.rcsApp.RCS; import java.util.UUID; import android.os.Parcel; import android.os.Parcelable; public class ChatMessage implements Parcelable { public static final String MESSAGE_RECEIVED = "rx"; public static final String MESSAGE_SENT = "tx"; public static final String MESSAGE_STATUS_PENDING="pending"; public static final String MESSAGE_STATUS_SENT="sent"; public static final String MESSAGE_STATUS_DELIVERED="delivered"; public static final String MESSAGE_STATUS_VIEWED="viewed"; public static final String MESSAGE_STATUS_RECEIVED = "received"; String contactUri=null; String messageText=null; String messageTime=null; String messageDirection=null; String messageId=null; private String messageInternalId=null; String status=null; boolean viewed=false; String resourceURL=null; public String getContactUri() { return contactUri; } public void setContactUri(String contactUri) { this.contactUri = contactUri; } public String getMessageText() { return messageText; } public String getMessageTime() { return messageTime; } public void setMessageText(String messageText) { this.messageText = messageText; } public void setMessageTime(String messageTime) { this.messageTime = messageTime; } public String getMessageDirection() { return messageDirection; } public void setMessageDirection(String messageDirection) { this.messageDirection = messageDirection; } public String getMessageId() { return messageId; } public boolean isViewed() { return viewed; } public void setMessageId(String messageId) { this.messageId = messageId; } public void setViewed(boolean viewed) { this.viewed = viewed; } public String getMessageInternalId() { return messageInternalId; } protected void setMessageInternalId(String messageInternalId) { this.messageInternalId = messageInternalId; } public String getStatus() { return status; } public void setStatus(String status) { if (this.status==null && status!=null) { this.status=status; } else if (status!=null) { // It is possible notifications are received out of order - therefore if a message is 'viewed' it should stay that way if (!MESSAGE_STATUS_VIEWED.equalsIgnoreCase(this.status) && MESSAGE_STATUS_VIEWED.equalsIgnoreCase(status)) { this.status=MESSAGE_STATUS_VIEWED; } else if (MESSAGE_STATUS_PENDING.equalsIgnoreCase(this.status)) { this.status=status; } } } public String getResourceURL() { return resourceURL; } public void setResourceURL(String resourceURL) { this.resourceURL=resourceURL; } public int describeContents() { return 0; } public static final Parcelable.Creator<ChatMessage> CREATOR = new Parcelable.Creator<ChatMessage>() { public ChatMessage createFromParcel(Parcel in) { return new ChatMessage(in); } public ChatMessage[] newArray(int size) { return new ChatMessage[size]; } }; public void writeToParcel(Parcel out, int flags) { out.writeString(contactUri); out.writeString(messageText); out.writeString(messageTime); out.writeString(messageDirection); out.writeString(messageId); out.writeString(messageInternalId); out.writeString(status); out.writeString(resourceURL); out.writeInt(viewed?1:0); } public ChatMessage() { messageInternalId=UUID.randomUUID().toString(); } public ChatMessage(Parcel in) { contactUri = in.readString(); messageText = in.readString(); messageTime = in.readString(); messageDirection = in.readString(); messageId = in.readString(); messageInternalId = in.readString(); status = in.readString(); resourceURL = in.readString(); viewed = in.readInt()>0; } }