package studio.uphie.one.ui.article;
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.utils.JsonUtil;
import studio.uphie.one.utils.TimeUtil;
import studio.uphie.one.widgets.LikeView;
import org.json.JSONException;
import org.json.JSONObject;
import butterknife.Bind;
import butterknife.ButterKnife;
/**
* Created by Uphie on 2015/9/6.
* Email: uphie7@gmail.com
*/
public class ArticleContentFragment extends AbsBaseFragment implements LikeView.OnLikeChangedListener {
@Bind(R.id.text_article_date)
TextView textArticleDate;
@Bind(R.id.text_article_title)
TextView text_ArticleTitle;
@Bind(R.id.text_article_author)
TextView text_ArticleAuthor;
@Bind(R.id.text_article_content)
TextView text_ArticleContent;
@Bind(R.id.text_article_editor)
TextView text_ArticleEditor;
@Bind(R.id.text_article_author_addition)
TextView text_ArticleAuthorAddition;
@Bind(R.id.text_article_author_weibo)
TextView text_ArticleAuthorWeibo;
@Bind(R.id.text_article_author_intro)
TextView text_ArticleAuthorIntro;
@Bind(R.id.article_content)
LinearLayout articleContent;
@Bind(R.id.liv_article)
LikeView lvArticle;
private Article curArticle;
@Override
public int getLayoutId() {
return R.layout.layout_article;
}
@Override
public void init() {
lvArticle.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("strMS", 1);
params.put("strDate", date);
params.put("strRow", index);
getHttpData(Api.URL_ARTICLE, params, new HttpData("result", "contentEntity"));
}
@Override
public void onDataOk(String url, String data) {
switch (url) {
case Api.URL_ARTICLE:
Article article = JsonUtil.getEntity(data, Article.class);
//刷新显示界面
refreshUI(article);
//写入缓存
if (article != null) {
Paper.book().write(Constants.TAG_ARTICLE + curDate, article);
}
ArticleFragment.getInstance().pager.onRefreshComplete();
break;
case Api.URL_LIKE_OR_CANCLELIKE:
try {
JSONObject jsonObject = new JSONObject(data);
int likeCount = jsonObject.optInt("strPraisednumber");
//若实际的喜欢数量与LikeView自增的结果值不同,显示实际的数量
if (likeCount != lvArticle.getLikeCount()) {
lvArticle.setText(likeCount + "");
}
} catch (JSONException e) {
e.printStackTrace();
}
break;
}
}
@Override
public void onDataError(String url, HttpError error) {
switch (url) {
case Api.URL_ARTICLE:
ArticleFragment.getInstance().pager.onRefreshComplete();
//没有数据,删除并销毁自己
finish();
break;
}
}
@Override
public void onRestoreData(String url) {
if (url.equals(Api.URL_ARTICLE)) {
Article article = Paper.book().read(Constants.TAG_ARTICLE + curDate, null);
refreshUI(article);
ArticleFragment.getInstance().pager.onRefreshComplete();
}
}
@Override
public void onLikeChanged() {
RequestParams requestParams = new RequestParams();
requestParams.put("strPraiseItemId", curArticle.strContentId);
requestParams.put("strDeviceId", "");
requestParams.put("strAppName", "ONE");
requestParams.put("strPraiseItem", "CONTENT");
getHttpData(Api.URL_LIKE_OR_CANCLELIKE, requestParams, new HttpData("result", "entPraise"));
}
public Article getContentData() {
return curArticle;
}
@Override
public void refreshUI(Object data) {
Article article = (Article) data;
if (article == null) {
if (!isFirstPage()) {
//如果不是第一个,销毁之
finish();
}
return;
}
if (isExpired()) {
finish();
}
curArticle = article;
articleContent.setVisibility(View.VISIBLE);
//上架日期
textArticleDate.setText(TimeUtil.getEngDate(article.strContMarketTime));
//标题
text_ArticleTitle.setText(article.strContTitle);
//作者
text_ArticleAuthor.setText(article.strContAuthor);
//文章内容,内容中有HTML标记,用于正常显示段落,需要解析
text_ArticleContent.setText(Html.fromHtml(article.strContent));
//责任编辑
text_ArticleEditor.setText(article.strContAuthorIntroduce);
//喜欢的数量
lvArticle.setText(article.strPraiseNumber);
//作者
text_ArticleAuthorAddition.setText(article.strContAuthor);
//微博名
text_ArticleAuthorWeibo.setText(article.sWbN);
//作者简介
text_ArticleAuthorIntro.setText(article.sAuth);
}
@Override
public void finish() {
ArticleFragment.adapter.removeFromAdapter(this);
}
public static ArticleContentFragment newInstance(int index) {
Bundle bundle = new Bundle();
bundle.putString(Constants.KEY_DATE, TimeUtil.getDate());
bundle.putInt(Constants.KEY_INDEX, index);
ArticleContentFragment fragment = new ArticleContentFragment();
fragment.setArguments(bundle);
return fragment;
}
}