using System; using System.Collections.Generic; using Shared; using Shared.Common; using Shared.Phone; using Shared.Phone.Device.Logic.LogicView; using Shared.R; using ZigBee.Device; namespace Shared.Phone.Device.Logic { public class TimePoint : FrameLayout { public TimePoint() { Tag = "Logic"; } Dictionary timeifon = new Dictionary(); TimeView timeview = new TimeView { Height = Application.GetRealHeight(550), BackgroundColor =0x40ffffff,// ZigbeeColor.Current.LogicTopViewBackgroundColor, Width = Application.GetRealWidth(1080), }; /// /// 标记(新加/进来编辑) /// public bool IsEditor; /// /// 记录进来之前的分钟 /// public string StartMin; /// /// 记录进来之前的小时 /// public string StartHour; /// /// 记录进来之前的时间(延时/提前) /// public string AdjustTime; /// /// 记录时刻的类型(日出/日落/正常) /// public string DateType; public void Show(Dictionary dictionary) { int TypeValue = int.Parse(dictionary["DateType"]); timeifon.Add("Type", "0"); timeifon.Add("IsValid", "1"); timeifon.Add("RemindTime", "0"); timeifon.Add("EnDelay", "0"); timeifon.Add("DelayTime", "0"); timeifon.Add("DoorLockOpenDelayTime","0"); timeifon.Add("DateType", TypeValue.ToString()); DateType = dictionary["DateType"]; if (TypeValue == 0) { timeifon.Add("StartHour", dictionary["StartHour"]); timeifon.Add("StartMin", dictionary["StartMin"]); StartHour = dictionary["StartHour"]; StartMin = dictionary["StartMin"]; } else { timeifon.Add("AdjustTime", dictionary["AdjustTime"]); AdjustTime = dictionary["AdjustTime"]; } #region 上面的布局代码 TopView view = new TopView(); this.AddChidren(view.TopRowView()); view.toptitleNameBtn.TextID = MyInternationalizationString.addtime; view.clickBtn.MouseDownEventHandler += (sender, e) => { RemoveFromParent(); }; #endregion var middle = new FrameLayout { Y = view.topRowLayout.Bottom, Height = Application.GetRealHeight(Method.H - 184 - 260), BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor, }; this.AddChidren(middle); SelectedTimeTypeView(middle, TypeValue); } /// /// 显示选中时间的处理方法 /// /// Middle. /// Type value. void SelectedTimeTypeView(FrameLayout middle, int TypeValue) { middle.RemoveAll(); #region -----类型 时刻 TypeView typeView = new TypeView(); middle.AddChidren(typeView.Show()); typeView.textBtn.TextID = MyInternationalizationString.type; typeView.titleBtn.Width = Application.GetRealWidth(630 + 70); typeView.titleBtn.TextID = MyInternationalizationString.immediateexecution; typeView.backBtn.Visible = false; TypeView skView = new TypeView(); skView.frameLayout.Y = typeView.frameLayout.Bottom; middle.AddChidren(skView.Show()); skView.textBtn.TextID = MyInternationalizationString.moment; skView.clickviewBtn.MouseUpEventHandler += (sender, e) => { TimeTypeView(middle, TypeValue); }; #endregion string textvalue = ""; switch (TypeValue) { case 0: { skView.titleBtn.Text = Language.StringByID(MyInternationalizationString.logiccustom); textvalue = timeifon["StartHour"] + ":" + timeifon["StartMin"]; } break; case 1: { skView.titleBtn.Text = Language.StringByID(MyInternationalizationString.sunrise); if (int.Parse(timeifon["AdjustTime"]) > 0) { textvalue = Language.StringByID(MyInternationalizationString.delayed) + timeifon["AdjustTime"] + Language.StringByID(MyInternationalizationString.logicminute); } else if (int.Parse(timeifon["AdjustTime"]) < 0) { textvalue = Language.StringByID(MyInternationalizationString.advance) + Math.Abs(int.Parse(timeifon["AdjustTime"])).ToString() + Language.StringByID(MyInternationalizationString.logicminute); } else { textvalue = Language.StringByID(MyInternationalizationString.nothing); } } break; case 2: { skView.titleBtn.Text = Language.StringByID(MyInternationalizationString.sunset); if (int.Parse(timeifon["AdjustTime"]) > 0) { textvalue = Language.StringByID(MyInternationalizationString.delayed) + timeifon["AdjustTime"] + Language.StringByID(MyInternationalizationString.logicminute); } else if (int.Parse(timeifon["AdjustTime"]) < 0) { textvalue = Language.StringByID(MyInternationalizationString.advance) + Math.Abs(int.Parse(timeifon["AdjustTime"])).ToString() + Language.StringByID(MyInternationalizationString.logicminute); } else { textvalue = Language.StringByID(MyInternationalizationString.nothing); } } break; case 3: { skView.titleBtn.Text = Language.StringByID(MyInternationalizationString.noon); if (int.Parse(timeifon["AdjustTime"]) > 0) { textvalue = Language.StringByID(MyInternationalizationString.delayed) + timeifon["AdjustTime"] + Language.StringByID(MyInternationalizationString.logicminute); } else if (int.Parse(timeifon["AdjustTime"]) < 0) { textvalue = Language.StringByID(MyInternationalizationString.advance) + Math.Abs(int.Parse(timeifon["AdjustTime"])).ToString() + Language.StringByID(MyInternationalizationString.logicminute); } else { textvalue = Language.StringByID(MyInternationalizationString.nothing); } } break; } if (TypeValue == 0) { #region -----自定义时间 skView.backBtn.UnSelectedImagePath = "ZigeeLogic/dropdown.png"; var rowTimeView = new FrameLayout { Y = skView.frameLayout.Bottom, Height = Application.GetRealHeight(600), }; middle.AddChidren(rowTimeView); rowTimeView.AddChidren(timeview); #endregion } else { #region -----提前/延时 TypeView delayView = new TypeView(); delayView.frameLayout.Y = skView.frameLayout.Bottom; delayView.frameLayout.Height = Application.GetRealHeight(160+20);//增高最后一行的高度20; middle.AddChidren(delayView.Show()); delayView.textBtn.TextID = MyInternationalizationString.Advancedelay; delayView.titleBtn.Text = textvalue; delayView.lineBtn.BackgroundColor = BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor; delayView.clickviewBtn.MouseUpEventHandler += (sender, e) => { var mList = new List(); mList.Add(Language.StringByID(MyInternationalizationString.advance)); mList.Add(Language.StringByID(MyInternationalizationString.nothing)); mList.Add(Language.StringByID(MyInternationalizationString.delayed)); var listValues = new List(); for (int i = 1; i < 61; i++) { if (i < 10) { var a = "0" + i.ToString(); listValues.Add(a + " " + Language.StringByID(MyInternationalizationString.minute)); } else { listValues.Add(i.ToString() + " " + Language.StringByID(MyInternationalizationString.minute)); } } var mList2 = new List>(); mList2.Add(listValues); mList2.Add(new List { "0" }); mList2.Add(listValues); int timevalue = 0; int selectIndex = 1; if (int.Parse(timeifon["AdjustTime"]) > 0) { selectIndex = 2; timevalue = Math.Abs(int.Parse(timeifon["AdjustTime"])); } else if (int.Parse(timeifon["AdjustTime"]) < 0) { selectIndex = 0; timevalue = Math.Abs(int.Parse(timeifon["AdjustTime"])); } else { selectIndex = 1; timevalue = 1; } PickerView.ShowSecondary(mList, mList2, (selectIndex1, selectIndex2) => { switch (selectIndex1) { case 0: case 2: { timevalue = int.Parse(listValues[selectIndex2].Split(' ')[0]); if (selectIndex1 == 0) { timevalue = timevalue * -1; } } break; case 1: timevalue = 0; break; } if (timeifon.ContainsKey("StartHour")) { timeifon.Remove("StartHour"); } if (timeifon.ContainsKey("StartMin")) { timeifon.Remove("StartMin"); } if (timeifon.ContainsKey("AdjustTime")) { timeifon.Remove("AdjustTime"); } timeifon.Add("AdjustTime", timevalue.ToString()); UserView.HomePage.Instance.ScrollEnabled = false; SelectedTimeTypeView(middle, TypeValue); }, selectIndex, timevalue - 1, Language.StringByID(MyInternationalizationString.Advancedelay)); }; #endregion } //保存 SaveView saveView = new SaveView(); saveView.frameLayout.Y = middle.Bottom; this.AddChidren(saveView.Show()); saveView.clickviewBtn.MouseUpEventHandler += (sender, e) => { if (TypeValue == 0) { if (timeifon.ContainsKey("AdjustTime")) { timeifon.Remove("AdjustTime"); } if (timeifon.ContainsKey("StartHour")) { timeifon.Remove("StartHour"); } if (timeifon.ContainsKey("StartMin")) { timeifon.Remove("StartMin"); } timeifon.Add("StartHour", timeview.Hour.ToString()); timeifon.Add("StartMin", timeview.Minute.ToString()); } if (IsEditor) { for (int i = 0; i < Common.Logic.CurrentLogic.Conditions.Count; i++) { if (Common.Logic.CurrentLogic.Conditions[i]["Type"] == "0") { if (Common.Logic.CurrentLogic.Conditions[i]["DateType"] == "0") { if (Common.Logic.CurrentLogic.Conditions[i]["StartHour"] == StartHour && Common.Logic.CurrentLogic.Conditions[i]["StartMin"] == StartMin) { Common.Logic.CurrentLogic.Conditions.RemoveAt(i); Common.Logic.CurrentLogic.Conditions.Insert(i, timeifon); } } else { if (Common.Logic.CurrentLogic.Conditions[i]["DateType"] == DateType && Common.Logic.CurrentLogic.Conditions[i]["AdjustTime"] == AdjustTime) { Common.Logic.CurrentLogic.Conditions.RemoveAt(i); Common.Logic.CurrentLogic.Conditions.Insert(i, timeifon); } } } } IsEditor = false; } else { Common.Logic.CurrentLogic.Conditions.Add(timeifon); } var logicCommunalPage = new LogicCommunalPage { }; UserView.HomePage.Instance.AddChidren(logicCommunalPage); UserView.HomePage.Instance.PageIndex += 1; logicCommunalPage.Show(() => { }); }; } /// /// 处理选中时间类型的方法 /// /// Middle. void TimeTypeView(FrameLayout middle, int TypeValue) { UserView.HomePage.Instance.ScrollEnabled = false; var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicTranslucentColor }; this.AddChidren(flMain); #region -------取消 完成 CompleteView completeView = new CompleteView(); flMain.AddChidren(completeView.Show(4)); completeView.Btntitle.TextID = MyInternationalizationString.type; EventHandler clickcancel = (sender, e) => { UserView.HomePage.Instance.ScrollEnabled = true; flMain.RemoveFromParent(); }; flMain.MouseUpEventHandler += clickcancel; completeView.Btncancel.MouseUpEventHandler += clickcancel; #endregion #region -------日出,日落,正午,自定义 // 日出 mFunView sunriseView = new mFunView(); sunriseView.frameLayout.Y = Application.GetRealHeight(140 + 20); completeView.Show(4).AddChidren(sunriseView.Show()); sunriseView.titleBtn.TextID = MyInternationalizationString.sunrise; //日落 mFunView sunsetView = new mFunView(); sunsetView.frameLayout.Y = sunriseView.frameLayout.Bottom; completeView.Show(4).AddChidren(sunsetView.Show()); sunsetView.titleBtn.TextID = MyInternationalizationString.sunset; //正午 mFunView noonView = new mFunView(); noonView.frameLayout.Y = sunsetView.frameLayout.Bottom; completeView.Show(4).AddChidren(noonView.Show()); noonView.titleBtn.TextID = MyInternationalizationString.noon; //自定义 mFunView customView = new mFunView(); customView.frameLayout.Y = noonView.frameLayout.Bottom; completeView.Show(4).AddChidren(customView.Show()); customView.titleBtn.TextID = MyInternationalizationString.logiccustom; customView.lineBtn.BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor; int value = -1; sunriseView.clickviewBtn.MouseUpEventHandler += (sender, e) => { sunriseView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor; sunsetView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor; noonView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor; customView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor; sunriseView.selectedIconBtn.Visible = true; sunsetView.selectedIconBtn.Visible = false; noonView.selectedIconBtn.Visible = false; customView.selectedIconBtn.Visible = false; value = 1; }; sunsetView.clickviewBtn.MouseUpEventHandler += (sender, e) => { sunriseView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor; sunsetView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor; noonView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor; customView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor; sunriseView.selectedIconBtn.Visible = false; sunsetView.selectedIconBtn.Visible = true; noonView.selectedIconBtn.Visible = false; customView.selectedIconBtn.Visible = false; value = 2; }; noonView.clickviewBtn.MouseUpEventHandler += (sender, e) => { sunriseView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor; sunsetView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor; noonView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor; customView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor; sunriseView.selectedIconBtn.Visible = false; sunsetView.selectedIconBtn.Visible = false; noonView.selectedIconBtn.Visible = true; customView.selectedIconBtn.Visible = false; value = 3; }; customView.clickviewBtn.MouseUpEventHandler +=(sender, e) => { sunriseView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor; sunsetView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor; noonView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor; customView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor; sunriseView.selectedIconBtn.Visible = false; sunsetView.selectedIconBtn.Visible = false; noonView.selectedIconBtn.Visible = false; customView.selectedIconBtn.Visible = true; UserView.HomePage.Instance.ScrollEnabled = true; flMain.RemoveFromParent(); if (timeifon.ContainsKey("StartHour")) { timeifon.Remove("StartHour"); } if (timeifon.ContainsKey("StartMin")) { timeifon.Remove("StartMin"); } if (timeifon.ContainsKey("AdjustTime")) { timeifon.Remove("AdjustTime"); } if (timeifon.ContainsKey("DateType")) { timeifon.Remove("DateType"); } timeifon.Add("DateType", "0"); timeifon.Add("StartHour", "12"); timeifon.Add("StartMin", "0"); SelectedTimeTypeView(middle, 0); }; #endregion completeView.Btncomplete.MouseUpEventHandler += (sender, e) => { if (value == -1) { return; } UserView.HomePage.Instance.ScrollEnabled = true; flMain.RemoveFromParent(); if (timeifon.ContainsKey("StartHour")) { timeifon.Remove("StartHour"); } if (timeifon.ContainsKey("StartMin")) { timeifon.Remove("StartMin"); } if (timeifon.ContainsKey("AdjustTime")) { timeifon.Remove("AdjustTime"); } if (timeifon.ContainsKey("DateType")) { timeifon.Remove("DateType"); } timeifon.Add("DateType", value.ToString()); timeifon.Add("AdjustTime", "0"); SelectedTimeTypeView(middle, value); }; } } }