package com.vaguehope.onosendai.payload;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
import com.vaguehope.onosendai.R;
import com.vaguehope.onosendai.images.ImageLoader;
import com.vaguehope.onosendai.model.Tweet;
import com.vaguehope.onosendai.provider.NetworkType;
public class SharePayload extends Payload {
public static final int BTN_SHARE_RT = 100;
public static final int BTN_SHARE_QUOTE = 101;
public static final int BTN_SHARE_FAV = 102;
public static final int BTN_SHARE_INTENT = 103;
private static final Map<Integer, Integer> BTNS;
static {
final Map<Integer, Integer> m = new LinkedHashMap<Integer, Integer>();
m.put(BTN_SHARE_RT, R.id.btnShareRt);
m.put(BTN_SHARE_QUOTE, R.id.btnShareQuote);
m.put(BTN_SHARE_FAV, R.id.btnShareFav);
m.put(BTN_SHARE_INTENT, R.id.btnShareIntent);
BTNS = Collections.unmodifiableMap(m);
}
private final NetworkType networkType;
public SharePayload (final Tweet ownerTweet) {
this(ownerTweet, null);
}
public SharePayload (final Tweet ownerTweet, final NetworkType networkType) {
super(ownerTweet, null, PayloadType.SHARE);
this.networkType = networkType;
}
public NetworkType getNetworkType () {
return this.networkType;
}
@Override
public String getTitle () {
return "Share";
}
@Override
public PayloadLayout getLayout () {
return PayloadLayout.SHARE;
}
@Override
public PayloadRowView makeRowView (final View view) {
final Map<Integer, View> btns = new LinkedHashMap<Integer, View>();
for (final Entry<Integer, Integer> btn : BTNS.entrySet()) {
btns.put(btn.getKey(), view.findViewById(btn.getValue()));
}
return new PayloadRowView(btns);
}
@Override
public void applyTo (final PayloadRowView rowView, final ImageLoader imageLoader, final int reqWidth, final PayloadClickListener clickListener) {
final Map<Integer, View> btns = rowView.getButtons();
final TextView btnRt = (TextView) btns.get(BTN_SHARE_RT);
final View btnFav = btns.get(BTN_SHARE_FAV);
if (this.networkType != null) {
switch (this.networkType) {
case TWITTER:
btnRt.setText(R.string.tweetlist_details_rt);
btnRt.setVisibility(View.VISIBLE);
break;
case FACEBOOK:
btnRt.setText(R.string.tweetlist_details_like);
btnRt.setVisibility(View.VISIBLE);
btnFav.setVisibility(View.GONE);
break;
default:
btnRt.setVisibility(View.GONE);
}
}
else {
btnRt.setVisibility(View.GONE);
}
for (final Entry<Integer, View> btn : btns.entrySet()) {
btn.getValue().setOnClickListener(new BtnListener(this, clickListener, btn.getKey()));
}
}
private static class BtnListener implements OnClickListener {
private final Payload payload;
private final PayloadClickListener clickListener;
private final int index;
public BtnListener (final Payload payload, final PayloadClickListener clickListener, final int index) {
this.payload = payload;
this.clickListener = clickListener;
this.index = index;
}
@Override
public void onClick (final View v) {
this.clickListener.subviewClicked(v, this.payload, this.index);
}
}
}