aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2014-12-16 20:17:03 +0100
committerSamuel Tardieu <sam@rfc1149.net>2014-12-16 20:39:33 +0100
commite266072c603ad721fc385994c498d5bbf27c9b5b (patch)
treea724b50491eaad6398e10dafae6b886976fea035
parentf08614446299a51e08070145c49383d23d4d61e8 (diff)
downloadcgeo-e266072c603ad721fc385994c498d5bbf27c9b5b.zip
cgeo-e266072c603ad721fc385994c498d5bbf27c9b5b.tar.gz
cgeo-e266072c603ad721fc385994c498d5bbf27c9b5b.tar.bz2
Keep a reference on the whole "name: value" line in description
-rw-r--r--main/src/cgeo/geocaching/CacheDetailActivity.java8
-rw-r--r--main/src/cgeo/geocaching/TrackableActivity.java50
-rw-r--r--main/src/cgeo/geocaching/ui/CacheDetailsCreator.java15
3 files changed, 41 insertions, 32 deletions
diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java
index 169238b..241ec6e 100644
--- a/main/src/cgeo/geocaching/CacheDetailActivity.java
+++ b/main/src/cgeo/geocaching/CacheDetailActivity.java
@@ -992,10 +992,10 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
span.setSpan(new ForegroundColorSpan(res.getColor(R.color.archived_cache_color)), 0, span.toString().length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
- addContextMenu(details.add(R.string.cache_name, span));
+ addContextMenu(details.add(R.string.cache_name, span).right);
details.add(R.string.cache_type, cache.getType().getL10n());
details.addSize(cache);
- addContextMenu(details.add(R.string.cache_geocode, cache.getGeocode()));
+ addContextMenu(details.add(R.string.cache_geocode, cache.getGeocode()).right);
details.addCacheState(cache);
details.addDistance(cache, cacheDistanceView);
@@ -1017,7 +1017,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
// cache author
if (StringUtils.isNotBlank(cache.getOwnerDisplayName()) || StringUtils.isNotBlank(cache.getOwnerUserId())) {
- final TextView ownerView = details.add(R.string.cache_owner, "");
+ final TextView ownerView = details.add(R.string.cache_owner, "").right;
if (StringUtils.isNotBlank(cache.getOwnerDisplayName())) {
ownerView.setText(cache.getOwnerDisplayName(), TextView.BufferType.SPANNABLE);
} else { // OwnerReal guaranteed to be not blank based on above
@@ -1039,7 +1039,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
// cache coordinates
if (cache.getCoords() != null) {
- final TextView valueView = details.add(R.string.cache_coordinates, cache.getCoords().toString());
+ final TextView valueView = details.add(R.string.cache_coordinates, cache.getCoords().toString()).right;
valueView.setOnClickListener(new CoordinatesFormatSwitcher(cache.getCoords()));
addContextMenu(valueView);
}
diff --git a/main/src/cgeo/geocaching/TrackableActivity.java b/main/src/cgeo/geocaching/TrackableActivity.java
index fec1157..a9f508c 100644
--- a/main/src/cgeo/geocaching/TrackableActivity.java
+++ b/main/src/cgeo/geocaching/TrackableActivity.java
@@ -160,7 +160,7 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi
return;
}
- String message;
+ final String message;
if (StringUtils.isNotBlank(name)) {
message = Html.fromHtml(name).toString();
} else if (StringUtils.isNotBlank(geocode)) {
@@ -394,10 +394,10 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi
}
// trackable name
- addContextMenu(details.add(R.string.trackable_name, StringUtils.isNotBlank(trackable.getName()) ? Html.fromHtml(trackable.getName()).toString() : res.getString(R.string.trackable_unknown)));
+ addContextMenu(details.add(R.string.trackable_name, StringUtils.isNotBlank(trackable.getName()) ? Html.fromHtml(trackable.getName()).toString() : res.getString(R.string.trackable_unknown)).right);
// trackable type
- String tbType;
+ final String tbType;
if (StringUtils.isNotBlank(trackable.getType())) {
tbType = Html.fromHtml(trackable.getType()).toString();
} else {
@@ -406,10 +406,10 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi
details.add(R.string.trackable_type, tbType);
// trackable geocode
- addContextMenu(details.add(R.string.trackable_code, trackable.getGeocode()));
+ addContextMenu(details.add(R.string.trackable_code, trackable.getGeocode()).right);
// trackable owner
- final TextView owner = details.add(R.string.trackable_owner, res.getString(R.string.trackable_unknown));
+ final TextView owner = details.add(R.string.trackable_owner, res.getString(R.string.trackable_unknown)).right;
if (StringUtils.isNotBlank(trackable.getOwner())) {
owner.setText(Html.fromHtml(trackable.getOwner()), TextView.BufferType.SPANNABLE);
owner.setOnClickListener(new UserActionsClickListener(trackable));
@@ -419,20 +419,26 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi
if (StringUtils.isNotBlank(trackable.getSpottedName()) ||
trackable.getSpottedType() == Trackable.SPOTTED_UNKNOWN ||
trackable.getSpottedType() == Trackable.SPOTTED_OWNER) {
+
+ final StringBuilder text;
boolean showTimeSpan = true;
- StringBuilder text;
-
- if (trackable.getSpottedType() == Trackable.SPOTTED_CACHE) {
- text = new StringBuilder(res.getString(R.string.trackable_spotted_in_cache) + ' ' + Html.fromHtml(trackable.getSpottedName()).toString());
- } else if (trackable.getSpottedType() == Trackable.SPOTTED_USER) {
- text = new StringBuilder(res.getString(R.string.trackable_spotted_at_user) + ' ' + Html.fromHtml(trackable.getSpottedName()).toString());
- } else if (trackable.getSpottedType() == Trackable.SPOTTED_UNKNOWN) {
- text = new StringBuilder(res.getString(R.string.trackable_spotted_unknown_location));
- } else if (trackable.getSpottedType() == Trackable.SPOTTED_OWNER) {
- text = new StringBuilder(res.getString(R.string.trackable_spotted_owner));
- } else {
- text = new StringBuilder("N/A");
- showTimeSpan = false;
+ switch (trackable.getSpottedType()) {
+ case Trackable.SPOTTED_CACHE:
+ text = new StringBuilder(res.getString(R.string.trackable_spotted_in_cache) + ' ' + Html.fromHtml(trackable.getSpottedName()).toString());
+ break;
+ case Trackable.SPOTTED_USER:
+ text = new StringBuilder(res.getString(R.string.trackable_spotted_at_user) + ' ' + Html.fromHtml(trackable.getSpottedName()).toString());
+ break;
+ case Trackable.SPOTTED_UNKNOWN:
+ text = new StringBuilder(res.getString(R.string.trackable_spotted_unknown_location));
+ break;
+ case Trackable.SPOTTED_OWNER:
+ text = new StringBuilder(res.getString(R.string.trackable_spotted_owner));
+ break;
+ default:
+ text = new StringBuilder("N/A");
+ showTimeSpan = false;
+ break;
}
// days since last spotting
@@ -445,7 +451,7 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi
}
}
- final TextView spotted = details.add(R.string.trackable_spotted, text.toString());
+ final TextView spotted = details.add(R.string.trackable_spotted, text.toString()).right;
spotted.setClickable(true);
if (Trackable.SPOTTED_CACHE == trackable.getSpottedType()) {
spotted.setOnClickListener(new View.OnClickListener() {
@@ -472,19 +478,19 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi
// trackable origin
if (StringUtils.isNotBlank(trackable.getOrigin())) {
- final TextView origin = details.add(R.string.trackable_origin, "");
+ final TextView origin = details.add(R.string.trackable_origin, "").right;
origin.setText(Html.fromHtml(trackable.getOrigin()), TextView.BufferType.SPANNABLE);
addContextMenu(origin);
}
// trackable released
if (trackable.getReleased() != null) {
- addContextMenu(details.add(R.string.trackable_released, Formatter.formatDate(trackable.getReleased().getTime())));
+ addContextMenu(details.add(R.string.trackable_released, Formatter.formatDate(trackable.getReleased().getTime())).right);
}
// trackable distance
if (trackable.getDistance() >= 0) {
- addContextMenu(details.add(R.string.trackable_distance, Units.getDistanceFromKilometers(trackable.getDistance())));
+ addContextMenu(details.add(R.string.trackable_distance, Units.getDistanceFromKilometers(trackable.getDistance())).right);
}
// trackable goal
diff --git a/main/src/cgeo/geocaching/ui/CacheDetailsCreator.java b/main/src/cgeo/geocaching/ui/CacheDetailsCreator.java
index 55e9cfc..13887c0 100644
--- a/main/src/cgeo/geocaching/ui/CacheDetailsCreator.java
+++ b/main/src/cgeo/geocaching/ui/CacheDetailsCreator.java
@@ -12,6 +12,7 @@ import cgeo.geocaching.location.Units;
import cgeo.geocaching.utils.Formatter;
import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.tuple.ImmutablePair;
import org.eclipse.jdt.annotation.NonNull;
import android.annotation.SuppressLint;
@@ -45,18 +46,20 @@ public final class CacheDetailsCreator {
}
/**
- * @param nameId
- * @param value
- * @return the view containing the displayed string (i.e. the right side one from the pair of "label": "value")
+ * Create a "name: value" line.
+ *
+ * @param nameId the resource of the name field
+ * @param value the initial value
+ * @return a pair made of the whole "name: value" line (to be able to hide it for example) and of the value (to update it)
*/
- public TextView add(final int nameId, final CharSequence value) {
+ public ImmutablePair<RelativeLayout, TextView> add(final int nameId, final CharSequence value) {
final RelativeLayout layout = (RelativeLayout) activity.getLayoutInflater().inflate(R.layout.cache_information_item, null, false);
final TextView nameView = ButterKnife.findById(layout, R.id.name);
nameView.setText(res.getString(nameId));
lastValueView = ButterKnife.findById(layout, R.id.value);
lastValueView.setText(value);
parentView.addView(layout);
- return lastValueView;
+ return ImmutablePair.of(layout, lastValueView);
}
public TextView getValueView() {
@@ -209,7 +212,7 @@ public final class CacheDetailsCreator {
if (StringUtils.isEmpty(dateString)) {
return null;
}
- final TextView view = add(cache.isEventCache() ? R.string.cache_event : R.string.cache_hidden, dateString);
+ final TextView view = add(cache.isEventCache() ? R.string.cache_event : R.string.cache_hidden, dateString).right;
view.setId(R.id.date);
return view;
}