package com.edufound.reader.cusview;

import android.content.Context;
import android.graphics.drawable.GradientDrawable;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.ConstraintLayout;

import com.edufound.reader.R;
import com.edufound.reader.bean.ModelBean;
import com.edufound.reader.util.EfunboxUtil;
import com.edufound.reader.util.GlideUtils;
import com.edufound.reader.util.SizeUtils;
import com.jakewharton.rxbinding4.view.RxView;

import java.util.concurrent.TimeUnit;

public class ModelViewG extends FrameLayout {

    Context mContext;
    LayoutInflater mLayoutInflater;
    LinearLayout mItemLayout;
    ImageView mBackgroundImg;
    FrameLayout mRuleBtn;

    public ModelViewG(@NonNull Context context) {
        super(context);
        mContext = context;
        mLayoutInflater = LayoutInflater.from(mContext);
    }

    public ModelViewG(@NonNull Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public ModelViewG(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public void initView() {
        EfunboxUtil.initDesignSize(mContext);
        FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(SizeUtils.dp2px(mContext, 428)
                , SizeUtils.dp2px(mContext, 598));
        this.setLayoutParams(layoutParams);
        layoutParams.gravity = Gravity.CENTER;
        FrameLayout modelViewF = (FrameLayout) mLayoutInflater.inflate(R.layout.cusview_model_view_g, null);
        mBackgroundImg = modelViewF.findViewById(R.id.cusview_model_view_g_background);
        mRuleBtn = modelViewF.findViewById(R.id.cusview_model_view_g_rule);
        mItemLayout = modelViewF.findViewById(R.id.cusview_model_view_g_item_layout);
        GradientDrawable drawable = new GradientDrawable();
        drawable.setSize(1, SizeUtils.dp2px(mContext, 46));
        mItemLayout.setDividerDrawable(drawable);
        mItemLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);
        this.addView(modelViewF);
    }

    public void setView(String bgurl, ModelBean bean, ModelViewF.ModelViewFOnItemClick listener) {
        mItemLayout.removeAllViews();
        if (!TextUtils.isEmpty(bgurl)) {
            GlideUtils.loadImageSizeKipMemoryCache(mContext, bgurl, mBackgroundImg);
        } else {
            GlideUtils.loadImageSizeKipMemoryCache(mContext, R.drawable.test_view_f_bg, mBackgroundImg);
        }
        RxView.clicks(mRuleBtn).throttleFirst(2, TimeUnit.SECONDS).subscribe(o -> {
            listener.clickRule(bean);
        });
        LinearLayout.LayoutParams itemParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 0, 1);
        for (int i = 0; i < bean.getReadUserList().size(); i++) {
            ConstraintLayout item = (ConstraintLayout) mLayoutInflater.inflate(R.layout.adapter_item_cusview_model_view_g, null);
            ImageView icon = item.findViewById(R.id.cusview_model_view_g_layout_item_icon);
            GlideUtils.loadRoundCircleImage(mContext, bean.getReadUserList().get(i).getExample().getShareImg(), icon, SizeUtils.dp2px(mContext, 10));
            TextView name = item.findViewById(R.id.cusview_model_view_g_layout_item_name);
            name.setText(bean.getReadUserList().get(i).getExample().getTitle());
            TextView enterNum = item.findViewById(R.id.cusview_model_view_g_layout_item_enter_num);
            enterNum.setText(bean.getReadUserList().get(i).getCount());
            FrameLayout openRankList = item.findViewById(R.id.cusview_model_view_g_layout_item_ranklist);
            item.setLayoutParams(itemParams);
            int finalI = i;
            RxView.clicks(item).throttleFirst(2, TimeUnit.SECONDS).subscribe(o -> {
                listener.clickItem(bean.getReadUserList().get(finalI));
            });
            RxView.clicks(openRankList).throttleFirst(2, TimeUnit.SECONDS).subscribe(o -> {
                listener.openRankList(bean.getReadUserList().get(finalI));
            });
            mItemLayout.addView(item);
        }
    }

}