package com.qiwenge.android.fragments;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.liuguangqiang.framework.utils.DisplayUtils;
import com.liuguangqiang.framework.utils.IntentUtils;
import com.liuguangqiang.framework.utils.ToastUtils;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.qiwenge.android.R;
import com.qiwenge.android.act.FeedbackActivity;
import com.qiwenge.android.act.SettingActivity;
import com.qiwenge.android.base.BaseFragment;
import com.qiwenge.android.entity.User;
import com.qiwenge.android.entity.UserLevel;
import com.qiwenge.android.listeners.LoginListener;
import com.qiwenge.android.ui.dialogs.LoginDialog;
import com.qiwenge.android.utils.ApiUtils;
import com.qiwenge.android.utils.ImageLoaderUtils;
import com.qiwenge.android.utils.LoginManager;
import com.qiwenge.android.utils.http.JHttpClient;
import com.qiwenge.android.utils.http.JsonResponseHandler;
public class MeFragment extends BaseFragment implements View.OnClickListener {
private final static String LEVEL_FORMAT = "LV.%s (%s/%s)";
private ImageView ivAvatar;
private TextView tvUserName;
private TextView tvLevel;
private TextView tvSet;
private TextView tvRating;
private TextView tvFeedback;
private LinearLayout layoutUser;
private LoginDialog loginDialog;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_me, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
initViews();
if (LoginManager.isLogin()) {
getUser(LoginManager.getUser().getId());
}
}
@Override
public void onResume() {
super.onResume();
if (LoginManager.isLogout && !LoginManager.isLogin()) {
LoginManager.isLogout = false;
clearUser();
}
showUser();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.tv_set:
startActivity(SettingActivity.class);
break;
case R.id.tv_feed_back:
startActivity(FeedbackActivity.class);
break;
case R.id.tv_rating:
skipToMarket();
break;
case R.id.layout_user:
if (!LoginManager.isLogin())
showLoginDialog();
break;
}
}
private void skipToMarket() {
try {
IntentUtils.skipToMarket(getActivity());
} catch (Exception ex) {
ToastUtils.show(getActivity(), getString(R.string.error_not_find_market));
}
}
private void showLoginDialog() {
if (loginDialog == null) {
loginDialog = new LoginDialog(getActivity());
loginDialog.setLoginListener(new LoginListener() {
@Override
public void onSuccess() {
showUser(LoginManager.getUser());
}
});
}
loginDialog.show();
}
private void initViews() {
ivAvatar = (ImageView) getView().findViewById(R.id.iv_avatar);
tvUserName = (TextView) getView().findViewById(R.id.tv_username);
tvLevel = (TextView) getView().findViewById(R.id.tv_level);
tvSet = (TextView) getView().findViewById(R.id.tv_set);
tvSet.setOnClickListener(this);
tvFeedback = (TextView) getView().findViewById(R.id.tv_feed_back);
tvFeedback.setOnClickListener(this);
tvRating = (TextView) getView().findViewById(R.id.tv_rating);
tvRating.setOnClickListener(this);
layoutUser = (LinearLayout) getView().findViewById(R.id.layout_user);
layoutUser.setOnClickListener(this);
}
private void showUser() {
if (LoginManager.isLogin()) {
showUser(LoginManager.getUser());
}
}
private void showUser(User user) {
if (user != null) {
tvUserName.setText(user.username);
DisplayImageOptions options = ImageLoaderUtils.createOptions(R.drawable.ic_default_avatar,
DisplayUtils.dip2px(getActivity(), 70));
ImageLoader.getInstance().displayImage(user.avatar, ivAvatar, options);
UserLevel level = user.level;
tvLevel.setText(String.format(LEVEL_FORMAT, level.rank, level.exp, level.next));
tvLevel.setVisibility(View.VISIBLE);
}
}
private void clearUser() {
tvUserName.setText(R.string.choose_login_type);
tvLevel.setText(R.string.login_desc);
ivAvatar.setImageResource(R.drawable.ic_default_avatar);
}
private void getUser(String userId) {
String url = ApiUtils.getUser(userId);
JHttpClient.get(getActivity(), url, null, new JsonResponseHandler<User>(User.class, false) {
@Override
public void onOrigin(String json) {
}
@Override
public void onSuccess(User result) {
if (isAdded()) {
LoginManager.saveUser(getActivity(), result);
showUser(result);
}
}
@Override
public void onFinish() {
}
});
}
}