package com.yuyh.sprintnba.ui;
import android.content.Context;
import android.content.Intent;
import android.support.v4.content.ContextCompat;
import android.support.v4.view.ViewPager;
import android.widget.TextView;
import com.github.clans.fab.FloatingActionButton;
import com.github.clans.fab.FloatingActionMenu;
import com.yuyh.library.utils.toast.ToastUtils;
import com.yuyh.sprintnba.R;
import com.yuyh.sprintnba.app.Constant;
import com.yuyh.sprintnba.base.BaseSwipeBackCompatActivity;
import com.yuyh.sprintnba.event.ThreadContentEvent;
import com.yuyh.sprintnba.ui.adapter.VPThreadAdapter;
import com.yuyh.sprintnba.ui.presenter.impl.ThreadDetailPresenterImpl;
import com.yuyh.sprintnba.ui.view.ThreadDetailView;
import com.yuyh.sprintnba.widget.VerticalViewPager;
import org.greenrobot.eventbus.EventBus;
import java.util.List;
import butterknife.InjectView;
import butterknife.OnClick;
/**
* @author yuyh.
* @date 16/6/25.
*/
public class ThreadDetailActivity extends BaseSwipeBackCompatActivity implements ThreadDetailView, ViewPager.OnPageChangeListener {
public static final String INTENT_PID = "pid";
public static final String INTENT_TID = "tid";
public static final String INTENT_PAGE = "page";
public static final String INTENT_FID = "fid";
private String fid;
private String tid;
private int page;
private String pid;
private int totalPage;
public static void start(Context context, String pid, String tid, int page, String fid) {
Intent intent = new Intent(context, ThreadDetailActivity.class);
intent.putExtra(ThreadDetailActivity.INTENT_PID, pid);
intent.putExtra(ThreadDetailActivity.INTENT_TID, tid);
intent.putExtra(ThreadDetailActivity.INTENT_PAGE, page);
intent.putExtra(ThreadDetailActivity.INTENT_FID, fid);
context.startActivity(intent);
}
@InjectView(R.id.vvpComment)
VerticalViewPager viewPager;
@InjectView(R.id.floatingComment)
FloatingActionButton floatingComment;
@InjectView(R.id.floatingReport)
FloatingActionButton floatingReport;
@InjectView(R.id.floatingCollect)
FloatingActionButton floatingCollect;
@InjectView(R.id.floatingShare)
FloatingActionButton floatingShare;
@InjectView(R.id.floatingMenu)
FloatingActionMenu floatingMenu;
@InjectView(R.id.tvPre)
TextView tvPre;
@InjectView(R.id.tvPageNum)
TextView tvPageNum;
@InjectView(R.id.tvNext)
TextView tvNext;
private ThreadDetailPresenterImpl presenter;
private VPThreadAdapter mAdapter;
@Override
protected int getContentViewLayoutID() {
return R.layout.activity_thread_detail;
}
@Override
protected void initViewsAndEvents() {
fid = getIntent().getStringExtra(INTENT_FID);
tid = getIntent().getStringExtra(INTENT_TID);
page = getIntent().getIntExtra(INTENT_PAGE, 1);
pid = getIntent().getStringExtra(INTENT_PID);
setTitle("帖子详细");
viewPager.setOffscreenPageLimit(1);
viewPager.setOnPageChangeListener(this);
presenter = new ThreadDetailPresenterImpl(this, this);
presenter.setParams(tid, fid, 1, "");
presenter.initialized();
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
onUpdatePager(position + 1, totalPage);
presenter.updatePage(position + 1);
}
@Override
public void onPageScrollStateChanged(int state) {
}
public void onUpdatePager(int page, int totalPage) {
tvPageNum.setText(page + "/" + totalPage);
if (page == 1) {
tvPre.setTextColor(ContextCompat.getColor(this, R.color.secondary_text));
tvPre.setClickable(false);
} else {
tvPre.setTextColor(ContextCompat.getColor(this, R.color.colorPrimary));
tvPre.setClickable(true);
}
if (page == totalPage) {
tvNext.setTextColor(ContextCompat.getColor(this, R.color.secondary_text));
tvNext.setClickable(false);
} else {
tvNext.setTextColor(ContextCompat.getColor(this, R.color.colorPrimary));
tvNext.setClickable(true);
}
}
@Override
public void showError(String msg) {
ToastUtils.showSingleToast(msg);
}
@Override
public void loadContent(int position, List<String> urls) {
totalPage = urls.size();
if (mAdapter == null) {
mAdapter = new VPThreadAdapter(getSupportFragmentManager(), urls);
viewPager.setAdapter(mAdapter);
}
viewPager.setCurrentItem(position - 1);
onUpdatePager(viewPager.getCurrentItem() + 1, totalPage);
}
@Override
public void isCollected(boolean isCollected) {
floatingCollect.setImageResource(isCollected ? R.drawable.ic_menu_star : R.drawable.ic_menu_star_outline);
floatingCollect.setLabelText(isCollected ? "取消收藏" : "收藏");
}
@Override
public void onToggleFloatingMenu() {
floatingMenu.toggle(true);
}
@Override
public void goPost(String title) {
PostActivity.startForResult(this, title, Constant.TYPE_COMMENT, fid, tid, "", 1);
}
@Override
public void goReport() {
ReportActivity.start(this, "", tid);
}
@OnClick(R.id.tvPre)
public void prePage() {
presenter.onPagePre();
}
@OnClick(R.id.tvNext)
public void nextpage() {
presenter.onPageNext();
}
@OnClick(R.id.floatingComment)
void floatingComment() {
presenter.onCommendClick();
}
@OnClick(R.id.floatingShare)
void floatingShare() {
presenter.onShareClick();
}
@OnClick(R.id.floatingReport)
void floatingReport() {
presenter.onReportClick();
}
@OnClick(R.id.floatingCollect)
void floatingCollect() {
presenter.onCollectClick();
}
@Override
public void onBackPressed() {
if (floatingMenu.isOpened()) {
floatingMenu.close(true);
return;
}
super.onBackPressed();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
viewPager.setCurrentItem(totalPage - 1);
onUpdatePager(viewPager.getCurrentItem() + 1, totalPage);
EventBus.getDefault().post(new ThreadContentEvent());
}
}
}