package org.estgroup.phphub.ui.view;
import android.accounts.Account;
import android.accounts.AccountManager;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.facebook.drawee.view.SimpleDraweeView;
import com.squareup.otto.Subscribe;
import org.estgroup.phphub.R;
import org.estgroup.phphub.common.base.BaseSupportFragment;
import org.estgroup.phphub.common.event.NotificationChangeEvent;
import org.estgroup.phphub.common.provider.BusProvider;
import org.estgroup.phphub.common.util.Utils;
import butterknife.Bind;
import butterknife.OnClick;
import cn.bingoogolapple.badgeview.BGABadgeRelativeLayout;
import eu.unicate.retroauth.AuthAccountManager;
import static org.estgroup.phphub.common.Constant.*;
import static org.estgroup.phphub.common.qualifier.UserTopicType.*;
public class MeFragment extends BaseSupportFragment {
@Bind(R.id.sdv_avatar)
SimpleDraweeView avatarView;
@Bind(R.id.tv_username)
TextView usernameView;
@Bind(R.id.tv_sign)
TextView signView;
@Bind(R.id.bga_rlyt_messages)
BGABadgeRelativeLayout messagesView;
AccountManager accountManager;
AuthAccountManager authAccountManager;
String accountType, tokenType;
Account account;
int userId;
String userReplyUrl;
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
accountType = getString(R.string.auth_account_type);
tokenType = getString(R.string.auth_token_type);
accountManager = AccountManager.get(getContext());
authAccountManager = new AuthAccountManager(getContext(), accountManager);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.me, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
BusProvider.getInstance().register(this);
}
@Override
public void onDestroyView() {
super.onDestroyView();
BusProvider.getInstance().unregister(this);
}
@Override
public void onResume() {
super.onResume();
account = Utils.getActiveAccount(getContext(), authAccountManager);
refreshView();
}
private void refreshView() {
userId = -1;
userReplyUrl = "";
String avatarUrl = null, username = null, signature = null;
signView.setVisibility(View.GONE);
if (account != null) {
String id = accountManager.getUserData(account, USER_ID_KEY);
if (!TextUtils.isEmpty(id)) {
userId = Integer.valueOf(id);
}
username = accountManager.getUserData(account, USERNAME_KEY);
signature = accountManager.getUserData(account, USER_SIGNATURE);
avatarUrl = accountManager.getUserData(account, USER_AVATAR_KEY);
userReplyUrl = accountManager.getUserData(account, USER_REPLY_URL_KEY);
if (!TextUtils.isEmpty(signature)) {
signView.setVisibility(View.VISIBLE);
signView.setText(signature);
}
}
avatarView.setImageURI(!TextUtils.isEmpty(avatarUrl) ? Uri.parse(avatarUrl) : null);
usernameView.setText(!TextUtils.isEmpty(username) ? username : "未登陆");
}
@OnClick(R.id.percent_rlyt_settings)
public void navigateToSettings() {
navigator.navigateToSettings(getActivity());
}
@OnClick(R.id.user_container)
public void navigateToUserSpace() {
if (userId <= 0) {
needLogin();
return;
}
navigator.navigateToUserSpace(getContext(), this.userId);
}
@OnClick(R.id.percent_rlyt_replys)
public void navigateToUserReplys() {
if (userId <= 0) {
needLogin();
return;
}
navigator.navigateToUserReply(getContext(), this.userReplyUrl);
}
@OnClick(R.id.percent_rlyt_topics)
public void navigateToUserTopic() {
if (userId <= 0) {
needLogin();
return;
}
navigator.navigateToUserTopic(getContext(), this.userId, USER_TOPIC_TYPE);
}
@OnClick(R.id.percent_rlyt_following)
public void navigateToUserFollow() {
if (userId <= 0) {
needLogin();
return;
}
navigator.navigateToUserTopic(getContext(), this.userId, USER_TOPIC_FOLLOW_TYPE);
}
@OnClick(R.id.percent_rlyt_favorites)
public void navigateToUserFavorite() {
if (userId <= 0) {
needLogin();
return;
}
navigator.navigateToUserTopic(getContext(), this.userId, USER_TOPIC_FAVORITE_TYPE);
}
@OnClick(R.id.bga_rlyt_messages)
public void navigateToUserNotification() {
if (Utils.hasLoggedIn(getActivity(), accountManager)) {
navigator.navigateToUserNotification(getActivity());
}
}
private void needLogin() {
authAccountManager.addAccount(getActivity(), accountType, tokenType);
}
@Override
protected String getTitle() {
return getString(R.string.me);
}
@Subscribe
public void onNotificationChange(NotificationChangeEvent event) {
if (messagesView == null) {
return;
}
int lenght = event.getNotificationLength();
if (lenght > 0) {
messagesView.showTextBadge(String.valueOf(lenght));
} else {
messagesView.hiddenBadge();
}
}
}