Started working on displaying user avatars
Currently the downloading and displaying of avatar images is working, however we now need to fetch the author avatar url from the forum. Signed-off-by: Ricky Barrette <rickbarrette@gmail.com>
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
/***
|
||||
Copyright (c) 2008-2009 CommonsWare, LLC
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
not use this file except in compliance with the License. You may obtain
|
||||
a copy of the License at
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package com.commonsware.cwac.thumbnail;
|
||||
|
||||
import org.RickBarrette.osj.forum.Log;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ListAdapter;
|
||||
|
||||
import com.commonsware.cwac.adapter.AdapterWrapper;
|
||||
import com.commonsware.cwac.cache.SimpleWebImageCache;
|
||||
|
||||
public class ThumbnailAdapter extends AdapterWrapper {
|
||||
private static final String TAG = "ThumbnailAdapter";
|
||||
private final int[] imageIds;
|
||||
private SimpleWebImageCache<ThumbnailBus, ThumbnailMessage> cache = null;
|
||||
private Activity host = null;
|
||||
|
||||
private final ThumbnailBus.Receiver<ThumbnailMessage> onCache = new ThumbnailBus.Receiver<ThumbnailMessage>() {
|
||||
@Override
|
||||
public void onReceive(final ThumbnailMessage message) {
|
||||
final ImageView image = message.getImageView();
|
||||
|
||||
host.runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (image.getTag() != null && image.getTag().toString().equals(message.getUrl()))
|
||||
image.setImageDrawable(cache.get(message.getUrl()));
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Constructor wrapping a supplied ListAdapter
|
||||
*/
|
||||
public ThumbnailAdapter(final Activity host, final ListAdapter wrapped, final SimpleWebImageCache<ThumbnailBus, ThumbnailMessage> cache, final int[] imageIds) {
|
||||
super(wrapped);
|
||||
|
||||
this.host = host;
|
||||
this.imageIds = imageIds;
|
||||
this.cache = cache;
|
||||
|
||||
cache.getBus().register(getBusKey(), onCache);
|
||||
}
|
||||
|
||||
public void close() {
|
||||
cache.getBus().unregister(onCache);
|
||||
}
|
||||
|
||||
private String getBusKey() {
|
||||
return toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a View that displays the data at the specified position in the data
|
||||
* set. In this case, if we are at the end of the list and we are still in
|
||||
* append mode, we ask for a pending view and return it, plus kick off the
|
||||
* background task to append more data to the wrapped adapter.
|
||||
*
|
||||
* @param position
|
||||
* Position of the item whose data we want
|
||||
* @param convertView
|
||||
* View to recycle, if not null
|
||||
* @param parent
|
||||
* ViewGroup containing the returned View
|
||||
*/
|
||||
@Override
|
||||
public View getView(final int position, final View convertView, final ViewGroup parent) {
|
||||
final View result = super.getView(position, convertView, parent);
|
||||
|
||||
processView(result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public void processView(final View row) {
|
||||
Log.v(TAG, "Processing View");
|
||||
for (final int imageId : imageIds) {
|
||||
final ImageView image = (ImageView) row.findViewById(imageId);
|
||||
|
||||
if (image != null && image.getTag() != null) {
|
||||
final ThumbnailMessage msg = cache.getBus().createMessage(getBusKey());
|
||||
|
||||
msg.setImageView(image);
|
||||
msg.setUrl(image.getTag().toString());
|
||||
|
||||
try {
|
||||
cache.notify(msg.getUrl(), msg);
|
||||
} catch (final Throwable t) {
|
||||
Log.e(TAG, "Exception trying to fetch image", t);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
/***
|
||||
Copyright (c) 2008-2009 CommonsWare, LLC
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
not use this file except in compliance with the License. You may obtain
|
||||
a copy of the License at
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package com.commonsware.cwac.thumbnail;
|
||||
|
||||
import com.commonsware.cwac.bus.AbstractBus;
|
||||
|
||||
public class ThumbnailBus extends AbstractBus<ThumbnailMessage, String, ThumbnailBus.MatchStrategy> {
|
||||
class MatchStrategy implements AbstractBus.Strategy<ThumbnailMessage, String> {
|
||||
@Override
|
||||
public boolean isMatch(final ThumbnailMessage message, final String filter) {
|
||||
return filter != null && message != null && filter.equals(message.getKey());
|
||||
}
|
||||
}
|
||||
|
||||
public ThumbnailBus() {
|
||||
super();
|
||||
|
||||
setStrategy(new MatchStrategy());
|
||||
}
|
||||
|
||||
public ThumbnailMessage createMessage(final String key) {
|
||||
return new ThumbnailMessage(key);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
/***
|
||||
Copyright (c) 2008-2009 CommonsWare, LLC
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
not use this file except in compliance with the License. You may obtain
|
||||
a copy of the License at
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package com.commonsware.cwac.thumbnail;
|
||||
|
||||
import android.widget.ImageView;
|
||||
|
||||
public class ThumbnailMessage {
|
||||
private final String key;
|
||||
private ImageView image;
|
||||
private String url;
|
||||
|
||||
public ThumbnailMessage(final String key) {
|
||||
this.key = key;
|
||||
}
|
||||
|
||||
public ImageView getImageView() {
|
||||
return image;
|
||||
}
|
||||
|
||||
public String getKey() {
|
||||
return key;
|
||||
}
|
||||
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
|
||||
public void setImageView(final ImageView image) {
|
||||
this.image = image;
|
||||
}
|
||||
|
||||
public void setUrl(final String url) {
|
||||
this.url = url;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user