package com.vaguehope.onosendai.payload;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.view.View;
import android.widget.TextView;
import com.vaguehope.onosendai.R;
import com.vaguehope.onosendai.images.ImageLoader;
import com.vaguehope.onosendai.model.Meta;
import com.vaguehope.onosendai.model.Tweet;
import com.vaguehope.onosendai.util.EqualHelper;
public class LinkPayload extends Payload {
private final String url;
private final CharSequence title;
public LinkPayload (final Tweet ownerTweet, final Meta meta) {
this(ownerTweet, meta, meta.getData(), meta.getTitle());
}
public LinkPayload (final Tweet ownerTweet, final String url) {
this(ownerTweet, null, url, null);
}
public LinkPayload (final Tweet ownerTweet, final Meta meta, final String url, final CharSequence title) {
super(ownerTweet, meta, PayloadType.LINK);
this.url = url;
this.title = title != null ? title : url;
}
private boolean hasSubtext () {
return !this.title.equals(this.url);
}
@Override
public CharSequence getTitle () {
return this.title;
}
@Override
public boolean intentable () {
return true;
}
@Override
public Intent toIntent (final Context context) {
final Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(this.url));
return i;
}
@Override
public PayloadLayout getLayout () {
if (hasSubtext()) return PayloadLayout.TEXT_SUBTEXT;
return super.getLayout();
}
@Override
public PayloadRowView makeRowView (final View view) {
if (hasSubtext()) return new PayloadRowView((TextView) view.findViewById(R.id.txtMain), (TextView) view.findViewById(R.id.txtSubtext));
return super.makeRowView(view);
}
@Override
public void applyTo (final PayloadRowView rowView, final ImageLoader imageLoader, final int reqWidth, final PayloadClickListener clickListener) {
super.applyTo(rowView, imageLoader, reqWidth, clickListener);
if (hasSubtext()) rowView.setSecondaryText(this.url);
}
@Override
public int hashCode () {
return this.url.hashCode();
}
@Override
public boolean equals (final Object o) {
if (o == null) return false;
if (o == this) return true;
if (!(o instanceof LinkPayload)) return false;
final LinkPayload that = (LinkPayload) o;
return EqualHelper.equal(this.url, that.url);
}
}