/**
*
*/
package com.hupu.games.activity;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;
import com.hupu.games.HuPuApp;
import com.hupu.games.R;
import com.hupu.games.common.HuPuRes;
import com.hupu.games.common.HupuLog;
import com.hupu.games.data.FollowResp;
import com.hupu.games.data.game.basketball.NbaPlayersDataReq;
import com.hupu.games.data.game.basketball.NbaTeamPlayerReq;
import com.hupu.games.data.game.basketball.NbaTeamReq;
import com.hupu.games.data.game.basketball.NbaTeamScheduleReq;
import com.hupu.games.db.HuPuDBAdapter;
import com.hupu.games.fragment.NbaPlayersDataFragment;
import com.hupu.games.fragment.NbaTeamInfoFragment;
import com.hupu.games.fragment.NbaTeamPlayerFragment;
import com.hupu.games.fragment.NbaTeamScheduleFragment;
import com.hupu.http.HupuHttpHandler;
/**
* @author panyongjun
*
* NBA球队球员页面
*/
public class NBATeamActivity extends HupuBaseActivity {
NbaTeamInfoFragment mTeamFragment;
/***/
NbaTeamPlayerFragment mTeamPlayerFragment;
/**NBA球队完整赛程*/
NbaTeamScheduleFragment mScheduleFragment;
/***/
NbaPlayersDataFragment mPlayerDataFragment;
private int i_tid;
boolean bGotProgram;
boolean bGotFullProgram;
boolean bGotPlayerData;
TextView mTxtTitle;
String team;
int curFrameIndex;
final static int FRAME_PROGRAM = 1;
final static int FRAME_FULL_PROGRAM = 2;
final static int FRAME_PLAYER = 3;
final static int FRAME_DATA = 4;
ImageButton btnTeam;
ImageButton btnPlayer;
ImageButton btnData;
Bundle b;
TextView followBtn;
HuPuDBAdapter mDBAdapter;
boolean isFollow;
private final int DIALOG_NOTIFY = 1314;
private final int DIALOG_FOLLOW_CANCEL_NOTIFY = 1315;
View tabs;
@Override
public void onCreate(Bundle savedInstanceState) {
if (savedInstanceState != null)
savedInstanceState.clear();
super.onCreate(savedInstanceState);
i_tid = getIntent().getIntExtra("tid", 0);
team = HuPuApp.getTeamData(i_tid).str_name;
b = new Bundle();
b.putInt("tid", i_tid);
init();
treatClickEvent(R.id.btn_team);
}
/**
*
* */
private void init() {
setContentView(R.layout.layout_team_player);
mTxtTitle = (TextView) findViewById(R.id.txt_title);
followBtn = (TextView) findViewById(R.id.btn_follow);
setOnClickListener(R.id.btn_back);
setOnClickListener(R.id.btn_follow);
setOnClickListener(R.id.btn_team);
setOnClickListener(R.id.btn_player);
setOnClickListener(R.id.btn_data);
btnTeam = (ImageButton) findViewById(R.id.btn_team);
btnPlayer = (ImageButton) findViewById(R.id.btn_player);
btnData = (ImageButton) findViewById(R.id.btn_data);
tabs = findViewById(R.id.layout_bottom);
initParameter();
mParams.add("tid", "" + i_tid);
mDBAdapter = new HuPuDBAdapter(this);
isFollow = mDBAdapter.isFollowTeam(1, i_tid);
setFollowBtn();
}
private void showFrame(int index) {
Fragment fragment = null;
HupuLog.d("showFrame", "index=" + index);
if (curFrameIndex == index)
return;
switch (index) {
case FRAME_PROGRAM:
followBtn.setVisibility(View.VISIBLE);
if (mTeamFragment == null) {
mTeamFragment = new NbaTeamInfoFragment();
mTeamFragment.setArguments(b);
}
fragment = mTeamFragment;
if (!bGotProgram)
reqTeamProgram();
mTxtTitle.setText(team);
break;
case FRAME_PLAYER:
followBtn.setVisibility(View.GONE);
if (mTeamPlayerFragment == null)
mTeamPlayerFragment = new NbaTeamPlayerFragment();
fragment = mTeamPlayerFragment;
reqPlayerProgram();
mTxtTitle.setText(team + "球员");
break;
case FRAME_DATA:
followBtn.setVisibility(View.GONE);
//
if (mPlayerDataFragment == null) {
mPlayerDataFragment = new NbaPlayersDataFragment();
mPlayerDataFragment.setArguments(b);
}
// mPlayerDataFragment = new NbaPlayersDataFragment();
// mPlayerDataFragment.setArguments(b);
fragment = mPlayerDataFragment;
if (!bGotPlayerData)
reqPlayersData();
mTxtTitle.setText(team + "数据");
break;
case FRAME_FULL_PROGRAM:
followBtn.setVisibility(View.GONE);
if (mScheduleFragment == null) {
mScheduleFragment = new NbaTeamScheduleFragment();
mScheduleFragment.setArguments(b);
}
fragment = mScheduleFragment;
if (!bGotFullProgram)
reqFullProgram();
mTxtTitle.setText(team + "赛程");
break;
}
setBackgound(index);
curFrameIndex = index;
replaceContent(fragment);
}
private void replaceContent(Fragment fragment) {
FragmentTransaction transaction = getSupportFragmentManager()
.beginTransaction();
transaction.replace(R.id.frame_content, fragment);
transaction.addToBackStack(null);
transaction.commit();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK
&& event.getAction() == KeyEvent.ACTION_DOWN) {
if (curFrameIndex == FRAME_FULL_PROGRAM)
showFrame(FRAME_PROGRAM);
else
finish();
return true;
}
return false;
}
@SuppressLint("NewApi")
@Override
public void treatClickEvent(int id) {
super.treatClickEvent(id);
switch (id) {
case R.id.btn_back:
if (curFrameIndex == FRAME_FULL_PROGRAM)
showFrame(FRAME_PROGRAM);
else
finish();
break;
case R.id.btn_follow:
setFollow();
break;
case R.id.btn_team:
showFrame(FRAME_PROGRAM);
break;
case R.id.btn_player:
showFrame(FRAME_PLAYER);
break;
case R.id.btn_data:
showFrame(FRAME_DATA);
break;
}
}
/** 请求球队最近10场比赛 */
private void reqTeamProgram() {
sendRequest(HuPuRes.REQ_METHOD_GET_NBA_TEAM_PROGRAM, mParams,
new HupuHttpHandler(this));
}
/**
* 请求球队中球员列表
*/
private void reqPlayerProgram() {
initParameter();
mParams.add("tid", "" + i_tid);
sendRequest(HuPuRes.REQ_METHOD_GET_NBA_TEAM_ROSTER, mParams,
new HupuHttpHandler(this));
}
private void reqFullProgram() {
sendRequest(HuPuRes.REQ_METHOD_GET_NBA_TEAM_FULL_PROGRAM, mParams,
new HupuHttpHandler(this));
}
private void reqPlayersData() {
sendRequest(HuPuRes.REQ_METHOD_GET_NBA_PLAYER_DATA, mParams,
new HupuHttpHandler(this));
}
public void showFullProgram() {
showFrame(FRAME_FULL_PROGRAM);
}
@Override
public void onReqResponse(Object o, int methodId) {
super.onReqResponse(o, methodId);
if (o == null)
return;
switch (methodId) {
case HuPuRes.REQ_METHOD_GET_NBA_TEAM_PROGRAM:
mTeamFragment.setData((NbaTeamReq) o);
bGotProgram = true;
break;
case HuPuRes.REQ_METHOD_GET_NBA_TEAM_FULL_PROGRAM:
mScheduleFragment.setData((NbaTeamScheduleReq) o);
break;
case HuPuRes.REQ_METHOD_GET_NBA_TEAM_ROSTER:
mTeamPlayerFragment.setData((NbaTeamPlayerReq) o);
break;
case HuPuRes.REQ_METHOD_GET_NBA_PLAYER_DATA:
mPlayerDataFragment.setData((NbaPlayersDataReq) o);
break;
case HuPuRes.REQ_METHOD_FOLLOW_ONE_TEAM:
case HuPuRes.REQ_METHOD_FOLLOW_ONE_TEAM_CANCEL:
FollowResp resp = (FollowResp) o;
if (resp == null || resp.i_success == 0) {
// 提交失败
showToast("关注" + team + "失败");
isFollow = !isFollow;
setFollowBtn();
} else {
if (methodId == HuPuRes.REQ_METHOD_FOLLOW_ONE_TEAM) {
showToast("关注成功,您将收到" + team + "的相关通知");
mDBAdapter.setFollowTeam(1, i_tid, 1);
} else if (methodId == HuPuRes.REQ_METHOD_FOLLOW_ONE_TEAM_CANCEL) {
showToast("已取消关注" + team);
mDBAdapter.setFollowTeam(1, i_tid, 0);
}
}
break;
}
}
@Override
public void clickNegativeButton(int dialogId) {
super.clickNegativeButton(dialogId);
sendUmeng(HuPuRes.UMENG_EVENT_NBA_TEAMS,
HuPuRes.UMENG_KEY_TEAMS, HuPuRes.UMENG_VALUE_UNFOLLOW_CANCEL);
if (mDialog != null)
mDialog.cancel();
}
@Override
public void clickPositiveButton(int dialogId) {
super.clickPositiveButton(dialogId);
switch (dialogId) {
case DIALOG_NOTIFY:
mApp.setNotify(true);
followTeam(1,i_tid, (byte) 1);
isFollow = !isFollow;
setFollowBtn();
break;
case DIALOG_FOLLOW_CANCEL_NOTIFY:
sendUmeng(HuPuRes.UMENG_EVENT_NBA_TEAMS,
HuPuRes.UMENG_KEY_TEAMS, HuPuRes.UMENG_VALUE_UNFOLLOW_CONFIRM);
followTeam(1,i_tid, (byte) 0);
isFollow = !isFollow;
setFollowBtn();
break;
}
// 打开通知
if (mDialog != null)
mDialog.cancel();
}
final static String notify = "取消关注后,您不会再收到%s队的所有相关通知,确认取消?";
private void setFollow() {
if (isFollow) {
// 取消关注
// followTeam(i_tid, (byte) 1);
showCustomDialog(DIALOG_FOLLOW_CANCEL_NOTIFY,
String.format(notify, team), TOW_BUTTONS,
R.string.follow_cancel, R.string.follow_continue);
return;
} else {
if (mApp.needNotify) {
sendUmeng(HuPuRes.UMENG_EVENT_NBA_TEAMS,
HuPuRes.UMENG_KEY_TEAMS, HuPuRes.UMENG_VALUE_FOLLOW);
followTeam(1,i_tid, (byte) 1);
} else {
//
showCustomDialog(DIALOG_NOTIFY, R.string.push_title,
R.string.push_open_notify, 3, R.string.open_notify,
R.string.cancel);
return;
}
}
// 立即修改
isFollow = !isFollow;
setFollowBtn();
}
/** 设置关注比赛的UI状态 */
private void setFollowBtn() {
if (isFollow) {
followBtn.setBackgroundResource(R.drawable.btn_nav_down);
followBtn.setText("已关注");
} else {
followBtn.setBackgroundResource(R.drawable.btn_nav_up);
followBtn.setText("关注");
}
}
/** 点击后的按钮背景变化 */
private void setBackgound(int index) {
int color = getResources().getColor(R.color.transform);
switch (curFrameIndex) {// 点击前
case FRAME_PROGRAM:
btnTeam.setBackgroundColor(color);
btnTeam.setImageResource(R.drawable.btn_team_up);
break;
case FRAME_FULL_PROGRAM:
tabs.setVisibility(View.VISIBLE);
break;
case FRAME_PLAYER:
btnPlayer.setBackgroundColor(color);
btnPlayer.setImageResource(R.drawable.btn_player_up);
break;
case FRAME_DATA:
btnData.setBackgroundColor(color);
btnData.setImageResource(R.drawable.btn_data_up);
break;
}
switch (index) {// 点击后
case FRAME_FULL_PROGRAM:
tabs.setVisibility(View.GONE);
break;
case FRAME_PROGRAM:
sendUmeng(HuPuRes.UMENG_EVENT_NBA_TEAMS, HuPuRes.UMENG_KEY_TEAMS,
HuPuRes.UMENG_VALUE_TEAMS_TAB);
btnTeam.setBackgroundResource(R.drawable.bg_bottom_hover);
btnTeam.setImageResource(R.drawable.btn_team_down);
break;
case FRAME_PLAYER:
sendUmeng(HuPuRes.UMENG_EVENT_NBA_TEAMS, HuPuRes.UMENG_KEY_ROSTER,
HuPuRes.UMENG_VALUE_ROSTER_TAB);
btnPlayer.setBackgroundResource(R.drawable.bg_bottom_hover);
btnPlayer.setImageResource(R.drawable.btn_player_down);
break;
case FRAME_DATA:
sendUmeng(HuPuRes.UMENG_EVENT_NBA_TEAMS, HuPuRes.UMENG_KEY_STATS,
HuPuRes.UMENG_VALUE_STATS_TAB);
btnData.setBackgroundResource(R.drawable.bg_bottom_hover);
btnData.setImageResource(R.drawable.btn_data_down);
break;
}
}
}