using System;
using Shared.IOS.TBL;
namespace Shared
{
///
/// CurtainSingleSeekBar
/// 向左或者向右,单向打开的开合帘
/// IsRightOpenStyle
/// false:右滑关闭,进度Progress 100-->0
/// true:右滑打开,进度Progress 0-->100
///
public class CurtainSingleSeekBar : BaseSeekBar
{
///
/// 当前视图
///
/// The HDLOACSingleCurtainSeekBar.
HDLOACSingleCurtainSeekBar mHDLOACSingleCurtainSeekBar
{
get
{
return uiView as HDLOACSingleCurtainSeekBar;
}
set
{
uiView = value;
}
}
///
/// 构造函数
///
public CurtainSingleSeekBar()
{
mHDLOACSingleCurtainSeekBar = new HDLOACSingleCurtainSeekBar
{
MProgressChangedDelegate = new OnProgressChangeListener(this)
};
}
///
/// 刷新布局
///
private void RefreshFrame()
{
mHDLOACSingleCurtainSeekBar.InitWithFrameSeekBar(new CoreGraphics.CGRect(base.X, base.Y, base.Width, base.Height));
}
///
/// 控件宽度
///
public override int Width
{
get
{
return base.Width;
}
set
{
base.Width = value;
RefreshFrame();
}
}
///
/// 控件的高度
///
public override int Height
{
get
{
return base.Height;
}
set
{
base.Height = value;
RefreshFrame();
}
}
///
/// 控件的X坐标
///
public override int X
{
get
{
return base.X;
}
set
{
base.X = value;
RefreshFrame();
}
}
///
/// 控件的X坐标
///
public override int Y
{
get
{
return base.Y;
}
set
{
base.Y = value;
RefreshFrame();
}
}
///
/// 进度值显示单位
///
/// 单位字符
public String ProgressBarUnitSring
{
set
{
mHDLOACSingleCurtainSeekBar.SetProgressBarUnitSring(value);
}
}
int minValue = 0;
int maxValue = 100;
///
/// 进度值最大值
///
/// 最大值
public int MaxValue
{
set
{
maxValue = value;
mHDLOACSingleCurtainSeekBar.SetMinAndMaxValue(minValue, maxValue);
}
}
///
/// 进度值最小值
///
/// 最小值
public int MinValue
{
set
{
minValue = value;
mHDLOACSingleCurtainSeekBar.SetMinAndMaxValue(minValue, maxValue);
}
}
///
/// 当前进度值
///
/// 进度值
public int Progress
{
set
{
mHDLOACSingleCurtainSeekBar.SetProgress(value);
}
get
{
return (int)mHDLOACSingleCurtainSeekBar.MProgress;
}
}
///
/// 是否离线 离线的话禁止滑动并绘制背景遮挡层
///
/// 是否离线
public bool IsOffline
{
set
{
mHDLOACSingleCurtainSeekBar.SetOffline(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);
mHDLOACSingleCurtainSeekBar.MProgressTextColor = UIKit.UIColor.FromRGBA(r, g, b, a);
}
}
///
/// 当前进度值显示的文字大小
///
/// 文字大小
public int ProgressTextSize
{
set
{
mHDLOACSingleCurtainSeekBar.MProgressTextSize = value;
}
}
///
/// 是否可以滑动
///
/// 是否可以滑动
public bool IsClickable
{
set
{
mHDLOACSingleCurtainSeekBar.IsClickable = value;
}
}
///
/// 是否显示进度文字
///
/// 是否显示进度文字
public bool IsProgressTextShow
{
set
{
mHDLOACSingleCurtainSeekBar.IsProgressTextShow = value;
}
}
///
/// 当前进度值 X坐标
///
/// X坐标
public int NowProgressX
{
get
{
return (int)mHDLOACSingleCurtainSeekBar.ProgressX;
}
}
///
/// 是否从左到右打开到100%,默认false
///
/// 默认false
public bool IsRightOpenStyle
{
set
{
mHDLOACSingleCurtainSeekBar.SetFromLeftToRightOpen(value);
}
}
///
/// EventHandler
///
public EventHandler OnProgressChangedEvent;
public EventHandler OnStartTrackingTouchEvent;
public EventHandler OnStopTrackingTouchEvent;
/////
///// OnProgressChangeListener 继承响应事件
/////
OnProgressChangeListener mOnProgressChangeListener;
public class OnProgressChangeListener : HDLSeekBarProgressChangedDelegate
{
[Weak] CurtainSingleSeekBar _CurtainSeekBar;
public OnProgressChangeListener(CurtainSingleSeekBar view)
{
_CurtainSeekBar = view;
}
public override void OnProgressChanged(int mProgress)
{
//if (_CurtainSeekBar.IsProgressChangeDelay()) return;
_CurtainSeekBar.OnProgressChangedEvent?.Invoke(this, mProgress);
}
public override void OnStartTrackingTouch()
{
_CurtainSeekBar.OnStartTrackingTouchEvent?.Invoke(this, true);
}
public override void OnStopTrackingTouch(int mProgress)
{
_CurtainSeekBar.OnProgressChangedEvent?.Invoke(this, mProgress);
_CurtainSeekBar.OnStopTrackingTouchEvent?.Invoke(this, mProgress);
}
}
}
}