55import android .content .Context ;
66import android .graphics .Bitmap ;
77import android .net .Uri ;
8+ import android .os .Parcel ;
9+ import android .os .Parcelable ;
810import 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 < getStartPosition () ? getStartPosition () : 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