using System;

using Shared.IOS.TBL;


namespace Shared
{



    /// <summary>
    /// GestureLockView
    /// </summary>
    public class GestureLockView : View
    {
        /// <summary>
        ///  当前视图
        /// </summary>
        /// <value>The GestureLockView.</value>
        HDLGestureLockView mHDLGestureLockView
        {
            get
            {
                return uiView as HDLGestureLockView;
            }
            set
            {
                uiView = value;
            }
        }



        /// <summary>
        /// 构造函数
        /// </summary>
        public GestureLockView()
        {
            mHDLGestureLockView = new HDLGestureLockView
            {

                Delegate = new OnLockVerifyListener(this)
            };

        }


        /// <summary>
        /// 刷新布局
        /// </summary>
        private void RefreshFrame()
        {
            mHDLGestureLockView.InitWithFrameLockView(new CoreGraphics.CGRect(base.X, base.Y, base.Width, base.Height));
        }

        /// <summary>
		/// 控件宽度
		/// </summary>
		public override int Width
        {
            get
            {
                return base.Width;
            }
            set
            {
                base.Width = value;
                RefreshFrame();

            }
        }


        /// <summary>
        /// 控件的高度
        /// </summary>
        public override int Height
        {
            get
            {
                return base.Height;
            }
            set
            {
                base.Height = value;
                RefreshFrame();

            }
        }

        /// <summary>
        /// 控件的X坐标
        /// </summary>
        public override int X
        {
            get
            {
                return base.X;
            }
            set
            {
                base.X = value;
                RefreshFrame();

            }
        }


        /// <summary>
        /// 控件的X坐标
        /// </summary>
        public override int Y
        {
            get
            {
                return base.Y;
            }
            set
            {
                base.Y = value;
                RefreshFrame();

            }
        }




        /// <summary>
        /// 设置正确和普通时的颜色
        /// </summary>
        /// <value>线颜色</value>
        public uint LockViewCorrectColor
        {
            set
            {

                byte r, g, b, a;
                r = (byte)(value / 256 / 256 % 256);
                g = (byte)(value / 256 % 256);
                b = (byte)(value % 256);
                a = (byte)(value / 256 / 256 / 256 % 256);

                mHDLGestureLockView.SelectedLineColor = UIKit.UIColor.FromRGBA(r, g, b, a);

            }
        }



        /// <summary>
        /// 设置错误时的颜色
        /// </summary>
        /// <value>线颜色</value>
        public uint LockViewErrorColor
        {
            set
            {

                byte r, g, b, a;
                r = (byte)(value / 256 / 256 % 256);
                g = (byte)(value / 256 % 256);
                b = (byte)(value % 256);
                a = (byte)(value / 256 / 256 / 256 % 256);

                mHDLGestureLockView.ErrorLineColor = UIKit.UIColor.FromRGBA(r, g, b, a);
                //mHDLArcSeekBar.SetProgressTextColor(UIKit.UIColor.FromRGBA(r,  g, b, a));

            }
        }


        /// <summary>
        /// 显示手势解锁view 是否显示正确
        /// </summary>
        public void showCorrectStatus(bool isTrue)
        {
            mHDLGestureLockView.ShowErrorStatus = !isTrue;
        }



        /// <summary>
        /// Action
        /// </summary>
        public Action<string, int> OnLockVerifyEvent;

        /// <summary>
        /// OnLockVerifyListener 手势滑动结束
        /// </summary>
        OnLockVerifyListener mOnLockVerifyListener;

        public class OnLockVerifyListener : SSGestureLockViewDelegate
        {

            [Weak] GestureLockView _GestureLockView;

            public OnLockVerifyListener(GestureLockView view)
            {
                _GestureLockView = view;
            }

            public override void onDidSelectedGestureLockView(string selectNumStr, int selectCount) {
                _GestureLockView.OnLockVerifyEvent?.Invoke(selectNumStr, selectCount);
            }
            //public override void SelectIndex2(nint selectIndex1, nint selectIndex2, nint selectIndex3)
            //{
            //    _GestureLockView.OnLockVerifyEvent?.Invoke();
            //}

            //public override void OnProgressChanged(int mProgress)
            //{
            //    _WaveSeekBar.OnProgressChangedEvent?.Invoke(this, mProgress);
            //}


        }
    }
}