package studio.uphie.one.ui.question;
import android.os.Bundle;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.loopj.android.http.RequestParams;
import io.paperdb.Paper;
import studio.uphie.one.R;
import studio.uphie.one.abs.AbsBaseFragment;
import studio.uphie.one.common.Api;
import studio.uphie.one.common.Constants;
import studio.uphie.one.common.HttpData;
import studio.uphie.one.common.HttpError;
import studio.uphie.one.ui.article.Article;
import studio.uphie.one.ui.article.ArticleFragment;
import studio.uphie.one.ui.home.HomeFragment;
import studio.uphie.one.utils.JsonUtil;
import studio.uphie.one.utils.TimeUtil;
import studio.uphie.one.widgets.LikeView;
import org.json.JSONException;
import org.json.JSONObject;
import java.sql.Time;
import butterknife.Bind;
import butterknife.ButterKnife;
/**
* Created by Uphie on 2015/9/6.
* Email: uphie7@gmail.com
*/
public class QuestionContentFragment extends AbsBaseFragment implements LikeView.OnLikeChangedListener {
@Bind(R.id.text_question_date)
TextView textQuestionDate;
@Bind(R.id.text_question_title)
TextView textQuestionTitle;
@Bind(R.id.text_question_content)
TextView textQuestionContent;
@Bind(R.id.text_answer_title)
TextView textAnswerTitle;
@Bind(R.id.text_answer_content)
TextView textAnswerContent;
@Bind(R.id.liv_question)
LikeView lvQuestion;
@Bind(R.id.question_content)
LinearLayout questionContent;
@Bind(R.id.text_answer_editor)
TextView textAnswerEditor;
/**
* 当前的问题
*/
private Question curQuestion;
@Override
public int getLayoutId() {
return R.layout.layout_question;
}
@Override
public void init() {
lvQuestion.addOnLikeChangeListener(this);
Bundle bundle = getArguments();
String date = bundle.getString(Constants.KEY_DATE);
index = bundle.getInt(Constants.KEY_INDEX);
curDate = TimeUtil.getPreviousDate(date, index);
RequestParams params = new RequestParams();
params.put("strDate", date);
params.put("strRow", index);
getHttpData(Api.URL_QUESTION, params, new HttpData("result", "questionAdEntity"));
}
@Override
public void onDataOk(String url, String data) {
switch (url) {
case Api.URL_QUESTION:
Question question = JsonUtil.getEntity(data, Question.class);
refreshUI(question);
if (question != null) {
Paper.book().write(Constants.TAG_QUESTION + curDate, question);
}
QuestionFragment.getInstance().pager.onRefreshComplete();
break;
case Api.URL_LIKE_OR_CANCLELIKE:
try {
JSONObject jsonObject = new JSONObject(data);
int likeCount = jsonObject.optInt("strPraisednumber");
//若实际的喜欢数量与LikeView自增的结果值不同,更新显示最新的数量
if (likeCount != lvQuestion.getLikeCount()) {
lvQuestion.setText(likeCount + "");
}
} catch (JSONException e) {
e.printStackTrace();
}
break;
}
}
@Override
public void onDataError(String url, HttpError error) {
switch (url) {
case Api.URL_QUESTION:
QuestionFragment.getInstance().pager.onRefreshComplete();
//没有数据,删除并销毁自己
finish();
break;
}
}
@Override
public void onRestoreData(String url) {
if (url.equals(Api.URL_QUESTION)) {
Question question = Paper.book().read(Constants.TAG_QUESTION + curDate, null);
refreshUI(question);
QuestionFragment.getInstance().pager.onRefreshComplete();
}
}
@Override
public void onLikeChanged() {
RequestParams requestParams = new RequestParams();
requestParams.put("strPraiseItemId", curQuestion.strQuestionId);
//不清楚strDeviceId为什么标识符,格式为“ffffffff-9248-aa0c-ffff-ffffaea9cc69”
requestParams.put("strDeviceId", "");
requestParams.put("strAppName", "ONE");
requestParams.put("strPraiseItem", "QUESTION");
getHttpData(Api.URL_LIKE_OR_CANCLELIKE, requestParams, new HttpData("result", "entPraise"));
}
public Question getContentData() {
return curQuestion;
}
@Override
public void refreshUI(Object data) {
Question question = (Question) data;
if (question == null) {
if (!isFirstPage()) {
//如果不是第一个,销毁之
finish();
}
return;
}
if (isExpired()) {
finish();
}
curQuestion = question;
questionContent.setVisibility(View.VISIBLE);
textQuestionDate.setText(TimeUtil.getEngDate(question.strQuestionMarketTime));
textQuestionTitle.setText(question.strQuestionTitle);
textQuestionContent.setText(Html.fromHtml(question.strQuestionContent));
textAnswerTitle.setText(question.strAnswerTitle);
textAnswerContent.setText(Html.fromHtml(question.strAnswerContent));
textAnswerEditor.setText(question.sEditor);
lvQuestion.setText(question.strPraiseNumber + "");
}
@Override
public void finish() {
QuestionFragment.adapter.removeFromAdapter(this);
}
public static QuestionContentFragment newInstance(int index) {
Bundle bundle = new Bundle();
bundle.putString(Constants.KEY_DATE, TimeUtil.getDate());
bundle.putInt(Constants.KEY_INDEX, index);
QuestionContentFragment fragment = new QuestionContentFragment();
fragment.setArguments(bundle);
return fragment;
}
}