package shts.jp.android.nogifeed.views;
import android.content.Context;
import android.content.res.Resources;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.util.List;
import me.gujun.android.taggroup.TagGroup;
import rx.Subscriber;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
import rx.subscriptions.CompositeSubscription;
import shts.jp.android.nogifeed.R;
import shts.jp.android.nogifeed.api.NogiFeedApiClient;
import shts.jp.android.nogifeed.models.Member;
import shts.jp.android.nogifeed.providers.FavoriteContentObserver;
import shts.jp.android.nogifeed.providers.dao.Favorites;
import shts.jp.android.nogifeed.utils.PicassoHelper;
public class ViewMemberDetailHeader extends LinearLayout {
private View rootView;
private ImageView profileImageView;
private ImageView favoriteIcon;
private TextView nameMainTextView;
private TextView nameSubTextView;
private TextView birthdayTextView;
private TextView bloodTypeTextView;
private TextView constellationTextView;
private TextView heightTextView;
private TagGroup tags;
public ViewMemberDetailHeader(Context context) {
this(context, null);
}
public ViewMemberDetailHeader(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
rootView = LayoutInflater.from(getContext()).inflate(R.layout.view_member_detail_header, this);
profileImageView = (ImageView) rootView.findViewById(R.id.profile_image);
favoriteIcon = (ImageView) rootView.findViewById(R.id.favorite_icon);
nameMainTextView = (TextView) rootView.findViewById(R.id.name_main);
nameSubTextView = (TextView) rootView.findViewById(R.id.name_sub);
birthdayTextView = (TextView) rootView.findViewById(R.id.birthday);
bloodTypeTextView = (TextView) rootView.findViewById(R.id.blood_type);
constellationTextView = (TextView) rootView.findViewById(R.id.constellation);
heightTextView = (TextView) rootView.findViewById(R.id.height);
tags = (TagGroup) rootView.findViewById(R.id.tags);
}
private CompositeSubscription subscriptions = new CompositeSubscription();
public void setup(int memberId) {
if (Favorites.exist(getContext(), memberId)) {
favoriteIcon.setVisibility(View.VISIBLE);
} else {
favoriteIcon.setVisibility(View.GONE);
}
subscriptions.add(NogiFeedApiClient.getMember(memberId)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<Member>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Member member) {
if (TextUtils.isEmpty(member.getImageUrl())) {
profileImageView.setImageResource(R.drawable.kensyusei);
birthdayTextView.setVisibility(View.GONE);
bloodTypeTextView.setVisibility(View.GONE);
constellationTextView.setVisibility(View.GONE);
heightTextView.setVisibility(View.GONE);
tags.setVisibility(View.GONE);
} else {
final String profileImageUrl = member.getImageUrl();
PicassoHelper.loadAndCircleTransform(
getContext(), profileImageView, profileImageUrl);
nameSubTextView.setText(member.getNameSub());
final Resources res = getContext().getResources();
birthdayTextView.setText(res.getString(R.string.property_name_birthday, member.getBirthday()));
bloodTypeTextView.setText(res.getString(R.string.property_name_blood_type, member.getBloodType()));
constellationTextView.setText(res.getString(R.string.property_name_constellation, member.getConstellation()));
heightTextView.setText(res.getString(R.string.property_name_height, member.getHeight()));
List<String> statusList = member.getStatus();
if (statusList != null && !statusList.isEmpty()) {
tags.setTags(member.getStatus());
}
}
nameMainTextView.setText(member.getNameMain());
}
}));
}
private FavoriteContentObserver favoriteContentObserver = new FavoriteContentObserver() {
@Override
public void onChangeState(@State int state) {
if (state == State.ADD) {
favoriteIcon.setVisibility(View.VISIBLE);
} else {
favoriteIcon.setVisibility(View.GONE);
}
}
};
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
favoriteContentObserver.register(getContext());
}
@Override
protected void onDetachedFromWindow() {
favoriteContentObserver.unregister(getContext());
super.onDetachedFromWindow();
}
}