diff options
Diffstat (limited to 'main/src/cgeo/geocaching/CacheDetailActivity.java')
| -rw-r--r-- | main/src/cgeo/geocaching/CacheDetailActivity.java | 50 |
1 files changed, 29 insertions, 21 deletions
diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java index 45a1dd2..e04f7ed 100644 --- a/main/src/cgeo/geocaching/CacheDetailActivity.java +++ b/main/src/cgeo/geocaching/CacheDetailActivity.java @@ -228,22 +228,26 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc } if (uriHost.contains("geocaching.com")) { - geocode = uri.getQueryParameter("wp"); - guid = uri.getQueryParameter("guid"); - - if (StringUtils.isNotBlank(geocode)) { - geocode = geocode.toUpperCase(Locale.US); - guid = null; - } else if (StringUtils.isNotBlank(guid)) { - geocode = null; - guid = guid.toLowerCase(Locale.US); + if (StringUtils.startsWith(uriPath, "/geocache/gc")) { + geocode = StringUtils.substringBefore(uriPath.substring(10), "_").toUpperCase(Locale.US); } else { - showToast(res.getString(R.string.err_detail_open)); - finish(); - return; + geocode = uri.getQueryParameter("wp"); + guid = uri.getQueryParameter("guid"); + + if (StringUtils.isNotBlank(geocode)) { + geocode = geocode.toUpperCase(Locale.US); + guid = null; + } else if (StringUtils.isNotBlank(guid)) { + geocode = null; + guid = guid.toLowerCase(Locale.US); + } else { + showToast(res.getString(R.string.err_detail_open)); + finish(); + return; + } } } else if (uriHost.contains("coord.info")) { - if (uriPath != null && uriPath.startsWith("/gc")) { + if (StringUtils.startsWith(uriPath, "/gc")) { geocode = uriPath.substring(1).toUpperCase(Locale.US); } else { showToast(res.getString(R.string.err_detail_open)); @@ -251,7 +255,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc return; } } else if (uriHost.contains("opencaching.de")) { - if (uriPath != null && uriPath.startsWith("/oc")) { + if (StringUtils.startsWith(uriPath, "/oc")) { geocode = uriPath.substring(1).toUpperCase(Locale.US); } else { geocode = uri.getQueryParameter("wp"); @@ -287,7 +291,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc title = geocode; } progress.show(this, title, res.getString(R.string.cache_dialog_loading_details), true, loadCacheHandler.cancelMessage()); - } catch (final Exception e) { + } catch (final RuntimeException e) { // nothing, we lost the window } @@ -418,7 +422,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc break; } } - } catch (final Exception e) { + } catch (final RuntimeException e) { } } break; @@ -434,7 +438,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc menu.setHeaderTitle(fieldTitle); menu.add(viewId, MENU_FIELD_COPY, 0, res.getString(android.R.string.copy)); if (!copyOnly) { - if (clickedItemText.length() > TranslationUtils.translationTextLengthToWarn) { + if (clickedItemText.length() > TranslationUtils.TRANSLATION_TEXT_LENGTH_WARN) { showToast(res.getString(R.string.translate_length_warning)); } menu.add(viewId, MENU_FIELD_TRANSLATE, 0, res.getString(R.string.translate_to_sys_lang, Locale.getDefault().getDisplayLanguage())); @@ -1275,7 +1279,6 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc private Handler handler; public DropCacheThread(Handler handler) { - super(); this.handler = handler; } @@ -1611,7 +1614,8 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc return; } - ((ImageView) view.findViewById(R.id.map_preview)).setImageDrawable(image); + final ImageView imageView = (ImageView) view.findViewById(R.id.map_preview); + imageView.setImageDrawable(image); view.findViewById(R.id.map_preview_box).setVisibility(View.VISIBLE); } catch (final Exception e) { Log.e("CacheDetailActivity.PreviewMapTask", e); @@ -1702,12 +1706,16 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc } hintView.setVisibility(View.VISIBLE); hintView.setClickable(true); - hintView.setOnClickListener(new DecryptTextClickListener()); + hintView.setOnClickListener(new DecryptTextClickListener(hintView)); + hintBoxView.setOnClickListener(new DecryptTextClickListener(hintView)); + hintBoxView.setClickable(true); registerForContextMenu(hintView); } else { hintView.setVisibility(View.GONE); hintView.setClickable(false); hintView.setOnClickListener(null); + hintBoxView.setClickable(false); + hintBoxView.setOnClickListener(null); } final TextView spoilerlinkView = ((TextView) view.findViewById(R.id.hint_spoilerlink)); @@ -2448,7 +2456,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc } protected void storeCache(final int listId, final StoreCacheHandler storeCacheHandler) { - progress.show(CacheDetailActivity.this, res.getString(R.string.cache_dialog_offline_save_title), res.getString(R.string.cache_dialog_offline_save_message), true, storeCacheHandler.cancelMessage()); + progress.show(this, res.getString(R.string.cache_dialog_offline_save_title), res.getString(R.string.cache_dialog_offline_save_message), true, storeCacheHandler.cancelMessage()); if (storeThread != null) { storeThread.interrupt(); |
