Skip to content

Commit 8786fed

Browse files
tonyr59hmaxme
authored andcommitted
Returning to the post editor won't crash if Activity was destroyed.
Still an issue of re-loading existing media into the post upon return from the picker.
1 parent 056645f commit 8786fed

File tree

1 file changed

+91
-1
lines changed

1 file changed

+91
-1
lines changed

WordPressUtils/src/main/java/org/wordpress/android/util/helpers/WPImageSpan.java

Lines changed: 91 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,19 @@
55
import android.content.Context;
66
import android.graphics.Bitmap;
77
import android.net.Uri;
8+
import android.os.Parcel;
9+
import android.os.Parcelable;
810
import android.text.style.ImageSpan;
911

10-
public class WPImageSpan extends ImageSpan {
12+
public class WPImageSpan extends ImageSpan implements Parcelable {
1113
protected Uri mImageSource = null;
1214
protected boolean mNetworkImageLoaded = false;
1315
protected MediaFile mMediaFile;
16+
protected int mStartPosition, mEndPosition;
17+
18+
protected WPImageSpan() {
19+
super((Bitmap) null);
20+
}
1421

1522
public WPImageSpan(Context context, Bitmap b, Uri src) {
1623
super(context, b);
@@ -24,6 +31,19 @@ public WPImageSpan(Context context, int resId, Uri src) {
2431
mMediaFile = new MediaFile();
2532
}
2633

34+
public void setPosition(int start, int end) {
35+
mStartPosition = start;
36+
mEndPosition = end;
37+
}
38+
39+
public int getStartPosition() {
40+
return mStartPosition >= 0 ? mStartPosition : 0;
41+
}
42+
43+
public int getEndPosition() {
44+
return mEndPosition < mStartPosition ? mStartPosition : mEndPosition;
45+
}
46+
2747
public MediaFile getMediaFile() {
2848
return mMediaFile;
2949
}
@@ -47,4 +67,74 @@ public boolean isNetworkImageLoaded() {
4767
public void setNetworkImageLoaded(boolean networkImageLoaded) {
4868
this.mNetworkImageLoaded = networkImageLoaded;
4969
}
70+
71+
protected void setupFromParcel(Parcel in) {
72+
MediaFile mediaFile = new MediaFile();
73+
74+
boolean[] booleans = new boolean[2];
75+
in.readBooleanArray(booleans);
76+
setNetworkImageLoaded(booleans[0]);
77+
mediaFile.setVideo(booleans[1]);
78+
79+
setImageSource(Uri.parse(in.readString()));
80+
mediaFile.setMediaId(in.readString());
81+
mediaFile.setBlogId(in.readString());
82+
mediaFile.setPostID(in.readLong());
83+
mediaFile.setCaption(in.readString());
84+
mediaFile.setDescription(in.readString());
85+
mediaFile.setTitle(in.readString());
86+
mediaFile.setMimeType(in.readString());
87+
mediaFile.setFileName(in.readString());
88+
mediaFile.setThumbnailURL(in.readString());
89+
mediaFile.setVideoPressShortCode(in.readString());
90+
mediaFile.setFileURL(in.readString());
91+
mediaFile.setFilePath(in.readString());
92+
mediaFile.setDateCreatedGMT(in.readLong());
93+
mediaFile.setWidth(in.readInt());
94+
mediaFile.setHeight(in.readInt());
95+
setPosition(in.readInt(), in.readInt());
96+
97+
setMediaFile(mediaFile);
98+
}
99+
100+
public static final Parcelable.Creator<WPImageSpan> CREATOR
101+
= new Parcelable.Creator<WPImageSpan>() {
102+
public WPImageSpan createFromParcel(Parcel in) {
103+
WPImageSpan imageSpan = new WPImageSpan();
104+
imageSpan.setupFromParcel(in);
105+
return imageSpan;
106+
}
107+
108+
public WPImageSpan[] newArray(int size) {
109+
return new WPImageSpan[size];
110+
}
111+
};
112+
113+
@Override
114+
public int describeContents() {
115+
return 0;
116+
}
117+
118+
@Override
119+
public void writeToParcel(Parcel parcel, int i) {
120+
parcel.writeBooleanArray(new boolean[] {mNetworkImageLoaded, mMediaFile.isVideo()});
121+
parcel.writeString(mImageSource.toString());
122+
parcel.writeString(mMediaFile.getMediaId());
123+
parcel.writeString(mMediaFile.getBlogId());
124+
parcel.writeLong(mMediaFile.getPostID());
125+
parcel.writeString(mMediaFile.getCaption());
126+
parcel.writeString(mMediaFile.getDescription());
127+
parcel.writeString(mMediaFile.getTitle());
128+
parcel.writeString(mMediaFile.getMimeType());
129+
parcel.writeString(mMediaFile.getFileName());
130+
parcel.writeString(mMediaFile.getThumbnailURL());
131+
parcel.writeString(mMediaFile.getVideoPressShortCode());
132+
parcel.writeString(mMediaFile.getFileURL());
133+
parcel.writeString(mMediaFile.getFilePath());
134+
parcel.writeLong(mMediaFile.getDateCreatedGMT());
135+
parcel.writeInt(mMediaFile.getWidth());
136+
parcel.writeInt(mMediaFile.getHeight());
137+
parcel.writeInt(getStartPosition());
138+
parcel.writeInt(getEndPosition());
139+
}
50140
}

0 commit comments

Comments
 (0)