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.java84
1 files changed, 26 insertions, 58 deletions
diff --git a/main/src/cgeo/geocaching/AbstractPopupActivity.java b/main/src/cgeo/geocaching/AbstractPopupActivity.java
index 1cf0353..5b9b509 100644
--- a/main/src/cgeo/geocaching/AbstractPopupActivity.java
+++ b/main/src/cgeo/geocaching/AbstractPopupActivity.java
@@ -2,7 +2,6 @@ package cgeo.geocaching;
import cgeo.geocaching.activity.AbstractActivity;
import cgeo.geocaching.activity.ActivityMixin;
-import cgeo.geocaching.apps.cache.navi.NavigationAppFactory;
import cgeo.geocaching.enumerations.CacheSize;
import cgeo.geocaching.enumerations.LoadFlags;
import cgeo.geocaching.gcvote.GCVote;
@@ -17,12 +16,8 @@ import cgeo.geocaching.utils.Log;
import org.apache.commons.lang3.StringUtils;
-import android.content.Intent;
import android.graphics.Rect;
-import android.net.Uri;
import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
@@ -33,7 +28,7 @@ import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
-public abstract class AbstractPopupActivity extends AbstractActivity {
+public abstract class AbstractPopupActivity extends AbstractActivity implements CacheMenuHandler.ActivityInterface {
protected Geocache cache = null;
protected String geocode = null;
@@ -42,18 +37,6 @@ public abstract class AbstractPopupActivity extends AbstractActivity {
private TextView cacheDistance = null;
private final int layout;
- private final Handler ratingHandler = new Handler() {
-
- @Override
- public void handleMessage(Message msg) {
- try {
- details.addRating(cache);
- } catch (final Exception e) {
- // nothing
- }
- }
- };
-
private final GeoDirHandler geoUpdate = new GeoDirHandler() {
@Override
@@ -64,7 +47,7 @@ public abstract class AbstractPopupActivity extends AbstractActivity {
cacheDistance.bringToFront();
}
onUpdateGeoData(geo);
- } catch (final Exception e) {
+ } catch (final RuntimeException e) {
Log.w("Failed to UpdateLocation location.");
}
}
@@ -91,8 +74,8 @@ public abstract class AbstractPopupActivity extends AbstractActivity {
if (!cache.supportsGCVote()) {
return;
}
- (new Thread("Load GCVote") {
+ (new Thread("Load GCVote") {
@Override
public void run() {
final GCVoteRating rating = GCVote.getRating(cache.getGuid(), geocode);
@@ -102,14 +85,17 @@ public abstract class AbstractPopupActivity extends AbstractActivity {
}
cache.setRating(rating.getRating());
cache.setVotes(rating.getVotes());
- final Message msg = Message.obtain();
- ratingHandler.sendMessage(msg);
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ details.addRating(cache); }
+ });
}
}).start();
}
protected void init() {
- cache = cgData.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB);
+ cache = DataStore.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB);
if (cache == null) {
showToast(res.getString(R.string.err_detail_cache_find));
@@ -121,11 +107,8 @@ public abstract class AbstractPopupActivity extends AbstractActivity {
geocode = cache.getGeocode();
}
- private void showInBrowser() {
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(cache.getUrl())));
- }
-
- protected abstract void navigateTo();
+ @Override
+ public abstract void navigateTo();
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -161,31 +144,17 @@ public abstract class AbstractPopupActivity extends AbstractActivity {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.abstract_popup_activity, menu);
+ CacheMenuHandler.addMenuItems(this, menu, cache);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
- final int menuItem = item.getItemId();
-
- switch (menuItem) {
- case R.id.menu_default_navigation:
- navigateTo();
- return true;
- case R.id.menu_navigate:
- showNavigationMenu();
- return true;
- case R.id.menu_caches_around:
- cachesAround();
- return true;
- case R.id.menu_show_in_browser:
- showInBrowser();
- return true;
- default:
- if (LoggingUI.onMenuItemSelected(item, this, cache)) {
- return true;
- }
+ if (CacheMenuHandler.onMenuItemSelected(item, this, cache)) {
+ return true;
+ }
+ if (LoggingUI.onMenuItemSelected(item, this, cache)) {
+ return true;
}
return true;
@@ -202,14 +171,9 @@ public abstract class AbstractPopupActivity extends AbstractActivity {
super.onPrepareOptionsMenu(menu);
try {
- final boolean visible = getCoordinates() != null;
- menu.findItem(R.id.menu_default_navigation).setVisible(visible);
- menu.findItem(R.id.menu_navigate).setVisible(visible);
- menu.findItem(R.id.menu_caches_around).setVisible(visible);
-
- menu.findItem(R.id.menu_default_navigation).setTitle(NavigationAppFactory.getDefaultNavigationApplication().getName());
+ CacheMenuHandler.onPrepareOptionsMenu(menu, cache);
LoggingUI.onPrepareOptionsMenu(menu, cache);
- } catch (final Exception e) {
+ } catch (final RuntimeException e) {
// nothing
}
@@ -238,11 +202,13 @@ public abstract class AbstractPopupActivity extends AbstractActivity {
return super.onTouchEvent(event);
}
- protected abstract void showNavigationMenu();
+ @Override
+ public abstract void showNavigationMenu();
protected abstract void startDefaultNavigation2();
protected final void addCacheDetails() {
+ assert cache != null;
// cache type
final String cacheType = cache.getType().getL10n();
final String cacheSize = cache.getSize() != CacheSize.UNKNOWN ? " (" + cache.getSize().getL10n() + ")" : "";
@@ -256,6 +222,7 @@ public abstract class AbstractPopupActivity extends AbstractActivity {
details.addDifficulty(cache);
details.addTerrain(cache);
+ details.addEventDate(cache);
// rating
if (cache.getRating() > 0) {
@@ -279,13 +246,14 @@ public abstract class AbstractPopupActivity extends AbstractActivity {
});
}
- private void cachesAround() {
+ @Override
+ public void cachesAround() {
final Geopoint coords = getCoordinates();
if (coords == null) {
showToast(res.getString(R.string.err_location_unknown));
return;
}
- cgeocaches.startActivityCoordinates(this, coords);
+ CacheListActivity.startActivityCoordinates(this, coords);
finish();
}