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; SecurityAlarm securityAlarm; Action refreshAction; List outputList = new List(); List allocatedList = new List(); public AddOutputPage(SecurityAlarm function, Action action) { bodyView = this; securityAlarm = function; refreshAction = action; } /// /// 加载界面 /// 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); #endregion functionListView = new VerticalScrolViewLayout() { Y = showdFunctionTypeRow.Bottom, Height = Application.GetRealHeight(530 - 100), BackgroundColor = CSS_Color.BackgroundColor, }; bodyView.AddChidren(functionListView); foreach (var function in FunctionList.List.Functions) { if (!MainPage.SceneSupportFunctionList.Contains(function.spk)) { continue; } if (function == null) { continue; } function.roomIds.Remove(null); allocatedList.Add(function); } LoadFunctionListRow(null); 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) => { securityAlarm.output = new List(); foreach (var output in outputList) { if (output.addCondition) { securityAlarm.output.Add(output); } } this.RemoveFromParent(); refreshAction?.Invoke(securityAlarm); }; } // /// 显示功能Row /// void LoadFunctionListRow(List functions) { functionListView.RemoveAll(); if (functions == null) { functions = allocatedList; } foreach (var function in functions) { var output = securityAlarm.output.Find((obj) => obj.sid == function.sid); if (output == null) { output = new SecurityOutput(); output.sid = function.sid; } else { output.addCondition = true; } outputList.Add(output); 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.GetRoomListName(), 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; if (btnChooseIcon.IsSelected) { output.addCondition = true; if (output.status.Count == 0) { ShowStateDialog(output, btnState, btnChooseIcon); } } else { output.addCondition = false; } }; btnState.MouseUpEventHandler = (sender, e) => { ShowStateDialog(output, btnState, btnChooseIcon); }; if (output.addCondition) { 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, TextColor = CSS_Color.MainColor, 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, TextColor = CSS_Color.PromptingColor1, TextID = StringId.OFF, TextSize = CSS_FontSize.SubheadingFontSize, }; optinView.AddChidren(btnClose); 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", } }; output.addCondition = true; if (btnChoose != 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", } }; output.addCondition = true; if (btnChoose != 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) => { nowSelectId = selectId; //重新刷新设备列表 this.LoadFunctionListRow(listFun); }, nowSelectId); }; } } }