package com.snail.travellingTrail.user.controller;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.Map;
import java.util.jar.JarOutputStream;
import org.apache.http.HttpEntity;
import org.apache.http.entity.StringEntity;
import net.tsz.afinal.FinalBitmap;
import net.tsz.afinal.FinalHttp;
import net.tsz.afinal.http.AjaxCallBack;
import zrc.widget.SimpleFooter;
import zrc.widget.SimpleHeader;
import zrc.widget.ZrcListView;
import zrc.widget.ZrcListView.OnStartListener;
import android.content.Context;
import android.graphics.Paint.Join;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.Menu;
import com.google.gson.JsonObject;
import com.snail.travellingTrail.R;
import com.snail.travellingTrail.common.RequestAddress;
import com.snail.travellingTrail.common.ResponseList;
import com.snail.travellingTrail.common.TravellingTrailApplication;
import com.snail.travellingTrail.common.utils.DialogTool;
import com.snail.travellingTrail.common.utils.JsonUtil;
import com.snail.travellingTrail.common.utils.PhoneInfo;
import com.snail.travellingTrail.common.utils.ToastHelper;
import com.snail.travellingTrail.common.views.CircleImageView;
import com.snail.travellingTrail.mine.controller.MineAdapter;
import com.snail.travellingTrail.newTravel.controller.NewFootprintContentListActivity;
import com.snail.travellingTrail.travelNotes.model.MapImage;
public class MyPageActivity extends SherlockActivity implements OnClickListener{
View actionView,header,divider;
Context context = this;
ZrcListView mZrcListView;
LinearLayout mineLlyt;
ImageView mapIv;
CircleImageView avatarIv,avatarIv2;
TextView nickNameTv,addressTv,sinatureTv,nickNameTv2,addressTv2,sinatureTv2;
Button followButton, followButton2;
View include;
FinalHttp mDataFinalHttp,mTripAllFh,mTripFootPoint, mFollowHttp;
MineAdapter mineAdapter;
FinalBitmap mFinalBitmap,mFinalBitmap2;
private final static String TAG = "MyPageActivity";
private final static int UPDATE = 1;
private final static int AGE = 2;
private static boolean REFRASH = false;
private static long User_Id;
private static String age;
@Override
protected void onCreate(Bundle savedInstanceState) {
User_Id = getIntent().getExtras().getLong("Trvl_Us_Id");
if (TravellingTrailApplication.loginUser != null &&
User_Id == TravellingTrailApplication.loginUser.getUs_Info_Us_Id() )
{
setContentView(R.layout.fragment_mine);
}else {
setContentView(R.layout.activity_user_home);
}
super.onCreate(savedInstanceState);
findid();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
return super.onCreateOptionsMenu(menu);
}
private void findid() {
actionView = View.inflate(context, R.layout.frag_mine_header_action, null);
header = View.inflate(context, R.layout.frag_mine_header, null);//头部内容
divider = View.inflate(context, R.layout.divider, null);
mZrcListView = (ZrcListView)this.findViewById(R.id.frag_mine_lv_travellingTrail);
include = (View)this.findViewById(R.id.frag_mine_include);
avatarIv = (CircleImageView)actionView.findViewById(R.id.frag_mine_header_action_iv_avatar);
nickNameTv = (TextView)actionView.findViewById(R.id.frag_mine_header_action_nickname);
// ageTv = (TextView)actionView.findViewById(R.id.frag_mine_header_action_age);
addressTv = (TextView)actionView.findViewById(R.id.frag_mine_header_action_address);
sinatureTv = (TextView)actionView.findViewById(R.id.frag_mine_header_action_sinature);
mapIv = (ImageView)header.findViewById(R.id.fragment_mine_header_iv_map);
followButton = (Button) actionView.findViewById(R.id.frag_mine_header_action_btn_follow);
if (TravellingTrailApplication.loginUser != null
&& TravellingTrailApplication.loginUser.getUs_Info_Us_Id() == User_Id)
{
followButton.setVisibility(View.INVISIBLE);
}
setListener();
}
private void setListener()
{
mZrcListView.setOnRefreshStartListener(new zrcListViewRefresh());
followButton.setOnClickListener(this);
init();
}
class zrcListViewRefresh implements OnStartListener{
@Override
public void onStart() {
http(true);
}
}
private void init() {
setListView();
mFinalBitmap = FinalBitmap.create(context);
mFinalBitmap.configLoadingImage(R.drawable.bg_default_photo);
mFinalBitmap2 = FinalBitmap.create(context);
mFinalBitmap2.configLoadingImage(R.drawable.bg_default_photo);
LayoutParams laParams=(LayoutParams)mapIv.getLayoutParams();
laParams.height =(int)(PhoneInfo.getScreenWidth(context)/5)*4;
laParams.width = (int)(PhoneInfo.getScreenWidth(context));
mZrcListView.addHeaderView(header);//添加头部
mZrcListView.addHeaderView(actionView);//ListView条目中的悬浮部分 添加到头部
mZrcListView.addHeaderView(divider);
http(false);
mZrcListView.setOnScrollListener(new ZrcListView.OnScrollMyListener() {
@Override
public void onScrollStateChanged(ZrcListView view, int scrollState) {
// TODO Auto-generated method stub
}
@Override
public void onScroll(ZrcListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if (firstVisibleItem >= 1) {
include.setVisibility(View.VISIBLE);
actionView.setVisibility(View.INVISIBLE);
avatarIv2 = (CircleImageView)MyPageActivity.this.findViewById(R.id.frag_mine_header_action_iv_avatar2);
nickNameTv2 = (TextView)MyPageActivity.this.findViewById(R.id.frag_mine_header_action_nickname2);
// ageTv2 = (TextView)MyPageActivity.this.findViewById(R.id.frag_mine_header_action_age2);
addressTv2 = (TextView)MyPageActivity.this.findViewById(R.id.frag_mine_header_action_address2);
sinatureTv2 = (TextView)MyPageActivity.this.findViewById(R.id.frag_mine_header_action_sinature2);
followButton2 = (Button) MyPageActivity.this.findViewById(R.id.frag_mine_header_action_btn_follow2);
if (TravellingTrailApplication.loginUser != null
&& TravellingTrailApplication.loginUser.getUs_Info_Us_Id() == User_Id)
{
followButton2.setVisibility(View.INVISIBLE);
}
followButton2.setOnClickListener(MyPageActivity.this);
mFinalBitmap2.display(avatarIv2, ResponseList.SelfInfoMap.get("Us_Avatar"));
nickNameTv2.setText(ResponseList.SelfInfoMap.get("Us_Nickname"));
// ageTv2.setText(age+"岁");
addressTv2.setText(ResponseList.SelfInfoMap.get("Us_Location"));
sinatureTv2.setText(ResponseList.SelfInfoMap.get("Us_Sinature"));
} else {
include.setVisibility(View.GONE);
actionView.setVisibility(View.VISIBLE);
}
}
});
}
private void setListView() {
// 设置下拉刷新的样式
SimpleHeader header = new SimpleHeader(context);
header.setTextColor(getResources().getColor(R.color.aurantium));
header.setCircleColor(getResources().getColor(R.color.aurantium));
mZrcListView.setHeadable(header);
// 设置加载更多的样式
SimpleFooter footer = new SimpleFooter(context);
footer.setCircleColor(getResources().getColor(R.color.aurantium));
mZrcListView.setFootable(footer);
// 设置列表项出现动画
mZrcListView.setItemAnimForTopIn(R.anim.anim_topitem_in);
mZrcListView.setItemAnimForBottomIn(R.anim.anim_bottomitem_in);
mZrcListView.setFooterDividersEnabled(false);
}
private void http(final boolean REFRASH){
mDataFinalHttp = new FinalHttp();
mTripAllFh = new FinalHttp();
mTripFootPoint = new FinalHttp();
mTripFootPoint.get(RequestAddress.TRIP_FOOT_POINTS+User_Id, new AjaxCallBack<Object>(){
@Override
public void onSuccess(Object t) {
analyzeFootpointjson(t.toString());
super.onSuccess(t);
}
@Override
public void onFailure(Throwable t, int errorNo, String strMsg) {
super.onFailure(t, errorNo, strMsg);
}
});
mDataFinalHttp.get(RequestAddress.MINE_DATA+User_Id, new AjaxCallBack<Object>() {
@Override
public void onFailure(Throwable t, int errorNo, String strMsg) {
Log.i(TAG, strMsg.toString());
super.onFailure(t, errorNo, strMsg);
}
@Override
public void onSuccess(Object t) {
Log.i(TAG, t.toString());
analyzeInfojson(t.toString(),null,REFRASH);
super.onSuccess(t);
}
});
//获取个人已结束的旅程
mTripAllFh.get(RequestAddress.PERSONAL_TRAVEL + "?UserId=" + User_Id + "&status=9", new AjaxCallBack<Object>(){
@Override
public void onFailure(Throwable t, int errorNo, String strMsg) {
Log.i(TAG, "mTripAllFh..."+strMsg.toString());
mZrcListView.setRefreshFail("加载失败");
super.onFailure(t, errorNo, strMsg);
}
@Override
public void onSuccess(Object t) {
Log.i(TAG, "mTripAllFh..."+t.toString());
analyzejson(t.toString(), null, REFRASH);
super.onSuccess(t);
}
});
}
protected void analyzeFootpointjson(String jsonString){
List<Map<String, String>> list = JsonUtil.parseJson1(jsonString, null);
ResponseList.SelfTripPointList = list;
List<List<Map<String, String>>> list2 = new ArrayList<List<Map<String,String>>>();
for(int i = 0; i<list.size();i++){
String str = list.get(i).get("FootprintSummary");
if (str != null && !str.equals("[]"))
{
list2.add(JsonUtil.parseJson1(str, null));
}
}
if (list2.size() < 1)
{
mFinalBitmap.display(mapIv, MapImage.getNoneMapUrl());
}else {
mFinalBitmap.display(mapIv, MapImage.getAllTripMapImgUrl(list2, context));
}
Log.i(TAG, "analyzeFootpointjson "+list2.toString());
}
protected void analyzeInfojson(String jsonString,String tagName,boolean refrash){
Map<String, String> map = JsonUtil.parseJson1(jsonString);
ResponseList.SelfInfoMap = map;
Log.i(TAG, map.size()+"");
mFinalBitmap.display(avatarIv, map.get("Us_Avatar"));
nickNameTv.setText(map.get("Us_Nickname"));
// getAge(map.get("Us_Birthday"));
addressTv.setText(map.get("Us_Location"));
sinatureTv.setText(map.get("Us_Sinature"));
}
//由获取用户年龄
@SuppressWarnings("deprecation")
private void getAge(final String birthday){
new Thread(new Runnable() {
@Override
public void run() {
String age = null;
URL url;
Date date = null ;
try {
url = new URL("http://www.baidu.com");
URLConnection uc = url.openConnection();// 生成连接对象
uc.connect(); // 发出连接
long ld = uc.getDate(); // 取得网站日期时间
date = new Date(ld); // 转换为标准时间对象
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}// 取得资源对象
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.i(TAG, Integer.parseInt(birthday.split("-")[0])+"");
age = String.valueOf(date.getYear()+1900-Integer.parseInt(birthday.split("-")[0]));
MyPageActivity.this.age = age;
sendMessage(AGE, age);
}
}).start();
}
protected void analyzejson(String jsonString,String tagName,boolean refrash) {
List<Map<String, String>> list = JsonUtil.parseJson1(jsonString, tagName);
ResponseList.SelfTripList = list;
if(refrash && mineAdapter!=null){
mineAdapter.setData(list);
}else{
mineAdapter = new MineAdapter(context, list,mFinalBitmap);
mZrcListView.setAdapter(mineAdapter);
}
run();
}
private void run() {
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sendMessage(UPDATE,"");
}
}).start();
}
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg){
switch (msg.what){
case UPDATE:
mZrcListView.setRefreshSuccess("加载成功");
mineAdapter.notifyDataSetChanged();
break;
// case AGE:
// ageTv.setText(msg.obj.toString()+"岁");
// break;
}
super.handleMessage(msg);
}
};
private void sendMessage(int what,Object obj){
Message msg = Message.obtain();
msg.what = what;
msg.obj = obj;
handler.sendMessage(msg);;
}
@Override
public void onClick(View v)
{
switch (v.getId())
{
case R.id.frag_mine_header_action_btn_follow:
sendFollow();
break;
case R.id.frag_mine_header_action_btn_follow2:
sendFollow();
break;
default:
break;
}
}
private void sendFollow()
{
mFollowHttp = new FinalHttp();
if (TravellingTrailApplication.loginUser == null)
{
ToastHelper.showToast(MyPageActivity.this, "请先登录", Toast.LENGTH_SHORT);
return;
}
String jsonString = "{\"us_fans_us_id\":" + User_Id +
",\"us_fans_fans_id\":" + TravellingTrailApplication.loginUser.getUs_Info_Us_Id() + "}";
HttpEntity entity;
try
{
entity = new StringEntity(jsonString);
mFollowHttp.post(RequestAddress.FOLLOW_SOMEONE, entity, "application/json",
new AjaxCallBack<Object>()
{
@Override
public void onFailure(Throwable t, int errorNo,
String strMsg)
{
super.onFailure(t, errorNo, strMsg);
if (errorNo == 400)
{
ToastHelper.showToast(
MyPageActivity.this,"已关注",
Toast.LENGTH_SHORT);
}else {
ToastHelper.showToast(
MyPageActivity.this,
"失败!错误代码:" + errorNo + ";错误信息:" + strMsg,
Toast.LENGTH_SHORT);
}
}
@Override
public void onSuccess(Object result)
{
super.onSuccess(result);
ToastHelper.showToast(
MyPageActivity.this,"关注成功",
Toast.LENGTH_SHORT);
}
});
} catch (UnsupportedEncodingException e)
{
e.printStackTrace();
}
}
}