/*
 * ********************************************************************************************************************
 *
 *               iFHS7.
 *              ;BBMBMBMc                  rZMBMBR              BMB
 *              MBEr:;PBM,               7MBMMEOBB:             BBB                       RBW
 *     XK:      BO     SB.     :SZ       MBM.       c;;     ir  BBM :FFr       :SSF:    ;xBMB:r   iuGXv.    i:. iF2;
 *     DBBM0r.  :D     S7   ;XMBMB       GMBMu.     MBM:   BMB  MBMBBBMBMS   WMBMBMBBK  MBMBMBM  BMBRBMBW  .MBMBMBMBB
 *      :JMRMMD  ..    ,  1MMRM1;         ;MBMBBR:   MBM  ;MB:  BMB:   MBM. RMBr   sBMH   BM0         UMB,  BMB.  KMBv
 *     ;.   XOW  B1; :uM: 1RE,   i           .2BMBs  rMB. MBO   MBO    JMB; MBB     MBM   BBS    7MBMBOBM:  MBW   :BMc
 *     OBRJ.SEE  MRDOWOR, 3DE:7OBM       .     ;BMB   RMR7BM    BMB    MBB. BMB    ,BMR  .BBZ   MMB   rMB,  BMM   rMB7
 *     :FBRO0D0  RKXSXPR. JOKOOMPi       BMBSSWBMB;    BMBB:    MBMB0ZMBMS  .BMBOXRBMB    MBMDE RBM2;SMBM;  MBB   xBM2
 *         iZGE  O0SHSPO. uGZ7.          sBMBMBDL      :BMO     OZu:BMBK,     rRBMB0;     ,EBMB  xBMBr:ER.  RDU   :OO;
 *     ,BZ, 1D0  RPSFHXR. xWZ .SMr                  . .BBB
 *      :0BMRDG  RESSSKR. 2WOMBW;                   BMBMR
 *         i0BM: SWKHKGO  MBDv
 *           .UB  OOGDM. MK,                                          Copyright (c) 2015-2019.  斯伯坦机器人
 *              ,  XMW  ..
 *                  r                                                                     All rights reserved.
 *
 * ********************************************************************************************************************
 */

package com.sybotan.android.views

import android.content.Context
import android.graphics.Canvas
import android.util.AttributeSet
import android.util.Log
import android.view.MotionEvent
import android.widget.SeekBar

/**
 * 垂直滑块
 *
 * @author  庞利祥(sybotan@126.com)
 */
open class SVerticalSeekBar(context: Context, attrs: AttributeSet? = null) : SeekBar(context, attrs) {
    /**
     * 定义控件尺寸规则时的回调。因为为竖直，所以宽与高互换
     *
     * @param   widthMeasureSpec        宽度尺寸规格
     * @param   heightMeasureSpec       高度尺寸规格
     */
    override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
        super.onMeasure(heightMeasureSpec, widthMeasureSpec)
        setMeasuredDimension(measuredHeight, measuredWidth)
        return
    } // Function onMeasure()

    /**
     * 大小变更回调
     *
     * @param   w           控件宽度
     * @param   h           控件高度
     * @param   oldw        控件的原宽度
     * @param   oldh        控件的原高度
     */
    override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {
        super.onSizeChanged(h, w, oldh, oldw)
    } // Function onSizeChanged()

    /**
     * 绘制过程
     *
     * @param   canvas   画布
     */
    override fun onDraw(canvas: Canvas) {
        //将SeekBar转转90度
        canvas.rotate(-90f)
        //将旋转后的视图移动回来
        canvas.translate((-height).toFloat(), 0f)
        Log.i("getHeight()", height.toString() + "")
        super.onDraw(canvas)
        return
    } // Function onDraw()

    /**
     * 触控操作回调
     *
     * @param   event       保存事件参数
     * @return  处理了该事件返回true，否则返回false。
     */
    override fun onTouchEvent(event: MotionEvent): Boolean {
        if (!isEnabled) {
            return false
        }

        when (event.action) {
            MotionEvent.ACTION_DOWN, MotionEvent.ACTION_MOVE, MotionEvent.ACTION_UP -> {
                //获取滑动的距离
                var i = max - (max * event.y / height).toInt()
                //设置进度
                progress = i
                Log.i("Progress", progress.toString() + "")
                //每次拖动SeekBar都会调用
                onSizeChanged(width, height, 0, 0)
                Log.i("getWidth()", width.toString() + "")
                Log.i("getHeight()", height.toString() + "")
            }

            MotionEvent.ACTION_CANCEL -> {
            }
        }
        return true
    } // Function onTouchEvent()
} // Class SVerticalSeekBar