package com.cr.dialog

import android.app.AlertDialog
import android.content.Context
import android.os.Build
import android.view.LayoutInflater
import android.view.View
import android.view.WindowManager
import android.widget.ProgressBar
import android.widget.TextView
import androidx.annotation.RequiresApi
import com.cr.cruav.R

/**
 * 操作系统：MAC系统
 * 创建者：王成
 * 创建日期：2023/4/10 14:59
 * 描述：下载进度条
 */
class DialogProgressUtil {
    companion object{
        // define: 2023/4/10 对话框
        var progressDialog:AlertDialog?=null
        // define: 2023/4/12 定义控件
        var lblTitle:TextView?= null
        var lblProgress:TextView?=null
        var progressBar:ProgressBar?=null

        /**
         * 初始化
         * @param context Context 上下文
         * @param res Int 资源Id
         */
        private fun init(context:Context, res:Int){
            if(progressDialog == null){
                progressDialog = AlertDialog.Builder(context).create()
                if(res>0){
                    // todo: 2023/4/10 创建视图
                    var view: View = LayoutInflater.from(context).inflate(res,null)
                    // todo: 2023/4/10 挂载标题文本
                    lblTitle = view.findViewById(R.id.dig_progress_title)
                    lblTitle?.text = "1/1"
                    // todo: 2023/4/12 挂载下载进度文本
                    lblProgress = view.findViewById(R.id.dig_progress_progress)
                    lblProgress?.text = "0%"
                    // todo: 2023/4/12 挂接下载进度条
                    progressBar = view.findViewById(R.id.dig_progress_bar)
                    @RequiresApi(Build.VERSION_CODES.O)
                    progressBar?.min = 0
                    progressBar?.max = 100
                    // todo: 2023/4/10 设置视图
                    progressDialog?.setView(view)
                    // todo: 2023/4/10 设置对话框背景
                    progressDialog?.window?.setBackgroundDrawableResource(android.R.color.transparent)
                    // todo: 2023/4/10 去掉阴影
                    progressDialog?.window?.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
                }
                // todo: 2023/4/10 禁止点击外部关闭
                progressDialog?.setCancelable(false)
            }
        }

        /**
         * 显示下载进度框
         * @param context Context 上下文
         */
        fun show(context: Context){
            init(context, R.layout.dig_progress)
            progressDialog?.show()
            progressDialog?.setCancelable(false);
        }

        /**
         * 显示下载进度框
         * @param context Context 上下文
         * @param max Int 最大值
         */
        fun show(context: Context, max:Int){
            init(context, R.layout.dig_progress)
            progressDialog?.show()
            progressDialog?.setCancelable(false);
            progressBar?.max = max
        }

        /**
         * 更新显示内容
         * @param title String 标题
         * @param progressTitle String 下载进度
         * @param progress Int 当前进度
         */
        fun update(title:String,progressTitle:String,progress:Int){
            if(progressDialog != null && progressDialog?.isShowing == true){
                lblTitle?.text = title
                lblProgress?.text = progressTitle
                progressBar?.progress = progress
            }
        }

        /**
         * 设置最大值
         * @param max Int 最大值
         */
        fun setMax(max:Int){
            if(progressDialog != null && progressDialog?.isShowing == true){
                progressBar?.max = max
            }
        }

        /**
         * 关闭等待框
         */
        fun dismiss(){
            if(progressDialog != null && progressDialog?.isShowing == true){
                progressDialog?.dismiss()
                progressDialog = null
            }
        }

    }
}