aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2014-02-16 15:07:39 +0100
committerSamuel Tardieu <sam@rfc1149.net>2014-02-16 22:21:37 +0100
commitbc1d72e7adfa783dfad9baee72c22d2bbcfb2153 (patch)
treed18de16b5ba2c78b36fb5fec38ef6536b83e6d3e
parent14ba161b7507480630d8ca9220e1b4099fc7d4d6 (diff)
downloadcgeo-bc1d72e7adfa783dfad9baee72c22d2bbcfb2153.zip
cgeo-bc1d72e7adfa783dfad9baee72c22d2bbcfb2153.tar.gz
cgeo-bc1d72e7adfa783dfad9baee72c22d2bbcfb2153.tar.bz2
refactoring: use RxJava to download preview map
-rw-r--r--main/src/cgeo/geocaching/CacheDetailActivity.java71
-rw-r--r--main/src/cgeo/geocaching/StaticMapsProvider.java4
2 files changed, 32 insertions, 43 deletions
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<CacheDetailAc
view = (ScrollView) getLayoutInflater().inflate(R.layout.cachedetail_details_page, null);
// Start loading preview map
- new PreviewMapTask().execute((Void) null);
+ AndroidObservable.fromActivity(CacheDetailActivity.this, previewMap.subscribeOn(Schedulers.io())).subscribe(new Action1<BitmapDrawable>() {
+ @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<CacheDetailAc
box.setVisibility(View.GONE);
}
}
+ }
- private class PreviewMapTask extends AsyncTask<Void, Void, BitmapDrawable> {
- @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<BitmapDrawable> previewMap = Observable.create(new OnSubscribe<BitmapDrawable>() {
+ @Override
+ public void call(final Subscriber<? super BitmapDrawable> 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<ScrollView> {
diff --git a/main/src/cgeo/geocaching/StaticMapsProvider.java b/main/src/cgeo/geocaching/StaticMapsProvider.java
index d5cbb13..eaab159 100644
--- a/main/src/cgeo/geocaching/StaticMapsProvider.java
+++ b/main/src/cgeo/geocaching/StaticMapsProvider.java
@@ -298,8 +298,8 @@ public final class StaticMapsProvider {
return true;
}
- public static Bitmap getPreviewMap(final String geocode) {
- return decodeFile(StaticMapsProvider.getMapFile(geocode, PREFIX_PREVIEW, false));
+ public static Bitmap getPreviewMap(final Geocache cache) {
+ return decodeFile(StaticMapsProvider.getMapFile(cache.getGeocode(), PREFIX_PREVIEW, false));
}
public static Bitmap getWaypointMap(final String geocode, final Waypoint waypoint, final int level) {