/*
* Copyright 2015 Hippo Seven
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.hippo.nimingban.client.ac.data;
import android.graphics.Color;
import android.os.Parcel;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.TextUtils;
import android.text.style.ForegroundColorSpan;
import com.hippo.nimingban.client.data.Reply;
import com.hippo.nimingban.client.data.Site;
import com.hippo.text.Html;
public class ACReference extends Reply {
public String id = "";
public String postId = "";
public String time = "";
public String title = "";
public String user = "";
public String userId = "";
public boolean admin;
public String email = "";
public String content = "";
public String thumb = "";
public String image = "";
private Site mSite;
private long mTime;
private CharSequence mUser;
private CharSequence mContent;
private String mThumbKey;
private String mImageKey;
private String mThumbUrl;
private String mImageUrl;
@Override
public String toString() {
return "id = " + id + ", postId = " + postId + ", time = " + time + ", title = " + title +
", user = " + user + ", userId = " + userId + ", admin = " + admin +
", email = " + email + ", content = " + content + ", thumb = " + thumb +
", image = " + image;
}
@Override
public void generate(Site site) {
mSite = site;
mTime = ACPost.parseTime(time);
if (admin) {
Spannable spannable = new SpannableString(userId);
spannable.setSpan(new ForegroundColorSpan(Color.RED), 0, userId.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mUser = spannable;
} else {
mUser = ACItemUtils.handleUser(Html.fromHtml(userId), getNMBPostId(), getNMBId());
}
mContent = ACItemUtils.generateContent(content, "", title, "", email);
if (!TextUtils.isEmpty(thumb)) {
mThumbUrl = thumb;
int index = thumb.indexOf("/thumb/");
if (index >= 0) {
mThumbKey = thumb.substring(index + 1);
}
}
if (!TextUtils.isEmpty(image)) {
mImageUrl = image;
int index = image.indexOf("/image/");
if (index >= 0) {
mImageKey = image.substring(index + 1);
}
}
}
@Override
public Site getNMBSite() {
return mSite;
}
@Override
public String getNMBId() {
return id;
}
@Override
public String getNMBPostId() {
return postId;
}
@Override
public long getNMBTime() {
return mTime;
}
@Override
public CharSequence getNMBDisplayUsername() {
return mUser;
}
@Override
public CharSequence getNMBDisplayContent() {
return mContent;
}
@Override
public String getNMBThumbKey() {
return mThumbKey;
}
@Override
public String getNMBImageKey() {
return mImageKey;
}
@Override
public String getNMBThumbUrl() {
return mThumbUrl;
}
@Override
public String getNMBImageUrl() {
return mImageUrl;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.id);
dest.writeString(this.postId);
dest.writeString(this.time);
dest.writeString(this.title);
dest.writeString(this.user);
dest.writeString(this.userId);
dest.writeByte(admin ? (byte) 1 : (byte) 0);
dest.writeString(this.email);
dest.writeString(this.content);
dest.writeString(this.thumb);
dest.writeString(this.image);
dest.writeInt(this.mSite.getId());
}
public ACReference() {
}
protected ACReference(Parcel in) {
this.id = in.readString();
this.postId = in.readString();
this.time = in.readString();
this.title = in.readString();
this.user = in.readString();
this.userId = in.readString();
this.admin = in.readByte() != 0;
this.email = in.readString();
this.content = in.readString();
this.thumb = in.readString();
this.image = in.readString();
this.mSite = Site.fromId(in.readInt());
}
public static final Creator<ACReference> CREATOR = new Creator<ACReference>() {
@Override
public ACReference createFromParcel(Parcel source) {
return new ACReference(source);
}
@Override
public ACReference[] newArray(int size) {
return new ACReference[size];
}
};
}