package com.cr.pages

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.cr.cruav.CrApplication
import com.cr.cruav.R
import com.cr.event.BarAction
import com.cr.event.EventFragmentBarAction
import com.cr.widget.CrButtonWidget

/**
 * 操作系统：MAC系统
 * 创建者：王成
 * 创建日期：2023/4/21 10:08
 * 描述：工具箱页面
 */
class FragmentTools:CrNavigationFragment() ,CrButtonWidget.OnClickListener{
    /**
     * 监听接口
     */
    interface OnOperationListener{
        // todo: 2023/4/21 测量长度
        fun onMeasureLength()

        // todo: 2023/4/21 测量面积
        fun onMeasureArea()

        // todo: 2023/4/21 清除测量内容
        fun onMeasureClear()

        // todo: 2023/4/21 获取经纬度位置
        fun onGetLocation()

        // todo: 2023/4/21 定位到地图
        fun onToLocation()
    }
    // todo: 2023/4/21 控件定义
    private var btnMeasureLength:CrButtonWidget? = null // define: 2023/4/21 长度测量按钮
    private var btnMeasureArea:CrButtonWidget? = null // define: 2023/4/21 面积测量按钮
    private var btnMeasureClear:CrButtonWidget? = null // define: 2023/4/21 清除测量内容按钮
    private var btnGetLocation:CrButtonWidget? = null // define: 2023/4/21 获取经纬度按钮
    private var btnToLocation:CrButtonWidget? = null // define: 2023/4/21 经纬度定位按钮

    // todo: 2023/4/21 定义监听 自行实现
    private var listener:OnOperationListener? = null

    /**
     * 创建页面
     * @param inflater LayoutInflater
     * @param container ViewGroup?
     * @param savedInstanceState Bundle?
     * @return View?
     */
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        self = this
        mainView = inflater.inflate(R.layout.frag_tools,null)
        // todo: 2023/4/21 设置导航栏
        setBar(R.id.nv)
        // todo: 2023/4/21 设置展现方式
        setAnimationDirection(AnimationDirection.LEFT)
        // todo: 2023/4/21 挂载控件
        initControls()
        // todo: 2023/4/21 返回
        return mainView
    }

    /**
     * 重写挂载控件
     */
    override fun initControls() {
        // todo: 2023/4/21 挂载控件
        btnMeasureLength = mainView?.findViewById(R.id.tools_measure_length)
        btnMeasureArea = mainView?.findViewById(R.id.tools_measure_area)
        btnMeasureClear = mainView?.findViewById(R.id.tools_measure_clear)
        btnGetLocation = mainView?.findViewById(R.id.tools_get_location)
        btnToLocation = mainView?.findViewById(R.id.tools_to_location)

        // todo: 2023/4/21 设置监听
        btnMeasureLength?.setListener(this)
        btnMeasureArea?.setListener(this)
        btnMeasureClear?.setListener(this)
        btnGetLocation?.setListener(this)
        btnToLocation?.setListener(this)
    }

    /**
     * 关闭页面
     */
    override fun dismiss() {
        CrApplication.getEventBus().post(EventFragmentBarAction(self!!, BarAction.ACTION_DISMISS))
    }

    /**
     * 视图点击事件
     * @param view View
     */
    override fun onClick(view: View) {
        when(view?.id){
            // todo: 2023/4/21 长度测量
            R.id.tools_measure_length->{
                if(listener != null) listener?.onMeasureLength()
            }
            // todo: 2023/4/21 面积测量
            R.id.tools_measure_area->{
                if(listener != null) listener?.onMeasureArea()
            }
            // todo: 2023/4/21 清除测量内容
            R.id.tools_measure_clear->{
                if(listener != null) listener?.onMeasureClear()
            }
            // todo: 2023/4/21 获取地图位置
            R.id.tools_get_location->{
                if(listener != null) listener?.onGetLocation()
            }
            // todo: 2023/4/21 地图定位
            R.id.tools_to_location->{
                if(listener != null) listener?.onToLocation()
            }
        }
        dismiss()
    }

    /**
     * 设置监听
     * @param listener OnOperationListener
     */
    fun setListener(listener: OnOperationListener){
        this.listener = listener
    }
}