using System; using System.Collections.Generic; using HDL_ON.Entity; using HDL_ON.UI.CSS; using Shared; namespace HDL_ON.UI.UI2.Intelligence.Automation { public class LogicSeriesSettingPage :FrameLayout { FrameLayout bodyView; public LogicSeriesSettingPage() { bodyView = this; } public void LoadPage(List list) { new TopViewDiv(bodyView, Language.StringByID(StringId.HorseRaceLamp)).LoadTopView(); bodyView.BackgroundColor = CSS.CSS_Color.BackgroundColor; VerticalScrolViewLayout contentView = new VerticalScrolViewLayout() { Y = Application.GetRealHeight(64), Height = Application.GetRealHeight(603 - 50), }; bodyView.AddChidren(contentView); #region 找出所有序列的oid List oidList = new List(); foreach (var rgb in list) { var oid = rgb.sid.Substring(0, 16); if (!oidList.Contains(oid)) { oidList.Add(oid); } } var seriesList = FunctionList.List.GetSeries(); foreach(var temp in seriesList) { var oid = temp.sid.Substring(0, 16); if (!oidList.Contains(oid)) { oidList.Add(oid); } } #endregion //Dictionary> deviceList = new Dictionary>(); //foreach(var oid in oidList) //{ // var sidList = FunctionList.List. // if (!deviceList.ContainsKey(oid)) // { // deviceList.Add(oid) // } //} foreach(var oid in oidList) { Function rgb = null; rgb = list.Find((obj) => obj.sid.Substring(0, 16) == oid); if(rgb == null) { rgb = FunctionList.List.GetLightList().Find((obj) => obj.spk == SPK.LightRGB && obj.sid.Substring(0, 16) == oid); if (rgb == null) { rgb = FunctionList.List.GetLightList().Find((obj) => obj.spk == SPK.LightCCT && obj.sid.Substring(0, 16) == oid); if (rgb == null) { rgb = FunctionList.List.GetLightList().Find((obj) => obj.spk == SPK.LightDimming && obj.sid.Substring(0, 16) == oid); } } } var titleView = new FrameLayout() { Height = Application.GetRealHeight(44), BackgroundColor = CSS.CSS_Color.MainBackgroundColor, }; contentView.AddChidren(titleView); titleView.AddChidren(new Button() { Height = 1, BackgroundColor = CSS.CSS_Color.DividingLineColor, Gravity = Gravity.BottomCenter }); var btnViewTitle = new Button() { X = Application.GetRealWidth(16), TextSize = CSS.CSS_FontSize.SubheadingFontSize, IsBold = true, Text = rgb.name, TextAlignment = TextAlignment.CenterLeft, TextColor = CSS.CSS_Color.MainColor, }; titleView.AddChidren(btnViewTitle); if (rgb.GetAttribute(FunctionAttributeKey.Colorful) != null) { var autoColorfulView = new FrameLayout() { Height = Application.GetRealHeight(44), BackgroundColor = CSS.CSS_Color.MainBackgroundColor, }; contentView.AddChidren(autoColorfulView); autoColorfulView.AddChidren(new Button() { Width = Application.GetRealWidth(343), Gravity = Gravity.BottomCenter, Height = 1, BackgroundColor = CSS.CSS_Color.DividingLineColor, Y = Application.GetRealHeight(44) - 1 }); Button btnAutoColorfulRight = new Button() { X = Application.GetRealWidth(339), Gravity = Gravity.CenterVertical, Width = Application.GetMinRealAverage(16), Height = Application.GetMinRealAverage(16), UnSelectedImagePath = "Public/Right.png", }; autoColorfulView.AddChidren(btnAutoColorfulRight); var btnAutoColorfulTitle = new Button() { X = Application.GetRealWidth(16), TextAlignment = TextAlignment.CenterLeft, TextSize = CSS.CSS_FontSize.TextFontSize, TextColor = CSS.CSS_Color.FirstLevelTitleColor, TextID = StringId.Auto, }; autoColorfulView.AddChidren(btnAutoColorfulTitle); btnAutoColorfulTitle.MouseUpEventHandler = (sender, e) => { LoadEditDialog_OnOff(rgb.sid, true); }; } var rgbSeriesList = seriesList.FindAll((obj) => obj.sid.Substring(0, 16) == rgb.sid.Substring(0, 16)); foreach(var rgbSeries in rgbSeriesList) { var colorfulView = new FrameLayout() { Height = Application.GetRealHeight(44), BackgroundColor = CSS.CSS_Color.MainBackgroundColor, }; contentView.AddChidren(colorfulView); colorfulView.AddChidren(new Button() { Width = Application.GetRealWidth(343), Gravity = Gravity.BottomCenter, Height = 1, BackgroundColor = CSS.CSS_Color.DividingLineColor, Y = Application.GetRealHeight(44) - 1 }); Button btnColorfulRight = new Button() { X = Application.GetRealWidth(339), Gravity = Gravity.CenterVertical, Width = Application.GetMinRealAverage(16), Height = Application.GetMinRealAverage(16), UnSelectedImagePath = "Public/Right.png", }; colorfulView.AddChidren(btnColorfulRight); var btnColorfulTitle = new Button() { X = Application.GetRealWidth(16), TextAlignment = TextAlignment.CenterLeft, TextSize = CSS.CSS_FontSize.TextFontSize, TextColor = CSS.CSS_Color.FirstLevelTitleColor, Text = rgbSeries.name, }; colorfulView.AddChidren(btnColorfulTitle); btnColorfulTitle.MouseUpEventHandler = (sender, e) => { LoadEditDialog_OnOff(rgbSeries.sid); }; } contentView.AddChidren(new Button { Height = Application.GetRealHeight(8), BackgroundColor = CSS_Color.BackgroundColor, }); } } /// /// 加载开关选择弹窗 /// /// /// void LoadEditDialog_OnOff(string sid, bool isRgb = false) { Dialog dialog = new Dialog(); var pView = new FrameLayout() { BackgroundColor = CSS_Color.DialogTransparentColor1, }; dialog.AddChidren(pView); var optionBaseView = new FrameLayout() { Y = Application.GetRealHeight(500), Height = Application.GetRealHeight(160), AnimateSpeed = 0.3f, Animate = Animate.DownToUp, }; pView.AddChidren(optionBaseView); var optionView = new VerticalScrolViewLayout() { Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth(343), Height = Application.GetRealHeight(100), BackgroundColor = CSS_Color.MainBackgroundColor, Radius = (uint)Application.GetRealWidth(12), ScrollEnabled = false, }; optionBaseView.AddChidren(optionView); var btnOn = new Button() { Height = Application.GetRealHeight(50), TextAlignment = TextAlignment.Center, TextColor = CSS_Color.MainColor, TextSize = CSS_FontSize.SubheadingFontSize, TextID = StringId.On, }; optionView.AddChidren(btnOn); optionView.AddChidren(new Button() { Height = Application.GetRealHeight(1), BackgroundColor = CSS_Color.DividingLineColor }); var btnOff = new Button() { Height = Application.GetRealHeight(50), TextAlignment = TextAlignment.Center, TextColor = CSS_Color.TextualColor, TextSize = CSS_FontSize.SubheadingFontSize, TextID = StringId.OFF, }; optionView.AddChidren(btnOff); var btnCancel = new Button() { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealHeight(8) + optionView.Bottom, Width = Application.GetRealWidth(343), Height = Application.GetRealHeight(50), BackgroundColor = CSS_Color.MainBackgroundColor, Radius = (uint)Application.GetRealWidth(12), TextID = StringId.Cancel, TextColor = CSS_Color.WarningColor, TextSize = CSS_FontSize.SubheadingFontSize, }; optionBaseView.AddChidren(btnCancel); dialog.Show(); pView.MouseUpEventHandler = (sender, e) => { dialog.Close(); }; btnCancel.MouseUpEventHandler = (sender, e) => { dialog.Close(); }; btnOn.MouseUpEventHandler = (sender, e) => { dialog.Close(); Output outputDevice = new Output(); outputDevice.target_type = "1"; outputDevice.sid = sid; outputDevice.delay = "0"; List> dicSateteList = new List>(); Dictionary diction = new Dictionary(); if (isRgb) { diction.Add("key", FunctionAttributeKey.Colorful); } else { diction.Add("key", "on_off"); } diction.Add("value", "on"); dicSateteList.Add(diction); outputDevice.status = dicSateteList; var oldTemp = Logic.currlogic.output.Find((obj) => obj.sid.Substring(0, 16) == sid.Substring(0, 16)); if (oldTemp != null) { Logic.currlogic.output.Remove(oldTemp); } Logic.currlogic.output.Add(outputDevice); this.RemoveFromParent(); LogicMethod.Current.RemoveAllView(); AddLogic addLogic = new AddLogic(); MainPage.BasePageView.AddChidren(addLogic); addLogic.Show(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; btnOff.MouseUpEventHandler = (sender, e) => { dialog.Close(); Output outputDevice = new Output(); outputDevice.target_type = "1"; outputDevice.sid = sid; outputDevice.delay = "0"; List> dicSateteList = new List>(); Dictionary diction = new Dictionary(); if (isRgb) { diction.Add("key", FunctionAttributeKey.Colorful); } else { diction.Add("key", "on_off"); } diction.Add("value", "off"); dicSateteList.Add(diction); outputDevice.status = dicSateteList; try { var oldTemp = Logic.currlogic.output.Find((obj) => obj.sid != null && obj.sid.Length > 16 && obj.sid.Substring(0, 16) == sid.Substring(0, 16)); if (oldTemp != null) { Logic.currlogic.output.Remove(oldTemp); } }catch(Exception ex) { MainPage.Log($"自动化保存跑马灯数据异常:{ex.Message}"); } Logic.currlogic.output.Add(outputDevice); this.RemoveFromParent(); LogicMethod.Current.RemoveAllView(); AddLogic addLogic = new AddLogic(); MainPage.BasePageView.AddChidren(addLogic); addLogic.Show(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; } } }