Skip to content

Commit

Permalink
Returning to the post editor won't crash if Activity was destroyed.
Browse files Browse the repository at this point in the history
Still an issue of re-loading existing media into the post upon return from the picker.
  • Loading branch information
tonyr59h authored and maxme committed Apr 30, 2015
1 parent a402676 commit 9ceea72
Showing 1 changed file with 91 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,19 @@
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 {
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);
Expand All @@ -24,6 +31,19 @@ public WPImageSpan(Context context, int resId, Uri 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 < mStartPosition ? mStartPosition : mEndPosition;
}

public MediaFile getMediaFile() {
return mMediaFile;
}
Expand All @@ -47,4 +67,74 @@ public boolean isNetworkImageLoaded() {
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());
}
}

0 comments on commit 9ceea72

Please sign in to comment.