1919 * adapted from existing ImageGetter code in NoteCommentFragment
2020 */
2121public class WPImageGetter implements Html .ImageGetter {
22- private WeakReference <TextView > mWeakView ;
23- private int mMaxSize ;
22+ private final WeakReference <TextView > mWeakView ;
23+ private final int mMaxSize ;
2424 private ImageLoader mImageLoader ;
2525 private Drawable mLoadingDrawable ;
2626 private Drawable mFailedDrawable ;
@@ -43,18 +43,6 @@ public WPImageGetter(TextView view, int maxSize, ImageLoader imageLoader, Drawab
4343 mFailedDrawable = failedDrawable ;
4444 }
4545
46- public void setImageLoader (ImageLoader imageLoader ) {
47- mImageLoader = imageLoader ;
48- }
49-
50- public void setLoadingDrawable (Drawable loadingDrawable ) {
51- mLoadingDrawable = loadingDrawable ;
52- }
53-
54- public void setFailedDrawable (Drawable failedDrawable ) {
55- mFailedDrawable = failedDrawable ;
56- }
57-
5846 private TextView getView () {
5947 return mWeakView .get ();
6048 }
@@ -80,9 +68,6 @@ public Drawable getDrawable(String source) {
8068 source = PhotonUtils .getPhotonImageUrl (source , mMaxSize , 0 );
8169 }
8270
83- TextView view = getView ();
84- // Drawable loading = view.getContext().getResources().getDrawable(R.drawable.remote_image); FIXME: here
85- // Drawable failed = view.getContext().getResources().getDrawable(R.drawable.remote_failed);
8671 final RemoteDrawable remote = new RemoteDrawable (mLoadingDrawable , mFailedDrawable );
8772
8873 mImageLoader .get (source , new ImageLoader .ImageListener () {
@@ -97,43 +82,40 @@ public void onErrorResponse(VolleyError error) {
9782
9883 @ Override
9984 public void onResponse (ImageLoader .ImageContainer response , boolean isImmediate ) {
100- if (response .getBitmap () != null ) {
101- // make sure view is still valid
102- TextView view = getView ();
103- if (view == null ) {
104- AppLog .w (T .UTILS , "WPImageGetter view is invalid" );
105- return ;
106- }
107-
108- Drawable drawable = new BitmapDrawable (view .getContext ().getResources (), response .getBitmap ());
109- final int oldHeight = remote .getBounds ().height ();
110- int maxWidth = view .getWidth () - view .getPaddingLeft () - view .getPaddingRight ();
111- if (mMaxSize > 0 && (maxWidth > mMaxSize || maxWidth == 0 )) {
112- maxWidth = mMaxSize ;
113- }
114- remote .setRemoteDrawable (drawable , maxWidth );
115-
116- // image is from cache? don't need to modify view height
117- if (isImmediate ) {
118- return ;
119- }
120-
121- int newHeight = remote .getBounds ().height ();
122- view .invalidate ();
123- // For ICS
124- view .setHeight (view .getHeight () + newHeight - oldHeight );
125- // Pre ICS
126- view .setEllipsize (null );
85+ if (response .getBitmap () == null ) {
86+ AppLog .w (T .UTILS , "WPImageGetter null bitmap" );
87+ }
88+
89+ TextView view = getView ();
90+ if (view == null ) {
91+ AppLog .w (T .UTILS , "WPImageGetter view is invalid" );
92+ return ;
93+ }
94+
95+ int maxWidth = view .getWidth () - view .getPaddingLeft () - view .getPaddingRight ();
96+ if (mMaxSize > 0 && (maxWidth > mMaxSize || maxWidth == 0 )) {
97+ maxWidth = mMaxSize ;
98+ }
99+
100+ Drawable drawable = new BitmapDrawable (view .getContext ().getResources (), response .getBitmap ());
101+ remote .setRemoteDrawable (drawable , maxWidth );
102+
103+ // force textView to resize correctly if image isn't cached by resetting the content
104+ // to itself - this way the textView will use the cached image, and resizing to
105+ // accommodate the image isn't necessary
106+ if (!isImmediate ) {
107+ view .setText (view .getText ());
127108 }
128109 }
129110 });
111+
130112 return remote ;
131113 }
132114
133115 private static class RemoteDrawable extends BitmapDrawable {
134- protected Drawable mRemoteDrawable ;
135- protected Drawable mLoadingDrawable ;
136- protected Drawable mFailedDrawable ;
116+ Drawable mRemoteDrawable ;
117+ final Drawable mLoadingDrawable ;
118+ final Drawable mFailedDrawable ;
137119 private boolean mDidFail = false ;
138120
139121 public RemoteDrawable (Drawable loadingDrawable , Drawable failedDrawable ) {
@@ -158,11 +140,6 @@ public void setBounds(int x, int y, int width, int height) {
158140 }
159141 }
160142
161- public void setRemoteDrawable (Drawable remote ) {
162- mRemoteDrawable = remote ;
163- setBounds (0 , 0 , mRemoteDrawable .getIntrinsicWidth (), mRemoteDrawable .getIntrinsicHeight ());
164- }
165-
166143 public void setRemoteDrawable (Drawable remote , int maxWidth ) {
167144 // null sentinel for now
168145 if (remote == null ) {
0 commit comments