package org.wikipedia.feed.announcement;
import android.content.Context;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import android.text.method.LinkMovementMethod;
import android.widget.TextView;
import org.wikipedia.R;
import org.wikipedia.feed.model.Card;
import org.wikipedia.feed.view.DefaultFeedCardView;
import org.wikipedia.util.StringUtil;
import org.wikipedia.views.FaceAndColorDetectImageView;
import org.wikipedia.views.ItemTouchHelperSwipeAdapter;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
public class AnnouncementCardView extends DefaultFeedCardView<AnnouncementCard>
implements ItemTouchHelperSwipeAdapter.SwipeableView {
public interface Callback {
void onAnnouncementPositiveAction(@NonNull Card card, @NonNull Uri uri);
void onAnnouncementNegativeAction(@NonNull Card card);
}
@BindView(R.id.view_announcement_header_image) FaceAndColorDetectImageView headerImageView;
@BindView(R.id.view_announcement_text) TextView textView;
@BindView(R.id.view_announcement_action_positive) TextView actionViewPositive;
@BindView(R.id.view_announcement_action_negative) TextView actionViewNegative;
@BindView(R.id.view_announcement_footer_text) TextView footerTextView;
public AnnouncementCardView(@NonNull Context context) {
super(context);
inflate(context, R.layout.view_card_announcement, this);
ButterKnife.bind(this);
setNegativeActionVisible(true);
footerTextView.setMovementMethod(new LinkMovementMethod());
}
@Override public void setCard(@NonNull AnnouncementCard card) {
super.setCard(card);
if (!TextUtils.isEmpty(card.extract())) {
textView.setText(StringUtil.fromHtml(card.extract()));
}
if (!card.hasAction()) {
actionViewPositive.setVisibility(GONE);
actionViewNegative.setVisibility(GONE);
} else {
actionViewPositive.setVisibility(VISIBLE);
actionViewNegative.setVisibility(VISIBLE);
actionViewPositive.setText(card.actionTitle());
}
if (card.hasImage()) {
headerImageView.setVisibility(VISIBLE);
headerImageView.loadImage(card.image());
} else {
headerImageView.setVisibility(GONE);
}
if (card.hasFooterCaption()) {
footerTextView.setText(StringUtil.fromHtml(card.footerCaption()));
}
}
@OnClick(R.id.view_announcement_action_positive)
void onPositiveActionClick() {
if (getCallback() != null && getCard() != null) {
getCallback().onAnnouncementPositiveAction(getCard(), getCard().actionUri());
}
}
@OnClick(R.id.view_announcement_action_negative)
void onNegativeActionClick() {
if (getCallback() != null && getCard() != null) {
getCallback().onAnnouncementNegativeAction(getCard());
}
}
protected void setNegativeActionVisible(boolean visible) {
actionViewNegative.setVisibility(visible ? VISIBLE : GONE);
}
}