using System; using HDL_ON.Entity; using HDL_ON.UI.CSS; using Shared; namespace HDL_ON.UI { public class AirSwitchPage : FrameLayout { #region 控件集合 static AirSwitchPage bodyView; /// /// 控制界面加载区域 /// FrameLayout controlView; /// /// 功能备注 /// Button btnFunctionName; /// /// 功能所属楼层、房间 /// Button btnFromFoorAndRoom; /// /// 收藏按钮 /// Button btnCollection; /// /// 继电器状态图标 /// Button btnSwitchIcon; /// /// 开关按钮 /// Button btnSwitch; /// /// 运行状态-动态加载 /// Button btnRunStatus; #endregion #region 区域变量 Function function; Button btnCollection_Out; Button btnFunctionName_Out; Button btnFromFloor_Out; /// /// 刷新显示信息 /// Action actionRefresh; #endregion public AirSwitchPage(Function func) { bodyView = this; function = func; } /// /// 加载界面 /// /// 收藏按钮 /// 功能名称信息按钮 /// 功能楼层信息按钮 public void LoadPage(Button btnCollectionIcon, Button btnFunctionNameOut, Button btnFromFloorOut) { if (btnCollectionIcon == null) { btnCollection_Out = new Button(); btnFunctionName_Out = new Button(); btnFromFloor_Out = new Button(); } else { btnCollection_Out = btnCollectionIcon; btnFunctionName_Out = btnFunctionNameOut; btnFromFloor_Out = btnFromFloorOut; } bodyView.BackgroundColor = CSS_Color.BackgroundColor; controlView = new FrameLayout() { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealHeight(88), Width = Application.GetRealWidth(327), Height = Application.GetRealHeight(526), BackgroundImagePath = "Public/Fragmentbg.png", }; bodyView.AddChidren(controlView); btnFunctionName = new Button() { X = Application.GetRealWidth(16), Y = Application.GetRealHeight(14), Width = Application.GetRealWidth(270), Height = Application.GetRealHeight(37), TextColor = CSS_Color.FirstLevelTitleColor, TextAlignment = TextAlignment.CenterLeft, TextSize = CSS_FontSize.EmphasisFontSize_FirstLevel, Text = function.name, }; controlView.AddChidren(btnFunctionName); btnFromFoorAndRoom = new Button() { X = Application.GetRealWidth(16), Y = btnFunctionName.Bottom, Width = Application.GetRealWidth(270), Height = Application.GetRealHeight(21), TextColor = CSS_Color.PromptingColor1, TextAlignment = TextAlignment.CenterLeft, TextSize = CSS_FontSize.PromptFontSize_FirstLevel, Text = function.GetRoomListName() }; controlView.AddChidren(btnFromFoorAndRoom); btnCollection = new Button() { X = Application.GetRealWidth(273), Y = Application.GetRealHeight(14), Width = Application.GetMinRealAverage(40), Height = Application.GetMinRealAverage(40), SelectedImagePath = "Collection/CollectionIcon.png", UnSelectedImagePath = "Collection/CollectionGrayIcon.png", IsSelected = function.collect }; controlView.AddChidren(btnCollection); btnSwitchIcon = new Button() { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealHeight(102), Width = Application.GetRealWidth(148), Height = Application.GetRealWidth(198), UnSelectedImagePath = "FunctionIcon/Electrical/AirSwitch/AirSwitchBgIcon.png", SelectedImagePath = "FunctionIcon/Electrical/AirSwitch/AirSwitchBgOnIcon.png", IsSelected = function.trait_on_off.curValue.ToString() == "on" }; controlView.AddChidren(btnSwitchIcon); //运行状态 if(function.GetAttribute("run_status")!= null) { btnRunStatus = new Button() { Y = Application.GetRealHeight(300), Height = Application.GetRealHeight(58), TextAlignment = TextAlignment.Center, TextSize = CSS_FontSize.TextFontSize, }; //controlView.AddChidren(btnRunStatus); //状态无法测试,暂时隐藏--2021-10-14 13:58:48 董泽斌 UpdataRunStatus(); } if (function.GetAttribute("power")!= null) { Button btnEnergyIcon = new Button() { Y = Application.GetRealHeight(377), Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth(32), Height = Application.GetRealWidth(32), UnSelectedImagePath = "FunctionIcon/Electrical/AirSwitch/EnergyIcon.png" }; controlView.AddChidren(btnEnergyIcon); Button btnEnergyText = new Button() { Y = Application.GetRealHeight(400), Gravity = Gravity.CenterHorizontal, Height = Application.GetRealWidth(47), TextAlignment = TextAlignment.Center, TextID = StringId.EnergyMonitoring, TextColor = CSS_Color.TextualColor, TextSize = CSS_FontSize.PromptFontSize_FirstLevel, }; controlView.AddChidren(btnEnergyText); EventHandler eventHandler = (sender, e) => { var skipView = new EnergyMainPage(); MainPage.BasePageView.AddChidren(skipView); skipView.LoadPage(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; btnEnergyIcon.MouseUpEventHandler = eventHandler; btnEnergyText.MouseUpEventHandler = eventHandler; } btnSwitch = new Button() { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealHeight(466),// + btnSwitchIcon.Bottom, Width = Application.GetMinRealAverage(32), Height = Application.GetMinRealAverage(32), UnSelectedImagePath = "Public/PowerClose.png", SelectedImagePath = "Public/PowerOpen.png", IsSelected = function.trait_on_off.curValue.ToString() == "on" }; controlView.AddChidren(btnSwitch); new TopViewDiv(bodyView, Language.StringByID(StringId.Electric)).LoadTopView_FunctionTop(function, actionRefresh,false); new System.Threading.Thread(() => { DriverLayer.Control.Ins.SendReadCommand(function); }) { IsBackground = true }.Start(); LoadEventList(); } /// /// 更新状态 /// public static void UpdataState(Function updataTemp) { Application.RunOnMainThread(() => { try { if (bodyView == null) return; if (updataTemp.spk == bodyView.function.spk && updataTemp.sid == bodyView.function.sid) { bodyView.btnSwitch.IsSelected = bodyView.btnSwitchIcon.IsSelected = updataTemp.trait_on_off.curValue.ToString() == "on"; if (updataTemp.GetAttribute("run_status") != null) { bodyView.UpdataRunStatus(); } } } catch (Exception ex) { MainPage.Log($"AirSwitch error {ex.Message}"); } }); } /// /// 更新运行状态 /// void UpdataRunStatus() { if (btnRunStatus == null) return; var runStatus = function.GetAttrState("run_status"); if (Language.CurrentLanguage == "Chinese") { switch (runStatus) { //* RUN:正常工作中 case "RUN": btnRunStatus.Text = "工作中"; btnRunStatus.TextColor = CSS_Color.MainColor; break; //* HV:过压预警 case "HV": btnRunStatus.Text = "过压预警"; btnRunStatus.TextColor = 0xFFFC9C04; break; //* LV:欠压预警 case "LV": btnRunStatus.Text = "欠压预警"; btnRunStatus.TextColor = 0xFFFC9C04; break; //* HC:过流预警 case "HC": btnRunStatus.Text = "过流预警"; btnRunStatus.TextColor = 0xFFFC9C04; break; //* HT:过温预警 case "HT": btnRunStatus.Text = "过温预警"; btnRunStatus.TextColor = 0xFFFC9C04; break; //* LEAK:漏电预警 case "LEAK": btnRunStatus.Text = "漏电预警"; btnRunStatus.TextColor = 0xFFFC9C04; break; //* ERR_HV:过压报警 case "ERR_HV": btnRunStatus.Text = "过压报警"; btnRunStatus.TextColor = 0xFFFF8080; break; //* ERR_LV:欠压报警 case "ERR_LV": btnRunStatus.Text = "欠压报警"; btnRunStatus.TextColor = 0xFFFF8080; break; //* ERR_HC:过流报警 case "ERR_HC": btnRunStatus.Text = "过流报警"; btnRunStatus.TextColor = 0xFFFF8080; break; //* ERR_HT:过温报警 case "ERR_HT": btnRunStatus.Text = "过温报警"; btnRunStatus.TextColor = 0xFFFF8080; break; //* ERR_LEAK:漏电报警 case "ERR_LEAK": btnRunStatus.Text = "漏电报警"; btnRunStatus.TextColor = 0xFFFF8080; break; } } else { switch (runStatus) { //* RUN:正常工作中 case "RUN": btnRunStatus.Text = "At work"; btnRunStatus.TextColor = CSS_Color.MainColor; break; //* HV:过压预警 case "HV": btnRunStatus.Text = "Overvoltage warning"; btnRunStatus.TextColor = 0xFFFC9C04; break; //* LV:欠压预警 case "LV": btnRunStatus.Text = "Undervoltage warning"; btnRunStatus.TextColor = 0xFFFC9C04; break; //* HC:过流预警 case "HC": btnRunStatus.Text = "Overcurrent warning"; btnRunStatus.TextColor = 0xFFFC9C04; break; //* HT:过温预警 case "HT": btnRunStatus.Text = "Overtemperature warning"; btnRunStatus.TextColor = 0xFFFC9C04; break; //* LEAK:漏电预警 case "LEAK": btnRunStatus.Text = "Leakage warning"; btnRunStatus.TextColor = 0xFFFC9C04; break; //* ERR_HV:过压报警 case "ERR_HV": btnRunStatus.Text = "Overvoltage alarm"; btnRunStatus.TextColor = 0xFFFF8080; break; //* ERR_LV:欠压报警 case "ERR_LV": btnRunStatus.Text = "Undervoltage alarm"; btnRunStatus.TextColor = 0xFFFF8080; break; //* ERR_HC:过流报警 case "ERR_HC": btnRunStatus.Text = "Overcurrent alarm"; btnRunStatus.TextColor = 0xFFFF8080; break; //* ERR_HT:过温报警 case "ERR_HT": btnRunStatus.Text = "Overtemperature alarm"; btnRunStatus.TextColor = 0xFFFF8080; break; //* ERR_LEAK:漏电报警 case "ERR_LEAK": btnRunStatus.Text = "Leakage alarm"; btnRunStatus.TextColor = 0xFFFF8080; break; } } } /// /// 加载事件列表 /// void LoadEventList() { LoadSwitchEvent(); LoadCollectionEvent(); //回退刷新信息事件 actionRefresh = () => { btnFunctionName.Text = btnFunctionName_Out.Text = function.name; btnFromFloor_Out.Text = btnFromFoorAndRoom.Text = function.GetRoomListName(); //function.SaveFunctionData(true); }; } /// /// 收藏功能按钮事件 /// void LoadCollectionEvent() { btnCollection.MouseUpEventHandler += (sender, e) => { btnCollection.IsSelected = function.collect = btnCollection_Out.IsSelected = !btnCollection.IsSelected; function.CollectFunction(); }; } /// /// 加载开关事件 /// void LoadSwitchEvent() { btnSwitchIcon.MouseUpEventHandler = (sender, e) => { btnSwitch.IsSelected = btnSwitchIcon.IsSelected = !btnSwitchIcon.IsSelected; new System.Threading.Thread(() => { function.trait_on_off.curValue = btnSwitchIcon.IsSelected ? "on" : "off"; System.Collections.Generic.Dictionary d = new System.Collections.Generic.Dictionary(); d.Add("on_off", function.trait_on_off.curValue.ToString()); DriverLayer.Control.Ins.SendWriteCommand(function, d); }) { IsBackground = true }.Start(); }; btnSwitch.MouseUpEventHandler = (sender, e) => { btnSwitchIcon.IsSelected = btnSwitch.IsSelected = !btnSwitch.IsSelected; new System.Threading.Thread(() => { function.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off"; System.Collections.Generic.Dictionary d = new System.Collections.Generic.Dictionary(); d.Add("on_off", function.trait_on_off.curValue.ToString()); DriverLayer.Control.Ins.SendWriteCommand(function, d); }) { IsBackground = true }.Start(); }; } } }