diff options
Diffstat (limited to 'main/src/cgeo/geocaching/AbstractPopupActivity.java')
| -rw-r--r-- | main/src/cgeo/geocaching/AbstractPopupActivity.java | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/main/src/cgeo/geocaching/AbstractPopupActivity.java b/main/src/cgeo/geocaching/AbstractPopupActivity.java index 5f24030..5978835 100644 --- a/main/src/cgeo/geocaching/AbstractPopupActivity.java +++ b/main/src/cgeo/geocaching/AbstractPopupActivity.java @@ -8,13 +8,19 @@ import cgeo.geocaching.gcvote.GCVote; import cgeo.geocaching.gcvote.GCVoteRating; import cgeo.geocaching.geopoint.Geopoint; import cgeo.geocaching.geopoint.Units; +import cgeo.geocaching.sensors.GeoDirHandler; +import cgeo.geocaching.sensors.IGeoData; import cgeo.geocaching.settings.Settings; import cgeo.geocaching.ui.CacheDetailsCreator; import cgeo.geocaching.ui.LoggingUI; -import cgeo.geocaching.utils.GeoDirHandler; import cgeo.geocaching.utils.Log; import org.apache.commons.lang3.StringUtils; +import rx.Observable; +import rx.android.observables.AndroidObservable; +import rx.functions.Action1; +import rx.functions.Func0; +import rx.schedulers.Schedulers; import android.graphics.Rect; import android.os.Bundle; @@ -40,7 +46,7 @@ public abstract class AbstractPopupActivity extends AbstractActivity implements private final GeoDirHandler geoUpdate = new GeoDirHandler() { @Override - protected void updateGeoData(final IGeoData geo) { + public void updateGeoDir(final IGeoData geo, final float dir) { try { if (geo.getCoords() != null && cache != null && cache.getCoords() != null) { cacheDistance.setText(Units.getDistanceFromKilometers(geo.getCoords().distanceTo(cache.getCoords()))); @@ -74,24 +80,20 @@ public abstract class AbstractPopupActivity extends AbstractActivity implements if (!cache.supportsGCVote()) { return; } - - (new Thread("Load GCVote") { + AndroidObservable.fromActivity(this, Observable.defer(new Func0<Observable<GCVoteRating>>() { @Override - public void run() { + public Observable<GCVoteRating> call() { final GCVoteRating rating = GCVote.getRating(cache.getGuid(), geocode); - - if (rating == null) { - return; - } + return rating != null ? Observable.just(rating) : Observable.<GCVoteRating>empty(); + } + }).subscribeOn(Schedulers.io())).subscribe(new Action1<GCVoteRating>() { + @Override + public void call(final GCVoteRating rating) { cache.setRating(rating.getRating()); cache.setVotes(rating.getVotes()); - runOnUiThread(new Runnable() { - @Override - public void run() { - details.addRating(cache); } - }); + details.addRating(cache); } - }).start(); + }); } protected void init() { @@ -159,7 +161,6 @@ public abstract class AbstractPopupActivity extends AbstractActivity implements @Override public void onPause() { - geoUpdate.stopGeo(); super.onPause(); } @@ -181,9 +182,8 @@ public abstract class AbstractPopupActivity extends AbstractActivity implements @Override public void onResume() { - super.onResume(); + super.onResume(geoUpdate.start()); init(); - geoUpdate.startGeo(); } @Override @@ -255,7 +255,7 @@ public abstract class AbstractPopupActivity extends AbstractActivity implements * @param view * unused here but needed since this method is referenced from XML layout */ - public final void goDefaultNavigation(View view) { + public final void goDefaultNavigation(@SuppressWarnings("unused") View view) { navigateTo(); finish(); } |
