package com.pandaq.pandaeye.modules.video.videohome.mvp;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.TextView;
import com.pandaq.pandaeye.R;
import com.pandaq.pandaeye.modules.video.videotypelist.mvp.TypedVideosActivity;
import com.pandaq.pandaeye.modules.video.videohome.VideoTypesAdapter;
import com.pandaq.pandaeye.modules.video.videohome.VideoTopPagerAdapter;
import com.pandaq.pandaeye.config.Constants;
import com.pandaq.pandaeye.rxbus.RxBus;
import com.pandaq.pandaeye.rxbus.RxConstants;
import com.pandaq.pandaeye.BaseFragment;
import com.pandaq.pandaeye.utils.DensityUtil;
import com.pandaq.pandaqlib.loopbander.AutoScrollViewPager;
import com.pandaq.pandaqlib.loopbander.ViewGroupIndicator;
import com.pandaq.pandaqlib.magicrecyclerView.BaseItem;
import com.pandaq.pandaqlib.magicrecyclerView.BaseRecyclerAdapter;
import com.pandaq.pandaqlib.magicrecyclerView.MagicRecyclerView;
import com.pandaq.pandaqlib.magicrecyclerView.SpaceDecoration;
import java.util.ArrayList;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.Unbinder;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
/**
* Created by PandaQ on 2016/9/9.
* email : 767807368@qq.com
* 冒泡圈Fragment
*/
public class VideoHomeFragment extends BaseFragment implements VideoHomeContract.View, SwipeRefreshLayout.OnRefreshListener, BaseRecyclerAdapter.OnItemClickListener {
@BindView(R.id.mrv_video)
MagicRecyclerView mMrvVideo;
@BindView(R.id.srl_refresh)
SwipeRefreshLayout mSrlRefresh;
@BindView(R.id.empty_msg)
TextView mEmptyMsg;
private AutoScrollViewPager scrollViewPager;
private ViewGroupIndicator viewGroupIndicator;
private VideoTopPagerAdapter mPagerAdapter;
private VideoTypesAdapter mAdapter;
private VideoHomeFragPresenter mPresenter = new VideoHomeFragPresenter(this);
private ArrayList<BaseItem> mBaseItems;
private Disposable mDisposable;
private StaggeredGridLayoutManager mStaggeredGridLayoutManager;
private Unbinder unbinder;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.video_fragment, container, false);
unbinder = ButterKnife.bind(this, view);
initView();
return view;
}
@Override
public void onResume() {
super.onResume();
onHiddenChanged(false);
}
@Override
public void onPause() {
super.onPause();
mSrlRefresh.setRefreshing(false);
mPresenter.dispose();
onHiddenChanged(true);
}
private void initView() {
mBaseItems = new ArrayList<>();
mStaggeredGridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
mMrvVideo.setLayoutManager(mStaggeredGridLayoutManager);
mMrvVideo.setItemAnimator(new DefaultItemAnimator());
mMrvVideo.getItemAnimator().setChangeDuration(0);
SpaceDecoration itemDecoration = new SpaceDecoration(DensityUtil.dip2px(getContext(), 8));
itemDecoration.setPaddingEdgeSide(true);
itemDecoration.setPaddingStart(true);
itemDecoration.setPaddingHeaderFooter(false);
mMrvVideo.addItemDecoration(itemDecoration);
FrameLayout headerView = (FrameLayout) mMrvVideo.getHeaderView();
scrollViewPager = (AutoScrollViewPager) headerView.findViewById(R.id.scroll_pager);
viewGroupIndicator = (ViewGroupIndicator) headerView.findViewById(R.id.scroll_pager_indicator);
mSrlRefresh.setProgressBackgroundColorSchemeColor(getResources().getColor(R.color.white_FFFFFF));
mSrlRefresh.setOnRefreshListener(this);
mSrlRefresh.setColorSchemeResources(android.R.color.holo_blue_bright,
android.R.color.holo_green_light,
android.R.color.holo_orange_light,
android.R.color.holo_red_light);
refreshData();
mPresenter.loadCache();
mMrvVideo.addOnItemClickListener(this);
}
@Override
public void refreshData() {
mPresenter.loadData();
}
@Override
public void refreshSuccess(ArrayList<RetDataBean.ListBean> listBeen) {
if (listBeen == null || listBeen.size() <= 0) {
mEmptyMsg.setVisibility(View.VISIBLE);
mMrvVideo.setVisibility(View.INVISIBLE);
mSrlRefresh.requestFocus();
return;
} else {
mEmptyMsg.setVisibility(View.GONE);
mMrvVideo.setVisibility(View.VISIBLE);
}
RetDataBean.ListBean banner = listBeen.get(0);
if (Constants.SHOW_TYPE_BANNER.equals(banner.getShowType())) { //判断是否为 banner
//配置顶部故事
if (mPagerAdapter == null) {
mPagerAdapter = new VideoTopPagerAdapter(this, banner.getChildList());
scrollViewPager.setAdapter(mPagerAdapter);
} else {
mPagerAdapter.resetData(banner.getChildList());
}
viewGroupIndicator.setParent(scrollViewPager);
listBeen.remove(banner);
}
//配置底部列表故事s
mBaseItems.clear();
for (RetDataBean.ListBean listBean : listBeen) {
if (!TextUtils.isEmpty(listBean.getMoreURL()) &&
!listBean.getTitle().equals("直播专区") && !listBean.getTitle().equals("专题")) {
BaseItem<RetDataBean.ListBean> baseItem = new BaseItem<>();
baseItem.setData(listBean);
mBaseItems.add(baseItem);
}
}
if (mAdapter == null) {
mAdapter = new VideoTypesAdapter(this);
mAdapter.setBaseDatas(mBaseItems);
mMrvVideo.setAdapter(mAdapter);
} else {
if (listBeen.size() != 0) {
mAdapter.setBaseDatas(mBaseItems);
}
}
}
@Override
public void refreshFail(String errCode, String errMsg) {
if (mAdapter == null) {
mEmptyMsg.setVisibility(View.VISIBLE);
mMrvVideo.setVisibility(View.INVISIBLE);
mSrlRefresh.requestFocus();
}
}
@Override
public void showProgressBar() {
if (!mSrlRefresh.isRefreshing())
mSrlRefresh.setRefreshing(true);
}
@Override
public void hideProgressBar() {
mSrlRefresh.setRefreshing(false);
}
@Override
public void onRefresh() {
refreshData();
}
@Override
public void onHiddenChanged(boolean hidden) {
if (hidden && mSrlRefresh.isRefreshing()) { // 隐藏的时候停止 SwipeRefreshLayout 转动
mSrlRefresh.setRefreshing(false);
}
if (!hidden) {
RxBus.getDefault()
.toObservableWithCode(RxConstants.BACK_PRESSED_CODE, String.class)
.subscribeWith(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
mDisposable = d;
}
@Override
public void onNext(String value) {
if (value.equals(RxConstants.BACK_PRESSED_DATA) && mMrvVideo != null) {
//滚动到顶部
mStaggeredGridLayoutManager.smoothScrollToPosition(mMrvVideo, null, 0);
}
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
} else {
if (mDisposable != null && !mDisposable.isDisposed()) {
mDisposable.dispose();
}
}
}
@Override
public void onItemClick(int position, BaseItem data, View view) {
RetDataBean.ListBean dataBean = (RetDataBean.ListBean) data.getData();
Intent intent = new Intent(this.getActivity(), TypedVideosActivity.class);
intent.putExtra(Constants.TYPED_MORE_TITLE, dataBean.getTitle());
startActivity(intent);
}
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
}
}