using System; using Shared; using System.Text.RegularExpressions; using System.Collections.Generic; using HDL_ON.Entity; using HDL_ON.UI.CSS; namespace HDL_ON.UI { public class AddOutputPage : FrameLayout { FrameLayout bodyView; FrameLayout showdFunctionTypeRow; /// /// 楼层选择下拉图标 /// Button btnFloorDownIcon; /// /// 楼层显示 /// Button btnFloor; /// /// 筛选文本显示 /// Button btnScreenText; VerticalScrolViewLayout functionListView; Action refreshAction; /// /// 本地功能转换的输出列表(灯光、场景) /// List allocatedList = new List(); SecurityAlarm alarm; public AddOutputPage(SecurityAlarm inOutput ,Action action) { bodyView = this; refreshAction = action; alarm = inOutput; } /// /// 加载界面 /// public void LoadPage() { bodyView.BackgroundColor = CSS_Color.BackgroundColor; new TopViewDiv(bodyView, Language.StringByID(StringId.AddFunction)).LoadTopView(); #region 显示的功能类型切换区域 showdFunctionTypeRow = new FrameLayout() { Y = Application.GetRealHeight(64), Height = Application.GetRealHeight(62), BackgroundColor = CSS_Color.MainBackgroundColor, }; bodyView.AddChidren(showdFunctionTypeRow); btnFloorDownIcon = new Button() { Width = Application.GetMinRealAverage(16), Height = Application.GetMinRealAverage(16), X = Application.GetRealWidth(16), Y = Application.GetRealHeight(18), UnSelectedImagePath = "Public/DownIcon.png", }; showdFunctionTypeRow.AddChidren(btnFloorDownIcon); btnFloor = new Button() { X = btnFloorDownIcon.Right, Y = Application.GetRealHeight(18), Width = Application.GetRealWidth(200), Height = Application.GetMinRealAverage(16), TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.PromptFontSize_FirstLevel, TextAlignment = TextAlignment.CenterLeft, Text = DB_ResidenceData.Instance.CurFloor.roomName, }; showdFunctionTypeRow.AddChidren(btnFloor); LoadDialog_ChangeFloor(); #endregion functionListView = new VerticalScrolViewLayout() { Y = showdFunctionTypeRow.Bottom, Height = Application.GetRealHeight(530 -100), BackgroundColor = CSS_Color.BackgroundColor, }; bodyView.AddChidren(functionListView); SetData(); LoadFunctionListRow(); var bottomView = new FrameLayout() { Y = Application.GetRealHeight(591), Height = Application.GetRealHeight(100), BackgroundColor = CSS_Color.MainBackgroundColor, Radius = (uint)Application.GetRealWidth(22), }; this.AddChidren(bottomView); var btnConfrim = new Button() { X = Application.GetRealWidth(78), Y = Application.GetRealHeight(12), Width = Application.GetRealWidth(220), Height = Application.GetRealWidth(44), Radius = (uint)Application.GetRealWidth(22), BackgroundColor = CSS_Color.MainColor, TextID = StringId.Confirm, TextSize = CSS_FontSize.SubheadingFontSize, TextColor = CSS_Color.MainBackgroundColor, TextAlignment = TextAlignment.Center, }; bottomView.AddChidren(btnConfrim); btnConfrim.MouseUpEventHandler = (sender, e) => { this.RemoveFromParent(); refreshAction?.Invoke(alarm); }; } /// /// 配置数据 /// void SetData(string roomId="") { allocatedList.Clear(); foreach (var function in FunctionList.List.GetLightList()) { if (function == null) { continue; } if (!string.IsNullOrEmpty(roomId) && roomId == "ALLSELECT") { if (!function.roomIds.Contains(roomId)) { continue; } } function.roomIds.Remove(null); var tempStatus = new List(); tempStatus.Add(new SecurityOutputStatus() { key = FunctionAttributeKey.OnOff, value = "on" }); allocatedList.Add(new SecurityOutput { target_type = "0", sid = function.sid, status = tempStatus, name = function.name, RoomName = function.GetRoomListName(), }); } foreach (var scene in FunctionList.List.scenes) { if (scene == null) { continue; } if (!string.IsNullOrEmpty(roomId)) { if (!scene.roomIds.Contains(roomId)) { continue; } } scene.roomIds.Remove(null); var tempStatus = new List(); tempStatus.Add(new SecurityOutputStatus() { key = "value", value = "0" }); allocatedList.Add(new SecurityOutput { target_type = "1", sid = scene.sid, status = tempStatus, name = scene.name, RoomName = scene.GetRoomListName(), }); } } // /// 显示功能Row /// void LoadFunctionListRow() { functionListView.RemoveAll(); foreach (var function in allocatedList) { var output = alarm.output.Find((obj) => obj.sid == function.sid); if (output == null) { output = new SecurityOutput() { status = new List { new SecurityOutputStatus { key = FunctionAttributeKey.OnOff, value = "on" } } }; output.sid = function.sid; } //else //{ // output.addCondition = true; //} FrameLayout functionRow = new FrameLayout() { Height = Application.GetRealHeight(65), BackgroundColor = CSS_Color.MainBackgroundColor, }; functionListView.AddChidren(functionRow); var btnFunctionName = new Button() { X = Application.GetRealWidth(16), Width = Application.GetRealWidth(200), Height = Application.GetRealHeight(44), Text = function.name, TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.TextFontSize, }; functionRow.AddChidren(btnFunctionName); var btnFunctionFloorName = new Button() { X = Application.GetRealWidth(16), Y = Application.GetRealHeight(24), Width = Application.GetRealWidth(200), Height = Application.GetRealHeight(41), Text = function.RoomName, TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.PromptingColor1, TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel, }; functionRow.AddChidren(btnFunctionFloorName); Button btnState = new Button() { Width = Application.GetRealWidth(317), TextAlignment = TextAlignment.CenterRight, TextSize = CSS_FontSize.TextFontSize, TextColor = CSS_Color.PromptingColor1, }; functionRow.AddChidren(btnState); Button btnChooseIcon = new Button() { X = Application.GetRealWidth(333), Gravity = Gravity.CenterVertical, Width = Application.GetMinRealAverage(32), Height = Application.GetMinRealAverage(32), UnSelectedImagePath = "Public/ChooseIcon.png", SelectedImagePath = "Public/ChooseOnIcon.png", }; functionRow.AddChidren(btnChooseIcon); btnChooseIcon.MouseUpEventHandler = (sender, e) => { btnChooseIcon.IsSelected = !btnChooseIcon.IsSelected; var tempLocal = alarm.input.Find((obj) => obj.sid == output.sid ); if (btnChooseIcon.IsSelected) { //input.addCondition = true; if (tempLocal == null) alarm.output.Add(output); } else { //input.addCondition = false; if (tempLocal != null) { alarm.output.Remove(output); } } }; btnState.MouseUpEventHandler = (sender, e) => { ShowStateDialog(output, btnState, btnChooseIcon); }; var localOutput = alarm.output.Find((obj) => obj.sid == output.sid); if (localOutput!=null) { btnChooseIcon.IsSelected = true; btnState.Text = output.StateText(); } functionListView.AddChidren(new Button() { Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth(343), Height = Application.GetRealWidth(1), BackgroundColor = CSS_Color.DividingLineColor, }); } } private void ShowStateDialog(SecurityOutput output, Button btnState, Button btnChoose = null) { Dialog dialog = new Dialog(); FrameLayout contentView = new FrameLayout(); dialog.AddChidren(contentView); contentView.MouseUpEventHandler = (sender, e) => { dialog.Close(); if (output.status.Count == 0) { if (btnChoose != null) { btnChoose.IsSelected = false; } } }; VerticalScrolViewLayout optinView = new VerticalScrolViewLayout() { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealHeight(515), Width = Application.GetRealWidth(343), Height = Application.GetRealHeight(88), Radius = (uint)Application.GetRealHeight(13), BackgroundColor = CSS_Color.MainBackgroundColor, }; contentView.AddChidren(optinView); Button btnOpen = new Button() { Height = Application.GetRealHeight(44), TextAlignment = TextAlignment.Center, SelectedTextColor = CSS_Color.MainColor, TextColor = CSS_Color.PromptingColor1, TextSize = CSS_FontSize.SubheadingFontSize, TextID = StringId.On, }; optinView.AddChidren(btnOpen); optinView.AddChidren(new Button() { Height = 1, BackgroundColor = CSS_Color.DividingLineColor }); Button btnClose = new Button() { Height = Application.GetRealHeight(44), TextAlignment = TextAlignment.Center, SelectedTextColor = CSS_Color.MainColor, TextColor = CSS_Color.PromptingColor1, TextID = StringId.OFF, TextSize = CSS_FontSize.SubheadingFontSize, }; optinView.AddChidren(btnClose); if (output.status.Count > 0) { btnOpen.IsSelected = output.status[0].value.ToLower() == "on"; btnClose.IsSelected = !btnOpen.IsSelected; } Button btnCancel = new Button() { Gravity = Gravity.CenterHorizontal, Y = optinView.Bottom + Application.GetRealHeight(8), Width = Application.GetRealWidth(343), Height = Application.GetRealHeight(44), Radius = (uint)Application.GetRealHeight(13), BackgroundColor = CSS_Color.MainBackgroundColor, TextID = StringId.Cancel, TextColor = CSS_Color.WarningColor, IsBold = true, }; contentView.AddChidren(btnCancel); dialog.Show(); btnOpen.MouseUpEventHandler = (sender, e) => { btnState.Text = btnOpen.Text; output.status = new List() { new SecurityOutputStatus() { key = FunctionAttributeKey.OnOff, value = "on", } }; var localInput = alarm.output.Find((obj) => obj.sid == output.sid ); if (localInput == null) { btnChoose.IsSelected = true; } dialog.Close(); }; btnClose.MouseUpEventHandler = (sender, e) => { btnState.Text = btnClose.Text; output.status = new List() { new SecurityOutputStatus() { key = FunctionAttributeKey.OnOff, value = "off", } }; var localInput = alarm.output.Find((obj) => obj.sid == output.sid ); if (localInput == null) { btnChoose.IsSelected = true; } dialog.Close(); }; btnCancel.MouseUpEventHandler = (sender, e) => { dialog.Close(); if (output.status.Count == 0) { if (btnChoose != null) { btnChoose.IsSelected = false; } } }; } /// /// 住宅列表点击事件 /// void LoadDialog_ChangeFloor() { string nowSelectId = null; btnFloor.MouseUpEventHandler = (sender, e) => { var listAllFun = new List(); //listAllFun.AddRange(allocatedList); //显示下拉界面 var form = new FloorRoomSelectPopupView(); form.ShowDeviceFunctionView(btnFloor, listAllFun, (selectId, listFun) => { SetData(selectId); //重新刷新设备列表 this.LoadFunctionListRow(); }, nowSelectId); }; } } }