using System; using System.Collections.Generic; using Shared.Common; using Shared.Phone.UserView; using Shared.R; namespace Shared.Phone.Device.Logic { public class LogicMain { FrameLayout functionSceneAutoBodyView = null; /// /// 自动化 /// public async void ShowAutotion(FrameLayout frameLayoutfunctionSceneAutoBodyView) { functionSceneAutoBodyView = frameLayoutfunctionSceneAutoBodyView; functionSceneAutoBodyView.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor; var bjFrameLayout = new FrameLayout { Width = Application.GetRealWidth(1080 - 58), Height = Application.GetRealHeight(170), BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor, X = Application.GetRealWidth(58), Radius = (uint)Application.GetRealHeight(50), Y = Application.GetRealHeight(30), }; functionSceneAutoBodyView.AddChidren(bjFrameLayout); var sigBtn = new Button { Width = Application.GetMinRealAverage(84), Height = Application.GetMinRealAverage(84), UnSelectedImagePath = "ZigeeLogic/sign.png", X = Application.GetRealWidth(58), Gravity = Gravity.CenterVertical, }; bjFrameLayout.AddChidren(sigBtn); var recommendtextBtn = new Button { Width = Application.GetMinRealAverage(300), Height = Application.GetMinRealAverage(84), X = sigBtn.Right + Application.GetRealWidth(35), TextAlignment = TextAlignment.CenterLeft, //Text = "推荐模板", TextID = MyInternationalizationString.logictemplate, Gravity = Gravity.CenterVertical, TextColor = ZigbeeColor.Current.LogicBtnSelectedColor, }; bjFrameLayout.AddChidren(recommendtextBtn); var recommendswitchBtn = new Button { Width = Application.GetMinRealAverage(104), Height = Application.GetMinRealAverage(63), UnSelectedImagePath = "ZigeeLogic/logicclose.png", SelectedImagePath = "ZigeeLogic/logicopen.png", X = bjFrameLayout.Width - Application.GetRealWidth(104 + 58), Gravity = Gravity.CenterVertical, }; bjFrameLayout.AddChidren(recommendswitchBtn); var scenehorizontalScrol = new HorizontalScrolViewLayout { Width = Application.GetRealWidth(1080 - 58), X = Application.GetRealWidth(58), Y = bjFrameLayout.Bottom + Application.GetRealHeight(30), Height = Application.GetRealHeight(0), }; functionSceneAutoBodyView.AddChidren(scenehorizontalScrol); var logicScrolView = new VerticalScrolViewLayout { Height = functionSceneAutoBodyView.Height - bjFrameLayout.Height - bjFrameLayout.Y - scenehorizontalScrol.Height - Application.GetRealHeight(30), BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor, X = Application.GetRealWidth(58), Radius = (uint)Application.GetRealHeight(50), Y = scenehorizontalScrol.Bottom, }; functionSceneAutoBodyView.AddChidren(logicScrolView); recommendswitchBtn.MouseUpEventHandler += (sender, e) => { int Yheight = 0; recommendswitchBtn.IsSelected = !recommendswitchBtn.IsSelected; scenehorizontalScrol.RemoveAll(); if (recommendswitchBtn.IsSelected) { scenehorizontalScrol.Height = Application.GetRealHeight(246); Yheight = 20; for (int i = 1; i < 4; i++) { var frameLayout = new FrameLayout { Width = Application.GetMinRealAverage(369 + 46), Height = Application.GetMinRealAverage(246), }; scenehorizontalScrol.AddChidren(frameLayout); var logiciocnBtn = new Button { Width = Application.GetMinRealAverage(369), Height = Application.GetMinRealAverage(246), UnSelectedImagePath = "ZigeeLogic/" + i + ".png", Tag = i, }; frameLayout.AddChidren(logiciocnBtn); var logicnameBtn = new Button { Width = Application.GetMinRealAverage(250), Height = Application.GetMinRealAverage(80), X = Application.GetRealWidth(23), Y = Application.GetRealHeight(246 - 23 - 80), TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor, }; frameLayout.AddChidren(logicnameBtn); if (i == 1) { logicnameBtn.Text = Language.StringByID(MyInternationalizationString.onlight); } else if (i == 2) { logicnameBtn.Text = Language.StringByID(MyInternationalizationString.offlight); } else if (i == 3) { logicnameBtn.Text = Language.StringByID(MyInternationalizationString.automation1); } EventHandler iconclick = (sender1, e1) => { Common.Logic.CurrentLogic = new Common.Logic(); Common.Logic.CurrentLogic.IsEnable = 1;//默认为开 if (logiciocnBtn.Tag.ToString() == "3") { Common.Logic.CurrentLogic.LogicName = logicnameBtn.Text;// Language.StringByID(MyInternationalizationString.automation1); var addLogicPage = new Logic.AddLogicPage(); HomePage.Instance.AddChidren(addLogicPage); HomePage.Instance.PageIndex += 1; addLogicPage.Show(); } else { Common.Logic.CurrentLogic.LogicName = logicnameBtn.Text; Logic.TemplatePage templatePage = new Logic.TemplatePage(); Logic.TemplatePage.s = logiciocnBtn.Tag.ToString(); HomePage.Instance.AddChidren(templatePage); HomePage.Instance.PageIndex += 1; templatePage.Show(); } }; logiciocnBtn.MouseUpEventHandler += iconclick; logicnameBtn.MouseUpEventHandler += iconclick; } } else { scenehorizontalScrol.Height = Application.GetRealHeight(0); Yheight = 0; } logicScrolView.Y = scenehorizontalScrol.Bottom + Yheight; logicScrolView.Height = functionSceneAutoBodyView.Height - bjFrameLayout.Height - bjFrameLayout.Y - scenehorizontalScrol.Height - Application.GetRealHeight(30) - Yheight; Automationview(logicScrolView); }; CommonPage.Loading.Start(); if (Common.Logic.LogicList.Count == 0) { var Idlist = await Logic.Send.GetLogicId(0); if (Idlist.Count != 0) { var listlogic = await Logic.Send.ReadList(Idlist.Count, 0); //foreach可能集合已被修改,枚举操作可能不会执行,可能出现崩溃(建议for)。 for (int j = 0; j < listlogic.Count; j++) { var logic = listlogic[j]; if (logic.LogicType != 0) { continue; } Common.Logic.LogicList.Add(logic); } } } //自动化 Automationview(logicScrolView); CommonPage.Loading.Hide(); } /// /// 自动化列表界面 /// /// Refresview. public async void Automationview(VerticalScrolViewLayout refresview) { refresview.RemoveAll(); foreach (var logic in Common.Logic.LogicList) { var logicRowlayout = new RowLayout { Height = Application.GetRealHeight(190 + 30), Width = Application.GetRealWidth(1080), LineColor = ZigbeeColor.Current.LogicBackgroundColor, BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor, }; refresview.AddChidren(logicRowlayout); var logicnameBtn = new Button { Height = Application.GetRealHeight(58), Width = Application.GetRealWidth(350), Text = logic.LogicName, X = Application.GetRealWidth(12 + 46), Y = Application.GetRealHeight(30), TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.LogicTextBlackColor, }; logicRowlayout.AddChidren(logicnameBtn); var logicswitchBtn = new Button { Width = Application.GetMinRealAverage(104), Height = Application.GetMinRealAverage(63), UnSelectedImagePath = "ZigeeLogic/logicclose.png", SelectedImagePath = "ZigeeLogic/logicopen.png", X = logicRowlayout.Width - Application.GetRealWidth(104 + 58 + 58), Y = Application.GetRealHeight(58 + 30 + 9 + 30), }; logicRowlayout.AddChidren(logicswitchBtn); logicswitchBtn.MouseUpEventHandler += (sender1, e1) => { logicswitchBtn.IsSelected = !logicswitchBtn.IsSelected; if (logicswitchBtn.IsSelected) { //逻辑开 logic.IsEnable = 1; StatusColor(logic, logicRowlayout, 1); } else { //逻辑关 logic.IsEnable = 0; StatusColor(logic, logicRowlayout, 0); } Logic.Send.LogicControlSwitch(logic); //Logic.Send.AddModifyLogic(logic); }; if (logic.IsEnable == 1) { logicswitchBtn.IsSelected = true; StatusColor(logic, logicRowlayout, 1); } else if (logic.IsEnable == 0) { logicswitchBtn.IsSelected = false; StatusColor(logic, logicRowlayout, 0); } ///编辑 var edit = new Button { BackgroundColor = ZigbeeColor.Current.LogicEditBlackColor1, Text = Language.StringByID(MyInternationalizationString.edit), TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor, }; logicRowlayout.AddRightView(edit); edit.MouseUpEventHandler += (sender, e) => { Common.Logic.CurrentLogic = logic; var logicCommunalPage = new Logic.LogicCommunalPage(); HomePage.Instance.AddChidren(logicCommunalPage); HomePage.Instance.PageIndex += 1; logicCommunalPage.Show(() => { logicnameBtn.Text = logic.LogicName; Automationview(refresview); }); }; ///删除 var del = new Button { BackgroundColor = ZigbeeColor.Current.LogicDelBlackColor1, Text = Language.StringByID(MyInternationalizationString.del), TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor, }; logicRowlayout.AddRightView(del); del.MouseUpEventHandler += (sender, e) => { var alert = new Alert(Language.StringByID(MyInternationalizationString.tip), Language.StringByID(MyInternationalizationString.doyouwanttodelete), Language.StringByID(MyInternationalizationString.cancel), Language.StringByID(MyInternationalizationString.confrim)); alert.ResultEventHandler += (sender1, e1) => { if (e1) { Common.Logic.LogicList.Remove(logic); Automationview(refresview); Logic.Send.DelLogic(logic.LogicId); } }; alert.Show(); }; var line = new Button { Y = Application.GetRealHeight(215), Height = Application.GetRealHeight(5), Width = Application.GetRealWidth(1080 - 58), BackgroundColor = ZigbeeColor.Current.LogicRowLayoutLineColor, X = Application.GetRealWidth(58), }; logicRowlayout.AddChidren(line); } } /// /// 显示图标的颜色 /// /// /// /// public void StatusColor(Common.Logic logic, RowLayout logicRowlayout, int intvalue) { var logictimeBtn = new Button { Height = Application.GetRealHeight(58), Width = logicRowlayout.Width - Application.GetRealWidth(58 + 12 + 350 + 58), Y = Application.GetRealHeight(30), X = Application.GetRealWidth(365), TextAlignment = TextAlignment.CenterRight, TextColor = ZigbeeColor.Current.LogicListWeekTextColor, }; logicRowlayout.AddChidren(logictimeBtn); ///显示执行周期 switch (logic.TimeAttribute.Repeat) { ///0:只执行一次,执行后IsEnable值置;1,今年内执行;2:每天执行;3:每月执行;4:每年执行;5:周重复。 case 0: { logictimeBtn.Text = Language.StringByID(MyInternationalizationString.executeonce); }; break; case 1: { }; break; case 2: { logictimeBtn.Text = Language.StringByID(MyInternationalizationString.everyday); }; break; case 3: { string len = "", value = ""; var stringvalue = Convert.ToString(logic.TimeAttribute.MonthDate, 2); var str = stringvalue.Insert(0, new string('0', 32 - stringvalue.Length)); for (int j = 31; j >= 0; j--) { len += str.Substring(j, 1); } for (int j = 0; j < len.Length; j++) { var strvalue = len.Substring(j, 1); if (strvalue == "1") { value += (j + 1).ToString() + ","; } } logictimeBtn.Text = Language.StringByID(MyInternationalizationString.monthly) + value.TrimEnd(',') + Language.StringByID(MyInternationalizationString.day); }; break; case 4: { Dictionary dictionary = new Dictionary(); ///找出执行的月份和天数 if (logic.TimeAttribute.SelectMonDate.Count != 0) { for (int i = 0; i < logic.TimeAttribute.SelectMonDate.Count; i++) { var dayvalue = logic.TimeAttribute.SelectMonDate[i]; if (dayvalue != 0) { dictionary.Add(i + 1, dayvalue); } } } if (dictionary.Count != 0 && dictionary.Count == 1) { string len = "", leng = ""; int minvalue = 0, Maximum = 0; foreach (var value in dictionary) { ///取出月份 var month = value.Key; ///取出日数 var day = value.Value; var maxvalue = Convert.ToString(day, 2); var str = maxvalue.Insert(0, new string('0', 32 - maxvalue.Length)); for (int j = 31; j >= 0; j--) { len += str.Substring(j, 1); } for (int j = 0; j < len.Length; j++) { var strvalue = len.Substring(j, 1); if (strvalue == "1") { minvalue = j + 1; break; } } for (int j = 0; j < len.Length; j++) { var strvalue = len.Substring(j, 1); if (strvalue == "1") { Maximum = j + 1; } } if (month.ToString().Length < 2) { leng = "0" + month.ToString(); } else { leng = month.ToString(); } if (minvalue == Maximum) { logictimeBtn.Text = Language.StringByID(MyInternationalizationString.everyyear) + leng + "/" + (minvalue.ToString().Length < 2 ? "0" + minvalue.ToString() : minvalue.ToString()); } else { logictimeBtn.Text = Language.StringByID(MyInternationalizationString.everyyear) + leng + "/" + (minvalue.ToString().Length < 2 ? "0" + minvalue.ToString() : minvalue.ToString()) + "-" + leng + "/" + (Maximum.ToString().Length < 2 ? "0" + Maximum.ToString() : Maximum.ToString()); } } } else { int b = 0; string stringtext = ""; foreach (var value in dictionary) { string len = "", leng = ""; int minvalue = 0, Maximum = 0; ///取出月份 var month = value.Key; ///取出日数 var day = value.Value; var maxvalue = Convert.ToString(day, 2); var str = maxvalue.Insert(0, new string('0', 32 - maxvalue.Length)); for (int j = 31; j >= 0; j--) { len += str.Substring(j, 1); } if (month.ToString().Length < 2) { leng = "0" + month.ToString(); } else { leng = month.ToString(); } if (b == 0) { for (int j = 0; j < len.Length; j++) { var strvalue = len.Substring(j, 1); if (strvalue == "1") { minvalue = j + 1; break; } } stringtext += leng + "/" + (minvalue.ToString().Length < 2 ? "0" + minvalue.ToString() : minvalue.ToString()) + "-"; } if (b == dictionary.Count - 1) { for (int j = 0; j < len.Length; j++) { var strvalue = len.Substring(j, 1); if (strvalue == "1") { Maximum = j + 1; } } stringtext += leng + "/" + (Maximum.ToString().Length < 2 ? "0" + Maximum.ToString() : Maximum.ToString()); } b++; } logictimeBtn.Text = Language.StringByID(MyInternationalizationString.everyyear) + stringtext; } }; break; case 5: { string len = "", text = ""; List listvalueInt = new List(); listvalueInt.Clear(); var maxvalue = Convert.ToString(logic.TimeAttribute.WeekDay, 2); var str = maxvalue.Insert(0, new string('0', 8 - maxvalue.Length)); for (int j = 7; j >= 0; j--) { len += str.Substring(j, 1); } for (int j = 0; j < len.Length; j++) { var strvalue = len.Substring(j, 1); if (strvalue == "1") { listvalueInt.Add(j + 1); if ((j + 1) == 1) { text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.mon1) + ","; //text += Language.StringByID(MyInternationalizationString.mon) + ","; } else if ((j + 1) == 2) { text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.tue1) + ","; //text += Language.StringByID(MyInternationalizationString.tue) + ","; } else if ((j + 1) == 3) { text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.wed1) + ","; //text += Language.StringByID(MyInternationalizationString.wed) + ","; } else if ((j + 1) == 4) { text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.thu1) + ","; //text += Language.StringByID(MyInternationalizationString.thu) + ","; } else if ((j + 1) == 5) { text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.frl1) + ","; //text += Language.StringByID(MyInternationalizationString.frl) + ","; } else if ((j + 1) == 6) { text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.sat1) + ","; //text += Language.StringByID(MyInternationalizationString.sat) + ","; } else if ((j + 1) == 7) { text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.sun1) + ","; //text += Language.StringByID(MyInternationalizationString.sun) + ","; } } } //暂时隐藏掉,需要显示周末和工作日再放开; //if (listvalueInt.Count == 5 && !listvalueInt.Contains(6) && !listvalueInt.Contains(7)) //{ // btndisplaycycle.Text = Language.StringByID(MyInternationalizationString.workingday); //} //else if (listvalueInt.Count == 2 && listvalueInt.Contains(6) && listvalueInt.Contains(7)) //{ // btndisplaycycle.Text = Language.StringByID(MyInternationalizationString.weekend); //} //else if (listvalueInt.Count == 7) //{ // btndisplaycycle.Text = Language.StringByID(MyInternationalizationString.everyday); //} //else //{ // btndisplaycycle.Text = Language.StringByID(MyInternationalizationString.week1) + text.Replace(Language.StringByID(MyInternationalizationString.week1), "").TrimEnd(','); //} logictimeBtn.Text = Language.StringByID(MyInternationalizationString.week1) + text.Replace(Language.StringByID(MyInternationalizationString.week1), "").TrimEnd(','); //btndisplaycycle.Text = text.TrimEnd(','); }; break; } List indexlist = new List(); List iconIndexlist = new List(); for (int i = 0; i < logic.Actions.Count; i++) { var linkType = logic.Actions[i]["LinkType"].ToString(); var d = indexlist.Find((value) => { return value == linkType; }); if (d == null) { indexlist.Add(linkType); } } if (indexlist.Contains("0")) { iconIndexlist.Add("0"); } if (indexlist.Contains("2")) { iconIndexlist.Add("2"); } if (indexlist.Contains("6")) { iconIndexlist.Add("6"); } if (indexlist.Contains("7")) { iconIndexlist.Add("7"); } for (int i = 0; i < iconIndexlist.Count; i++) { var iconindex = iconIndexlist[i]; var typebjBtn = new FrameLayout { Width = Application.GetRealWidth(82), Height = Application.GetRealHeight(82), X = Application.GetRealWidth(58) + Application.GetRealWidth(12 + (12 + 82 + 45 + 12) * i), Y = Application.GetRealHeight(58 + 30 + 30), Radius = (uint)Application.GetRealHeight(41), BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor, }; logicRowlayout.AddChidren(typebjBtn); var typeIconBtn = new Button { Width = Application.GetRealWidth(58), Height = Application.GetRealHeight(58), Gravity = Gravity.Center, }; typebjBtn.AddChidren(typeIconBtn); var connectIconBtn = new Button { Y = typebjBtn.Y + Application.GetRealHeight(35), X = Application.GetRealWidth(58) + Application.GetRealWidth((12 + 82 + 12) + (12 + 45 + 82 + 12) * i), Width = Application.GetRealWidth(48), Height = Application.GetRealHeight(15), UnSelectedImagePath = "ZigeeLogic/connect.png", }; logicRowlayout.AddChidren(connectIconBtn); if (iconIndexlist.Count - 1 == i) { connectIconBtn.Visible = false; } switch (iconindex) { case "0": { if (intvalue == 1) { typeIconBtn.UnSelectedImagePath = "ZigeeLogic/function1.png"; typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicFunction1Color; } else { typeIconBtn.UnSelectedImagePath = "ZigeeLogic/nofunction.png"; typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor; } } break; case "2": { if (intvalue == 1) { typeIconBtn.UnSelectedImagePath = "ZigeeLogic/scene1.png"; typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicScene1Color; } else { typeIconBtn.UnSelectedImagePath = "ZigeeLogic/noscene.png"; typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor; } } break; case "6": { if (intvalue == 1) { typeIconBtn.UnSelectedImagePath = "ZigeeLogic/security1.png"; typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicSecurity1Color; } else { typeIconBtn.UnSelectedImagePath = "ZigeeLogic/nosecurity.png"; typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor; } } break; case "7": { if (intvalue == 1) { typeIconBtn.UnSelectedImagePath = "ZigeeLogic/delay1.png"; typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicDelay1Color; } else { typeIconBtn.UnSelectedImagePath = "ZigeeLogic/nodelay.png"; typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor; } } break; } } } public void AddLogic() { //new一个新逻辑对象; Common.Logic.CurrentLogic = new Common.Logic(); Common.Logic.CurrentLogic.IsEnable = 1;//默认为开 Common.Logic.CurrentLogic.LogicName = Language.StringByID(MyInternationalizationString.automation1); var addLogicPage = new AddLogicPage(); UserView.HomePage.Instance.AddChidren(addLogicPage); UserView.HomePage.Instance.PageIndex += 1; addLogicPage.Show(); } } }