package com.yaoyumeng.v2ex.ui.fragment;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.readystatesoftware.viewbadger.BadgeView;
import com.yaoyumeng.v2ex.R;
import com.yaoyumeng.v2ex.api.HttpRequestHandler;
import com.yaoyumeng.v2ex.api.V2EXManager;
import com.yaoyumeng.v2ex.model.ProfileModel;
import com.yaoyumeng.v2ex.ui.LoginActivity;
import com.yaoyumeng.v2ex.ui.MyInfoActivity;
import com.yaoyumeng.v2ex.ui.SettingsActivity;
import com.yaoyumeng.v2ex.ui.UserActivity;
import com.yaoyumeng.v2ex.utils.AccountUtils;
import com.yaoyumeng.v2ex.utils.MessageUtils;
/**
* Created by yw on 2015/6/11.
*/
public class MyInfoFragment extends BaseFragment implements View.OnClickListener {
private ImageView mUserAvatar;
private TextView mUserNickname;
private BadgeView mNotifyCount;
private TextView mTopicCount;
private TextView mNodeCount;
private TextView mFollowingCount;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_my_info, container, false);
View userLayout = rootView.findViewById(R.id.user_layout);
mUserAvatar = (ImageView) rootView.findViewById(R.id.user_avatar);
mUserNickname = (TextView) rootView.findViewById(R.id.user_nickname);
View nodesFavorite = rootView.findViewById(R.id.nodesFavorite);
mNodeCount = (TextView) rootView.findViewById(R.id.countOfNodes);
View topicsFavorite = rootView.findViewById(R.id.topicsFavorite);
mTopicCount = (TextView) rootView.findViewById(R.id.countOfTopics);
View myFollowing = rootView.findViewById(R.id.myFollowing);
mFollowingCount = (TextView) rootView.findViewById(R.id.countOfFollowing);
View notifyLayout = rootView.findViewById(R.id.notificationLayout);
mNotifyCount = (BadgeView) rootView.findViewById(R.id.badgeOfNotification);
View settings = rootView.findViewById(R.id.settings);
View checkIn = rootView.findViewById(R.id.checkIn);
mNodeCount.setVisibility(View.INVISIBLE);
mTopicCount.setVisibility(View.INVISIBLE);
mFollowingCount.setVisibility(View.INVISIBLE);
mNotifyCount.setVisibility(View.INVISIBLE);
userLayout.setOnClickListener(this);
nodesFavorite.setOnClickListener(this);
topicsFavorite.setOnClickListener(this);
myFollowing.setOnClickListener(this);
notifyLayout.setOnClickListener(this);
settings.setOnClickListener(this);
checkIn.setOnClickListener(this);
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (mIsLogin) {
updateProfileUi(mLoginProfile);
refreshProfile();
}
}
@Override
public void onLogin(ProfileModel profile) {
super.onLogin(profile);
updateProfileUi(profile);
AccountUtils.refreshFavoriteNodes(getActivity(), null);
}
@Override
public void onLogout() {
super.onLogout();
mUserNickname.setText(R.string.login_please_login);
mUserNickname.setTextColor(getResources().getColor(R.color.gray_b2));
mUserAvatar.setImageResource(R.drawable.ic_avatar);
mNotifyCount.setVisibility(View.INVISIBLE);
mNodeCount.setVisibility(View.INVISIBLE);
mTopicCount.setVisibility(View.INVISIBLE);
mFollowingCount.setVisibility(View.INVISIBLE);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.user_layout:
if (!willLaunchLoginActivity()) {
Intent intent = new Intent(getActivity(), UserActivity.class);
intent.putExtra("username", mLoginProfile.username);
startActivity(intent);
}
break;
case R.id.nodesFavorite:
if (!willLaunchLoginActivity()) {
Intent intent = new Intent(getActivity(), MyInfoActivity.class);
intent.putExtra("type", MyInfoActivity.TypeMyNodesFavorite);
startActivity(intent);
}
break;
case R.id.topicsFavorite:
if (!willLaunchLoginActivity()) {
Intent intent = new Intent(getActivity(), MyInfoActivity.class);
intent.putExtra("type", MyInfoActivity.TypeMyTopicsFavorite);
startActivity(intent);
}
break;
case R.id.myFollowing:
if (!willLaunchLoginActivity()) {
Intent intent = new Intent(getActivity(), MyInfoActivity.class);
intent.putExtra("type", MyInfoActivity.TypeMyFollowings);
startActivity(intent);
}
break;
case R.id.notificationLayout:
if (!willLaunchLoginActivity()) {
//将未读消息清零,并持久化
mNotifyCount.setVisibility(View.INVISIBLE);
mLoginProfile.notifications = 0;
AccountUtils.writeLoginMember(getActivity(), mLoginProfile, false);
//显示未读消息
Intent intent = new Intent(getActivity(), MyInfoActivity.class);
intent.putExtra("type", MyInfoActivity.TypeMyNotifications);
startActivity(intent);
}
break;
case R.id.settings:
Intent intent = new Intent(getActivity(), SettingsActivity.class);
startActivity(intent);
break;
case R.id.checkIn:
if (!willLaunchLoginActivity()) {
checkIn();
}
break;
}
}
private boolean willLaunchLoginActivity() {
if (!mIsLogin) {
Intent intent2 = new Intent(getActivity(), LoginActivity.class);
startActivity(intent2);
return true;
} else {
return false;
}
}
private void updateProfileUi(ProfileModel profile) {
mUserNickname.setText(profile.username);
mUserNickname.setTextColor(getResources().getColor(R.color.gray_22));
ImageLoader.getInstance().displayImage(profile.avatar, mUserAvatar);
if (profile.notifications == 0) {
mNotifyCount.setVisibility(View.INVISIBLE);
} else {
mNotifyCount.setText(String.format("%d", profile.notifications));
mNotifyCount.setVisibility(View.VISIBLE);
}
mNodeCount.setText(String.format("%d", profile.nodes));
mNodeCount.setVisibility(View.VISIBLE);
mTopicCount.setText(String.format("%d", profile.topics));
mTopicCount.setVisibility(View.VISIBLE);
mFollowingCount.setText(String.format("%d", profile.followings));
mFollowingCount.setVisibility(View.VISIBLE);
}
//刷新用户资料:包括节点收藏,话题收藏等
private void refreshProfile() {
AccountUtils.refreshProfile(getActivity());
}
private void checkIn() {
V2EXManager.dailyCheckIn(getActivity(), new HttpRequestHandler<Integer>() {
@Override
public void onSuccess(Integer data) {
MessageUtils.showToast(getActivity(), "签到成功");
}
@Override
public void onSuccess(Integer data, int totalPages, int currentPage) {
}
@Override
public void onFailure(String error) {
MessageUtils.showToast(getActivity(), error);
}
});
}
}