using System;
using System.Collections.Generic;
using Foundation;
using Shared.IOS.TBL;


namespace Shared
{



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

     

        /// <summary>
        /// 构造函数
        /// </summary>
        public UIPickerView()
        {
            mHDLPickerView = new HDLPickerView
            {
           
                MChangedDelegate = new OnSelectChangeListener(this)
            };

        }


        /// <summary>
        /// 刷新布局
        /// </summary>
        private void RefreshFrame()
        {
            mHDLPickerView.InitWithFrameArc(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>
        /// 设置PickerView 默认选中项
        /// </summary>
        public void setCurrentItems(int option1, int option2, int option3)
        {

            mHDLPickerView.SetCurrentItems(option1, option2, option3);

        }


        /// <summary>
        /// 设置PickerView 数据
        /// </summary>
        public void setNPicker(List<string> mFirstList, List<string> mSecondList, List<string> mThirdList)
        {
            if (mFirstList == null)
            {
                return;
            }

            if (mSecondList == null)
            {
                mHDLPickerView.SetNPicker(NSArray.FromObjects(mFirstList.ToArray()), null, null);

            }
            else
            {
                if (mThirdList == null)
                {
                    mHDLPickerView.SetNPicker(NSArray.FromObjects(mFirstList.ToArray()), NSArray.FromObjects(mSecondList.ToArray()), null);
                }
                else {
                    mHDLPickerView.SetNPicker(NSArray.FromObjects(mFirstList.ToArray()), NSArray.FromObjects(mSecondList.ToArray()), NSArray.FromObjects(mThirdList.ToArray()));
                }

            }


        }

        /// <summary>
        /// 设置PickerView 数据
        /// </summary>
        public void setPicker(List<string> mFirstList, List<List<string>> mSecondList)
        {
            if (mFirstList == null)
            {
                return;
            }

            if (mFirstList.Count != mSecondList.Count)
            {
                return;
            }

            var dictDataList = new NSMutableArray();

            for (int i = 0; i < mFirstList.Count; i++)
            {

                dictDataList.Add(NSDictionary.FromObjectAndKey(NSArray.FromObjects(mSecondList[i].ToArray()), new NSString(mFirstList[i])));

            }

            mHDLPickerView.SetPicker(dictDataList);

        }


        /// <summary>
        /// 设置PickerView 选中文字的颜色
        /// </summary>
        public void setTextColorCenter(uint mColor, int indexID)
        {

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

     
            mHDLPickerView.SetTextColorCenter(UIKit.UIColor.FromRGBA(r, g, b, a), indexID);
        }



        /// <summary>
        /// Action
        /// </summary>
        public Action<int, int, int> OnSelectChangeEvent;

        /// <summary>
        /// OnSelectChangeListener 继承响应事件
        /// </summary>
        OnSelectChangeListener mOnSelectChangeListener;

        public class OnSelectChangeListener : HDLPickerviewChangedDelegate
        {

            [Weak] UIPickerView _UIPickerView;

            public OnSelectChangeListener(UIPickerView view)
            {
                _UIPickerView = view;
            }

            public override void SelectIndex2(nint selectIndex1, nint selectIndex2, nint selectIndex3)
            {
                _UIPickerView.OnSelectChangeEvent?.Invoke((int)selectIndex1, (int)selectIndex2, (int)selectIndex3);
            }

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


        }
    }
}