package com.xda.one.model.augmented;
import com.xda.one.api.model.interfaces.Mention;
import com.xda.one.api.model.response.ResponseMention;
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 class AugmentedMention implements Mention {
public static final Creator<AugmentedMention> CREATOR = new Creator<AugmentedMention>() {
@Override
public AugmentedMention createFromParcel(Parcel source) {
return new AugmentedMention(source);
}
@Override
public AugmentedMention[] newArray(int size) {
return new AugmentedMention[size];
}
};
private static final String MENTION_USERNAME_CONTENT_SEPARATOR = " - ";
private final Mention mMention;
private final AugmentedUnifiedThread mUnifiedThread;
private final Spanned mCombinedUsernameContent;
public AugmentedMention(final Mention mention, final Context context, final int primary,
final int secondary) {
mMention = mention;
mUnifiedThread = new AugmentedUnifiedThread(mention.getThread(), context);
final Spanned parsed = ContentParser.parseBBCode(context, mention.getPageText());
final SpannableStringBuilder builder = new SpannableStringBuilder(mention
.getUserName());
final int primaryEnd = builder.length();
builder.setSpan(new ForegroundColorSpan(primary), 0, primaryEnd,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
builder.append(MENTION_USERNAME_CONTENT_SEPARATOR);
builder.append(parsed);
builder.setSpan(new ForegroundColorSpan(secondary), primaryEnd, builder.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mCombinedUsernameContent = builder;
}
public AugmentedMention(final Parcel source) {
mMention = new ResponseMention(source);
mCombinedUsernameContent = Html.fromHtml(source.readString());
mUnifiedThread = new AugmentedUnifiedThread(source);
}
public Spanned getCombinedUsernameContent() {
return mCombinedUsernameContent;
}
@Override
public String getPageText() {
return mMention.getPageText();
}
@Override
public String getDateLine() {
return mMention.getDateLine();
}
@Override
public String getPostId() {
return mMention.getPostId();
}
@Override
public String getType() {
return mMention.getType();
}
@Override
public String getUserId() {
return mMention.getUserId();
}
@Override
public String getUserName() {
return mMention.getUserName();
}
@Override
public String getMentionedUserId() {
return mMention.getMentionedUserId();
}
@Override
public String getMentionedUsername() {
return mMention.getMentionedUsername();
}
@Override
public String getMentionedUserGroupId() {
return mMention.getMentionedUserGroupId();
}
@Override
public String getMentionedInfractionGroupId() {
return mMention.getMentionedInfractionGroupId();
}
@Override
public AugmentedUnifiedThread getThread() {
return mUnifiedThread;
}
@Override
public String getAvatarUrl() {
return mMention.getAvatarUrl();
}
@Override
public int describeContents() {
return mMention.describeContents();
}
@Override
public void writeToParcel(final Parcel dest, final int flags) {
mMention.writeToParcel(dest, flags);
dest.writeString(Html.toHtml(mCombinedUsernameContent));
dest.writeParcelable(mUnifiedThread, flags);
}
}