package cgeo.geocaching.log;
import cgeo.geocaching.CacheDetailActivity;
import cgeo.geocaching.TrackableActivity;
import cgeo.geocaching.connector.ConnectorFactory;
import cgeo.geocaching.models.Trackable;
import cgeo.geocaching.ui.UserActionsClickListener;
import cgeo.geocaching.utils.TextUtils;
import android.text.Html;
import android.view.View;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
public class TrackableLogsViewCreator extends LogsViewCreator {
private Trackable trackable;
private final TrackableActivity trackableActivity;
/**
*/
public TrackableLogsViewCreator(final TrackableActivity trackableActivity) {
super(trackableActivity);
this.trackableActivity = trackableActivity;
trackable = trackableActivity.getTrackable();
}
@Override
protected boolean isValid() {
return trackable != null;
}
@Override
protected List<LogEntry> getLogs() {
trackable = trackableActivity.getTrackable();
return trackable.getLogs();
}
@Override
protected void addHeaderView() {
// empty
}
@Override
protected void fillCountOrLocation(final LogViewHolder holder, final LogEntry log) {
if (StringUtils.isNotBlank(log.cacheName)) {
holder.countOrLocation.setText(Html.fromHtml(log.cacheName));
holder.countOrLocation.setVisibility(View.VISIBLE);
final String cacheGuid = log.cacheGuid;
final String cacheName = log.cacheName;
holder.countOrLocation.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View arg0) {
if (StringUtils.isNotBlank(cacheGuid)) {
CacheDetailActivity.startActivityGuid(activity, cacheGuid, TextUtils.stripHtml(cacheName));
} else {
// for GeoKrety we only know the cache geocode
final String cacheGeocode = log.cacheGeocode;
if (ConnectorFactory.canHandle(cacheGeocode)) {
CacheDetailActivity.startActivity(activity, cacheGeocode);
}
}
}
});
} else {
holder.countOrLocation.setVisibility(View.GONE);
}
}
@Override
protected String getGeocode() {
return trackable.getGeocode();
}
@Override
protected UserActionsClickListener createUserActionsListener() {
return new UserActionsClickListener(trackable);
}
}