package mao.com.mao_wanandroid_client.view.main;

import android.content.Intent;
import android.graphics.Color;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.chad.library.adapter.base.BaseQuickAdapter;
import com.scwang.smartrefresh.header.MaterialHeader;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

import butterknife.BindView;
import mao.com.mao_wanandroid_client.R;
import mao.com.mao_wanandroid_client.application.Constants;
import mao.com.mao_wanandroid_client.base.activity.BaseActivity;
import mao.com.mao_wanandroid_client.model.modelbean.home.HomeArticleData;
import mao.com.mao_wanandroid_client.model.modelbean.knowlegetree.KnowledgeHierarchyData;
import mao.com.mao_wanandroid_client.presenter.main.OfficialAccountsDetailContract;
import mao.com.mao_wanandroid_client.presenter.main.OfficialAccountsDetailPresenter;
import mao.com.mao_wanandroid_client.utils.StartDetailPage;
import mao.com.mao_wanandroid_client.utils.StatusBarUtil;
import mao.com.mao_wanandroid_client.utils.ToastUtils;
import mao.com.mao_wanandroid_client.utils.ToolsUtils;
import mao.com.mao_wanandroid_client.view.main.adapter.HomePageAdapter;
import mao.com.mao_wanandroid_client.view.main.fragment.SearchFragment;

/**
 * @author maoqitian
 * @Description: 公众号详情页
 * @date 2019/7/15 0015 17:39
 */
