aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/AbstractPopupActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/AbstractPopupActivity.java')
-rw-r--r--main/src/cgeo/geocaching/AbstractPopupActivity.java38
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();
}