From bc1d72e7adfa783dfad9baee72c22d2bbcfb2153 Mon Sep 17 00:00:00 2001 From: Samuel Tardieu Date: Sun, 16 Feb 2014 15:07:39 +0100 Subject: refactoring: use RxJava to download preview map --- main/src/cgeo/geocaching/CacheDetailActivity.java | 71 ++++++++++------------- 1 file changed, 30 insertions(+), 41 deletions(-) (limited to 'main/src/cgeo/geocaching/CacheDetailActivity.java') diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java index 54202a7..9f39637 100644 --- a/main/src/cgeo/geocaching/CacheDetailActivity.java +++ b/main/src/cgeo/geocaching/CacheDetailActivity.java @@ -78,7 +78,6 @@ import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; import android.net.Uri; -import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.Message; @@ -934,7 +933,17 @@ public class CacheDetailActivity extends AbstractViewPagerActivity() { + @Override + public void call(final BitmapDrawable image) { + final Bitmap bitmap = image.getBitmap(); + if (bitmap != null && bitmap.getWidth() > 10) { + final ImageView imageView = (ImageView) view.findViewById(R.id.map_preview); + imageView.setImageDrawable(image); + view.findViewById(R.id.map_preview_box).setVisibility(View.VISIBLE); + } + } + }); detailsList = (LinearLayout) view.findViewById(R.id.details_list); final CacheDetailsCreator details = new CacheDetailsCreator(CacheDetailActivity.this, detailsList); @@ -1421,53 +1430,33 @@ public class CacheDetailActivity extends AbstractViewPagerActivity { - @Override - protected BitmapDrawable doInBackground(Void... parameters) { - try { - // persistent preview from storage - Bitmap image = decode(cache); - - if (image == null) { - if (Settings.isStoreOfflineMaps()) { - StaticMapsProvider.storeCachePreviewMap(cache); - image = decode(cache); - } - } - - return image != null ? ImageUtils.scaleBitmapToFitDisplay(image) : null; - } catch (final Exception e) { - Log.w("CacheDetailActivity.PreviewMapTask", e); - return null; - } - } - - private Bitmap decode(final Geocache cache) { - return StaticMapsProvider.getPreviewMap(cache.getGeocode()); - } + private Observable previewMap = Observable.create(new OnSubscribe() { + @Override + public void call(final Subscriber subscriber) { + try { + // persistent preview from storage + Bitmap image = StaticMapsProvider.getPreviewMap(cache); - @Override - protected void onPostExecute(BitmapDrawable image) { if (image == null) { - return; - } - - try { - final Bitmap bitmap = image.getBitmap(); - if (bitmap == null || bitmap.getWidth() <= 10) { - return; + if (Settings.isStoreOfflineMaps()) { + StaticMapsProvider.storeCachePreviewMap(cache); + image = StaticMapsProvider.getPreviewMap(cache); } + } - final ImageView imageView = (ImageView) view.findViewById(R.id.map_preview); - imageView.setImageDrawable(image); - view.findViewById(R.id.map_preview_box).setVisibility(View.VISIBLE); - } catch (final Exception e) { - Log.e("CacheDetailActivity.PreviewMapTask", e); + if (image != null) { + subscriber.onNext(ImageUtils.scaleBitmapToFitDisplay(image)); } + subscriber.onCompleted(); + } catch (final Exception e) { + Log.w("CacheDetailActivity.previewMap", e); + subscriber.onError(e); } } - } + + }); protected class DescriptionViewCreator extends AbstractCachingPageViewCreator { -- cgit v1.1