diff options
Diffstat (limited to 'main/src/cgeo/geocaching/CgeoApplication.java')
| -rw-r--r-- | main/src/cgeo/geocaching/CgeoApplication.java | 76 |
1 files changed, 15 insertions, 61 deletions
diff --git a/main/src/cgeo/geocaching/CgeoApplication.java b/main/src/cgeo/geocaching/CgeoApplication.java index 2500d10..7bee97e 100644 --- a/main/src/cgeo/geocaching/CgeoApplication.java +++ b/main/src/cgeo/geocaching/CgeoApplication.java @@ -1,10 +1,10 @@ package cgeo.geocaching; -import cgeo.geocaching.network.StatusUpdater; import cgeo.geocaching.ui.dialog.Dialogs; -import cgeo.geocaching.utils.IObserver; import cgeo.geocaching.utils.Log; +import rx.Observable; + import android.app.Activity; import android.app.Application; import android.app.ProgressDialog; @@ -14,12 +14,11 @@ import java.util.concurrent.atomic.AtomicBoolean; public class CgeoApplication extends Application { - private volatile GeoDataProvider geo; - private volatile DirectionProvider dir; + private volatile Observable<IGeoData> geo; + private volatile Observable<Float> dir; private boolean forceRelog = false; // c:geo needs to log into cache providers public boolean showLoginToast = true; //login toast shown just once. - private boolean liveMapHintShown = false; // livemap hint has been shown - final private StatusUpdater statusUpdater = new StatusUpdater(); + private boolean liveMapHintShownInThisSession = false; // livemap hint has been shown private static CgeoApplication instance; public CgeoApplication() { @@ -35,26 +34,11 @@ public class CgeoApplication extends Application { } @Override - public void onCreate() { - new Thread(statusUpdater).start(); - } - - @Override public void onLowMemory() { Log.i("Cleaning applications cache."); DataStore.removeAllFromCache(); } - @Override - public void onTerminate() { - Log.d("Terminating c:geo…"); - - DataStore.clean(); - DataStore.closeDb(); - - super.onTerminate(); - } - /** * Move the database to/from external cgdata in a new thread, * showing a progress window @@ -82,29 +66,11 @@ public class CgeoApplication extends Application { }.start(); } - /** - * Register an observer to receive GeoData information. - * <br/> - * If there is a chance that no observers are registered before this - * method is called, it is necessary to call it from a task implementing - * a looper interface as the data provider will use listeners that - * require a looper thread to run. - * - * @param observer a geodata observer - */ - public void addGeoObserver(final IObserver<? super IGeoData> observer) { - currentGeoObject().addObserver(observer); - } - - public void deleteGeoObserver(final IObserver<? super IGeoData> observer) { - currentGeoObject().deleteObserver(observer); - } - - private GeoDataProvider currentGeoObject() { + public Observable<IGeoData> currentGeoObject() { if (geo == null) { synchronized(this) { if (geo == null) { - geo = new GeoDataProvider(this); + geo = GeoDataProvider.create(this); } } } @@ -112,22 +78,14 @@ public class CgeoApplication extends Application { } public IGeoData currentGeo() { - return currentGeoObject().getMemory(); + return currentGeoObject().first().toBlockingObservable().single(); } - public void addDirectionObserver(final IObserver<? super Float> observer) { - currentDirObject().addObserver(observer); - } - - public void deleteDirectionObserver(final IObserver<? super Float> observer) { - currentDirObject().deleteObserver(observer); - } - - private DirectionProvider currentDirObject() { + public Observable<Float> currentDirObject() { if (dir == null) { synchronized(this) { if (dir == null) { - dir = new DirectionProvider(this); + dir = DirectionProvider.create(this); } } } @@ -135,19 +93,15 @@ public class CgeoApplication extends Application { } public Float currentDirection() { - return currentDirObject().getMemory(); - } - - public StatusUpdater getStatusUpdater() { - return statusUpdater; + return currentDirObject().first().toBlockingObservable().single(); } - public boolean isLiveMapHintShown() { - return liveMapHintShown; + public boolean isLiveMapHintShownInThisSession() { + return liveMapHintShownInThisSession; } - public void setLiveMapHintShown() { - liveMapHintShown = true; + public void setLiveMapHintShownInThisSession() { + liveMapHintShownInThisSession = true; } /** |
