274 lines
11 KiB
Java
274 lines
11 KiB
Java
package com.gh.gamecenter.personal;
|
||
|
||
import android.content.Intent;
|
||
import android.os.Bundle;
|
||
import android.support.annotation.Nullable;
|
||
import android.text.TextUtils;
|
||
import android.view.View;
|
||
import android.widget.ImageView;
|
||
import android.widget.LinearLayout;
|
||
import android.widget.RelativeLayout;
|
||
import android.widget.TextView;
|
||
|
||
import com.facebook.drawee.view.SimpleDraweeView;
|
||
import com.gh.base.AppController;
|
||
import com.gh.base.fragment.BaseFragment;
|
||
import com.gh.common.util.DataCollectionUtils;
|
||
import com.gh.common.util.DataUtils;
|
||
import com.gh.common.util.GetLoginDataUtils;
|
||
import com.gh.common.util.LoginUtils;
|
||
import com.gh.common.util.PackageUtils;
|
||
import com.gh.gamecenter.InstallActivity;
|
||
import com.gh.gamecenter.LibaoActivity;
|
||
import com.gh.gamecenter.LoginActivity;
|
||
import com.gh.gamecenter.R;
|
||
import com.gh.gamecenter.SettingActivity;
|
||
import com.gh.gamecenter.ShareGhActivity;
|
||
import com.gh.gamecenter.SuggestSelectActivity;
|
||
import com.gh.gamecenter.UserInfoActivity;
|
||
import com.gh.gamecenter.entity.AppEntity;
|
||
import com.gh.gamecenter.entity.UserInfoEntity;
|
||
import com.gh.gamecenter.eventbus.EBNetworkState;
|
||
import com.gh.gamecenter.retrofit.Response;
|
||
import com.gh.gamecenter.retrofit.RetrofitManager;
|
||
import com.lightgame.config.CommonDebug;
|
||
import com.lightgame.utils.Utils;
|
||
import com.tencent.connect.common.Constants;
|
||
|
||
import org.greenrobot.eventbus.Subscribe;
|
||
import org.greenrobot.eventbus.ThreadMode;
|
||
import org.json.JSONObject;
|
||
|
||
import butterknife.BindView;
|
||
import butterknife.OnClick;
|
||
import okhttp3.MediaType;
|
||
import okhttp3.RequestBody;
|
||
import rx.android.schedulers.AndroidSchedulers;
|
||
import rx.schedulers.Schedulers;
|
||
|
||
/**
|
||
* @author 温冠超
|
||
* 294299195@qq.com
|
||
* 2015-8-8 我的光环页面
|
||
*/
|
||
public class PersonalFragment extends BaseFragment implements GetLoginDataUtils.OnLoginDataListener,
|
||
LoginUtils.onLoginCallBackListener {
|
||
|
||
@BindView(R.id.personal_login_qq)
|
||
LinearLayout mLoginQq;
|
||
@BindView(R.id.personal_login_wechat)
|
||
LinearLayout mLoginWechat;
|
||
@BindView(R.id.personal_login_weibo)
|
||
LinearLayout mLoginWeibo;
|
||
@BindView(R.id.personal_user_icon)
|
||
SimpleDraweeView mUserIcon;
|
||
@BindView(R.id.user_name_hint)
|
||
ImageView mUserNameHint;
|
||
@BindView(R.id.personal_user_name)
|
||
TextView mUserName;
|
||
@BindView(R.id.login_qq_icon)
|
||
ImageView mLoginQqIcon;
|
||
@BindView(R.id.login_qq_tv)
|
||
TextView mLoginQqTv;
|
||
@BindView(R.id.login_wechat_icon)
|
||
ImageView mLoginWechatIcon;
|
||
@BindView(R.id.login_wechat_tv)
|
||
TextView mLoginWechatTv;
|
||
@BindView(R.id.login_weibo_icon)
|
||
ImageView mLoginWeiboIcon;
|
||
@BindView(R.id.login_weibo_tv)
|
||
TextView mLoginWeiboTv;
|
||
@BindView(R.id.personal_game)
|
||
RelativeLayout mPersonalGame;
|
||
@BindView(R.id.personal_libao)
|
||
RelativeLayout mPersonalLibao;
|
||
@BindView(R.id.personal_share)
|
||
RelativeLayout mPersonalShare;
|
||
@BindView(R.id.personal_suggestion)
|
||
RelativeLayout mPersonalSuggestion;
|
||
@BindView(R.id.personal_setting_update_hint)
|
||
TextView mPersonalSettingUpdateHint;
|
||
@BindView(R.id.personal_setting)
|
||
RelativeLayout mPersonalSetting;
|
||
@BindView(R.id.login_sign_hint)
|
||
View mLoginSignHint;
|
||
@BindView(R.id.login_message_hint)
|
||
View mLoginMessgeHint;
|
||
|
||
public final static int LOGIN_CODE = 0x300; // 登录相关的requestCode && resultCode
|
||
|
||
public final static String LOGIN_TAG = "login_tag"; //登入标识
|
||
public final static String LOGOUT_TAG = "logout_tag"; // 登出标识
|
||
|
||
private UserInfoEntity mUserInfoEntity;
|
||
|
||
@Override
|
||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||
super.onActivityResult(requestCode, resultCode, data);
|
||
if (CommonDebug.IS_DEBUG) {
|
||
CommonDebug.logMethodWithParams(this, requestCode, resultCode, data);
|
||
}
|
||
|
||
if (requestCode == Constants.REQUEST_LOGIN) { // QQ Login callback
|
||
GetLoginDataUtils.getInstance(getContext()).onQQCallback(requestCode, resultCode, data);
|
||
} else if (requestCode == 32973) {
|
||
//TODO 32973是什么鬼?
|
||
GetLoginDataUtils.getInstance(getContext()).onWeiboCallback(requestCode, resultCode, data);
|
||
} else if (requestCode == LOGIN_CODE && resultCode == LOGIN_CODE && data != null) {
|
||
String loginStatus = data.getStringExtra("loginStatus");
|
||
if (TextUtils.isEmpty(loginStatus)) return;
|
||
if (LOGIN_TAG.equals(loginStatus)) { // 登入
|
||
mUserInfoEntity = LoginUtils.getUserInfo(getContext());
|
||
changeLoginState(true);
|
||
} else if (LOGOUT_TAG.equals(loginStatus)) { // 登出
|
||
changeLoginState(false);
|
||
mUserInfoEntity = null;
|
||
}
|
||
}
|
||
}
|
||
|
||
@Override
|
||
protected int getLayoutId() {
|
||
return R.layout.fragment_personal;
|
||
}
|
||
|
||
@Override
|
||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||
super.onCreate(savedInstanceState);
|
||
checkUpdate();
|
||
|
||
LoginUtils.checkLogin(getContext(), this);
|
||
}
|
||
|
||
|
||
// 连接上网络事件
|
||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||
public void onEventMainThread(EBNetworkState busNetworkState) {
|
||
}
|
||
|
||
@OnClick({R.id.personal_login_qq, R.id.personal_login_wechat, R.id.personal_login_weibo, R.id.personal_user_icon,
|
||
R.id.personal_user_name, R.id.personal_game, R.id.personal_libao, R.id.personal_share, R.id.personal_suggestion,
|
||
R.id.personal_setting})
|
||
public void onViewClicked(View view) {
|
||
switch (view.getId()) {
|
||
case R.id.personal_login_qq:
|
||
if (mUserInfoEntity != null) {
|
||
toast("收藏");
|
||
} else {
|
||
GetLoginDataUtils.getInstance(getActivity()).QQLogin(this, getActivity());
|
||
}
|
||
break;
|
||
case R.id.personal_login_wechat:
|
||
if (mUserInfoEntity != null) {
|
||
toast("签到");
|
||
} else {
|
||
GetLoginDataUtils.getInstance(getActivity()).WCLogin(this);
|
||
}
|
||
break;
|
||
case R.id.personal_login_weibo:
|
||
if (mUserInfoEntity != null) {
|
||
toast("消息");
|
||
} else {
|
||
GetLoginDataUtils.getInstance(getActivity()).WeiBoLogin(this, getActivity());
|
||
}
|
||
break;
|
||
case R.id.personal_user_icon:
|
||
case R.id.personal_user_name:
|
||
if (mUserInfoEntity != null) {
|
||
getContext().startActivity(UserInfoActivity.getIntent(getContext()));
|
||
} else {
|
||
startActivityForResult(LoginActivity.getIntent(getContext()), LOGIN_CODE);
|
||
}
|
||
break;
|
||
case R.id.personal_game:
|
||
getContext().startActivity(InstallActivity.getIntent(getContext()));
|
||
break;
|
||
case R.id.personal_libao:
|
||
DataUtils.onEvent(getActivity(), "主页", "礼包图标");
|
||
DataCollectionUtils.uploadClick(getActivity(), "礼包图标", "我的光环");
|
||
Intent intent = LibaoActivity.getIntent(getContext(), "(我的光环:礼包[4-1])");
|
||
startActivity(intent);
|
||
|
||
DataCollectionUtils.uploadPosition(getActivity(), "我的光环", "1", "礼包");
|
||
break;
|
||
case R.id.personal_share:
|
||
getContext().startActivity(ShareGhActivity.getIntent(getContext()));
|
||
break;
|
||
case R.id.personal_suggestion:
|
||
getContext().startActivity(SuggestSelectActivity.getIntent(getActivity()));
|
||
break;
|
||
case R.id.personal_setting:
|
||
DataUtils.onEvent(getActivity(), "我的光环", "设置图标");
|
||
DataCollectionUtils.uploadClick(getActivity(), "设置图标", "我的光环");
|
||
|
||
startActivityForResult(SettingActivity.getIntent(getContext(), "(我的光环)"), LOGIN_CODE);
|
||
break;
|
||
}
|
||
}
|
||
|
||
private void changeLoginState(boolean isLogin) {
|
||
if (isLogin) {
|
||
if (mUserInfoEntity != null) {
|
||
mUserIcon.setImageURI(mUserInfoEntity.getIcon());
|
||
mUserName.setText(mUserInfoEntity.getName());
|
||
}
|
||
mLoginQqIcon.setImageResource(R.drawable.personal_collection_icon);
|
||
mLoginQqTv.setText("收藏");
|
||
mLoginWechatIcon.setImageResource(R.drawable.personal_sign_icon);
|
||
mLoginWechatTv.setText("签到");
|
||
mLoginWeiboIcon.setImageResource(R.drawable.personal_message_icon);
|
||
mLoginWeiboTv.setText("消息");
|
||
} else {
|
||
mLoginQqIcon.setImageResource(R.drawable.qq_login_icon);
|
||
mLoginQqTv.setText(getString(R.string.QQ));
|
||
mLoginWechatIcon.setImageResource(R.drawable.wechat_login_icon);
|
||
mLoginWechatTv.setText(getString(R.string.wechat));
|
||
mLoginWeiboIcon.setImageResource(R.drawable.weibo_login_icon);
|
||
mLoginWeiboTv.setText(getString(R.string.sina_weibo));
|
||
mLoginSignHint.setVisibility(View.GONE);
|
||
mLoginMessgeHint.setVisibility(View.GONE);
|
||
mUserIcon.setImageURI("");
|
||
mUserName.setText("手机登录");
|
||
}
|
||
}
|
||
|
||
private void checkUpdate() {
|
||
String channel = AppController.getInstance().getChannel();
|
||
RetrofitManager.
|
||
getApi().
|
||
getUpdate(PackageUtils.getVersionName(getContext()), channel)
|
||
.subscribeOn(Schedulers.io())
|
||
.observeOn(AndroidSchedulers.mainThread())
|
||
.subscribe(new Response<AppEntity>() {
|
||
@Override
|
||
public void onResponse(AppEntity response) {
|
||
super.onResponse(response);
|
||
float version = Float.valueOf(response.getVersion());
|
||
float currentVersion = Float.valueOf(PackageUtils.getVersionName(getContext()));
|
||
if (version > currentVersion) {
|
||
mPersonalSettingUpdateHint.setVisibility(View.VISIBLE);
|
||
} else {
|
||
mPersonalSettingUpdateHint.setVisibility(View.GONE);
|
||
}
|
||
}
|
||
});
|
||
}
|
||
|
||
|
||
// 登录成功返回
|
||
@Override
|
||
public void OnLoginData(JSONObject content, LoginUtils.LoginTag loginTag) {
|
||
Utils.log("======获取第三方登录信息成功" + content.toString() + "===" + loginTag.name());
|
||
RequestBody body = RequestBody.create(MediaType.parse("application/json"), content.toString());
|
||
LoginUtils.login(getContext(), body, loginTag, this);
|
||
}
|
||
|
||
@Override
|
||
public void onLogin(UserInfoEntity entity, LoginUtils.LoginTag loginTag) {
|
||
Utils.log("======登录成功" + entity.getIcon() + "==" + entity.getName());
|
||
mUserInfoEntity = entity;
|
||
changeLoginState(true);
|
||
}
|
||
|
||
}
|