package com.shejiaomao.weibo.service.task;
import com.shejiaomao.maobo.R;
import android.app.Activity;
import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.TextView;
import com.cattong.commons.LibException;
import com.cattong.commons.LibResultCode;
import com.cattong.commons.Logger;
import com.cattong.commons.ServiceProvider;
import com.cattong.weibo.Weibo;
import com.cattong.weibo.entity.ResponseCount;
import com.shejiaomao.common.CompatibilityUtil;
import com.shejiaomao.common.NetType;
import com.shejiaomao.common.ResourceBook;
import com.shejiaomao.weibo.SheJiaoMaoApplication;
import com.shejiaomao.weibo.activity.MicroBlogActivity;
import com.shejiaomao.weibo.common.GlobalResource;
import com.shejiaomao.weibo.common.GlobalVars;
public class QueryResponseCountTask extends AsyncTask<Void, Void, ResponseCount> {
private static final String LOG_TAG = "QueryResponseCountTask";
private Context context;
private Weibo weibo = null;
private String resultMsg = null;
//更新列表的转发和评论
com.cattong.entity.Status status;
TextView tvResponse;
public QueryResponseCountTask(Context context, com.cattong.entity.Status status) {
this.context = context;
this.status = status;
SheJiaoMaoApplication sheJiaoMao = (SheJiaoMaoApplication)((Activity)context).getApplication();
weibo = GlobalVars.getMicroBlog(sheJiaoMao.getCurrentAccount());
}
public QueryResponseCountTask(Context context, com.cattong.entity.Status status, TextView tvResponse) {
this.context = context;
this.status = status;
this.tvResponse = tvResponse;
SheJiaoMaoApplication sheJiaoMao = (SheJiaoMaoApplication)((Activity)context).getApplication();
weibo = GlobalVars.getMicroBlog(sheJiaoMao.getCurrentAccount());
}
@Override
protected void onPreExecute() {
super.onPreExecute();
if (GlobalVars.NET_TYPE == NetType.NONE) {
resultMsg = ResourceBook.getResultCodeValue(LibResultCode.NET_UNCONNECTED, context);
cancel(true);
onPostExecute(null);
}
if (context instanceof MicroBlogActivity) {
int retweetCount = (status.getRetweetCount() == null ? 0 : status.getRetweetCount());
int commentCount = (status.getCommentCount() == null ? 0 : status.getCommentCount());
fillClickableResponseCount(retweetCount, commentCount);
} else {
if (CompatibilityUtil.isSdk1_5()) {
if (Logger.isDebug()) Log.v(LOG_TAG, "sdk1.5");
cancel(true);
}
}
}
@Override
protected ResponseCount doInBackground(Void... params) {
if (weibo == null || status == null) {
return null;
}
if (status.getServiceProvider() == ServiceProvider.Twitter) {
//Twitter不支持Count接口
return null;
}
ResponseCount count = null;
try {
count = weibo.getResponseCount(status);
} catch (LibException e) {
if (Logger.isDebug()) Log.e(LOG_TAG, resultMsg, e);
if (e.getErrorCode() != LibResultCode.API_UNSUPPORTED) {
resultMsg = ResourceBook.getResultCodeValue(e.getErrorCode(), context);
}
}
return count;
}
@Override
protected void onPostExecute(ResponseCount result) {
super.onPreExecute();
if (result != null) {
status.setRetweetCount(result.getRetweetCount());
status.setCommentCount(result.getCommentCount());
String responseFormat = GlobalResource.getStatusResponseFormat(context);
if (context instanceof MicroBlogActivity) {
fillClickableResponseCount(result.getRetweetCount(), result.getCommentCount());
} else if (tvResponse != null) {
String responseText = String.format(
responseFormat, result.getRetweetCount(),
result.getCommentCount());
tvResponse.setText(responseText);
}
} else {
if (tvResponse == null && resultMsg != null) {
//Toast.makeText(context, resultMsg, Toast.LENGTH_SHORT).show();
}
}
}
private void fillClickableResponseCount(int retweetCount, int commentCount) {
TextView tvRetweetCount = (TextView)((Activity)context).findViewById(R.id.tvRetweetCount);
TextView tvCommentCount = (TextView)((Activity)context).findViewById(R.id.tvCommentCount);
String retweetCountText = context.getString(
R.string.label_blog_retweet_count, retweetCount);
String commentCountText = context.getString(
R.string.label_blog_comment_count, commentCount);
tvRetweetCount.setText(retweetCountText);
tvCommentCount.setText(commentCountText);
}
}