diff options
Diffstat (limited to 'main/src/cgeo/geocaching/AbstractPopupActivity.java')
| -rw-r--r-- | main/src/cgeo/geocaching/AbstractPopupActivity.java | 84 |
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(); } |
