diff options
Diffstat (limited to 'main/src/cgeo/geocaching/CacheDetailActivity.java')
| -rw-r--r-- | main/src/cgeo/geocaching/CacheDetailActivity.java | 35 |
1 files changed, 31 insertions, 4 deletions
diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java index f92245c..89e78d6 100644 --- a/main/src/cgeo/geocaching/CacheDetailActivity.java +++ b/main/src/cgeo/geocaching/CacheDetailActivity.java @@ -68,6 +68,7 @@ import android.graphics.Bitmap; import android.graphics.Typeface; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; +import android.graphics.drawable.LayerDrawable; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; @@ -1814,6 +1815,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc } private class WaypointsViewCreator extends AbstractCachingPageViewCreator<ListView> { + private final int VISITED_INSET = (int) (6.6f * CgeoApplication.getInstance().getResources().getDisplayMetrics().density + 0.5f); @Override public ListView getDispatchedView() { @@ -1864,20 +1866,26 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc protected void fillViewHolder(View rowView, final WaypointViewHolder holder, final Waypoint wpt) { // coordinates + final TextView coordinatesView = holder.coordinatesView; if (null != wpt.getCoords()) { - final TextView coordinatesView = holder.coordinatesView; coordinatesView.setOnClickListener(new CoordinatesFormatSwitcher(wpt.getCoords())); coordinatesView.setText(wpt.getCoords().toString()); coordinatesView.setVisibility(View.VISIBLE); } + else { + coordinatesView.setVisibility(View.GONE); + } // info final String waypointInfo = Formatter.formatWaypointInfo(wpt); + final TextView infoView = holder.infoView; if (StringUtils.isNotBlank(waypointInfo)) { - final TextView infoView = holder.infoView; infoView.setText(waypointInfo); infoView.setVisibility(View.VISIBLE); } + else { + infoView.setVisibility(View.GONE); + } // title final TextView nameView = holder.nameView; @@ -1888,7 +1896,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc } else { nameView.setText(res.getString(R.string.waypoint)); } - wpt.setIcon(res, nameView); + setWaypointIcon(res, nameView, wpt); // visited if (wpt.isVisited()) { @@ -1901,8 +1909,8 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc } // note + final TextView noteView = holder.noteView; if (StringUtils.isNotBlank(wpt.getNote())) { - final TextView noteView = holder.noteView; noteView.setVisibility(View.VISIBLE); if (TextUtils.containsHtml(wpt.getNote())) { noteView.setText(Html.fromHtml(wpt.getNote()), TextView.BufferType.SPANNABLE); @@ -1911,6 +1919,9 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc noteView.setText(wpt.getNote()); } } + else { + noteView.setVisibility(View.GONE); + } final View wpNavView = holder.wpNavView; wpNavView.setOnClickListener(new View.OnClickListener() { @@ -1946,6 +1957,22 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc } }); } + + private void setWaypointIcon(final Resources res, final TextView nameView, final Waypoint wpt) { + final WaypointType waypointType = wpt.getWaypointType(); + final Drawable icon; + if (wpt.isVisited()) { + LayerDrawable ld = new LayerDrawable(new Drawable[] { + res.getDrawable(waypointType.markerId), + res.getDrawable(R.drawable.tick) }); + ld.setLayerInset(0, 0, 0, VISITED_INSET, VISITED_INSET); + ld.setLayerInset(1, VISITED_INSET, VISITED_INSET, 0, 0); + icon = ld; + } else { + icon = res.getDrawable(waypointType.markerId); + } + nameView.setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null); + } } private class InventoryViewCreator extends AbstractCachingPageViewCreator<ListView> { |
