package com.xda.one.model.augmented; import com.xda.one.api.model.interfaces.Post; import com.xda.one.api.model.response.ResponseAttachment; import com.xda.one.api.model.response.ResponsePost; import com.xda.one.parser.ContentParser; import com.xda.one.parser.TextDataStructure; import com.xda.one.util.PostUtils; import android.content.Context; import android.os.Parcel; import android.text.Spannable; import java.util.List; public class AugmentedPost implements Post { public static final ResponsePost.Creator CREATOR = new ResponsePost.Creator() { @Override public AugmentedPost createFromParcel(final Parcel in) { return new AugmentedPost(in); } @Override public AugmentedPost[] newArray(final int size) { return new AugmentedPost[size]; } }; private final Post mPost; private String mFormatlessText; private String mCreatedText; private TextDataStructure mTextDataStructure; private boolean mThanked; private int mThanksCount; private AugmentedPost(final Parcel parcel) { mPost = new ResponsePost(parcel); mFormatlessText = parcel.readString(); mCreatedText = parcel.readString(); mThanked = parcel.readByte() != 0; mThanksCount = parcel.readInt(); } public AugmentedPost(final Post post, final Context context) { mPost = post; mThanked = post.isThanked(); mThanksCount = post.getThanksCount(); final Spannable formattedContent = ContentParser.parseAndSmilifyBBCode(context, post.getPageText()); mTextDataStructure = new TextDataStructure(formattedContent); mFormatlessText = formattedContent.toString(); mCreatedText = PostUtils.getCreatedText(mTextDataStructure, Integer.MAX_VALUE); } public String getFormatlessText() { return mFormatlessText; } public TextDataStructure getTextDataStructure() { return mTextDataStructure; } public String getCreatedText() { return mCreatedText; } @Override public int getPostId() { return mPost.getPostId(); } @Override public int getVisible() { return mPost.getVisible(); } @Override public String getUserId() { return mPost.getUserId(); } @Override public String getTitle() { return mPost.getTitle(); } @Override public String getPageText() { return mPost.getPageText(); } @Override public String getUserName() { return mPost.getUserName(); } @Override public long getDateline() { return mPost.getDateline(); } @Override public List<ResponseAttachment> getAttachments() { return mPost.getAttachments(); } @Override public String getAvatarUrl() { return mPost.getAvatarUrl(); } @Override public int getThanksCount() { return mThanksCount; } @Override public void setThanksCount(int newCount) { mThanksCount = newCount; } @Override public boolean isThanked() { return mThanked; } @Override public void setThanked(boolean thanked) { mThanked = thanked; } @Override public int describeContents() { return mPost.describeContents(); } @Override public void writeToParcel(final Parcel dest, final int flags) { mPost.writeToParcel(dest, flags); dest.writeString(mFormatlessText); dest.writeString(mCreatedText); dest.writeByte(mThanked ? (byte) 1 : (byte) 0); dest.writeInt(mThanksCount); } }