package com.jaf.biubiu;
import android.app.Activity;
import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import com.jaf.bean.BeanNearbyItem;
import com.jaf.bean.BeanRequestAnswerList;
import com.jaf.jcore.Application;
import com.jaf.jcore.BaseActionBarActivity;
import com.jaf.jcore.BindView;
import com.jaf.jcore.Http;
import com.jaf.jcore.HttpCallBack;
import com.jaf.jcore.JacksonWrapper;
import com.jarrah.photo.PopupUtil;
import org.json.JSONObject;
import java.io.Serializable;
public class ActivityDetail extends BaseActionBarActivity {
private static final String KEY_ARGS = "question_data";
private Fragment mDisplayFragment;
private Extra extra;
@BindView(id = R.id.editPanel)
private View mEditPanel;
@BindView(id = R.id.msgEdit)
public EditText mEditText;
@BindView(id = R.id.send, onClick = "onSendClick")
private View mSend;
private Dialog mDialog;
//for reply comment
boolean isReplyComment = false;
@Override
protected View getActionBarView() {
mActionBarView = getLayoutInflater().inflate(
R.layout.view_action_bar_detail, null);
mActionBarView.findViewById(R.id.barOption).setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
popupReportAbuse();
}
});
return mActionBarView;
}
private void popupReportAbuse() {
View v = getLayoutInflater().inflate(R.layout.popup_report_question,
null);
v.findViewById(R.id.btnOK).setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
Http http = new Http();
// type 1 举报问题 2 举报评论
http.url(Constant.API)
.JSON(U.buildReportAbuse(
extra.fromNearby.getQuestId(), 1, ""))
.post(new HttpCallBack() {
@Override
public void onResponse(JSONObject response) {
super.onResponse(response);
Toast.makeText(ActivityDetail.this,
R.string.reportSuccess,
Toast.LENGTH_SHORT).show();
}
});
mDialog.dismiss();
}
});
v.findViewById(R.id.btnCancel).setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
mDialog.dismiss();
}
});
mDialog = PopupUtil.makePopup(this, v);
mDialog.show();
}
@Override
public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
}
private boolean fromPushMessage() {
boolean ret = getIntent().getBooleanExtra(Constant.KEY_PUSH_DETAIL, false);
return ret;
}
@Override
protected int onLoadViewResource() {
return R.layout.activity_detail;
}
@Override
protected void onViewDidLoad(Bundle savedInstanceState) {
extra = getData();
if (extra == null) {
L.dbg("activity question getData is null!");
return;
} else {
if (extra.fromNearby != null) {
BeanRequestAnswerList arg = U.buildAnswerArgs(true, 0,
extra.questId);
mDisplayFragment = FragmentQA.newInstance(arg);
}
if (mDisplayFragment != null) {
FragmentTransaction trans = getSupportFragmentManager()
.beginTransaction();
trans.replace(R.id.container, mDisplayFragment);
trans.commit();
} else {
L.dbg("display fragment is null");
}
}
mEditText.requestFocus();
}
public Extra getData() {
if(fromPushMessage()) {
Extra extra = new Extra();
L.dbg("from push");
String jsonStr = getIntent().getStringExtra(Constant.KEY_PUSH_EXTRA);
if(jsonStr != null) {
try {
JSONObject jo = new JSONObject(jsonStr);
extra.fromNearby = JacksonWrapper.json2Bean(jo, BeanNearbyItem.class);
extra.questId = extra.fromNearby.getQuestId();
} catch (Exception e) {
L.dbg("push start detail error" + e);
return null;
}
}
return extra;
}
return (Extra) getIntent().getSerializableExtra(KEY_ARGS);
}
public static void start(Activity activity, final Extra extra) {
Intent intent = new Intent();
intent.putExtra(KEY_ARGS, extra);
intent.setClass(activity, ActivityDetail.class);
activity.startActivity(intent);
}
public static class Extra implements Serializable {
// nearby pair
int questId;
BeanNearbyItem fromNearby;
}
public void onSendClick(View v) {
final CharSequence text = mEditText.getText();
if (TextUtils.isEmpty(text)) {
Toast.makeText(this, R.string.saySomething, Toast.LENGTH_SHORT)
.show();
} else {
String location = Application.getInstance().getAppExtraInfo().addrStr;
if(!isReplyComment)
replyQuestion(text.toString(), location);
else
replyComment(text.toString(), location);
}
}
private void replyComment(String s, String location) {
if(extra.fromNearby != null) {
// FragmentQA qa = (FragmentQA) mDisplayFragment;
// qa.mListView.getWorker().isLoadMore = false;
//
// int qid = extra.fromNearby.getQuestId();
FragmentQA qa = (FragmentQA) mDisplayFragment;
qa.mListView.getWorker().isLoadMore = false;
FragmentQA f = (FragmentQA) mDisplayFragment;
int qid = f.getRelyCommentParams()[0];
int aid = f.getRelyCommentParams()[1];
JSONObject jo = U.postAnswerComment(s, aid, qid, location);
request(jo);
}else {
L.dbg("no extra for reply comment");
}
}
public void replyQuestion(String text, String location) {
if (extra.fromNearby == null)
return;
FragmentQA qa = (FragmentQA) mDisplayFragment;
qa.mListView.getWorker().isLoadMore = false;
int qid = extra.fromNearby.getQuestId();
JSONObject jo = U.buildPostAnswerQuestion(text, location,
qid);
request(jo);
}
private void request(JSONObject jo) {
L.dbg("do reply :" + jo);
Http http = new Http();
http.url(Constant.API).JSON(jo).post(new HttpCallBack() {
@Override
public void onResponse(JSONObject response) {
super.onResponse(response);
L.dbg("reply success");
FragmentQA fa = (FragmentQA) mDisplayFragment;
fa.refreshAnswer();
mEditText.setText("");
U.hideSoftKeyboard(ActivityDetail.this);
isReplyComment = false;
mEditText.setHint(R.string.bestAnswerHere);
}
});
}
}