diff options
Diffstat (limited to 'main/src')
| -rw-r--r-- | main/src/cgeo/geocaching/CacheDetailActivity.java | 26 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/TrackableActivity.java | 50 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/ui/CacheDetailsCreator.java | 15 |
3 files changed, 53 insertions, 38 deletions
diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java index 169238b..85597e7 100644 --- a/main/src/cgeo/geocaching/CacheDetailActivity.java +++ b/main/src/cgeo/geocaching/CacheDetailActivity.java @@ -115,6 +115,7 @@ import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; +import android.widget.RelativeLayout; import android.widget.ScrollView; import android.widget.TextView; import android.widget.TextView.BufferType; @@ -952,10 +953,9 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc * Creator for details-view. */ private class DetailsViewCreator extends AbstractCachingPageViewCreator<ScrollView> { - /** - * Reference to the details list, so that the helper-method can access it without an additional argument - */ + // Reference to the details list and favorite line, so that the helper-method can access them without an additional argument private LinearLayout detailsList; + private ImmutablePair<RelativeLayout, TextView> favoriteLine; @Override public ScrollView getDispatchedView(final ViewGroup parentView) { @@ -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); @@ -1006,9 +1006,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc details.addRating(cache); // favorite count - if (cache.getFavoritePoints() > 0) { - details.add(R.string.cache_favorite, cache.getFavoritePoints() + "×"); - } + favoriteLine = details.add(R.string.cache_favorite, ""); // own rating if (cache.getMyVote() > 0) { @@ -1017,7 +1015,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 +1037,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); } @@ -1340,6 +1338,14 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc buttonRemove.setEnabled(false); buttonRemove.setVisibility(View.GONE); } + + // Favorite counts + if (cache.getFavoritePoints() > 0) { + favoriteLine.left.setVisibility(View.VISIBLE); + favoriteLine.right.setText(cache.getFavoritePoints() + "×"); + } else { + favoriteLine.left.setVisibility(View.GONE); + } } /** 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 ff52fb3..7dd3847 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; @@ -43,18 +44,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() { @@ -192,7 +195,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; } |
