using System; using System.Collections.Generic; using Shared; namespace HDL_ON.UI.UI2.Intelligence.Automation { public class TimeTpye : FrameLayout { public TimeTpye() { Tag = "Logic"; } public void Show() { #region 界面布局 LogicView.TopView topView = new LogicView.TopView(); this.AddChidren(topView.FLayoutView()); topView.clickBackBtn.MouseUpEventHandler += (e, sen) => { RemoveFromParent(); }; topView.topNameBtn.TextID = StringId.selectionTimeCondition; FrameLayout viewLayout = new FrameLayout { Y = Application.GetRealHeight(64), Width = Application.GetRealWidth(LogicView.TextSize.view375), Height = Application.GetRealHeight(LogicView.TextSize.view667 - 64), BackgroundColor = CSS.CSS_Color.viewMiddle, }; this.AddChidren(viewLayout); //时刻 LogicView.SelectTypeView timepointView = new LogicView.SelectTypeView(); timepointView.btnIcon.Visible = false; timepointView.btnText.X = Application.GetRealWidth(16); timepointView.btnLine.X = Application.GetRealWidth(16); timepointView.btnLine.Width = Application.GetRealWidth(375 - 16 - 16); timepointView.btnText.TextID = StringId.hour; viewLayout.AddChidren(timepointView.FLayoutView()); //时间范围 LogicView.SelectTypeView timeHorizonView = new LogicView.SelectTypeView(); timeHorizonView.frameLayout.Y = timepointView.frameLayout.Bottom; timeHorizonView.btnIcon.Visible = false; timeHorizonView.btnText.X = Application.GetRealWidth(16); timeHorizonView.btnLine.X = Application.GetRealWidth(16); timeHorizonView.btnLine.Width = Application.GetRealWidth(375 - 16 - 16); timeHorizonView.btnText.TextID = StringId.timeHorizon; viewLayout.AddChidren(timeHorizonView.FLayoutView()); //日出/日落/正午 LogicView.SelectTypeView timeSpecialView = new LogicView.SelectTypeView(); timeSpecialView.frameLayout.Y = timeHorizonView.frameLayout.Bottom; timeSpecialView.btnIcon.Visible = false; timeSpecialView.btnText.X = Application.GetRealWidth(16); timeSpecialView.btnLine.X = Application.GetRealWidth(16); timeSpecialView.btnLine.Width = Application.GetRealWidth(375 - 16 - 16); timeSpecialView.btnText.TextID = StringId.timespecia; viewLayout.AddChidren(timeSpecialView.FLayoutView()); #endregion #region 时间点 时间范围点击事件 //时间点点击事件 timepointView.btnClick.MouseUpEventHandler += (sen, e) => { //主界面控件 FrameLayout fLayout = new FrameLayout { BackgroundColor = CSS.CSS_Color.viewTrans60lucence, }; this.AddChidren(fLayout); TimePoint(fLayout, false, 100); }; //时间范围点击事件 timeHorizonView.btnClick.MouseUpEventHandler += (sen, e) => { //主界面控件 FrameLayout fLayout = new FrameLayout { BackgroundColor = CSS.CSS_Color.viewTrans60lucence, }; //添加主界面 this.AddChidren(fLayout); //var fLayout = GetFrame(this,"2"); TimeHorizon(fLayout, false, 0); }; //日出/日落/正午点击事件 timeSpecialView.btnClick.MouseUpEventHandler += (sen, e) => { if (string.IsNullOrEmpty( Entity.DB_ResidenceData.Instance.CurrentRegion.homeAddress))//.longitude == 0 && Entity.DB_ResidenceData.Instance.CurrentRegion.latitude == 0) { new PublicAssmebly().TipMsg(StringId.tip, StringId.GatewayLocationInformationIsNotConfigured); return; } SpeciaTime speciaTime = new SpeciaTime(); MainPage.BasePageView.AddChidren(speciaTime); speciaTime.Show(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; #endregion } /// /// 时间点方法 /// /// 在哪个界面显示 /// (true=编辑;false=新建) /// 编辑条件的索引 public void TimePoint(FrameLayout fLayout, bool edit, int index) { //编辑之前的时间状态值 string editTime= ""; if (edit) { Input inputs = Logic.currlogic.input[index]; if (inputs.condition_type == "1") { List> dicList = inputs.condition as List>; foreach (var dic in dicList) { string timeValue = dic["value"]; editTime = timeValue; break; } } } LogicView.TimeView timePointView = new LogicView.TimeView(); timePointView.FLayoutView(fLayout); timePointView.TimePoint(fLayout, editTime, (timeValue)=>{ Input inputTime = new Input(); inputTime.sid = LogicMethod.CurrLogicMethod.NewSid(); inputTime.condition_type = "1"; Dictionary dic = new Dictionary(); LogicMethod.CurrLogicMethod.dictionary(dic, "key", "timepoint"); LogicMethod.CurrLogicMethod.dictionary(dic, "comparator", "="); LogicMethod.CurrLogicMethod.dictionary(dic, "data_type", "string"); LogicMethod.CurrLogicMethod.dictionary(dic, "value", timeValue); inputTime.condition.Add(dic); AddCondition(inputTime, edit, index); }); } /// /// 时间范围方法 /// /// 在哪个界面显示 /// (true=编辑;false=新建) /// 编辑条件的索引 public void TimeHorizon(FrameLayout fLayout, bool edit, int index) { #region 界面布局 LogicView.TimeHorizonView timeHorizonView = new LogicView.TimeHorizonView(); timeHorizonView.FLayoutView(fLayout); //开始时间 LogicView.SelectTypeView startTimeView = new LogicView.SelectTypeView(); startTimeView.frameLayout.Y = Application.GetRealHeight(87); startTimeView.btnIcon.Visible = false; startTimeView.btnText.X = Application.GetRealWidth(16); startTimeView.btnText.TextID = StringId.startTime; startTimeView.btnLine.X = Application.GetRealWidth(16); startTimeView.btnLine.Width = Application.GetRealWidth(375 - 16 - 16); startTimeView.btnNextIcon.X = Application.GetRealWidth(307); timeHorizonView.frameLayout.AddChidren(startTimeView.FLayoutView()); //显示开始时间文本 Button btnStartTimeText = new Button { TextSize = LogicView.TextSize.text12, Width = Application.GetRealWidth(32 + 3+20), Height = Application.GetRealHeight(17), TextColor = CSS.CSS_Color.textCancelColor, Y = Application.GetRealHeight(17), X = Application.GetRealWidth(260-20), Tag = "0", }; startTimeView.frameLayout.AddChidren(btnStartTimeText); //结束时间 LogicView.SelectTypeView endTimeView = new LogicView.SelectTypeView(); endTimeView.frameLayout.SetCornerWithSameRadius(Application.GetRealHeight(12), HDLUtils.RectCornerBottomLeft | HDLUtils.RectCornerBottomRight); endTimeView.frameLayout.Y = startTimeView.frameLayout.Bottom; endTimeView.btnIcon.Visible = false; endTimeView.btnLine.Visible = false; endTimeView.btnText.X = Application.GetRealWidth(16); endTimeView.btnText.TextID = StringId.endTime; endTimeView.btnNextIcon.X = Application.GetRealWidth(307); timeHorizonView.frameLayout.AddChidren(endTimeView.FLayoutView()); //显示结束时间文本 Button btnEndTimeText = new Button { TextSize = LogicView.TextSize.text12, Width = Application.GetRealWidth(32 + 3+20), Height = Application.GetRealHeight(17), TextColor = CSS.CSS_Color.textCancelColor, Y = Application.GetRealHeight(17), X = Application.GetRealWidth(260-20), Tag = "0", }; endTimeView.frameLayout.AddChidren(btnEndTimeText); #endregion #region 点击事件 //开始时间点击事件 EventHandler StartTimeClick = (sender,e) => { SelectedTimeHorizon(fLayout, btnStartTimeText); }; startTimeView.btnClick.MouseUpEventHandler += StartTimeClick; btnStartTimeText.MouseUpEventHandler += StartTimeClick; //结束时间点击事件 EventHandler EndTimeClick = (sender, e) => { SelectedTimeHorizon(fLayout, btnEndTimeText); }; endTimeView.btnClick.MouseUpEventHandler += EndTimeClick; btnEndTimeText.MouseUpEventHandler += EndTimeClick; //确定点击事件 timeHorizonView.btnConfirm.MouseUpEventHandler += (sender, e) => { if (btnStartTimeText.Tag.ToString() == "0"&& btnEndTimeText.Tag.ToString() == "0") { //提示:时间未设置,请设置时间。 new LogicView.TipPopView().TipBox(StringId.tip, StringId.timeNoSet); return; } if (btnStartTimeText.Tag.ToString() == "0") { //提示:开始时间未设置,请设置开始时间。 new LogicView.TipPopView().TipBox(StringId.tip,StringId.setStartTime); return; } if (btnEndTimeText.Tag.ToString() == "0") { //提示:结束时间未设置,请设置结束时间。 new LogicView.TipPopView().TipBox(StringId.tip, StringId.setEndTime); return; } if (btnStartTimeText.Tag.ToString() == btnEndTimeText.Tag.ToString()) { //提示:开始时间和结束时间不能一样。 new LogicView.TipPopView().TipBox(StringId.tip, StringId.unlikeTime); return; } if (int.Parse(btnStartTimeText.Tag.ToString()) > int.Parse(btnEndTimeText.Tag.ToString())) { //提示:开始时间不能大于结束时间。 new LogicView.TipPopView().TipBox(StringId.tip, StringId.startTimeLessThanEndTime); return; } Input inputTime = new Input(); inputTime.sid = LogicMethod.CurrLogicMethod.NewSid(); inputTime.condition_type = "2"; Dictionary dic = new Dictionary(); LogicMethod.CurrLogicMethod.dictionary(dic, "key", "timesection"); LogicMethod.CurrLogicMethod.dictionary(dic, "comparator", "="); LogicMethod.CurrLogicMethod.dictionary(dic, "data_type", "string"); LogicMethod.CurrLogicMethod.dictionary(dic, "value", btnStartTimeText.Text + "-" + btnEndTimeText.Text); inputTime.condition.Add(dic); AddCondition(inputTime, edit, index); }; #endregion if (edit) { Input inputs = Logic.currlogic.input[index]; if (inputs.condition_type == "2") { List> dicList = inputs.condition as List>; foreach (var dic in dicList) { string value = dic["value"]; string startTime = value.Split('-')[0]; string endtTime = value.Split('-')[1]; btnStartTimeText.Text = startTime; btnStartTimeText.Tag = int.Parse(startTime.Split(':')[0]) * 60 + int.Parse(startTime.Split(':')[1]); btnEndTimeText.Text = endtTime; btnEndTimeText.Tag = int.Parse(endtTime.Split(':')[0]) * 60 + int.Parse(endtTime.Split(':')[1]); } } } } /// /// 设置时间段值 /// /// /// public void SelectedTimeHorizon(FrameLayout fLayout, Button btn) { //编辑之前的时间状态值 string editTime = ""; if (btn.Tag.ToString() != "0") { string h = "", m = ""; int sumTime = int.Parse(btn.Tag.ToString()); if ((sumTime / 60) < 10) { h = "0" + (sumTime / 60).ToString(); } else { h = (sumTime / 60).ToString(); } if ((sumTime % 60) < 10) { m = "0" + (sumTime % 60).ToString(); } else { m = (sumTime % 60).ToString(); } editTime = h + ":" + m; } LogicView.TimeView timePointView = new LogicView.TimeView(); timePointView.FLayoutView(fLayout); timePointView.TimePoint(timePointView.frameLayout, editTime, (timeValue) => { int hour = int.Parse(timeValue.Split(':')[0]); int minuet = int.Parse(timeValue.Split(':')[1]); int intValueTag = hour * 60 + minuet; //标记值,用于比较开始时间和结束时间大小; btn.Tag = intValueTag; //显示时间文本 btn.Text = timeValue; }); } /// /// 添加条件 /// /// private void AddCondition(Input input,bool edit,int index) { if (edit) { //移除旧数据 Logic.currlogic.input.RemoveAt(index); //新数据插入旧数据的位置 Logic.currlogic.input.Insert(index, input); } else { //添加一个新的时间条件 Logic.currlogic.input.Add(input); } LogicMethod.CurrLogicMethod.RemoveAllView(); AddLogic addLogic = new AddLogic(); MainPage.BasePageView.AddChidren(addLogic); addLogic.Show(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; } /// /// 灰色弹框父控件 /// /// 显示在哪个界面 /// public FrameLayout GetFrame(FrameLayout frame, string tagKey) { for (int i = 0; i < frame.ChildrenCount; i++) { var fra = frame.GetChildren(i); if (fra != null) { fra.RemoveFromParent(); } } FrameLayout fLayout = new FrameLayout() { BackgroundColor = CSS.CSS_Color.viewTrans60lucence, }; frame.AddChidren(fLayout); return fLayout; } } }