package com.xda.one.model.augmented; import com.xda.one.api.model.interfaces.Quote; import com.xda.one.api.model.response.ResponseQuote; import com.xda.one.parser.ContentParser; import android.content.Context; import android.os.Parcel; import android.text.Html; import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.style.ForegroundColorSpan; public final class AugmentedQuote implements Quote { public static final Creator<AugmentedQuote> CREATOR = new Creator<AugmentedQuote>() { @Override public AugmentedQuote createFromParcel(Parcel source) { return new AugmentedQuote(source); } @Override public AugmentedQuote[] newArray(int size) { return new AugmentedQuote[size]; } }; private static final String QUOTE_USERNAME_CONTENT_SEPARATOR = " - "; private final Quote mQuote; private final AugmentedUnifiedThread mUnifiedThread; private final Spanned mCombinedUsernameContent; public AugmentedQuote(final Quote quote, final Context context, final int primary, final int secondary) { mQuote = quote; mUnifiedThread = new AugmentedUnifiedThread(quote.getThread(), context); final Spanned parsed = ContentParser.parseBBCode(context, quote.getPageText()); final SpannableStringBuilder builder = new SpannableStringBuilder(quote .getUserName()); final int primaryEnd = builder.length(); builder.setSpan(new ForegroundColorSpan(primary), 0, primaryEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); builder.append(QUOTE_USERNAME_CONTENT_SEPARATOR); builder.append(parsed); builder.setSpan(new ForegroundColorSpan(secondary), primaryEnd, builder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); mCombinedUsernameContent = builder; } private AugmentedQuote(final Parcel source) { mQuote = new ResponseQuote(source); mCombinedUsernameContent = Html.fromHtml(source.readString()); mUnifiedThread = new AugmentedUnifiedThread(source); } public Spanned getCombinedUsernameContent() { return mCombinedUsernameContent; } @Override public String getPageText() { return mQuote.getPageText(); } @Override public int getDateLine() { return mQuote.getDateLine(); } @Override public String getPostId() { return mQuote.getPostId(); } @Override public String getType() { return mQuote.getType(); } @Override public String getUserId() { return mQuote.getUserId(); } @Override public String getUserName() { return mQuote.getUserName(); } @Override public String getQuotedUserId() { return mQuote.getQuotedUserId(); } @Override public String getQuotedUserName() { return mQuote.getQuotedUserName(); } @Override public int getQuotedUserGroupId() { return mQuote.getQuotedUserGroupId(); } @Override public int getQuotedInfractionGroupId() { return mQuote.getQuotedInfractionGroupId(); } @Override public AugmentedUnifiedThread getThread() { return mUnifiedThread; } @Override public String getAvatarUrl() { return mQuote.getAvatarUrl(); } @Override public int describeContents() { return mQuote.describeContents(); } @Override public void writeToParcel(final Parcel dest, final int flags) { mQuote.writeToParcel(dest, flags); dest.writeString(Html.toHtml(mCombinedUsernameContent)); dest.writeParcelable(mUnifiedThread, flags); } }