package cn.fanfan.detail.question;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.http.Header;
import org.apache.http.client.CookieStore;
import org.json.JSONException;
import org.json.JSONObject;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.PersistentCookieStore;
import com.loopj.android.http.RequestParams;
import com.umeng.analytics.MobclickAgent;
import cn.fanfan.common.Config;
import cn.fanfan.common.GetUserNamImage;
import cn.fanfan.common.GetUserNamImage.onLoaderListener;
import cn.fanfan.common.TextShow;
import cn.fanfan.main.R;
import cn.fanfan.userinfo.UserInfoShowActivity;
import android.app.ActionBar;
import android.app.Activity;
import android.app.Dialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class AnswerActivity extends Activity implements OnClickListener {
private AsyncHttpClient client;
private CookieStore myCookieStore;
private Dialog aDialog;
private TextView zanorno;
private TextView addcom;
private ImageView agree, disagree;
private int tag = 0;
private String answer_id;
private TextView answerdetil, time, name,sign;
private TextShow textShow;
private ImageView userimage;
private GetUserNamImage namImage;
private String uid;
private String comment_count;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.answer);
ActionBar actionBar = getActionBar();
actionBar.setIcon(null);
actionBar.setTitle("�ش���ϸ");
actionBar.setDisplayUseLogoEnabled(false);
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.show();
client = new AsyncHttpClient();
myCookieStore = new PersistentCookieStore(this);
client.setCookieStore(myCookieStore);
zanorno = (TextView) findViewById(R.id.zanorno);
addcom = (TextView) findViewById(R.id.addcom);
sign = (TextView)findViewById(R.id.sign);
Intent intent = getIntent();
answer_id = intent.getStringExtra("answerid");
answerdetil = (TextView) findViewById(R.id.answerdetil);
time = (TextView) findViewById(R.id.time);
name = (TextView)findViewById(R.id.username);
name.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.putExtra("uid", uid);
intent.setClass(AnswerActivity.this, UserInfoShowActivity.class);
startActivity(intent);
}
});
userimage = (ImageView)findViewById(R.id.userimage);
userimage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.putExtra("uid", uid);
intent.setClass(AnswerActivity.this, UserInfoShowActivity.class);
startActivity(intent);
}
});
namImage = new GetUserNamImage(this);
addcom.setOnClickListener(this);
zanorno.setOnClickListener(this);
GetAnswer();
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.zanorno:
showDialog();
break;
case R.id.agree:
dozan(1);
break;
case R.id.disagree:
dozan(-1);
break;
case R.id.addcom:
Intent intent = new Intent();
intent.putExtra("answerid", answer_id);
intent.putExtra("comcount", comment_count);
intent.setClass(this, CommentListActivity.class);
startActivity(intent);
default:
break;
}
}
private void zanno(int id){
switch (id) {
case 1:
switch (tag) {
case 0:
zanorno.setText(String.valueOf(Integer.valueOf(zanorno.getText().toString())+1));
tag = 1;
aDialog.dismiss();
break;
case 1:
zanorno.setText(String.valueOf(Integer.valueOf(zanorno.getText().toString())-1));
tag = 0;
aDialog.dismiss();
break;
case -1:
zanorno.setText(String.valueOf(Integer.valueOf(zanorno.getText().toString())+1));
tag = 1;
aDialog.dismiss();
break;
default:
break;
}
break;
case -1:
switch (tag) {
case 0:
tag = -1;
aDialog.dismiss();
break;
case 1:
zanorno.setText(String.valueOf(Integer.valueOf(zanorno.getText().toString())-1));
tag = -1;
aDialog.dismiss();
break;
case -1:
tag = 0;
aDialog.dismiss();
break;
default:
break;
}
break;
default:
break;
}
}
private void zanstatus() {
Drawable nav_up;
switch (tag) {
case 1:
nav_up = getResources().getDrawable(R.drawable.ic_vote_checked);
nav_up.setBounds(0, 0, nav_up.getMinimumWidth(),
nav_up.getMinimumHeight());
zanorno.setCompoundDrawables(nav_up, null, null, null);
break;
case 0:
nav_up = getResources().getDrawable(R.drawable.ic_vote_normal);
nav_up.setBounds(0, 0, nav_up.getMinimumWidth(),
nav_up.getMinimumHeight());
zanorno.setCompoundDrawables(nav_up, null, null, null);
break;
case -1:
nav_up = getResources()
.getDrawable(R.drawable.ic_vote_down_checked);
nav_up.setBounds(0, 0, nav_up.getMinimumWidth(),
nav_up.getMinimumHeight());
zanorno.setCompoundDrawables(nav_up, null, null, null);
break;
default:
break;
}
}
private void dozan(final int value){
String url = Config.getValue("QuestionDozan");
RequestParams params = new RequestParams();
params.put("answer_id", answer_id);
params.put("value", value);
client.post(url, params, new AsyncHttpResponseHandler(){
@Override
public void onFailure(int arg0, Header[] arg1, byte[] arg2,
Throwable arg3) {
// TODO Auto-generated method stub
aDialog.dismiss();
Toast.makeText(AnswerActivity.this, "ѡ��ʧ��", Toast.LENGTH_LONG).show();
}
@Override
public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {
// TODO Auto-generated method stub
String info = new String(arg2);
JSONObject jsonObject = null;
int errno = 0;
try {
jsonObject = new JSONObject(info);
errno = jsonObject.getInt("errno");
} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if (errno == 1) {
Toast.makeText(AnswerActivity.this,"ѡ��ɹ�" , Toast.LENGTH_LONG).show();
zanno(value);
zanstatus();
} else {
try {
String err = jsonObject.getString("err");
aDialog.dismiss();
Toast.makeText(AnswerActivity.this,err , Toast.LENGTH_LONG).show();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
}
private void showDialog() {
aDialog = new Dialog(this);
LayoutInflater inflater = LayoutInflater.from(this);
View view = inflater.inflate(R.layout.vote, null);
agree = (ImageView) view.findViewById(R.id.agree);
disagree = (ImageView) view.findViewById(R.id.disagree);
aDialog.setTitle("ѡ��");
aDialog.setCanceledOnTouchOutside(true);
aDialog.setContentView(view);
agree.setOnClickListener(this);
disagree.setOnClickListener(this);
aDialog.show();
}
private void GetAnswer() {
String url = Config.getValue("Answer_detail")
+ answer_id;
final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
client.get(url, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {
// TODO Auto-generated method stub
String information = new String(arg2);
try {
JSONObject jsonObject = new JSONObject(information);
int errno = jsonObject.getInt("errno");
if (errno == 1) {
JSONObject rsm = jsonObject.getJSONObject("rsm");;
//String question_id = rsm.getString("question_id");
String answer_content = rsm.getString("answer_content");
String add_time = rsm.getString("add_time");
String signature = rsm.getString("signature");
tag = rsm.getInt("vote_value");
zanstatus();
if (!signature.equals("")) {
sign.setText(signature);
} else {
sign.setVisibility(View.GONE);
}
String agree_count = rsm.getString("agree_count");
uid = rsm.getString("uid");
comment_count = rsm.getString("comment_count");
addcom.setText("������� "+comment_count);
Date date = new Date(Long.valueOf(add_time)*1000);
time.setText(format.format(date));
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
float screenW = dm.widthPixels;
textShow = new TextShow(JSONTokener(answer_content), answerdetil,AnswerActivity.this
,screenW);
//textShow.execute();
zanorno.setText(agree_count);
namImage.getuserinfo(uid,name,userimage,new onLoaderListener() {
@Override
public void onPicLoader(Bitmap bitmap, ImageView userimage) {
// TODO Auto-generated method stub
if (bitmap != null) {
userimage.setImageBitmap(bitmap);
} else {
userimage.setImageDrawable(AnswerActivity.this.getResources()
.getDrawable(R.drawable.ic_avatar_default));
}
}
@Override
public void onNameLoader(String name, TextView username) {
// TODO Auto-generated method stub
username.setText(name);
}
});
} else {
String err = jsonObject.getString("err");
Toast.makeText(AnswerActivity.this, err, Toast.LENGTH_LONG).show();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onFailure(int arg0, Header[] arg1, byte[] arg2,
Throwable arg3) {
// TODO Auto-generated method stub
Toast.makeText(AnswerActivity.this, "��ȡʧ��", Toast.LENGTH_LONG).show();
}
});
}
public static String JSONTokener(String in) {
// consume an optional byte order mark (BOM) if it exists
if (in != null && in.startsWith("\ufeff")) {
in = in.substring(1);
}
return in;
}
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case android.R.id.home:
finish();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
public void onResume() {
super.onResume();
MobclickAgent.onResume(this);
}
public void onPause() {
super.onPause();
MobclickAgent.onPause(this);
}
}