using Shared;
using HDL_ON.UI.CSS;
using System;
using System.Collections.Generic;
using System.Text;
namespace HDL_ON.Stan
{
///
/// 底部时间选择控件(时和分),不需要加到父控件
///
public class BottomTimeSelectControl : BottomDialogCommon
{
#region ■ 变量声明___________________________
///
/// 结束事件(0:点击了取消 1:点击了确定,第二,三参数为时和分)
///
public Action FinishEvent = null;
///
/// 小时取值范围
///
List hRange = new List();
///
/// 分钟取值范围
///
List mRange = new List();
///
/// 时间控件
///
UIPickerView pickerView;
//选择的时与分
int selectHour = 0;
int selectMinute = 0;
//XX时
List listHour;
//XX分
List listMinute;
#endregion
#region ■ 初始化_____________________________
///
/// 底部时间选择控件(时和分),不需要加到父控件
///
/// 标题
/// 点击背景时,是否关闭弹窗
public BottomTimeSelectControl(string i_title = "", bool clickBackClose = true)
{
base.ClickBackClose = clickBackClose;
base.StrTitle = i_title;
base.RowCount = 5;
for (int i = 0; i <= 23; i++)
{
hRange.Add(i);
}
for (int i = 0; i <= 59; i++)
{
mRange.Add(i);
}
}
///
/// 底部时间选择控件(时和分),不需要加到父控件
///
/// 标题
/// 点击背景时,是否关闭弹窗
public BottomTimeSelectControl(List hoursRange, List minuteRange, int rowCount, string i_title = "", bool clickBackClose = true)
{
base.ClickBackClose = clickBackClose;
base.StrTitle = i_title;
hRange = hoursRange;
mRange = minuteRange;
base.RowCount = rowCount;
}
///
/// 初始化控件
///
/// 默认选择时
/// 默认选择分
/// 选择区域高度
public void InitControl(int i_hour, int i_minute, int contentView = 297)
{
//已经初始化
if (base.btnCancel != null) { return; }
this.selectHour = i_hour;
this.selectMinute = i_minute;
//初始化底层控件
var frameWhiteBack = base.InitBaseControl();
if (contentView != -1)
{
frameWhiteBack.Height = Application.GetRealHeight(contentView);
}
//frameWhiteBack.Y = frameWhiteBack.Parent.Height - Application.GetRealHeight(297 + 20);
//取消
base.btnCancel.ButtonClickEvent += (sender, e) =>
{
base.Close();
this.FinishEvent?.Invoke(0, 0, 0);
this.FinishEvent = null;
};
//确认
base.btnConfirm.ButtonClickEvent += (sender, e) =>
{
//有选择了才能点确认
if (selectHour != 0 || selectMinute != 0)
{
base.Close();
this.FinishEvent?.Invoke(1, selectHour, selectMinute);
this.FinishEvent = null;
}
};
//线
var btnLine = new NormalViewControl(frameWhiteBack.Width, HdlControlResourse.BottomLineHeight, false);
btnLine.BackgroundColor = CSS_Color.PromptingColor2;
btnLine.Y = btnCancel.Bottom;
frameWhiteBack.AddChidren(btnLine);
//时间控件
pickerView = new UIPickerView();
//时
var strhour = HdlCommonLogic.Current.GetHourText();
//分
var strMinute = HdlCommonLogic.Current.GetMinuteText();
//XX时
listHour = new List();// { "00" + strhour };
//XX分
listMinute = new List();// { "00" + strMinute };
//for (int i = 1; i <= 23; i++)
foreach (var hItem in hRange)
{
listHour.Add(hItem.ToString().PadLeft(2, '0') + strhour);
}
//for (int i = 1; i <= 59; i++)
foreach (var mItem in mRange)
{
listMinute.Add(mItem.ToString().PadLeft(2, '0') + strMinute);
}
pickerView.Height = frameWhiteBack.Height - btnLine.Bottom;
pickerView.Width = frameWhiteBack.Width - Application.GetRealWidth(8) * 2;
pickerView.Y = btnLine.Bottom;
pickerView.Gravity = Gravity.CenterHorizontal;
frameWhiteBack.AddChidren(pickerView);
//默认索引
var index1 = listHour.IndexOf(i_hour.ToString().PadLeft(2, '0') + strhour);
if (index1 == -1) { index1 = 0; }
var index2 = listMinute.IndexOf(i_minute.ToString().PadLeft(2, '0') + strMinute);
if (index2 == -1) { index2 = 0; }
pickerView.setNPicker(listHour, listMinute, null);
pickerView.setCurrentItems(index1, index2, 0);
pickerView.OnSelectChangeEvent = (value1, value2, value3) =>
{
//更改索引
selectHour = Convert.ToInt32(listHour[value1].Substring(0, 2));
selectMinute = Convert.ToInt32(listMinute[value2].Substring(0, 2));
};
}
///
/// 特殊的集合选择事件,凉霸时间设置使用
///
public void ChangePickerEvent()
{
pickerView.OnSelectChangeEvent = (value1, value2, value3) =>
{
if (value1 == 0 && value2 == 0)
{
value2 = 1;
pickerView.setCurrentItems(value1, value2, 0);
}
else if (value1 == 4 && value2 == 1)
{
value2 = 0;
pickerView.setCurrentItems(value1, value2, 0);
}
else
{
//更改索引
selectHour = Convert.ToInt32(listHour[value1].Substring(0, 2));
selectMinute = Convert.ToInt32(listMinute[value2].Substring(0, 2));
}
};
}
#endregion
#region ■ 一般方法___________________________
///
/// 关闭界面
///
public override void Close()
{
base.Close();
this.FinishEvent = null;
}
#endregion
}
}