aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/TrackableActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/TrackableActivity.java')
-rw-r--r--main/src/cgeo/geocaching/TrackableActivity.java119
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;
}