public class OfficialAccountsDetailActivity extends BaseActivity<OfficialAccountsDetailPresenter> implements
        OfficialAccountsDetailContract.OfficialAccountsDetailView, BaseQuickAdapter.OnItemClickListener,
        View.OnClickListener {


    @BindView(R.id.toolbar)
    Toolbar mToolbar;
    @BindView(R.id.tv_page_title)
    TextView mTextTitle;
    @BindView(R.id.official_accounts_detail_recycleview)
    RecyclerView mRecyclerView;
    @BindView(R.id.official_accounts_detail_smartRefresh)
    SmartRefreshLayout smartRefreshLayout;
    @BindView(R.id.iv_search)
    ImageView mSearch;


    KnowledgeHierarchyData mKnowledgeHierarchyData;

    private RecyclerView.LayoutManager layoutManager;
    private HomePageAdapter mAdapter;
    List<HomeArticleData> mHomeArticleDataList;
    //公众号id
    private int id = 0;

    //下拉刷新头部
    private MaterialHeader mMaterialHeader;

    SearchFragment mSearchFragment;

    @Override
    protected void onViewCreated() {
        super.onViewCreated();
        mHomeArticleDataList = new ArrayList<>();
        mRecyclerView.setHasFixedSize(true);
        // use a linear layout manager
        layoutManager = new LinearLayoutManager(this);
        mRecyclerView.setLayoutManager(layoutManager);
        mAdapter = new HomePageAdapter(R.layout.article_item_cardview_layout);
        mRecyclerView.setAdapter(mAdapter);
        mAdapter.setOnItemClickListener(this);
        mMaterialHeader = (MaterialHeader)smartRefreshLayout.getRefreshHeader();
        //拖动Header的时候是否同时拖动内容(默认true)
        smartRefreshLayout.setEnableHeaderTranslationContent(false);
        mMaterialHeader.setColorSchemeResources(R.color.colorPrimary,android.R.color.holo_green_light,android.R.color.holo_red_light,android.R.color.holo_blue_light);
        setSmartRefreshLayoutListener();
        setAdapterItemChildListener();
    }

    private void setAdapterItemChildListener() {
        mAdapter.setOnItemChildClickListener((adapter, view, position) -> {
            HomeArticleData homeArticleData= (HomeArticleData) adapter.getItem(position);
            //点击收藏
            if (view.getId() == R.id.image_collect) {
                Log.e("毛麒添", "点击收藏");
                if (homeArticleData != null) {
                    addOrCancelCollect(position, homeArticleData);
                }
            }
        });
    }

    private void setSmartRefreshLayoutListener() {
        smartRefreshLayout.setOnRefreshListener(refreshLayout -> {
            Log.e("毛麒添","下拉加载");
            mPresenter.getRefreshPage(id);
            refreshLayout.autoRefresh();
        });
        //加载更多
        smartRefreshLayout.setOnLoadMoreListener(refreshLayout -> {
            Log.e("毛麒添","加载更多");
            mPresenter.getLoadMorePage(id);
            refreshLayout.autoLoadMore();
        });
    }


    @Override
    protected void initToolbar() {
        mToolbar.setTitleTextColor(Color.WHITE);
        setSupportActionBar(mToolbar);
        //出去默认标题
        Objects.requireNonNull(getSupportActionBar()).setDisplayShowTitleEnabled(false);
        mToolbar.setNavigationIcon(R.drawable.ic_arrow_back_24dp);
        StatusBarUtil.setColorNoTranslucentLightMode(this, ContextCompat.getColor(this,R.color.colorPrimary));
        mToolbar.setNavigationOnClickListener(v -> finish());
    }

    @Override
    protected int getLayout() {
        return R.layout.activity_official_accounts_detial_layout;
    }

    @Override
    protected void initEventAndData() {
        getIntentInitViewData();
    }

    private void getIntentInitViewData() {
        mSearch.setVisibility(View.VISIBLE);
        mSearch.setOnClickListener(this);
        Intent intent = getIntent();
        if (intent != null){
            mKnowledgeHierarchyData = (KnowledgeHierarchyData) intent.getSerializableExtra(Constants.KNOWLEDGE_DATA);
            //Log.e("毛麒添","mKnowledgeHierarchyData"+mKnowledgeHierarchyData.toString());
            mTextTitle.setText(mKnowledgeHierarchyData.getName());
            id = mKnowledgeHierarchyData.getId();
        }
        if(ToolsUtils.isNetworkConnected() && id != 0){
            mPresenter.getWxArticleHistory(id);
            smartRefreshLayout.autoRefresh();
        }
    }

    @Override
    public void showWxArticleHistoryData(List<HomeArticleData> homeArticleDataList,boolean isRefresh) {
        if(isRefresh){
            //下拉刷新 或者 第一次加载
            mHomeArticleDataList.clear();
            mHomeArticleDataList.addAll(homeArticleDataList);
            mAdapter.replaceData(homeArticleDataList);
        }else {
            //加载更多
            mAdapter.addData(homeArticleDataList);
        }
        smartRefreshLayout.finishRefresh();
        smartRefreshLayout.finishLoadMore();
    }

    @Override
    public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
        HomeArticleData homeArticleData = (HomeArticleData) adapter.getItem(position);
        StartDetailPage.start(this,homeArticleData, Constants.PAGE_WEB_COLLECT,Constants.ACTION_PAGE_DETAIL_ACTIVITY);
    }


    @Override
    public void showAddArticleCollectStatus(int position, HomeArticleData homeArticleData, String msg) {
        showCollectStatus(position,homeArticleData,msg);
    }

    @Override
    public void showCancelArticleCollectStatus(int position, HomeArticleData homeArticleData, String msg) {
        showCollectStatus(position,homeArticleData,msg);
    }

    //显示收藏 或取消 收藏之后的状态
    private void showCollectStatus(int position,HomeArticleData homeArticleData,String msg){
        if(homeArticleData!=null && mAdapter!=null){
            mAdapter.setData(position,homeArticleData);
        }
        ToastUtils.showToast(msg);
    }

    @Override
    public void onClick(View v) {
        //公众号搜索
        if(v.getId() == R.id.iv_search){
            if (mSearchFragment == null) {
                mSearchFragment = SearchFragment.newInstance(Constants.RESULT_CODE_OFFICIAL_ACCOUNTS_PAGE,id,mKnowledgeHierarchyData.getName());
            }
            if (!isDestroyed() && mSearchFragment.isAdded()) {
                mSearchFragment.dismiss();
            }
            mSearchFragment.show(getSupportFragmentManager(),"showOfficialSearch");
        }
    }
}