using System; 
 | 
using Shared.IOS.TBL; 
 | 
  
 | 
  
 | 
namespace Shared 
 | 
{ 
 | 
  
 | 
    /// <summary> 
 | 
    /// CurtainRollSeekBar 卷帘控件 
 | 
    /// </summary> 
 | 
    public class CurtainRollSeekBar : BaseSeekBar 
 | 
    { 
 | 
        /// <summary> 
 | 
        ///  当前视图 
 | 
        /// </summary> 
 | 
        /// <value>The HDLRollCurtainSeekBar.</value> 
 | 
        HDLRollCurtainSeekBar mHDLRollCurtainSeekBar 
 | 
        { 
 | 
            get 
 | 
            { 
 | 
                return uiView as HDLRollCurtainSeekBar; 
 | 
            } 
 | 
            set 
 | 
            { 
 | 
                uiView = value; 
 | 
            } 
 | 
        } 
 | 
  
 | 
         
 | 
        /// <summary> 
 | 
        /// 构造函数 
 | 
        /// </summary> 
 | 
        public CurtainRollSeekBar() 
 | 
        { 
 | 
            mHDLRollCurtainSeekBar = new HDLRollCurtainSeekBar 
 | 
            { 
 | 
                MProgressChangedDelegate = new OnProgressChangeListener(this) 
 | 
            }; 
 | 
  
 | 
        } 
 | 
  
 | 
  
 | 
        /// <summary> 
 | 
        /// 刷新布局 
 | 
        /// </summary> 
 | 
        private void RefreshFrame() 
 | 
        { 
 | 
            mHDLRollCurtainSeekBar.InitWithFrameSeekBar(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 String ProgressBarUnitSring 
 | 
        { 
 | 
            set 
 | 
            { 
 | 
                mHDLRollCurtainSeekBar.SetProgressBarUnitSring(value); 
 | 
            } 
 | 
        } 
 | 
  
 | 
        int minValue = 0; 
 | 
        int maxValue = 100; 
 | 
        /// <summary> 
 | 
        /// 进度值最大值 
 | 
        /// </summary> 
 | 
        /// <value>最大值</value> 
 | 
        public int MaxValue 
 | 
        { 
 | 
            set 
 | 
            { 
 | 
                maxValue = value; 
 | 
                mHDLRollCurtainSeekBar.SetMinAndMaxValue(minValue, maxValue); 
 | 
            } 
 | 
        } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 进度值最小值 
 | 
        /// </summary> 
 | 
        /// <value>最小值</value> 
 | 
        public int MinValue 
 | 
        { 
 | 
            set 
 | 
            { 
 | 
                minValue = value; 
 | 
                mHDLRollCurtainSeekBar.SetMinAndMaxValue(minValue, maxValue); 
 | 
            } 
 | 
        } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 当前进度值 
 | 
        /// </summary> 
 | 
        /// <value>进度值</value> 
 | 
        public int Progress 
 | 
        { 
 | 
            set 
 | 
            { 
 | 
                mHDLRollCurtainSeekBar.SetProgress(value); 
 | 
            } 
 | 
  
 | 
            get 
 | 
            { 
 | 
                return (int)mHDLRollCurtainSeekBar.MProgress; 
 | 
            } 
 | 
        } 
 | 
  
 | 
  
 | 
        /// <summary> 
 | 
        /// 进度条与左右边框边距 
 | 
        /// </summary> 
 | 
        public int CurtainPaddingLeftRight 
 | 
        { 
 | 
            set 
 | 
            { 
 | 
                mHDLRollCurtainSeekBar.SetCurtainPadding(value); 
 | 
            } 
 | 
        } 
 | 
  
 | 
  
 | 
        /// <summary> 
 | 
        /// 顶部padding 
 | 
        /// </summary> 
 | 
        public int CurtainPaddingTop 
 | 
        { 
 | 
            set 
 | 
            { 
 | 
                mHDLRollCurtainSeekBar.SetCurtainPaddingTop(value); 
 | 
            } 
 | 
        } 
 | 
  
 | 
  
 | 
        /// <summary> 
 | 
        /// 是否离线 离线的话禁止滑动并绘制背景遮挡层 
 | 
        /// </summary> 
 | 
        /// <value>是否离线</value> 
 | 
        public bool IsOffline 
 | 
        { 
 | 
            set 
 | 
            { 
 | 
                mHDLRollCurtainSeekBar.SetOffline(value); 
 | 
            } 
 | 
        } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 当前进度值显示的文字颜色 
 | 
        /// </summary> 
 | 
        /// <value>文字颜色</value> 
 | 
        public uint ProgressTextColor 
 | 
        { 
 | 
            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); 
 | 
  
 | 
                mHDLRollCurtainSeekBar.MProgressTextColor = UIKit.UIColor.FromRGBA(r, g, b, a); 
 | 
            } 
 | 
        } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 当前进度值显示的文字大小 
 | 
        /// </summary> 
 | 
        /// <value>文字大小</value> 
 | 
        public int ProgressTextSize 
 | 
        { 
 | 
            set 
 | 
            { 
 | 
                mHDLRollCurtainSeekBar.MProgressTextSize = value; 
 | 
            } 
 | 
  
 | 
        } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 是否可以滑动 
 | 
        /// </summary> 
 | 
        /// <value>是否可以滑动</value> 
 | 
        public bool IsClickable 
 | 
        { 
 | 
            set 
 | 
            { 
 | 
                mHDLRollCurtainSeekBar.IsClickable = value; 
 | 
            } 
 | 
        } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 是否显示进度文字 
 | 
        /// </summary> 
 | 
        /// <value>是否显示进度文字</value> 
 | 
        public bool IsProgressTextShow 
 | 
        { 
 | 
            set 
 | 
            { 
 | 
                mHDLRollCurtainSeekBar.IsProgressTextShow = value; 
 | 
            } 
 | 
        } 
 | 
  
 | 
  
 | 
  
 | 
        /// <summary> 
 | 
        /// 当前进度值 Y坐标 
 | 
        /// </summary> 
 | 
        /// <value>Y坐标</value> 
 | 
        public int NowProgressY 
 | 
        { 
 | 
            get 
 | 
            { 
 | 
                return (int)mHDLRollCurtainSeekBar.ProgressY; 
 | 
            } 
 | 
        } 
 | 
  
 | 
  
 | 
  
 | 
  
 | 
        /// <summary> 
 | 
        /// EventHandler 
 | 
        /// </summary> 
 | 
        public EventHandler<int> OnProgressChangedEvent; 
 | 
        public EventHandler<bool> OnStartTrackingTouchEvent; 
 | 
        public EventHandler<int> OnStopTrackingTouchEvent; 
 | 
  
 | 
        ///// <summary> 
 | 
        ///// OnProgressChangeListener 继承响应事件 
 | 
        ///// </summary> 
 | 
        OnProgressChangeListener mOnProgressChangeListener; 
 | 
  
 | 
        public class OnProgressChangeListener : HDLSeekBarProgressChangedDelegate 
 | 
        { 
 | 
  
 | 
            [Weak] CurtainRollSeekBar _CurtainRollSeekBar; 
 | 
  
 | 
            public OnProgressChangeListener(CurtainRollSeekBar view) 
 | 
            { 
 | 
                _CurtainRollSeekBar = view; 
 | 
            } 
 | 
  
 | 
            public override void OnProgressChanged(int mProgress) 
 | 
            { 
 | 
                //if (_CurtainRollSeekBar.IsProgressChangeDelay()) return; 
 | 
                _CurtainRollSeekBar.OnProgressChangedEvent?.Invoke(this, mProgress); 
 | 
            } 
 | 
  
 | 
            public override void OnStartTrackingTouch() 
 | 
            { 
 | 
                _CurtainRollSeekBar.OnStartTrackingTouchEvent?.Invoke(this, true); 
 | 
            } 
 | 
  
 | 
            public override void OnStopTrackingTouch(int mProgress) 
 | 
            { 
 | 
                _CurtainRollSeekBar.OnProgressChangedEvent?.Invoke(this, mProgress); 
 | 
                _CurtainRollSeekBar.OnStopTrackingTouchEvent?.Invoke(this, mProgress); 
 | 
            } 
 | 
        } 
 | 
  
 | 
    } 
 | 
} 
 |