blob: fa0a0b4aa98b4ea961d151f8857afcbc02b53098 [file] [log] [blame]
//Add WordPress image fields to ImageSpan object
package org.wordpress.android.util.helpers;
import android.content.Context;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.style.ImageSpan;
public class WPImageSpan extends ImageSpan implements Parcelable {
protected Uri mImageSource = null;
protected boolean mNetworkImageLoaded = false;
protected MediaFile mMediaFile;
protected int mStartPosition, mEndPosition;
protected WPImageSpan() {
super((Bitmap) null);
}
public WPImageSpan(Context context, Bitmap b, Uri src) {
super(context, b);
this.mImageSource = src;
mMediaFile = new MediaFile();
}
public WPImageSpan(Context context, int resId, Uri src) {
super(context, resId);
this.mImageSource = src;
mMediaFile = new MediaFile();
}
public void setPosition(int start, int end) {
mStartPosition = start;
mEndPosition = end;
}
public int getStartPosition() {
return mStartPosition >= 0 ? mStartPosition : 0;
}
public int getEndPosition() {
return mEndPosition < getStartPosition() ? getStartPosition() : mEndPosition;
}
public MediaFile getMediaFile() {
return mMediaFile;
}
public void setMediaFile(MediaFile mMediaFile) {
this.mMediaFile = mMediaFile;
}
public void setImageSource(Uri mImageSource) {
this.mImageSource = mImageSource;
}
public Uri getImageSource() {
return mImageSource;
}
public boolean isNetworkImageLoaded() {
return mNetworkImageLoaded;
}
public void setNetworkImageLoaded(boolean networkImageLoaded) {
this.mNetworkImageLoaded = networkImageLoaded;
}
protected void setupFromParcel(Parcel in) {
MediaFile mediaFile = new MediaFile();
boolean[] booleans = new boolean[2];
in.readBooleanArray(booleans);
setNetworkImageLoaded(booleans[0]);
mediaFile.setVideo(booleans[1]);
setImageSource(Uri.parse(in.readString()));
mediaFile.setMediaId(in.readString());
mediaFile.setBlogId(in.readString());
mediaFile.setPostID(in.readLong());
mediaFile.setCaption(in.readString());
mediaFile.setDescription(in.readString());
mediaFile.setTitle(in.readString());
mediaFile.setMimeType(in.readString());
mediaFile.setFileName(in.readString());
mediaFile.setThumbnailURL(in.readString());
mediaFile.setVideoPressShortCode(in.readString());
mediaFile.setFileURL(in.readString());
mediaFile.setFilePath(in.readString());
mediaFile.setDateCreatedGMT(in.readLong());
mediaFile.setWidth(in.readInt());
mediaFile.setHeight(in.readInt());
setPosition(in.readInt(), in.readInt());
setMediaFile(mediaFile);
}
public static final Parcelable.Creator<WPImageSpan> CREATOR
= new Parcelable.Creator<WPImageSpan>() {
public WPImageSpan createFromParcel(Parcel in) {
WPImageSpan imageSpan = new WPImageSpan();
imageSpan.setupFromParcel(in);
return imageSpan;
}
public WPImageSpan[] newArray(int size) {
return new WPImageSpan[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeBooleanArray(new boolean[] {mNetworkImageLoaded, mMediaFile.isVideo()});
parcel.writeString(mImageSource.toString());
parcel.writeString(mMediaFile.getMediaId());
parcel.writeString(mMediaFile.getBlogId());
parcel.writeLong(mMediaFile.getPostID());
parcel.writeString(mMediaFile.getCaption());
parcel.writeString(mMediaFile.getDescription());
parcel.writeString(mMediaFile.getTitle());
parcel.writeString(mMediaFile.getMimeType());
parcel.writeString(mMediaFile.getFileName());
parcel.writeString(mMediaFile.getThumbnailURL());
parcel.writeString(mMediaFile.getVideoPressShortCode());
parcel.writeString(mMediaFile.getFileURL());
parcel.writeString(mMediaFile.getFilePath());
parcel.writeLong(mMediaFile.getDateCreatedGMT());
parcel.writeInt(mMediaFile.getWidth());
parcel.writeInt(mMediaFile.getHeight());
parcel.writeInt(getStartPosition());
parcel.writeInt(getEndPosition());
}
}