package com.abewy.android.apps.klyph.adapter.fql;
import java.util.ArrayList;
import android.content.Intent;
import android.content.res.Resources;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.abewy.android.apps.klyph.KlyphBundleExtras;
import com.abewy.android.apps.klyph.R;
import com.abewy.android.apps.klyph.adapter.KlyphAdapter;
import com.abewy.android.apps.klyph.adapter.holder.ElementTimelineHolder;
import com.abewy.android.apps.klyph.app.ImageActivity;
import com.abewy.android.apps.klyph.core.fql.Page;
import com.abewy.android.apps.klyph.core.fql.User;
import com.abewy.android.apps.klyph.core.graph.GraphObject;
import com.abewy.android.apps.klyph.core.util.AttrUtil;
import com.abewy.android.apps.klyph.util.KlyphUtil;
import com.abewy.android.apps.klyph.widget.coverImage.UserCoverImageView;
public class ElementTimelineAdapter extends KlyphAdapter
{
private int placeHolder = -1;
public ElementTimelineAdapter()
{
super();
}
@Override
protected int getLayout()
{
return R.layout.item_element_timeline;
}
@Override
public boolean isEnabled(GraphObject object)
{
return false;
}
@Override
protected void attachHolder(View view)
{
ImageView elementCoverImage = (ImageView) view.findViewById(R.id.element_cover_image);
ImageView elementProfileImage = (ImageView) view.findViewById(R.id.element_profile_image);
TextView elementDetail1 = (TextView) view.findViewById(R.id.element_detail_1);
TextView elementDetail2 = (TextView) view.findViewById(R.id.element_detail_2);
TextView elementDetail3 = (TextView) view.findViewById(R.id.element_detail_3);
TextView elementDetail4 = (TextView) view.findViewById(R.id.element_detail_4);
TextView likes = (TextView) view.findViewById(R.id.likes);
TextView talkAbout = (TextView) view.findViewById(R.id.talk_about);
view.setTag(new ElementTimelineHolder(elementCoverImage, elementProfileImage, elementDetail1, elementDetail2,
elementDetail3, elementDetail4, likes, talkAbout));
}
@Override
protected void mergeViewWithData(final View view, final GraphObject data)
{
super.mergeViewWithData(view, data);
Log.d("ElementTimeline", "mergeData");
ElementTimelineHolder holder = (ElementTimelineHolder) view.getTag();
holder.getElementCoverImage().setOnClickListener(null);
holder.getElementProfileImage().setOnClickListener(null);
if (placeHolder == -1)
placeHolder = AttrUtil.getResourceId(getContext(holder.getElementCoverImage()), R.attr.squarePlaceHolderIcon);
if (data instanceof User)
{
manageUser(view, holder, (User) data);
holder.getElementProfileImage().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
Intent intent = new Intent(getContext(view), ImageActivity.class);
intent.putExtra(KlyphBundleExtras.USER_ID, ((User) data).getUid());
getContext(view).startActivity(intent);
}
});
}
else if (data instanceof Page)
{
managePage(view, holder, (Page) data);
holder.getElementProfileImage().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
Intent intent = new Intent(getContext(view), ImageActivity.class);
intent.putExtra(KlyphBundleExtras.USER_ID, ((Page) data).getPage_id());
getContext(view).startActivity(intent);
}
});
}
}
private void manageUser(View view, ElementTimelineHolder holder, User user)
{
// User can have no cover image
String source = user.getPic_cover().getSource();
if (source != null && source.length() > 0)
{
UserCoverImageView userCoverImageView = (UserCoverImageView) holder.getElementCoverImage();
userCoverImageView.setOffset(user.getPic_cover().getOffset_y());
loadImage(holder.getElementCoverImage(), source, true);
}
else
holder.getElementCoverImage().setImageResource(placeHolder);
loadImage(holder.getElementProfileImage(), user.getPic(), KlyphUtil.getProfilePlaceHolder(view.getContext()), true);
ArrayList<String> data = new ArrayList<String>();
Resources res = getContext(view).getResources();
if (user.getSex().length() > 0)
data.add(res.getString(R.string.user_about_sex, user.getSex()));
if (user.getBirthday().length() > 0)
data.add(res.getString(R.string.user_about_birthday, user.getBirthday()));
if (user.getRelationship_status().length() > 0)
data.add(res.getString(R.string.user_about_ralationship_status, user.getRelationship_status()));
/*
* if (user.getLocation() != null &&
* user.getLocation().getName().length() > 0) data.add("Habite à : " +
* user.getLocation().getName()); if (user.getHometown() != null &&
* user.getHometown().getName().length() > 0) data.add("Originaire de : "
* + user.getHometown().getName());
*/
// work
// study
ArrayList<TextView> elementDetails = new ArrayList<TextView>();
elementDetails.add(holder.getElementDetail1());
elementDetails.add(holder.getElementDetail2());
elementDetails.add(holder.getElementDetail3());
elementDetails.add(holder.getElementDetail4());
elementDetails.add(holder.getLikes());
elementDetails.add(holder.getTalkAbout());
for (TextView tv : elementDetails)
{
tv.setVisibility(View.GONE);
}
for (int i = 0; i < data.size(); i++)
{
if (i > elementDetails.size() - 3)
break;
TextView tv = elementDetails.get(i);
tv.setText(data.get(i));
tv.setVisibility(View.VISIBLE);
}
}
private void managePage(View view, ElementTimelineHolder holder, Page page)
{
String source = page.getPic_cover().getSource();
if (source != null && source.length() > 0)
{
UserCoverImageView userCoverImageView = (UserCoverImageView) holder.getElementCoverImage();
userCoverImageView.setOffset(page.getPic_cover().getOffset_y());
loadImage(holder.getElementCoverImage(), source, 0, false);
}
else
{
holder.getElementCoverImage().setImageResource(placeHolder);
}
loadImage(holder.getElementProfileImage(), page.getPic(), KlyphUtil.getProfilePlaceHolder(view.getContext()), true);
ArrayList<TextView> elementDetails = new ArrayList<TextView>();
elementDetails.add(holder.getElementDetail1());
elementDetails.add(holder.getElementDetail2());
elementDetails.add(holder.getElementDetail3());
elementDetails.add(holder.getElementDetail4());
elementDetails.add(holder.getLikes());
elementDetails.add(holder.getTalkAbout());
for (TextView tv : elementDetails)
{
tv.setVisibility(View.VISIBLE);
}
holder.getElementDetail1().setText(page.getType().toUpperCase());
holder.getElementDetail2().setText(page.getAbout());
int n = page.getFan_count();
if (n == 0)
{
holder.getLikes().setText(R.string.no_like);
}
else if (n == 1)
{
holder.getLikes().setText(R.string.one_like);
}
else
{
holder.getLikes().setText(getContext(view).getResources().getString(R.string.several_likes, n));
}
n = page.getTalking_about_count();
if (n == 0)
{
holder.getTalkAbout().setText(R.string.noone_talk_about_it);
}
else if (n == 1)
{
holder.getTalkAbout().setText(R.string.one_talk_about_it);
}
else
{
holder.getTalkAbout().setText(getContext(view).getResources().getString(R.string.several_talk_about_it, n));
}
holder.getElementDetail3().setVisibility(View.GONE);
holder.getElementDetail4().setVisibility(View.GONE);
// if (page.isTvShow())
}
}