wxr
2021-06-09 cb6e11c5067ecaba4d8f9907989154167c1e8943
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TimeView.cs
New file
@@ -0,0 +1,314 @@
using System;
using Shared;
using System.Collections.Generic;
namespace HDL_ON.UI.UI2.Intelligence.Automation.LogicView
{
    public class TimeView
    {
        /// <summary>
        /// 主控件
        /// </summary>
        public FrameLayout frameLayout = new FrameLayout
        {
            Y = Application.GetRealHeight(350),
            Height = Application.GetRealHeight(297),
            Width = Application.GetRealWidth(343),
            X = Application.GetRealWidth(16),
            BackgroundColor = CSS.CSS_Color.view,
            Radius =(uint)Application.GetRealHeight(12),
        };
        /// <summary>
        /// 时间控件UIPickerView
        /// </summary>
        public UIPickerView mUIPickerView = new UIPickerView
        {
            X= Application.GetRealWidth(12),
            Height = Application.GetRealHeight(297),
            Width = Application.GetRealWidth(343-12*2),
            BackgroundColor =CSS.CSS_Color.viewTranslucence,
            Radius = (uint)Application.GetRealHeight(12),
        };
        /// <summary>
        /// 取消Btn
        /// </summary>
        public Button btnCancel = new Button
        {
            TextID = StringId.cancelSelected,
            TextSize = TextSize.text14,
            TextColor = CSS.CSS_Color.textCancelColor,
            Width = Application.GetRealWidth(52),
            Height = Application.GetRealHeight(32),
            Y = Application.GetRealHeight(6),
            X = Application.GetRealWidth(8),
        };
        /// <summary>
        /// 确定Btn
        /// </summary>
        public Button btnConfirm = new Button
        {
            TextID = StringId.confirmSelected,
            TextSize = TextSize.text14,
            TextColor = CSS.CSS_Color.textConfirmColor,
            Width = Application.GetRealWidth(52),
            Height = Application.GetRealHeight(32),
            X = Application.GetRealWidth(283),
            Y = Application.GetRealHeight(6),
        };
        /// <summary>
        ///  线
        /// </summary>
        public Button btnLine = new Button
        {
            BackgroundColor = CSS.CSS_Color.viewLine,
            Width = Application.GetRealWidth(343),
            Height = 1,
            Y = Application.GetRealWidth(44),
        };
        /// <summary>
        /// 时间View的方法
        /// </summary>
        /// <returns></returns>
        public void FLayoutView(FrameLayout fLayout)
        //public void FLayoutView(FrameLayout fLayout, string currState, Action<string> action)
        {
            fLayout.AddChidren(frameLayout);
            frameLayout.AddChidren(mUIPickerView);
            frameLayout.AddChidren(btnCancel);
            frameLayout.AddChidren(btnConfirm);
            frameLayout.AddChidren(btnLine);
            //TimePoint(fLayout, action,currState);
        }
        /// <summary>
        /// 选中时间的方法
        /// </summary>
        /// <param name="fLayout">父控件</param>
        /// <param name="currState">之前状态值</param>
        /// <param name="action">返回时间值</param>
        public void TimePoint(FrameLayout fLayout, string currState, Action<string> action)
        {
            //取消点击事件
            btnCancel.MouseUpEventHandler += (sender, e1) =>
            {
                //移除fLayout界面
                fLayout.RemoveFromParent();
            };
            //加载数据界面的设置方法(列表互不联动)
            mUIPickerView.setNPicker(GethStringList(), GetmStringList(), null);
            var systemHour = DateTime.Now.Hour; //获取小时
            var systeMinute = DateTime.Now.Minute;//获取分钟
            int systemHourIndex = 0;
            int systeMinuteIndex = 0;
            for (int i = 0; i < GethIntList().Count; i++)
            {
                var currhour = GethIntList()[i];
                if (systemHour == currhour)
                {
                    systemHourIndex = i;
                    break;
                }
            }
            for (int i = 0; i < GetmIntList().Count; i++)
            {
                var currminute = GetmIntList()[i];
                if (systeMinute == currminute)
                {
                    systeMinuteIndex = i;
                    break;
                }
            }
            //默认初始选中状态
            mUIPickerView.setCurrentItems(systemHourIndex, systeMinuteIndex, 0);
            string currH = "";
            string currM = "";
            if (systemHour < 10)
            {
                currH = "0" + systemHour.ToString();
            }
            else
            {
                currH = systemHour.ToString();
            }
            if (systeMinute < 10)
            {
                currM = "0" + systeMinute.ToString();
            }
            else
            {
                currM = systeMinute.ToString();
            }
            //定义一个局部变量记录选中时间
            string timepoint = currH + ":" + currM;
            if (currState != "")
            {
                int hIndex = GetValueIndex(currState, 0, 1, GethIntList());
                int mIndex = GetValueIndex(currState, 1, 0, GetmIntList());
                //更新初始状态
                mUIPickerView.setCurrentItems(hIndex, mIndex, 0);
                timepoint = currState;
            }
            //选中时间回调方法,时间变化一次回调一次
            mUIPickerView.OnSelectChangeEvent += (index1, index2, index3) =>
            {
                string hour = GethStringList()[index1].Split(' ')[0];
                string minuet = GetmStringList()[index2].Split(' ')[0];
                timepoint = hour + ":" + minuet;
            };
            //确定点击事件
            btnConfirm.MouseUpEventHandler += (sender, e3) =>
            {
                action(timepoint);
                //移除fLayout界面
                fLayout.RemoveFromParent();
            };
        }
        /// <summary>
        /// 获取1-24小时列表
        /// </summary>
        /// <returns></returns>
        public List<string> GethStringList()
        {
            //初始化列表
            var hList = new List<string>();
            for (int i = 0; i < 24; i++)
            {
                if (i < 10)
                {
                    var a = "0" + i.ToString();
                    //添加数据
                    hList.Add(a + " " + Language.StringByID(StringId.h));
                }
                else
                {
                    //添加数据
                    hList.Add(i.ToString() + " " + Language.StringByID(StringId.h));
                }
            }
            return hList;
        }
        /// <summary>
        /// 获取0-23小时列表
        /// </summary>
        /// <returns></returns>
        public List<string> GethStringList0()
        {
            //初始化列表
            var hList = new List<string>();
            for (int i = 0; i < 24; i++)
            {
                if (i < 10)
                {
                    var a = "0" + i.ToString();
                    //添加数据
                    hList.Add(a + " " + Language.StringByID(StringId.h));
                }
                else
                {
                    //添加数据
                    hList.Add(i.ToString() + " " + Language.StringByID(StringId.h));
                }
            }
            return hList;
        }
        /// <summary>
        /// 获取60分钟列表
        /// </summary>
        /// <returns></returns>
        public List<string> GetmStringList()
        {
            //初始化列表
            var mList = new List<string>();
            for (int i = 0; i < 60; i++)
            {
                if (i < 10)
                {
                    var a = "0" + i.ToString();
                    //添加数据
                    mList.Add(a + " " + Language.StringByID(StringId.m));
                }
                else
                {
                    //添加数据
                    mList.Add(i.ToString() + " " + Language.StringByID(StringId.m));
                }
            }
            return mList;
        }
        /// <summary>
        /// 获取023小时列表
        /// </summary>
        /// <returns></returns>
        public List<int> GethIntList()
        {
            //初始化列表
            var hList = new List<int>();
            for (int i = 0; i < 24; i++)
            {
                //添加数据
                hList.Add(i);
            }
            return hList;
        }
        /// <summary>
        /// 获取60分钟列表
        /// </summary>
        /// <returns></returns>
        public List<int> GetmIntList()
        {
            //初始化列表
            var mList = new List<int>();
            for (int i = 0; i < 60; i++)
            {
                //添加数据
                mList.Add(i);
            }
            return mList;
        }
        /// <summary>
        /// 获取时间值
        /// </summary>
        /// <param name="str">源数据</param>
        /// <param name="digit">返回源数据数组里面某个值索引</param>
        /// <param name="startIndex"></param>
        /// <param name="list"></param>
        /// <returns></returns>
        public int GetValueIndex(string str, int digit, int startIndex, List<int> list)
        {
            int index = 0;
            int value = 0;
            if (str.Contains(":"))
            {
                value = int.Parse(str.Split(':')[digit]);
            }
            for (int i = startIndex; i < list.Count; i++)
            {
                if (value == i)
                {
                    index = i;
                    break;
                }
            }
            return index;
        }
    }
}