using Shared;
using HDL_ON.UI.CSS;
using System;
using System.Collections.Generic;
using System.Text;
namespace HDL_ON.Stan
{
///
/// 底部选择一个月内的一些日期的控件,不需要加到父控件,InitControl执行初始化
///
public class BottomSomeDaySelectControl : BottomDialogCommon
{
#region ■ 变量声明___________________________
///
/// 结束事件(0:点击了取消 1:点击了确定,参数是选择的日)
///
public Action> FinishEvent = null;
///
/// 目前选择的日期
///
private List listSelectDay = new List();
///
/// 目标月份
///
private int targetMonth = 0;
#endregion
#region ■ 初始化_____________________________
///
/// 底部选择一个月内的一些日期的控件,不需要加到父控件,InitControl执行初始化
///
/// 标题
/// 点击背景时,是否关闭弹窗
/// 显示执行月的日期,设置为0时,默认显示31天
public BottomSomeDaySelectControl(string i_title = "", bool clickBackClose = true, int i_month = 0)
{
base.ClickBackClose = clickBackClose;
base.StrTitle = i_title;
base.RowCount = 5;
this.targetMonth = i_month;
}
///
/// 初始化控件
///
/// 默认选择(日)
public void InitControl(List listSelect)
{
//已经初始化
if (base.btnCancel != null) { return; }
this.listSelectDay.AddRange(listSelect);
//初始化底层控件
var frameWhiteBack = base.InitBaseControl();
//取消
base.btnCancel.ButtonClickEvent += (sender, e) =>
{
base.Close();
this.FinishEvent?.Invoke(0, null);
this.FinishEvent = null;
};
//确认
base.btnConfirm.ButtonClickEvent += (sender, e) =>
{
//有选择了才能点确认
if (this.listSelectDay.Count>0)
{
base.Close();
//小的在前,大的在后
var listDay = new List();
for (int i = 1; i <= 31; i++)
{
if (listSelectDay.Contains(i) == false) { continue; }
listDay.Add(i);
}
this.FinishEvent?.Invoke(1, listDay);
this.FinishEvent = null;
}
};
//初始化日期列表控件
this.InitDayListControl(frameWhiteBack);
}
///
/// 初始化日期列表控件
///
private void InitDayListControl(NormalFrameLayout frameWhiteBack)
{
//获取显示的天数
var dayCount = this.GetDayCount();
//初始X轴16
int xxValue = Application.GetRealWidth(16);
//初始Y轴58
int yyValue = Application.GetRealHeight(68);
for (int i = 1; i <= dayCount; i++)
{
int intDay = i;
var btnContr = new NormalViewControl(Application.GetRealWidth(30), Application.GetRealWidth(30), false);
btnContr.X = xxValue;
btnContr.Y = yyValue;
btnContr.Radius = (uint)Application.GetRealWidth(15);
btnContr.Text = intDay.ToString();
btnContr.TextAlignment = TextAlignment.Center;
btnContr.TextColor = CSS_Color.FirstLevelTitleColor;
btnContr.SelectedTextColor = CSS_Color.MainBackgroundColor;
btnContr.SelectedBackgroundColor = CSS_Color.MainColor;
btnContr.BackgroundColor = CSS_Color.viewTranslucence;
frameWhiteBack.AddChidren(btnContr);
//换到下一行(每7个一行)
if (i % 7 == 0)
{
xxValue = Application.GetRealWidth(16);
//上下间距为10
yyValue = btnContr.Bottom + Application.GetRealHeight(10);
}
else
{
//左右间距为16
xxValue = btnContr.Right + Application.GetRealWidth(16);
}
btnContr.ButtonClickEvent += (sender, e) =>
{
btnContr.IsSelected = !btnContr.IsSelected;
if (btnContr.IsSelected == true)
{
//添加缓存
this.listSelectDay.Add(intDay);
}
else
{
//移除缓存
this.listSelectDay.Remove(intDay);
}
};
//是否初始选择
btnContr.IsSelected = this.listSelectDay.Contains(intDay);
}
}
#endregion
#region ■ 一般方法___________________________
///
/// 获取天数
///
///
private int GetDayCount()
{
if (this.targetMonth < 1 || this.targetMonth > 12) { return 31; }
int two = DateTime.IsLeapYear(DateTime.Now.Year) == true ? 29 : 28;
int[] arry = new int[] { 31, two, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
return arry[this.targetMonth - 1];
}
///
/// 关闭界面
///
public override void Close()
{
base.Close();
this.FinishEvent = null;
}
#endregion
}
}