Skip to content

Commit c6667a4

Browse files
committed
Merge pull request #1781 from wordpress-mobile/issue/17760-reader-comment-full-images
issue/1760-reader-comment-full-images
2 parents ebdfcdc + dbaf452 commit c6667a4

File tree

1 file changed

+29
-52
lines changed

1 file changed

+29
-52
lines changed

WordPressUtils/src/main/java/org/wordpress/android/util/WPImageGetter.java

Lines changed: 29 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
* adapted from existing ImageGetter code in NoteCommentFragment
2020
*/
2121
public 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

Comments
 (0)