package com.bokecc.livemodule.base;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;

import androidx.annotation.Nullable;

import com.bokecc.doc.docsdk.bean.ReplayPageInfo;
import com.bokecc.doc.docsdk.core.DocErrorCode;
import com.bokecc.doc.docsdk.core.DocViewEventListener;
import com.bokecc.doc.docsdk.core.IDocManager;
import com.bokecc.doc.docsdk.core.IDocManagerListener;
import com.bokecc.doc.docsdk.core.IDocView;
import com.bokecc.doc.docsdk.core.impl.DocManagerFactory;
import com.bokecc.sdk.mobile.live.DWLive;
import com.bokecc.sdk.mobile.live.common.log.ELog;
import com.bokecc.sdk.mobile.live.widget.DocView;

import java.util.ArrayList;

/**
 * 直播间文档展示控件,兼容docsdk与老版本dwlivesdk内置文档模块，推荐使用docsdk
 */
public abstract class BaseDocComponent extends LinearLayout implements DocViewEventListener,DocView.DocViewEventListener {

    private static final String TAG = "BaseDocComponent";
    protected Context mContext;

    public BaseDocComponent(Context context) {
        super(context);
        mContext = context;
        initViews();
    }

    public BaseDocComponent(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        mContext = context;
        initViews();
    }


    protected abstract void initViews();


    /**
     * 对doc进行截图,内部使用webView.capturePicture()进行截图
     *
     * @return Bitmap
     */
    public abstract void getDocBitmap(DocCaptureListener listener);

    /**
     * 设置文档区域是否可滑动
     * @param scrollable 是否可以滑动
     */
    public abstract void setDocScrollable(boolean scrollable);

    /**
     * 设置文档的拉伸模式
     * @param type 拉伸模式
     */
    public abstract void setScaleType(int type);


    @Override
    public void docLoadCompleteFailedWithIndex(int index) {
        switch (index) {

            case 0:
                ELog.i(TAG, "文档组件加载完成");
                break;
            case 3:
                ELog.i(TAG, "文档组件加载失败");
                break;

            case 1:
                //文档类型（静态文档、动态文档、白板）之 动态文档 翻页成功
                ELog.i(TAG, "动态文档翻页成功");
                break;

            case 5:
                //文档类型（静态文档、动态文档、白板）之 动态文档 翻页超时
                ELog.i(TAG, "动态文档翻页超时");
                break;


            case 2:
                //文档类型（静态文档、动态文档、白板）之 静态文档 翻页成功
                ELog.i(TAG, "非动画文档(白板 图片)文档加载完成");
                break;

            case 4:
                //文档类型（静态文档、动态文档、白板）之 静态文档 翻页失败
                ELog.i(TAG, "静态文档翻页失败");
                break;

            case 6:
                //文档类型（静态文档、动态文档、白板）之 白板 翻页失败
                ELog.i(TAG, "白板加载失败");
                break;

            case 9:
                //文档类型（静态文档、动态文档、白板）之 静态文档、动态文档 翻页超时回调状态码（包含index为5和10状态）
                ELog.i(TAG, "文档翻页超时");
                break;

            case 10:
                //文档类型（静态文档、动态文档、白板）之 静态文档 翻页超时回调状态码
                ELog.i(TAG, "静态文档翻页超时");
                break;
            case 11:
                //文档类型（静态文档、动态文档、白板）之 动态文档 step动画执行成功回调状态码
                ELog.i(TAG, "动态文档动画执行成功");
                break;
            case 12:
                //文档类型（静态文档、动态文档、白板）之 动态文档 step动画执行超时回调状态码
                ELog.i(TAG, "动态文档动画执行超时");
                break;

            case 13:
                //文档类型（静态文档、动态文档、白板）之 动态文档 文档加载成功回调状态码
                ELog.i(TAG, "动态文档加载成功");
                break;
            case 14:
                //文档类型（静态文档、动态文档、白板）之 动态文档 文档加载失败回调状态码
                ELog.i(TAG, "动态文档加载失败");
                break;


            default:

        }

    }
}

