diff options
Diffstat (limited to 'main/src/cgeo/geocaching/TrackableActivity.java')
| -rw-r--r-- | main/src/cgeo/geocaching/TrackableActivity.java | 119 |
1 files changed, 53 insertions, 66 deletions
diff --git a/main/src/cgeo/geocaching/TrackableActivity.java b/main/src/cgeo/geocaching/TrackableActivity.java index fea4521..80ffc09 100644 --- a/main/src/cgeo/geocaching/TrackableActivity.java +++ b/main/src/cgeo/geocaching/TrackableActivity.java @@ -1,5 +1,8 @@ package cgeo.geocaching; +import butterknife.InjectView; +import butterknife.Views; + import cgeo.geocaching.activity.AbstractActivity; import cgeo.geocaching.activity.AbstractViewPagerActivity; import cgeo.geocaching.connector.gc.GCParser; @@ -8,6 +11,7 @@ import cgeo.geocaching.geopoint.Units; import cgeo.geocaching.network.HtmlImage; import cgeo.geocaching.network.Network; import cgeo.geocaching.ui.AbstractCachingPageViewCreator; +import cgeo.geocaching.ui.AnchorAwareLinkMovementMethod; import cgeo.geocaching.ui.CacheDetailsCreator; import cgeo.geocaching.ui.Formatter; import cgeo.geocaching.utils.BaseUtils; @@ -26,7 +30,6 @@ import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.Html; -import android.text.method.LinkMovementMethod; import android.view.ContextMenu; import android.view.LayoutInflater; import android.view.Menu; @@ -56,8 +59,6 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi this.resId = resId; } } - private static final int MENU_LOG_TOUCH = 1; - private static final int MENU_BROWSER_TRACKABLE = 2; private Trackable trackable = null; private String geocode = null; private String name = null; @@ -108,16 +109,11 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi } }; - public TrackableActivity() { - super("c:geo-trackable-details"); - } - @Override public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); + super.onCreate(savedInstanceState, R.layout.trackable_activity); - setTheme(); - setContentView(R.layout.trackable_activity); + // set title in code, as the activity needs a hard coded title due to the intent filters setTitle(res.getString(R.string.trackable)); // get parameters @@ -241,18 +237,17 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi @Override public boolean onCreateOptionsMenu(Menu menu) { - menu.add(0, MENU_LOG_TOUCH, 0, res.getString(R.string.trackable_log_touch)).setIcon(R.drawable.ic_menu_agenda); // log touch - menu.add(0, MENU_BROWSER_TRACKABLE, 0, res.getString(R.string.trackable_browser_open)).setIcon(R.drawable.ic_menu_info_details); // browser + getMenuInflater().inflate(R.menu.trackable_activity, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { - case MENU_LOG_TOUCH: + case R.id.menu_log_touch: LogTrackableActivity.startActivity(this, trackable); return true; - case MENU_BROWSER_TRACKABLE: + case R.id.menu_browser_trackable: startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(trackable.getUrl()))); return true; default: @@ -263,8 +258,8 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi @Override public boolean onPrepareOptionsMenu(Menu menu) { if (trackable != null) { - menu.findItem(MENU_LOG_TOUCH).setEnabled(StringUtils.isNotBlank(geocode) && trackable.isLoggable()); - menu.findItem(MENU_BROWSER_TRACKABLE).setEnabled(StringUtils.isNotBlank(trackable.getUrl())); + menu.findItem(R.id.menu_log_touch).setEnabled(StringUtils.isNotBlank(geocode) && trackable.isLoggable()); + menu.findItem(R.id.menu_browser_trackable).setEnabled(StringUtils.isNotBlank(trackable.getUrl())); } return super.onPrepareOptionsMenu(menu); } @@ -392,24 +387,18 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi public class LogsViewCreator extends AbstractCachingPageViewCreator<ListView> { - private class LogViewHolder { - - private final TextView added; - private final TextView type; - private final TextView author; - private final TextView location; - private final TextView log; - private final ImageView marker; - private final LinearLayout logImages; + protected class LogViewHolder { + @InjectView(R.id.added) protected TextView added ; + @InjectView(R.id.type) protected TextView type; + @InjectView(R.id.author) protected TextView author; + @InjectView(R.id.location) protected TextView location; + @InjectView(R.id.log) protected TextView text; + @InjectView(R.id.log_images) protected TextView images; + @InjectView(R.id.log_mark) protected ImageView marker; public LogViewHolder(View rowView) { - added = ((TextView) rowView.findViewById(R.id.added)); - type = ((TextView) rowView.findViewById(R.id.type)); - author = ((TextView) rowView.findViewById(R.id.author)); - location = ((TextView) rowView.findViewById(R.id.location)); - log = (TextView) rowView.findViewById(R.id.log); - marker = (ImageView) rowView.findViewById(R.id.log_mark); - logImages = (LinearLayout) rowView.findViewById(R.id.log_layout); + Views.inject(this, rowView); + rowView.setTag(this); } } @@ -428,7 +417,6 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi LogViewHolder holder = (LogViewHolder) rowView.getTag(); if (null == holder) { holder = new LogViewHolder(rowView); - rowView.setTag(holder); } final LogEntry log = getItem(position); @@ -440,7 +428,7 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi return view; } - protected void fillViewHolder(LogViewHolder holder, LogEntry log) { + protected void fillViewHolder(LogViewHolder holder, final LogEntry log) { if (log.date > 0) { holder.added.setText(Formatter.formatShortDate(log.date)); } @@ -462,8 +450,8 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi }); } - TextView logView = holder.log; - logView.setMovementMethod(LinkMovementMethod.getInstance()); + TextView logView = holder.text; + logView.setMovementMethod(AnchorAwareLinkMovementMethod.getInstance()); String logText = log.log; if (BaseUtils.containsHtml(logText)) { @@ -485,25 +473,18 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi statusMarker.setVisibility(View.GONE); } - // add LogImages - LinearLayout logLayout = holder.logImages; - + // images if (log.hasLogImages()) { - - final ArrayList<Image> logImages = new ArrayList<Image>(log.getLogImages()); - - final View.OnClickListener listener = new View.OnClickListener() { + holder.images.setText(log.getImageTitles()); + holder.images.setVisibility(View.VISIBLE); + holder.images.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - ImagesActivity.startActivityLogImages(TrackableActivity.this, trackable.getGeocode(), logImages); + ImagesActivity.startActivityLogImages(TrackableActivity.this, trackable.getGeocode(), new ArrayList<Image>(log.getLogImages())); } - }; - - LinearLayout log_imgView = (LinearLayout) getLayoutInflater().inflate(R.layout.trackable_logs_img, null); - TextView log_img_title = (TextView) log_imgView.findViewById(R.id.title); - log_img_title.setText(log.getImageTitles()); - log_img_title.setOnClickListener(listener); - logLayout.addView(log_imgView); + }); + } else { + holder.images.setVisibility(View.GONE); } holder.author.setOnClickListener(new UserActionsListener()); @@ -513,10 +494,20 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi public class DetailsViewCreator extends AbstractCachingPageViewCreator<ScrollView> { + @InjectView(R.id.goal_box) protected View goalBox; + @InjectView(R.id.goal) protected TextView goalTextView; + @InjectView(R.id.details_box) protected View detailsBox; + @InjectView(R.id.details) protected TextView detailsTextView; + @InjectView(R.id.image_box) protected View imageBox; + @InjectView(R.id.details_list) protected LinearLayout detailsList; + @InjectView(R.id.image) protected LinearLayout imageView; + @Override public ScrollView getDispatchedView() { view = (ScrollView) getLayoutInflater().inflate(R.layout.trackable_details_view, null); - final CacheDetailsCreator details = new CacheDetailsCreator(TrackableActivity.this, (LinearLayout) view.findViewById(R.id.details_list)); + Views.inject(this, view); + + final CacheDetailsCreator details = new CacheDetailsCreator(TrackableActivity.this, detailsList); // action bar icon if (StringUtils.isNotBlank(trackable.getIconUrl())) { @@ -610,27 +601,23 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi // trackable goal if (StringUtils.isNotBlank(trackable.getGoal())) { - view.findViewById(R.id.goal_box).setVisibility(View.VISIBLE); - TextView descView = (TextView) view.findViewById(R.id.goal); - descView.setVisibility(View.VISIBLE); - descView.setText(Html.fromHtml(trackable.getGoal(), new HtmlImage(geocode, true, 0, false), null), TextView.BufferType.SPANNABLE); - descView.setMovementMethod(LinkMovementMethod.getInstance()); + goalBox.setVisibility(View.VISIBLE); + goalTextView.setVisibility(View.VISIBLE); + goalTextView.setText(Html.fromHtml(trackable.getGoal(), new HtmlImage(geocode, true, 0, false), null), TextView.BufferType.SPANNABLE); + goalTextView.setMovementMethod(AnchorAwareLinkMovementMethod.getInstance()); } // trackable details if (StringUtils.isNotBlank(trackable.getDetails())) { - view.findViewById(R.id.details_box).setVisibility(View.VISIBLE); - TextView descView = (TextView) view.findViewById(R.id.details); - descView.setVisibility(View.VISIBLE); - descView.setText(Html.fromHtml(trackable.getDetails(), new HtmlImage(geocode, true, 0, false), new UnknownTagsHandler()), TextView.BufferType.SPANNABLE); - descView.setMovementMethod(LinkMovementMethod.getInstance()); + detailsBox.setVisibility(View.VISIBLE); + detailsTextView.setVisibility(View.VISIBLE); + detailsTextView.setText(Html.fromHtml(trackable.getDetails(), new HtmlImage(geocode, true, 0, false), new UnknownTagsHandler()), TextView.BufferType.SPANNABLE); + detailsTextView.setMovementMethod(AnchorAwareLinkMovementMethod.getInstance()); } // trackable image if (StringUtils.isNotBlank(trackable.getImage())) { - view.findViewById(R.id.image_box).setVisibility(View.VISIBLE); - LinearLayout imgView = (LinearLayout) view.findViewById(R.id.image); - + imageBox.setVisibility(View.VISIBLE); final ImageView trackableImage = (ImageView) inflater.inflate(R.layout.trackable_image, null); trackableImage.setImageResource(R.drawable.image_not_loaded); @@ -671,7 +658,7 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi } }.start(); - imgView.addView(trackableImage); + imageView.addView(trackableImage); } return view; } |
