package com.kaixin.android.menu;
import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import zrc.widget.SimpleFooter;
import zrc.widget.SimpleHeader;
import zrc.widget.ZrcListView;
import zrc.widget.ZrcListView.OnStartListener;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.os.Handler;
import android.provider.MediaStore;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.easemob.chat.EMChatManager;
import com.easemob.chat.EMConversation;
import com.easemob.chat.EMMessage;
import com.easemob.chat.TextMessageBody;
import com.kaixin.android.KXApplication;
import com.kaixin.android.R;
import com.kaixin.android.activity.ChatActivity;
import com.kaixin.android.activity.CheckInActivity;
import com.kaixin.android.activity.FriendInfoActivity;
import com.kaixin.android.activity.HomeDiaryDetailActivity;
import com.kaixin.android.activity.HomePhotoPictureDetailActivity;
import com.kaixin.android.activity.PhoneAlbumActivity;
import com.kaixin.android.activity.VoiceActivity;
import com.kaixin.android.activity.WriteRecordActivity;
import com.kaixin.android.anim.UgcAnimations;
import com.kaixin.android.common.Constants;
import com.kaixin.android.common.KaiXinAddress;
import com.kaixin.android.result.ConversationResult;
import com.kaixin.android.result.HomeResult;
import com.kaixin.android.ui.base.FlipperLayout.OnOpenListener;
import com.kaixin.android.utils.ActivityForResultUtil;
import com.kaixin.android.utils.CallService;
import com.kaixin.android.utils.CommonUtils;
import com.kaixin.android.utils.Encrypter;
import com.kaixin.android.utils.ImageUtil;
import com.kaixin.android.utils.MessageUtil;
import com.kaixin.android.utils.StorageUtil;
import com.kaixin.android.utils.StringUtil;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.sharegroup.jiguang.http.HttpCallBack;
import com.sharegroup.jiguang.http.HttpSyncClient;
/**
* 菜单首页类
*
* @author gyz
*
*/
public class Home {
private Context mContext;
private Activity mActivity;
private KXApplication mKXApplication;
private View mHome;
private Button mMenu;
private RelativeLayout mTopLayout;
private TextView mTopText;
private Button mRefresh;
private ZrcListView mDisplay;
private View mUgcView;
private RelativeLayout mUgcLayout;
private ImageView mUgc;
private ImageView mUgcBg;
private ImageView mUgcVoice;
private ImageView mUgcPhoto;
private ImageView mUgcRecord;
private ImageView mUgcLbs;
private OnOpenListener mOnOpenListener;
private String[] mPopupWindowItems = { "好友动态", "最近联系" };
private PopupWindow mPopupWindow;
private View mPopView;
private ListView mPopDisplay;
private PopupWindowAdapter popupAdapter;
private Handler mHandler;
SimpleHeader header;
SimpleFooter footer;
private int pageCount = 50;
private int page = 1;
private ProgressDialog dialog;
/**
* 判断当前的path菜单是否已经显示
*/
private boolean mUgcIsShowing = false;
private HomeAdapter homeAdapter;
private ChatHistoryAdapter chatHistoryAdapter;
private int mWidth;
// private PullToRefreshView mPullRefresh;
public static TextView mMsgNumber;
public static boolean isRead = false;
public Home(Context context, Activity activity, KXApplication application) {
mContext = context;
mWidth = activity.getWindowManager().getDefaultDisplay().getWidth();
mActivity = activity;
mKXApplication = application;
mHome = LayoutInflater.from(context).inflate(R.layout.home, null);
mPopView = LayoutInflater.from(context).inflate(
R.layout.home_popupwindow, null);
findViewById();
setListener();
init();
}
private void findViewById() {
mMenu = (Button) mHome.findViewById(R.id.home_menu);
mTopLayout = (RelativeLayout) mHome.findViewById(R.id.home_top_layout);
mTopText = (TextView) mHome.findViewById(R.id.home_top_text);
mRefresh = (Button) mHome.findViewById(R.id.home_refresh);
mDisplay = (ZrcListView) mHome.findViewById(R.id.home_display);
mUgcView = (View) mHome.findViewById(R.id.home_ugc);
mUgcLayout = (RelativeLayout) mUgcView.findViewById(R.id.ugc_layout);
mUgc = (ImageView) mUgcView.findViewById(R.id.ugc);
mUgcBg = (ImageView) mUgcView.findViewById(R.id.ugc_bg);
mUgcVoice = (ImageView) mUgcView.findViewById(R.id.ugc_voice);
mUgcPhoto = (ImageView) mUgcView.findViewById(R.id.ugc_photo);
mUgcRecord = (ImageView) mUgcView.findViewById(R.id.ugc_record);
mUgcLbs = (ImageView) mUgcView.findViewById(R.id.ugc_lbs);
mPopDisplay = (ListView) mPopView
.findViewById(R.id.home_popupwindow_display);
mMsgNumber = (TextView) mHome
.findViewById(R.id.unread_msg_number);
if(!StringUtil.isNull(StorageUtil.getString(mContext, "hasUnreadMsg"))){
mMsgNumber.setVisibility(View.VISIBLE);
}else{
mMsgNumber.setVisibility(View.GONE);
}
if(!CommonUtils.isNetWorkConnected(mKXApplication)){
mHome.findViewById(R.id.warnning_layout).setVisibility(View.VISIBLE);
}else{
mHome.findViewById(R.id.warnning_layout).setVisibility(View.GONE);
}
// mPullRefresh = (PullToRefreshView) mHome
// .findViewById(R.id.pull_refresh_view);
}
private void setListener() {
mMenu.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (mOnOpenListener != null) {
mOnOpenListener.open();
}
}
});
mTopLayout.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// 显示菜单
initPopupWindow();
}
});
mRefresh.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
getHome();
getNewHome();
}
});
mDisplay.setOnItemClickListener(new ZrcListView.OnItemClickListener() {
@Override
public void onItemClick(ZrcListView parent, View view, int position, long id) {
// TODO Auto-generated method stub
String type = mKXApplication.mMyHomeResults.get(position).getType();
if("photo".equals(type)){
Intent intent = new Intent();
intent.setClass(mContext,
HomePhotoPictureDetailActivity.class);
intent.putExtra("avatar", mKXApplication.mMyHomeResults.get(position).getAvatar());
if(!StorageUtil.getString(mContext, "username").equals(mKXApplication.mMyHomeResults.get(position).getEmail())){
intent.putExtra("uid", mKXApplication.mMyHomeResults.get(position).getUid());
}
intent.putExtra("name", mKXApplication.mMyHomeResults.get(position).getName());
intent.putExtra("result", (Serializable)mKXApplication.mMyHomeResults.get(position));
intent.putExtra("position", position);
mContext.startActivity(intent);
}else if("viewed".equals(type)){
Intent intent = new Intent();
intent.setClass(mContext,
HomeDiaryDetailActivity.class);
if(!StorageUtil.getString(mContext, "username").equals(mKXApplication.mMyHomeResults.get(position).getEmail())){
intent.putExtra("uid", String.valueOf(mKXApplication.mMyHomeResults.get(position).getUid()));
}
intent.putExtra("name", mKXApplication.mMyHomeResults.get(position).getName());
intent.putExtra("result", (Serializable)mKXApplication.mMyHomeResults.get(position));
intent.putExtra("position", position);
mContext.startActivity(intent);
}
}
});
mPopDisplay.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// 这里只更改了标题栏,先不做数据的切换,因为数据有限
mPopupWindow.dismiss();
mTopText.setText(mPopupWindowItems[arg2]);
if(1 == arg2){
mDisplay.setHeadable(null);
mKXApplication.mMyChatHistory = mKXApplication.mSaveConversationDao.queryAllConversation();
mDisplay.setAdapter(new ChatHistoryAdapter());
mMsgNumber.setVisibility(View.GONE);
StorageUtil.saveString(mContext, "hasUnreadMsg", "");
popupAdapter.notifyDataSetChanged();
mDisplay.setOnItemClickListener(new ZrcListView.OnItemClickListener() {
@Override
public void onItemClick(ZrcListView parent, View view, int position, long id) {
Intent intent = new Intent();
intent.setClass(mContext, ChatActivity.class);
intent.putExtra("email", mKXApplication.mMyChatHistory.get(position).getEmail());
intent.putExtra("name", mKXApplication.mMyChatHistory.get(position).getName());
intent.putExtra("avatar", mKXApplication.mMyChatHistory.get(position).getAvatar());
mContext.startActivity(intent);
isRead = true;
}
});
mDisplay.setOnItemLongClickListener(new ZrcListView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(ZrcListView parent, View view, final int position, long id) {
Builder builder = new AlertDialog.Builder(mContext);
builder.setTitle("删除消息").setMessage("确定删除本会话?");
builder.setPositiveButton("确定", new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mKXApplication.mSaveConversationDao.deleteConversation(mKXApplication.mMyChatHistory.get(position));
mKXApplication.mMyChatHistory.remove(position);
chatHistoryAdapter.notifyDataSetChanged();
dialog.dismiss();
}
});
builder.setNegativeButton("取消", null);
builder.show();
return false;
}
});
}else{
mDisplay.setHeadable(header);
mDisplay.setAdapter(new HomeAdapter());
mDisplay.setOnItemClickListener(new ZrcListView.OnItemClickListener() {
@Override
public void onItemClick(ZrcListView parent, View view, int position, long id) {
String type = mKXApplication.mMyHomeResults.get(position).getType();
if("photo".equals(type)){
Intent intent = new Intent();
intent.setClass(mContext,
HomePhotoPictureDetailActivity.class);
if(!StorageUtil.getString(mContext, "username").equals(mKXApplication.mMyHomeResults.get(position).getEmail())){
intent.putExtra("uid", mKXApplication.mMyHomeResults.get(position).getUid());
}
intent.putExtra("avatar", mKXApplication.mMyHomeResults.get(position).getAvatar());
intent.putExtra("name", mKXApplication.mMyHomeResults.get(position).getName());
intent.putExtra("result", (Serializable)mKXApplication.mMyHomeResults.get(position));
intent.putExtra("position", position);
mContext.startActivity(intent);
}else if("viewed".equals(type)){
Intent intent = new Intent();
intent.setClass(mContext,
HomeDiaryDetailActivity.class);
if(!StorageUtil.getString(mContext, "username").equals(mKXApplication.mMyHomeResults.get(position).getEmail())){
intent.putExtra("uid", String.valueOf(mKXApplication.mMyHomeResults.get(position).getUid()));
}
intent.putExtra("name", mKXApplication.mMyHomeResults.get(position).getName());
intent.putExtra("result", (Serializable)mKXApplication.mMyHomeResults.get(position));
intent.putExtra("position", position);
mContext.startActivity(intent);
}
}
});
}
}
});
// Path监听
mUgcView.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// 判断是否已经显示,显示则关闭并隐藏
if (mUgcIsShowing) {
mUgcIsShowing = false;
UgcAnimations.startCloseAnimation(mUgcLayout, mUgcBg, mUgc,
500);
return true;
}
return false;
}
});
// Path监听
mUgc.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// 判断是否显示,已经显示则隐藏,否则则显示
mUgcIsShowing = !mUgcIsShowing;
if (mUgcIsShowing) {
UgcAnimations.startOpenAnimation(mUgcLayout, mUgcBg, mUgc,
500);
} else {
UgcAnimations.startCloseAnimation(mUgcLayout, mUgcBg, mUgc,
500);
}
}
});
// Path 语音按钮监听
mUgcVoice.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Animation anim = UgcAnimations.clickAnimation(500);
anim.setAnimationListener(new AnimationListener() {
public void onAnimationStart(Animation animation) {
}
public void onAnimationRepeat(Animation animation) {
}
public void onAnimationEnd(Animation animation) {
mContext.startActivity(new Intent(mContext,
VoiceActivity.class));
closeUgc();
}
});
mUgcVoice.startAnimation(anim);
}
});
// Path 拍照按钮监听
mUgcPhoto.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Animation anim = UgcAnimations.clickAnimation(500);
anim.setAnimationListener(new AnimationListener() {
public void onAnimationStart(Animation animation) {
}
public void onAnimationRepeat(Animation animation) {
}
public void onAnimationEnd(Animation animation) {
PhotoDialog();
closeUgc();
}
});
mUgcPhoto.startAnimation(anim);
}
});
// Path 记录按钮监听
mUgcRecord.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Animation anim = UgcAnimations.clickAnimation(500);
anim.setAnimationListener(new AnimationListener() {
public void onAnimationStart(Animation animation) {
}
public void onAnimationRepeat(Animation animation) {
}
public void onAnimationEnd(Animation animation) {
mContext.startActivity(new Intent(mContext,
WriteRecordActivity.class));
closeUgc();
}
});
mUgcRecord.startAnimation(anim);
}
});
// Path 签到按钮监听
mUgcLbs.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Animation anim = UgcAnimations.clickAnimation(500);
anim.setAnimationListener(new AnimationListener() {
public void onAnimationStart(Animation animation) {
}
public void onAnimationRepeat(Animation animation) {
}
public void onAnimationEnd(Animation animation) {
mContext.startActivity(new Intent(mContext,
CheckInActivity.class));
closeUgc();
}
});
mUgcLbs.startAnimation(anim);
}
});
/*mPullRefresh.setOnHeaderRefreshListener(new OnHeaderRefreshListener() {
@Override
public void onHeaderRefresh(PullToRefreshView view) {
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
// 获取首页数据
getNewHome();
homeAdapter.notifyDataSetChanged();
mPullRefresh.onHeaderRefreshComplete("更新于:"+new Date().toLocaleString());
}
}, 1000);
}
});
mPullRefresh.setOnFooterRefreshListener(new OnFooterRefreshListener() {
@Override
public void onFooterRefresh(PullToRefreshView view) {
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
mPullRefresh.onFooterRefreshComplete();
}
}, 1000);
}
});*/
}
private void init() {
//定义refreshview
// mPullRefresh.setFooterRefreshEnable(true);
// mPullRefresh.setHeaderRefreshEnable(true);
// 设置默认偏移量,主要用于实现透明标题栏功能。(可选)
// float density = mContext.getResources().getDisplayMetrics().density;
// mDisplay.setFirstTopOffset((int) (density));
// 设置下拉刷新的样式(可选,但如果没有Header则无法下拉刷新)
header = new SimpleHeader(mContext);
header.setTextColor(0xff0066aa);
header.setCircleColor(0xff33bbee);
mDisplay.setHeadable(header);
// 设置加载更多的样式(可选)
footer = new SimpleFooter(mContext);
footer.setCircleColor(0xff33bbee);
mDisplay.setFootable(footer);
// 设置列表项出现动画(可选)
mDisplay.setItemAnimForTopIn(R.anim.topitem_in);
mDisplay.setItemAnimForBottomIn(R.anim.bottomitem_in);
// 下拉刷新事件回调(可选)
mDisplay.setOnRefreshStartListener(new OnStartListener() {
@Override
public void onStart() {
refresh();
}
});
// 加载更多事件回调(可选)
mDisplay.setOnLoadMoreStartListener(new OnStartListener() {
@Override
public void onStart() {
loadMore();
}
});
mHandler = new Handler();
// 获取首页数据
getHome();
// 添加适配器
homeAdapter = new HomeAdapter();
chatHistoryAdapter = new ChatHistoryAdapter();
mDisplay.setAdapter(homeAdapter);
mDisplay.setDivider(null);
if(getPageCount() > 1){
mDisplay.startLoadMore(); // 开启LoadingMore功能
}
mDisplay.refresh(); // 主动下拉刷新
}
public void showUnreadMsg(){
if(isRead){
mKXApplication.mMyChatHistory = mKXApplication.mSaveConversationDao.queryAllConversation();
mDisplay.setAdapter(new ChatHistoryAdapter());
isRead = false;
}
if(!StringUtil.isNull(StorageUtil.getString(mContext, "hasUnreadMsg"))){
mMsgNumber.setVisibility(View.VISIBLE);
}else{
mMsgNumber.setVisibility(View.GONE);
}
}
private void refresh(){
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
getNewHome();
homeAdapter.notifyDataSetChanged();
mDisplay.setRefreshSuccess("加载成功"); // 通知加载成功
}
}, 2 * 1000);
}
private void loadMore(){
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
page++;
if(page <= getPageCount()){
homeAdapter.notifyDataSetChanged();
mDisplay.setLoadMoreSuccess();
if(page == getPageCount()){
mDisplay.stopLoadMore();
}
}else{
mDisplay.setLoadMoreSuccess();
mDisplay.stopLoadMore();
}
}
}, 2 * 1000);
}
private int getPageCount() {
if(mKXApplication.mMyHomeResults.size() % pageCount == 0){
return mKXApplication.mMyHomeResults.size() / pageCount;
}else{
return mKXApplication.mMyHomeResults.size() / pageCount + 1;
}
}
public void fresh(){
// 获取我的好友
getNewHome();
homeAdapter.notifyDataSetChanged();
}
/**
* 获取首页数据
*/
@SuppressWarnings("unchecked")
private void getHome() {
if(!CommonUtils.isNetWorkConnected(mContext)){
mKXApplication.mMyHomeResults = mKXApplication.mSaveHomeResultDao.queryAllHomeResult();
}else{
mKXApplication.mMyHomeResults = mKXApplication.mSaveHomeResultDao.queryAllHomeResult();
if(mKXApplication.mMyHomeResults.isEmpty()){
HashMap<String, String> params = new HashMap<String, String>();
params.put("username", StorageUtil.getString(mContext, "username"));
params.put("password", Encrypter.md5(StorageUtil.getString(mContext, "password")));
HttpSyncClient.getInstance().post(mContext, Constants.getUrl() + "/MessagesServlet", params, new HttpCallBack() {
@Override
public void onStartRequest() {
dialog = new ProgressDialog(mContext);
dialog.setMessage(mContext.getString(R.string.listdialogmessage));
if(!dialog.isShowing())
dialog.show();
}
@Override
public void onSuccess(Object paramObject) {
dismiss();
JSONObject jsonObject;
try {
jsonObject = new JSONObject(paramObject.toString());
JSONArray array = jsonObject.getJSONArray("data");
HomeResult result = null;
for (int i = 0; i < array.length(); i++) {
result = new HomeResult();
result.setUid(array.getJSONObject(i).getInt("uid"));
result.setEmail(array.getJSONObject(i).getString("email"));
result.setName(array.getJSONObject(i).getString("name"));
result.setAvatar(array.getJSONObject(i).getString("avatar"));
result.setType(array.getJSONObject(i).getString("type"));
result.setTime(array.getJSONObject(i).getString("time"));
result.setTitle(array.getJSONObject(i).getString("title"));
result.setMessageid(array.getJSONObject(i).getInt("messageid"));
result.setAlbumid(array.getJSONObject(i).getInt("albumid"));
if (array.getJSONObject(i).has("from")) {
result.setFrom(array.getJSONObject(i).getString("from"));
}
if (array.getJSONObject(i).has("comment_count")) {
result.setComment_count(array.getJSONObject(i).getInt(
"comment_count"));
}
if (array.getJSONObject(i).has("like_count")) {
result.setLike_count(array.getJSONObject(i).getInt(
"like_count"));
}
if (array.getJSONObject(i).has("photo")) {
JSONArray photoArray = array.getJSONObject(i).getJSONArray("photo");
List<String> photos = new ArrayList<String>();;
for(int j=0; j< photoArray.length();j++){
photos.add(photoArray.getString(j));
}
result.setPhoto(photos);
}
mKXApplication.mMyHomeResults.add(result);
}
homeAdapter.notifyDataSetChanged();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onFailure(Exception paramException) {
dismiss();
}
}, String.class);
}else{
HashMap<String, String> params = new HashMap<String, String>();
params.put("username", StorageUtil.getString(mContext, "username"));
params.put("password", Encrypter.md5(StorageUtil.getString(mContext, "password")));
params.put("time", mKXApplication.mMyHomeResults.get(0).getTime());
HttpSyncClient.getInstance().post(mContext, Constants.getUrl() + "/UpdateMessagesServlet", params, new HttpCallBack() {
@Override
public void onStartRequest() {
dialog = new ProgressDialog(mContext);
dialog.setMessage(mContext.getString(R.string.listdialogmessage));
if(!dialog.isShowing())
dialog.show();
}
@Override
public void onSuccess(Object paramObject) {
dismiss();
JSONObject jsonObject;
try {
jsonObject = new JSONObject(paramObject.toString());
JSONArray array = jsonObject.getJSONArray("data");
HomeResult result = null;
for (int i = 0; i < array.length(); i++) {
result = new HomeResult();
result.setUid(array.getJSONObject(i).getInt("uid"));
result.setEmail(array.getJSONObject(i).getString("email"));
result.setName(array.getJSONObject(i).getString("name"));
result.setAvatar(array.getJSONObject(i).getString("avatar"));
result.setType(array.getJSONObject(i).getString("type"));
result.setTime(array.getJSONObject(i).getString("time"));
result.setTitle(array.getJSONObject(i).getString("title"));
result.setMessageid(array.getJSONObject(i).getInt("messageid"));
result.setAlbumid(array.getJSONObject(i).getInt("albumid"));
if (array.getJSONObject(i).has("from")) {
result.setFrom(array.getJSONObject(i).getString("from"));
}
if (array.getJSONObject(i).has("comment_count")) {
result.setComment_count(array.getJSONObject(i).getInt(
"comment_count"));
}
if (array.getJSONObject(i).has("like_count")) {
result.setLike_count(array.getJSONObject(i).getInt(
"like_count"));
}
if (array.getJSONObject(i).has("photo")) {
JSONArray photoArray = array.getJSONObject(i).getJSONArray("photo");
List<String> photos = new ArrayList<String>();;
for(int j=0; j< photoArray.length();j++){
photos.add(photoArray.getString(j));
}
result.setPhoto(photos);
}
mKXApplication.mMyHomeResults.set(i, result);
}
homeAdapter.notifyDataSetChanged();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onFailure(Exception paramException) {
dismiss();
}
}, String.class);
}
}
}
private void dismiss() {
if(dialog.isShowing())
dialog.dismiss();
}
/**
* 获取最新首页数据
*/
@SuppressWarnings("unchecked")
private void getNewHome() {
if(!mKXApplication.mMyHomeResults.isEmpty()){
String json = CallService.getNewMessages(mKXApplication.mMyHomeResults.get(0).getTime());
try {
JSONObject jsonObject = new JSONObject(json);
JSONArray array = jsonObject.getJSONArray("data");
HomeResult result = null;
if(array.length() != 0){
for (int i = 0; i < array.length(); i++) {
result = new HomeResult();
result.setUid(array.getJSONObject(i).getInt("uid"));
result.setName(array.getJSONObject(i).getString("name"));
result.setAvatar(array.getJSONObject(i).getString("avatar"));
result.setType(array.getJSONObject(i).getString("type"));
result.setTime(array.getJSONObject(i).getString("time"));
result.setTitle(array.getJSONObject(i).getString("title"));
result.setMessageid(array.getJSONObject(i).getInt("messageid"));
result.setAlbumid(array.getJSONObject(i).getInt("albumid"));
if (array.getJSONObject(i).has("from")) {
result.setFrom(array.getJSONObject(i).getString("from"));
}
if (array.getJSONObject(i).has("comment_count")) {
result.setComment_count(array.getJSONObject(i).getInt(
"comment_count"));
}
if (array.getJSONObject(i).has("like_count")) {
result.setLike_count(array.getJSONObject(i).getInt(
"like_count"));
}
if (array.getJSONObject(i).has("photo")) {
JSONArray photoArray = array.getJSONObject(i).getJSONArray("photo");
List<String> photos = new ArrayList<String>();;
for(int j=0; j< photoArray.length();j++){
photos.add(photoArray.getString(j));
}
result.setPhoto(photos);
}
mKXApplication.mSaveHomeResultDao.saveHomeResult(result);
mKXApplication.mMyHomeResults.add(0, result);
}
}else{
MessageUtil.showMsg(mContext, "没有更新的内容!");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 初始化菜单
*/
private void initPopupWindow() {
popupAdapter = new PopupWindowAdapter();
mPopDisplay.setAdapter(popupAdapter);
if (mPopupWindow == null) {
mPopupWindow = new PopupWindow(mPopView, mTopLayout.getWidth(),
LayoutParams.WRAP_CONTENT, true);
mPopupWindow.setBackgroundDrawable(new BitmapDrawable());
}
if (mPopupWindow.isShowing()) {
mPopupWindow.dismiss();
} else {
mPopupWindow.showAsDropDown(mTopLayout, 0, -10);
}
}
/**
* 获取Path菜单显示状态
*
* @return 显示状态
*/
public boolean getUgcIsShowing() {
return mUgcIsShowing;
}
/**
* 关闭Path菜单
*/
public void closeUgc() {
mUgcIsShowing = false;
UgcAnimations.startCloseAnimation(mUgcLayout, mUgcBg, mUgc, 500);
}
/**
* 显示Path菜单
*/
public void showUgc() {
if (mUgcView != null) {
mUgcView.setVisibility(View.VISIBLE);
}
}
/**
* 关闭Path菜单
*/
public void dismissUgc() {
if (mUgcView != null) {
mUgcView.setVisibility(View.GONE);
}
}
private class PopupWindowAdapter extends BaseAdapter {
public int getCount() {
return mPopupWindowItems.length;
}
public Object getItem(int position) {
return mPopupWindowItems[position];
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(
R.layout.home_popupwindow_item, null);
holder = new ViewHolder();
holder.name = (TextView) convertView
.findViewById(R.id.home_popupwindow_item_name);
holder.unread_msg_number = (TextView) convertView
.findViewById(R.id.unread_msg_number);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.name.setText(mPopupWindowItems[position]);
if(position == 1){
if(!StringUtil.isNull(StorageUtil.getString(mContext, "hasUnreadMsg"))){
holder.unread_msg_number.setVisibility(View.VISIBLE);
}else{
holder.unread_msg_number.setVisibility(View.GONE);
}
}else{
holder.unread_msg_number.setVisibility(View.GONE);
}
return convertView;
}
class ViewHolder {
TextView name;
TextView unread_msg_number;
}
}
private class HomeAdapter extends BaseAdapter {
public int getCount() {
// return mKXApplication.mMyHomeResults.size();
if(page * pageCount < mKXApplication.mMyHomeResults.size()){
return page * pageCount;
}else{
return mKXApplication.mMyHomeResults.size();
}
}
public Object getItem(int position) {
return mKXApplication.mMyHomeResults.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(
R.layout.home_item, null);
holder = new ViewHolder();
holder.viewed = (View) convertView
.findViewById(R.id.home_item_viewed);
holder.viewed_avatar = (ImageView) holder.viewed
.findViewById(R.id.home_viewed_item_avatar);
holder.viewed_name = (TextView) holder.viewed
.findViewById(R.id.home_viewed_item_name);
holder.viewed_time = (TextView) holder.viewed
.findViewById(R.id.home_viewed_item_time);
holder.viewed_title = (TextView) holder.viewed
.findViewById(R.id.home_viewed_item_title);
holder.viewed_all = (TextView) holder.viewed
.findViewById(R.id.home_viewed_item_all);
holder.photo = (View) convertView
.findViewById(R.id.home_item_photo);
holder.photo_avatar = (ImageView) holder.photo
.findViewById(R.id.home_photo_item_avatar);
holder.photo_name = (TextView) holder.photo
.findViewById(R.id.home_photo_item_name);
holder.photo_time = (TextView) holder.photo
.findViewById(R.id.home_photo_item_time);
holder.photo_title = (TextView) holder.photo
.findViewById(R.id.home_photo_item_titie);
holder.photo_photo1 = (ImageView) holder.photo
.findViewById(R.id.home_photo_item_photo1);
holder.photo_photo2 = (ImageView) holder.photo
.findViewById(R.id.home_photo_item_photo2);
holder.photo_photo3 = (ImageView) holder.photo
.findViewById(R.id.home_photo_item_photo3);
holder.photo_photo4 = (ImageView) holder.photo
.findViewById(R.id.home_photo_item_photo4);
holder.photo_photo5 = (ImageView) holder.photo
.findViewById(R.id.home_photo_item_photo5);
holder.photo_photo6 = (ImageView) holder.photo
.findViewById(R.id.home_photo_item_photo6);
holder.photo_photo7 = (ImageView) holder.photo
.findViewById(R.id.home_photo_item_photo7);
holder.photo_photo8 = (ImageView) holder.photo
.findViewById(R.id.home_photo_item_photo8);
holder.photo_photo9 = (ImageView) holder.photo
.findViewById(R.id.home_photo_item_photo9);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(mWidth / 4 , mWidth / 4);
params.setMargins(2, 2, 2, 2);
holder.photo_photo1.setLayoutParams(params);
holder.photo_photo2.setLayoutParams(params);
holder.photo_photo3.setLayoutParams(params);
holder.photo_photo4.setLayoutParams(params);
holder.photo_photo5.setLayoutParams(params);
holder.photo_photo6.setLayoutParams(params);
holder.photo_photo7.setLayoutParams(params);
holder.photo_photo8.setLayoutParams(params);
holder.photo_photo9.setLayoutParams(params);
holder.photo_from = (TextView) holder.photo
.findViewById(R.id.home_photo_item_from);
holder.photo_comment_count = (TextView) holder.photo
.findViewById(R.id.home_photo_item_comment_count);
holder.photo_like_count = (TextView) holder.photo
.findViewById(R.id.home_photo_item_like_count);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
final HomeResult result = mKXApplication.mMyHomeResults.get(position);
new Thread(new Runnable() {
@Override
public void run() {
mKXApplication.mSaveHomeResultDao.saveHomeResult(result);
}
}).start();
if ("viewed".equals(result.getType())) {
holder.viewed.setVisibility(View.VISIBLE);
holder.photo.setVisibility(View.GONE);
// holder.viewed_avatar.setImageBitmap(mKXApplication
// .getAvatar(result.getAvatar()));
ImageLoader.getInstance().displayImage(Constants.getImageUrl() + result.getAvatar(), holder.viewed_avatar, ImageUtil.getOption());
holder.viewed_name.setText(result.getName());
holder.viewed_time.setText(result.getTime());
holder.viewed_title.setText(result.getTitle());
holder.viewed_all.setText("查看" + result.getName() + "的回复");
holder.viewed_avatar.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(mContext, FriendInfoActivity.class);
intent.putExtra("uid", String.valueOf(result.getUid()));
intent.putExtra("name", result.getName());
intent.putExtra("avatar", result.getAvatar());
mContext.startActivity(intent);
}
});
} else {
holder.viewed.setVisibility(View.GONE);
holder.photo.setVisibility(View.VISIBLE);
holder.photo_photo2.setVisibility(View.GONE);
holder.photo_photo3.setVisibility(View.GONE);
holder.photo_photo4.setVisibility(View.GONE);
holder.photo_photo5.setVisibility(View.GONE);
holder.photo_photo6.setVisibility(View.GONE);
holder.photo_photo7.setVisibility(View.GONE);
holder.photo_photo8.setVisibility(View.GONE);
holder.photo_photo9.setVisibility(View.GONE);
// holder.photo_avatar.setImageBitmap(mKXApplication
// .getAvatar(result.getAvatar()));
ImageLoader.getInstance().displayImage(Constants.getImageUrl() + result.getAvatar(), holder.photo_avatar, ImageUtil.getOption());
holder.photo_name.setText(result.getName());
holder.photo_time.setText(result.getTime());
holder.photo_title.setText(result.getTitle());
holder.photo_avatar.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(mContext, FriendInfoActivity.class);
if(!StorageUtil.getString(mContext, "username").equals(result.getEmail())){
intent.putExtra("uid", result.getUid());
}
intent.putExtra("email", result.getEmail());
intent.putExtra("name", result.getName());
intent.putExtra("avatar", result.getAvatar());
mContext.startActivity(intent);
}
});
for(int i = 0; i < result.getPhoto().size(); i++){
switch(i){
case 0:
ImageLoader.getInstance().displayImage(Constants.getImageUrl() + result.getPhoto().get(i), holder.photo_photo1, ImageUtil.getImageOption());
break;
case 1:
holder.photo_photo2.setVisibility(View.VISIBLE);
ImageLoader.getInstance().displayImage(Constants.getImageUrl() + result.getPhoto().get(i), holder.photo_photo2, ImageUtil.getImageOption());
break;
case 2:
holder.photo_photo3.setVisibility(View.VISIBLE);
ImageLoader.getInstance().displayImage(Constants.getImageUrl() + result.getPhoto().get(i), holder.photo_photo3, ImageUtil.getImageOption());
break;
case 3:
holder.photo_photo4.setVisibility(View.VISIBLE);
ImageLoader.getInstance().displayImage(Constants.getImageUrl() + result.getPhoto().get(i), holder.photo_photo4, ImageUtil.getImageOption());
break;
case 4:
holder.photo_photo5.setVisibility(View.VISIBLE);
ImageLoader.getInstance().displayImage(Constants.getImageUrl() + result.getPhoto().get(i), holder.photo_photo5, ImageUtil.getImageOption());
break;
case 5:
holder.photo_photo6.setVisibility(View.VISIBLE);
ImageLoader.getInstance().displayImage(Constants.getImageUrl() + result.getPhoto().get(i), holder.photo_photo6, ImageUtil.getImageOption());
break;
case 6:
holder.photo_photo7.setVisibility(View.VISIBLE);
ImageLoader.getInstance().displayImage(Constants.getImageUrl() + result.getPhoto().get(i), holder.photo_photo7, ImageUtil.getImageOption());
break;
case 7:
holder.photo_photo8.setVisibility(View.VISIBLE);
ImageLoader.getInstance().displayImage(Constants.getImageUrl() + result.getPhoto().get(i), holder.photo_photo8, ImageUtil.getImageOption());
break;
case 8:
holder.photo_photo9.setVisibility(View.VISIBLE);
ImageLoader.getInstance().displayImage(Constants.getImageUrl() + result.getPhoto().get(i), holder.photo_photo9, ImageUtil.getImageOption());
break;
}
}
// holder.photo_photo1.setImageBitmap(mKXApplication.getHome(result
// .getPhoto()));
holder.photo_from.setText(result.getFrom());
holder.photo_comment_count.setText(result.getComment_count()
+ "");
holder.photo_like_count.setText(result.getLike_count() + "");
}
return convertView;
}
class ViewHolder {
View viewed;
ImageView viewed_avatar;
TextView viewed_name;
TextView viewed_time;
TextView viewed_title;
TextView viewed_all;
View photo;
ImageView photo_avatar;
TextView photo_name;
TextView photo_time;
TextView photo_title;
ImageView photo_photo1;
ImageView photo_photo2;
ImageView photo_photo3;
ImageView photo_photo4;
ImageView photo_photo5;
ImageView photo_photo6;
ImageView photo_photo7;
ImageView photo_photo8;
ImageView photo_photo9;
TextView photo_from;
TextView photo_comment_count;
TextView photo_like_count;
}
}
private class ChatHistoryAdapter extends BaseAdapter {
public int getCount() {
return mKXApplication.mMyChatHistory.size();
}
public Object getItem(int position) {
return mKXApplication.mMyChatHistory.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(
R.layout.row_chat_history, null);
holder = new ViewHolder();
holder.list_item_layout = (RelativeLayout) convertView
.findViewById(R.id.list_item_layout);
holder.avatar_container = (RelativeLayout) convertView
.findViewById(R.id.avatar_container);
holder.name = (TextView) convertView
.findViewById(R.id.name);
holder.avatar = (ImageView) convertView
.findViewById(R.id.avatar);
holder.time = (TextView) convertView
.findViewById(R.id.time);
holder.msg_state = (ImageView) convertView
.findViewById(R.id.msg_state);
holder.message = (TextView) convertView
.findViewById(R.id.message);
holder.unread_msg_number = (TextView) convertView
.findViewById(R.id.unread_msg_number);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
if(position%2==0)
{
holder.list_item_layout.setBackgroundResource(R.drawable.mm_listitem);
}else{
holder.list_item_layout.setBackgroundResource(R.drawable.mm_listitem_grey);
}
ConversationResult result = mKXApplication.mMyChatHistory.get(position);
ImageLoader.getInstance().displayImage(Constants.getImageUrl() + result.getAvatar(), holder.avatar, ImageUtil.getOption());
EMConversation conversation = EMChatManager.getInstance().getConversation(result.getEmail());
if (conversation.getUnreadMsgCount() > 0) {
// 显示与此用户的消息未读数
holder.unread_msg_number.setText(String.valueOf(conversation.getUnreadMsgCount()));
holder.unread_msg_number.setVisibility(View.VISIBLE);
} else {
holder.unread_msg_number.setVisibility(View.INVISIBLE);
}
holder.name.setText(result.getName());
holder.time.setText(result.getTime());
if (conversation.getLastMessage().getType() == EMMessage.Type.TXT) {
TextMessageBody txtBody = (TextMessageBody) conversation.getLastMessage().getBody();
holder.message.setText(txtBody.getMessage().toString());
}
if (conversation.getLastMessage().getType() == EMMessage.Type.IMAGE) {
holder.message.setText("图片");
}
if (conversation.getLastMessage().getType() == EMMessage.Type.LOCATION) {
holder.message.setText("位置信息");
}
if (conversation.getLastMessage().getType() == EMMessage.Type.VOICE) {
holder.message.setText("语音");
}
return convertView;
}
class ViewHolder {
RelativeLayout list_item_layout;
RelativeLayout avatar_container;
TextView name;
ImageView avatar;
TextView time;
ImageView msg_state;
TextView message;
TextView unread_msg_number;
}
}
/**
* 照片对话框
*/
private void PhotoDialog() {
AlertDialog.Builder builder = new Builder(mContext);
builder.setTitle("上传照片至OOXX");
builder.setItems(new String[] { "拍照上传", "上传手机中的照片" },
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Intent intent = null;
switch (which) {
case 0:
intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File dir = new File(KaiXinAddress.SDCARED_CAMERA);
if (!dir.exists()) {
dir.mkdirs();
}
mKXApplication.mUploadPhotoPath = KaiXinAddress.SDCARED_CAMERA
+ UUID.randomUUID().toString();
File file = new File(
mKXApplication.mUploadPhotoPath);
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
}
}
intent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(file));
mActivity
.startActivityForResult(
intent,
ActivityForResultUtil.REQUESTCODE_UPLOADPHOTO_CAMERA);
break;
case 1:
mContext.startActivity(new Intent(mContext,
PhoneAlbumActivity.class));
break;
}
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.create().show();
}
public View getView() {
return mHome;
}
public void setOnOpenListener(OnOpenListener onOpenListener) {
mOnOpenListener = onOpenListener;
}
}