package com.suan.weclient.util; import java.io.InputStream; import org.apache.http.HttpResponse; import org.apache.http.util.EntityUtils; import org.json.JSONObject; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.util.Log; import android.view.View; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.Toast; import com.suan.weclient.util.DataManager.DialogSureClickListener; import com.suan.weclient.util.DataParser.MessageListParseCallBack; import com.suan.weclient.util.DataParser.MessageResultHolder; import com.suan.weclient.util.DataParser.ParseMassDataCallBack; import com.suan.weclient.util.WeChatLoader.WechatExceptionListener; import com.suan.weclient.util.WeChatLoader.WechatGetHeadImgCallBack; import com.suan.weclient.util.WeChatLoader.WechatGetUserProfleCallBack; import com.suan.weclient.util.WeChatLoader.WechatLoginCallBack; import com.suan.weclient.util.WeChatLoader.WechatMassCallBack; import com.suan.weclient.util.WeChatLoader.WechatMessageListCallBack; import com.suan.weclient.util.WeChatLoader.WechatMessagePageCallBack; import com.suan.weclient.util.WeChatLoader.WechatMessageReplyCallBack; import com.suan.weclient.util.WeChatLoader.WechatMessageStarCallBack; import com.suan.weclient.util.net.images.ImageCacheManager; public class WechatManager { public interface OnActionFinishListener { public void onFinish(Object object); } private DataManager mDataManager; private Context mContext; public WechatManager(DataManager dataManager, Context context) { mDataManager = dataManager; mContext = context; } public void login(final int userIndex, final boolean popDialog, final OnActionFinishListener onActionFinishListener) { if (popDialog) { mDataManager.doDismissAllDialog(); mDataManager.doLoadingStart("登录..."); } WeChatLoader .wechatLogin( new WechatExceptionListener() { @Override public void onError() { // TODO Auto-generated method stub mDataManager.doPopEnsureDialog(true, false, "登录失败 重试?", new DialogSureClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method // stub login(userIndex, popDialog, onActionFinishListener); } }); } }, new WechatLoginCallBack() { @Override public void onBack(HttpResponse response) { // TODO Auto-generated method stub try { UserBean nowBean = mDataManager .getUserGroup().get(userIndex); int loginResult = DataParser.analyseLogin( nowBean, response, mContext); switch (loginResult) { case DataParser.LOGIN_SUCCESS: mDataManager.doLoginSuccess(nowBean); onActionFinishListener.onFinish(null); break; case DataParser.LOGIN_FAILED: mDataManager.doPopEnsureDialog(true, false, "登录失败 请检查账户名和密码", new DialogSureClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method // stub mDataManager.doDismissAllDialog(); } }); break; } } catch (Exception exception) { } } }, mDataManager.getUserGroup().get(userIndex) .getUserName(), mDataManager.getUserGroup().get(userIndex).getPwd(), "", "json"); } public void getUserProfile(final boolean popDialog, final int userIndex, final OnActionFinishListener onActionFinishListener) { if (popDialog) { mDataManager.doLoadingStart("获取用户数据..."); } WeChatLoader.wechatGetUserProfile(new WechatExceptionListener() { @Override public void onError() { // TODO Auto-generated method stub mDataManager.doPopEnsureDialog(true, false, "获取用户信息失败 重试?", new DialogSureClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub getUserProfile(popDialog, userIndex, onActionFinishListener); } }); } }, new WechatGetUserProfleCallBack() { @Override public void onBack(HttpResponse response, String referer) { // TODO Auto-generated method // stub try { String strResult = EntityUtils.toString(response .getEntity()); if (popDialog) { mDataManager.doLoadingStart("解析用户数据..."); } int getUserProfileState = DataParser.getUserProfile( strResult, mDataManager.getUserGroup().get(userIndex)); switch (getUserProfileState) { case DataParser.GET_USER_PROFILE_SUCCESS: mDataManager.doProfileGet(mDataManager.getUserGroup() .get(userIndex)); onActionFinishListener.onFinish(referer); break; case DataParser.GET_USER_PROFILE_FAILED: break; } } catch (Exception exception) { } } }, mDataManager.getUserGroup().get(userIndex)); } public void getUserImgDirectly(final boolean popDialog, final int userIndex, final ImageView userProfileImageView, final OnActionFinishListener onActionFinishListener) { WeChatLoader.wechatGetUserProfile(new WechatExceptionListener() { @Override public void onError() { // TODO Auto-generated method stub mDataManager.doPopEnsureDialog(true, false, "获取用户信息失败 重试?", new DialogSureClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub getUserProfile(popDialog, userIndex, onActionFinishListener); } }); } }, new WechatGetUserProfleCallBack() { @Override public void onBack(HttpResponse response, String referer) { // TODO Auto-generated method // stub try { String strResult = EntityUtils.toString(response .getEntity()); int getUserProfileState = DataParser.getUserProfile( strResult, mDataManager.getUserGroup().get(userIndex)); switch (getUserProfileState) { case DataParser.GET_USER_PROFILE_SUCCESS: getUserImgWithReferer(userIndex, popDialog, userProfileImageView, onActionFinishListener, referer); break; case DataParser.GET_USER_PROFILE_FAILED: break; } } catch (Exception exception) { } } }, mDataManager.getUserGroup().get(userIndex)); } public void getUserImgWithReferer(final int userIndex, final boolean popDialog, final ImageView imageView, final OnActionFinishListener onActionFinishListener, final String referer) { if (popDialog) { mDataManager.doLoadingStart("获取用户头像..."); } WeChatLoader.wechatGetHeadImg(new WechatExceptionListener() { @Override public void onError() { // TODO // Auto-generated // method // stub mDataManager.doLoadingEnd(); mDataManager.doPopEnsureDialog(true, false, "获取用户信息失败 重试?", new DialogSureClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub getUserImgWithReferer(userIndex, popDialog, imageView, onActionFinishListener, referer); } }); } }, new WechatGetHeadImgCallBack() { @Override public void onBack(HttpResponse response, String referer, ImageView imageView) { // TODO try { if (popDialog) { mDataManager.doLoadingStart("设置用户头像..."); } Bitmap bitmap = BitmapFactory .decodeStream((InputStream) response.getEntity() .getContent()); mDataManager.getCacheManager().putDiskBitmap( ImageCacheManager.CACHE_USER_PROFILE + mDataManager.getUserGroup() .get(userIndex).getUserName(), bitmap); if (imageView != null) { imageView.setImageBitmap(bitmap); } onActionFinishListener.onFinish(bitmap); } catch (Exception exception) { } } }, mDataManager.getUserGroup().get(userIndex), mDataManager .getUserGroup().get(userIndex).getFakeId(), referer, imageView); } public void getMassData(final int userIndex, final boolean popDialog, final OnActionFinishListener onActionFinishListener) { if (popDialog) { mDataManager.doLoadingStart("获取用户群发数据..."); } WeChatLoader.wechatGetMassData(new WechatExceptionListener() { @Override public void onError() { // TODO Auto-generated method stub mDataManager.doPopEnsureDialog(true, false, "获取用户信息失败 重试?", new DialogSureClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub getMassData(userIndex, popDialog, onActionFinishListener); } }); } }, new WechatMassCallBack() { @Override public void onBack(HttpResponse response) { // TODO Auto-generated method stub try { if (popDialog) { mDataManager.doLoadingStart("解析用户群发数据..."); } String strResult = EntityUtils.toString(response .getEntity()); DataParser.getMassData(strResult, mDataManager .getUserGroup().get(userIndex), new ParseMassDataCallBack() { @Override public void onBack(UserBean userBean) { // TODO Auto-generated method stub mDataManager.doProfileGet(mDataManager .getUserGroup().get(userIndex)); onActionFinishListener.onFinish(null); } }); } catch (Exception exception) { Log.e("mass parse error", "" + exception); } } }, mDataManager.getUserGroup().get(userIndex)); } public void getNewMessageList(final boolean popLoadingDialog, final int userIndex, final OnActionFinishListener onActionFinishListener) { if (popLoadingDialog) { mDataManager.doLoadingStart("获取消息数据..."); } WeChatLoader.wechatGetMessageList(new WechatExceptionListener() { @Override public void onError() { // TODO Auto-generated method stub mDataManager.doPopEnsureDialog(true, false, "获取消息失败 重试?", new DialogSureClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub getNewMessageList(popLoadingDialog, userIndex, onActionFinishListener); } }); } }, new WechatMessageListCallBack() { @Override public void onBack(HttpResponse response, String referer) { // TODO Auto-generated method // stub try { if (popLoadingDialog) { mDataManager.doDismissAllDialog(); mDataManager.doLoadingStart("解析消息数据..."); } String strResult = EntityUtils.toString(response .getEntity()); DataParser.getNewMessage(new MessageListParseCallBack() { @Override public void onBack( MessageResultHolder messageResultHolder) { // TODO // Auto-generated // method // stub mDataManager.doMessageGet(mDataManager .getMessageHolders().get(userIndex)); mDataManager.doLoadingEnd(); } }, strResult, mDataManager.getUserGroup().get(userIndex), mDataManager.getMessageHolders().get(userIndex), referer); mDataManager.doDismissAllDialog(); onActionFinishListener.onFinish(null); } catch (Exception exception) { } } }, mDataManager.getUserGroup().get(userIndex)); } public void getNextMessageList(final int page, final int userIndex, final OnActionFinishListener onActionFinishListener) { WeChatLoader.wechatGetMessagePage(new WechatExceptionListener() { @Override public void onError() { // TODO Auto-generated method stub mDataManager.doPopEnsureDialog(true, false, "获取消息列表失败 网络错误 重试?", new DialogSureClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub getNextMessageList(page, userIndex, onActionFinishListener); } }); } }, new WechatMessagePageCallBack() { @Override public void onBack(HttpResponse response, String referer) { // TODO Auto-generated method stub try { String strResult = EntityUtils.toString(response .getEntity()); DataParser.getNextMessage(new MessageListParseCallBack() { @Override public void onBack( MessageResultHolder messageResultHolder) { // TODO // Auto-generated // method // stub // Log.e("get next message", // "message size"+messageResultHolder.messageItems.size()); mDataManager.doMessageGet(mDataManager .getMessageHolders().get(userIndex)); } }, strResult, mDataManager.getUserGroup().get(userIndex), mDataManager.getMessageHolders().get(userIndex), referer); } catch (Exception exception) { } onActionFinishListener.onFinish(null); } }, mDataManager.getMessageHolders().get(userIndex), page); } public void reply(final int userIndex, final int position, final String replyContent, final OnActionFinishListener onActionFinishListener) { WeChatLoader.wechatMessageReply( new WechatExceptionListener() { @Override public void onError() { // TODO Auto-generated method stub } }, new WechatMessageReplyCallBack() { @Override public void onBack(HttpResponse response) { // TODO Auto-generated method stub try { String strResult = EntityUtils.toString(response .getEntity()); Toast.makeText(mContext, "回复成功", Toast.LENGTH_SHORT) .show(); onActionFinishListener.onFinish(null); } catch (Exception exception) { } } }, mDataManager.getUserGroup().get(userIndex), mDataManager.getMessageHolders().get(userIndex) .getMessageList().get(position), replyContent); } public void star(final int userIndex, final int position, final ImageButton v, final boolean star, final OnActionFinishListener onActionFinishListener) { WeChatLoader.wechatMessageStar( new WechatExceptionListener() { @Override public void onError() { // TODO Auto-generated method stub } }, new WechatMessageStarCallBack() { @Override public void onBack(HttpResponse response) { // TODO Auto-generated method // stub try { String strResult = EntityUtils.toString(response .getEntity()); JSONObject resultJsonObject = new JSONObject( strResult); if (resultJsonObject.get("ret") != null) { if (Integer.parseInt(resultJsonObject .get("ret") + "") == WeChatLoader.WECHAT_STAR_OK) { if (star) { Toast.makeText(mContext, "加星标成功", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(mContext, "取消星标成功", Toast.LENGTH_SHORT).show(); } mDataManager.getMessageHolders() .get(userIndex).getMessageList() .get(position).setStarred(star); onActionFinishListener.onFinish(null); } } } catch (Exception exception) { Log.e("star result parse error", "" + exception); } } }, mDataManager.getUserGroup().get(userIndex), mDataManager.getMessageHolders().get(userIndex) .getMessageList().get(position), star); } public void mass(final int userIndex, final String massContent, final OnActionFinishListener onActionFinishListener) { WeChatLoader.wechatMass(new WechatExceptionListener() { @Override public void onError() { // TODO Auto-generated method stub mDataManager.doLoadingEnd(); } }, new WechatMassCallBack() { @Override public void onBack(HttpResponse response) { // TODO Auto-generated method stub try { mDataManager.doLoadingEnd(); String strResult = EntityUtils.toString(response .getEntity()); Log.e("mass result", response.getStatusLine().getStatusCode()+"|"+strResult); JSONObject resultJsonObject = new JSONObject(strResult); if (resultJsonObject.get("ret") != null) { if (Integer.parseInt(resultJsonObject.get("ret") + "") == WeChatLoader.WECHAT_MASS_OK) { onActionFinishListener.onFinish(null); } else if (Integer.parseInt(resultJsonObject.get("ret") + "") == WeChatLoader.WECHAT_MASS_ERROR_ONLY_ONE) { Log.e("mass only ", ""); mDataManager.doPopEnsureDialog(false, true, "每天只能群发一条哦~", new DialogSureClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub mDataManager.doDismissAllDialog(); } }); } } else { mDataManager.doLoadingEnd(); } } catch (Exception exception) { Log.e("mass result parse exception", "" + exception); } } }, mDataManager.getCurrentUser(), massContent); } }