/**
*
*/
package com.photoshare.view;
import android.graphics.drawable.Drawable;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.photoshare.common.IObserver;
import com.photoshare.msg.MsgType;
import com.photoshare.service.users.UserInfo;
import com.photoshare.tabHost.R;
import com.photoshare.utils.async.AsyncImageLoader.ImageCallback;
import com.photoshare.utils.async.AsyncUtils;
/**
* @author Aron
*
* OtherHomeTitleBarView displays views other users home titlebar.
*
*/
public class OtherHomeTitleBarView {
private View baseView;
private ImageView mUserHomeHeadView;
private TextView mUserHomePhotosCntView;
private UserTextView mUserHomeLikesCntView;
private UserTextView mUserHomeFollowersCntView;
private UserTextView mUserHomeFollowingCntView;
private UserTextView mUserNameView;
private TextView mUserBioView;
private UserTextView mUserWebsiteView;
private UserBooleanBtn mUserFollowBtn;
private UserInfo userInfo;
private AsyncUtils async;
/**
* @param baseView
* @param userInfo
* @param async
*/
public OtherHomeTitleBarView(View baseView, UserInfo userInfo,
AsyncUtils async) {
super();
this.baseView = baseView;
this.userInfo = userInfo;
this.async = async;
}
public void applyData(UserInfo info) {
this.userInfo = info;
applyView();
}
public void applyView() {
mUserBioView = (TextView) baseView.findViewById(R.id.otherHomeBio);
mUserFollowBtn = new UserBooleanBtn(baseView, R.id.otherHomeFollowBtn,
userInfo.isFollowing(), MsgType.FOLLOW.getEnabledString(),
MsgType.FOLLOW.getIntermediateString(),
MsgType.FOLLOW.getDisabledString());
mUserFollowBtn.registerListener(onObserverClickListener);
mUserFollowBtn.applyView();
mUserHomeFollowersCntView = new UserTextView(
(TextView) baseView.findViewById(R.id.otherHomeFollowerCnt),
userInfo, userInfo.getFollowersCnt() + "\r\n 跟随者");
mUserHomeFollowersCntView.registerListener(followerCntListener);
mUserHomeFollowingCntView = new UserTextView(
(TextView) baseView.findViewById(R.id.otherHomeFollowingCnt),
userInfo, userInfo.getFollowingCnt() + "\r\n 跟随");
mUserHomeFollowingCntView.registerListener(followingCntListener);
mUserHomeHeadView = (ImageView) baseView
.findViewById(R.id.otherHomeHead);
mUserHomeLikesCntView = new UserTextView(
(TextView) baseView.findViewById(R.id.otherHomeLikesCnt),
userInfo, userInfo.getLikesCnt() + "\r\n 喜欢");
mUserHomeLikesCntView.registerListener(likeCntListener);
mUserHomePhotosCntView = (TextView) baseView
.findViewById(R.id.otherHomePhotoCnt);
mUserWebsiteView = new UserTextView(
(TextView) baseView.findViewById(R.id.otherHomeWebsite),
userInfo, userInfo.getWebsite());
mUserWebsiteView.registerListener(websiteListener);
mUserNameView = new UserTextView(
(TextView) baseView.findViewById(R.id.otherHomeName), userInfo,
userInfo.getName());
mUserNameView.registerListener(nameListener);
mUserBioView.setText(userInfo.getBio());
mUserHomePhotosCntView.setText(userInfo.getPhotosCnt() + "\r\n 鐓х墖");
async.loadDrawableFromWeb(userInfo.getTinyurl(), new ImageCallback() {
public void imageLoaded(Drawable imageDrawable, String imageUrl) {
if (mCallback != null) {
mCallback.OnUserHeadLoaded(mUserHomeHeadView,
imageDrawable, imageUrl);
}
}
public void imageDefault() {
if (mCallback != null) {
mCallback.OnDefault(mUserHomeHeadView);
}
}
});
}
private UserBooleanBtn.OnObserverClickListener onObserverClickListener = new UserBooleanBtn.OnObserverClickListener() {
public void OnClick(IObserver<Boolean> observer) {
if (mCallback != null) {
mCallback.OnFollowClick(userInfo, observer);
}
}
};
private UserTextView.UserTextOnClickListener followerCntListener = new UserTextView.UserTextOnClickListener() {
public void OnClick(UserInfo info) {
if (mCallback != null) {
mCallback.OnFollowerCntClick(info);
}
}
};
private UserTextView.UserTextOnClickListener followingCntListener = new UserTextView.UserTextOnClickListener() {
public void OnClick(UserInfo info) {
if (mCallback != null) {
mCallback.OnFollowingCntClick(info);
}
}
};
private UserTextView.UserTextOnClickListener likeCntListener = new UserTextView.UserTextOnClickListener() {
public void OnClick(UserInfo info) {
if (mCallback != null) {
mCallback.OnLikesCntClick(info);
}
}
};
private UserTextView.UserTextOnClickListener nameListener = new UserTextView.UserTextOnClickListener() {
public void OnClick(UserInfo info) {
if (mCallback != null) {
mCallback.OnNameClick(info);
}
}
};
private UserTextView.UserTextOnClickListener websiteListener = new UserTextView.UserTextOnClickListener() {
public void OnClick(UserInfo info) {
if (mCallback != null) {
mCallback.OnWebsiteClick(info);
}
}
};
private ICallback mCallback;
public void registerCallback(ICallback callback) {
this.mCallback = callback;
}
public interface ICallback {
public void OnFollowerCntClick(UserInfo info);
public void OnFollowingCntClick(UserInfo info);
public void OnLikesCntClick(UserInfo info);
public void OnNameClick(UserInfo info);
public void OnWebsiteClick(UserInfo info);
public void OnFollowClick(UserInfo info, IObserver<Boolean> observer);
public void OnUserHeadLoaded(ImageView imageView, Drawable photo,
String url);
public void OnDefault(ImageView imageView);
}
}