From 6d73bf6e816570291865674bef8bce8972e4de3f Mon Sep 17 00:00:00 2001 From: xm <1271024303@qq.com> Date: 星期三, 01 十二月 2021 16:32:57 +0800 Subject: [PATCH] 2021-12-01-01 --- HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs | 499 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 498 insertions(+), 1 deletions(-) diff --git a/HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs b/HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs index de4cba5..0e8f778 100644 --- a/HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs +++ b/HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs @@ -1,18 +1,515 @@ 锘縰sing System; +using System.Collections.Generic; +using HDL_ON.DriverLayer; +using HDL_ON.Entity; +using HDL_ON.UI.CSS; +using Shared; + namespace HDL_ON.UI { public partial class ClassificationPage { /// <summary> + /// 鏇存柊鐣岄潰淇℃伅 + /// 鏇存柊鍔熻兘鎵撳紑鏁伴噺 + /// 鏇存柊鍏ㄥ叧鍔熻兘鐘舵�� + /// </summary> + /// <param name="function"></param> + public static void UpdataInfo(Function function) + { + Application.RunOnMainThread(() => { + if (bodyView == null) + return; + try + { + ShowFunction vv = ShowFunction.Light; + if (SPK.ElectricalSpkList().Contains(function.spk)) + { + vv = ShowFunction.Electric; + } + else if (SPK.FhSpkList().Contains(function.spk)) + { + vv = ShowFunction.FloorHeating; + } + else if (SPK.AcSpkList().Contains(function.spk)) + { + vv = ShowFunction.AC; + } + else if (SPK.CurtainSpkList().Contains(function.spk)) + { + vv = ShowFunction.Curtain; + } + else if (SPK.LightSpkList().Contains(function.spk)) + { + vv = ShowFunction.Light; + } + else if (SPK.AirFreshSpkList().Contains(function.spk)) + { + vv = ShowFunction.FreshAir; + } + UpdataFunctionOnCount(vv, function.spk); + UpdataCloseAllButton(function); + } + catch + { + } + }); + } + + /// <summary> + /// 鏇存柊鍔熻兘鎵撳紑鏁伴噺 + /// </summary> + /// <param name="functionCategory"></param> + static void UpdataFunctionOnCount(ShowFunction functionCategory, string functionType) + { + try + { + for (int i = 0; i < bodyView.functionsPageView.ChildrenCount; i++) + { + if (bodyView.functionsPageView.GetChildren(i).GetType() == typeof(FrameLayout)) + { + var view1 = bodyView.functionsPageView.GetChildren(i) as FrameLayout; + for (int j = 0; j < view1.ChildrenCount; j++) + { + if (view1.GetChildren(j).GetType() == typeof(FrameLayout)) + { + var view2 = view1.GetChildren(j) as FrameLayout; + for (var k = 0; k < view2.ChildrenCount; k++) + { + if (view2.GetChildren(k).GetType() == typeof(FrameLayout)) + { + var view3 = view2.GetChildren(k) as FrameLayout; + if (view3 == null) + { + continue; + } + if (view3.Tag == null || view3.Tag.ToString() != functionCategory + "_View") + { + //MainPage.Log($"i={i}:j={j}:k={k} view3 tag : {view3.Tag.ToString()}"); + continue; + } + for (var o = 0; o < view3.ChildrenCount; o++) + { + if (view3.GetChildren(o).GetType() == typeof(Button)) + { + var btn = view3.GetChildren(o) as Button; + if (btn.Tag != null) + { + string btnText = "0"; + switch (functionCategory) + { + case ShowFunction.FloorHeating: + btnText = FunctionList.List.GetFloorHeatingList().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count.ToString(); + break; + case ShowFunction.AC: + btnText = FunctionList.List.GetAcList().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count.ToString(); + break; + case ShowFunction.Curtain: + btnText = FunctionList.List.GetCurtainList().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count.ToString(); + break; + case ShowFunction.Light: + btnText = FunctionList.List.GetLightList().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count.ToString(); + break; + case ShowFunction.Electric: + btnText = FunctionList.List.GetElectricals().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count.ToString(); + break; + case ShowFunction.FreshAir: + btnText = FunctionList.List.GetAirFreshList().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count.ToString(); + break; + } + if (btn.Tag.ToString() == functionCategory + "_onCount") + { + btn.Text = btnText; + } + else if (btn.Tag.ToString() == functionCategory + "_AllControl") + { + btn.IsSelected = btnText != "0"; + } + } + } + } + } + } + } + } + } + } + } + catch (Exception ex) + { + MainPage.Log($"鏇存柊鍏ㄥ叧鎸夐挳寮傚父 : {ex.Message} "); + } + } + /// <summary> + /// 鏇存柊鍏ㄥ叧鍔熻兘鐘舵�� + /// </summary> + static void UpdataCloseAllButton(Function function) + { + for (int i = 0; i < bodyView.roomListView.ChildrenCount; i++) + { + if (bodyView.roomListView.GetChildren(i).GetType() == typeof(FrameLayout)) + { + var view1 = bodyView.roomListView.GetChildren(i) as FrameLayout; + if (!function.roomIds.Contains(view1.Tag.ToString())) + continue; + for (int j = 0; j < view1.ChildrenCount; j++) + { + if (view1.GetChildren(j).GetType() == typeof(Button)) + { + var btn = view1.GetChildren(j) as Button; + if (btn.Tag != null && btn.Tag.ToString() == "AllClose") + { + if (function.trait_on_off.curValue.ToString() == "on") + { + btn.Visible = true; + } + else + { + foreach (var rId in function.roomIds) + { + if (rId == null) + { + continue; + } + var r = SpatialInfo.CurrentSpatial.RoomList.Find(s => s.roomId == rId); + if (r == null) + { + continue; + } + var ssd = r.GetRoomFunctions(false).FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on"); + var sss = ssd.Count; + if (sss == 0) + { + btn.Visible = false; + } + } + } + } + } + } + } + } + } + + /// <summary> + /// 鍔犺浇鍏抽棴鎴块棿鎵�鏈夊姛鑳戒簨浠� + /// </summary> + void LoadEvent_CloseAllFunction(Button btn, Room room) + { + try + { + btn.MouseUpEventHandler = (sender, e) => + { + Action action = () => + { + new System.Threading.Thread(() => + { + foreach (var f in room.GetRoomFunctions(false)) + { + f.trait_on_off.curValue = "off"; + Dictionary<string, string> d = new Dictionary<string, string>(); + d.Add("on_off", f.trait_on_off.curValue.ToString()); + Control.Ins.SendWriteCommand(f, d); + } + + foreach (var m in Music.A31MusicModel.A31MusicModelList) + { + if (m.roomIds.Contains(room.roomId)) + { + Music.SendMethod.Pause(m); + } + } + }) + { IsBackground = true }.Start(); + + btn.Visible = false; + }; + new PublicAssmebly().TipOptionMsg(StringId.Tip, StringId.TipCloseAllFunctionInRoom, action); + }; + foreach (var f in room.GetRoomFunctions(false)) + { + if (f.trait_on_off.curValue.ToString() == "on") + { + btn.Visible = true; + break; + } + } + } + catch (Exception ex) + { + MainPage.Log($"load close all function : {ex.Message} "); + } + } + + /// <summary> /// 鍔犺浇浜嬩欢鍒楄〃 /// </summary> void LoadEventList() { - + LoadEvent_ShowedChange(); } #region 椤堕儴瀵艰埅鏍忎簨浠� + /// <summary> + /// 鏄剧ず鐣岄潰鍒囨崲 + /// </summary> + void LoadEvent_ShowedChange() + { + contentPageView.PageChange = (sender, e) => + { + if (contentPageView.PageIndex == 0) + { + btnRoomTilte.IsSelected = true; + btnRoomTilte.TextSize = CSS_FontSize.HeadlineFontSize; + btnRoomTilte.IsBold = true; + btnFuncTitle.IsSelected = false; + btnFuncTitle.TextSize = CSS_FontSize.TextFontSize; + btnFuncTitle.IsBold = false; + } + else + { + btnFuncTitle.IsSelected = true; + btnFuncTitle.TextSize = CSS_FontSize.HeadlineFontSize; + btnFuncTitle.IsBold = true; + btnRoomTilte.IsSelected = false; + btnRoomTilte.TextSize = CSS_FontSize.TextFontSize; + btnRoomTilte.IsBold = false; + } + }; + btnRoomTilte.MouseUpEventHandler = (sender, e) => + { + if (btnRoomTilte.IsSelected) + { + return; + } + btnRoomTilte.IsSelected = true; + btnRoomTilte.TextSize = CSS_FontSize.HeadlineFontSize; + btnFuncTitle.IsSelected = false; + btnFuncTitle.TextSize = CSS_FontSize.TextFontSize; + + contentPageView.PageIndex = 0; + }; + btnFuncTitle.MouseUpEventHandler = (sender, e) => { + if (btnFuncTitle.IsSelected) + { + return; + } + btnFuncTitle.IsSelected = true; + btnFuncTitle.TextSize = CSS_FontSize.HeadlineFontSize; + btnRoomTilte.IsSelected = false; + btnRoomTilte.TextSize = CSS_FontSize.TextFontSize; + contentPageView.PageIndex = 1; + }; + } #endregion + + /// <summary> + /// 鍏抽棴鎵撳紑鍏ㄩ儴閫変腑绫诲瀷鍔熻兘 + /// </summary> + void LoadEvent_SwitchFunction(Button btn, ShowFunction functionCategory,FrameLayout view) + { + btn.MouseUpEventHandler = (sender, e) => { + btn.IsSelected = !btn.IsSelected; + var onoff = btn.IsSelected ? "on" : "off"; + var waitPage = new Loading(); + view.AddChidren(waitPage); + waitPage.BackgroundColor = 0x00000000; + waitPage.Start(""); + + + new System.Threading.Thread(() => + { + try + { + //浼戠湢鏃堕棿(ms) + int sleepTime = 100; + if(DB_ResidenceData.Instance.GatewayType == 0) + { + sleepTime = 200; + } + if (Control.Ins.GatewayOnline_Local) + { + switch (functionCategory) + { + case ShowFunction.AC: + foreach (var f in FunctionList.List.GetAcList()) + { + f.trait_on_off.curValue = onoff; + Dictionary<string, string> d = new Dictionary<string, string>(); + d.Add(FunctionAttributeKey.OnOff, f.trait_on_off.curValue.ToString()); + Control.Ins.SendWriteCommand(f, d); + System.Threading.Thread.Sleep(sleepTime); + } + break; + case ShowFunction.FloorHeating: + foreach (var f in FunctionList.List.GetFloorHeatingList()) + { + f.trait_on_off.curValue = onoff; + Dictionary<string, string> d = new Dictionary<string, string>(); + d.Add(FunctionAttributeKey.OnOff, f.trait_on_off.curValue.ToString()); + Control.Ins.SendWriteCommand(f, d); + System.Threading.Thread.Sleep(sleepTime); + } + break; + case ShowFunction.Light: + foreach (var f in FunctionList.List.GetLightList()) + { + f.trait_on_off.curValue = onoff; + Dictionary<string, string> d = new Dictionary<string, string>(); + d.Add(FunctionAttributeKey.OnOff, f.trait_on_off.curValue.ToString()); + Control.Ins.SendWriteCommand(f, d); + System.Threading.Thread.Sleep(sleepTime); + } + break; + case ShowFunction.Electric: + foreach (var f in FunctionList.List.GetElectricals()) + { + f.trait_on_off.curValue = onoff; + Dictionary<string, string> d = new Dictionary<string, string>(); + d.Add(FunctionAttributeKey.OnOff, f.trait_on_off.curValue.ToString()); + Control.Ins.SendWriteCommand(f, d); + System.Threading.Thread.Sleep(sleepTime); + } + break; + case ShowFunction.FreshAir: + foreach (var f in FunctionList.List.GetAirFreshList()) + { + f.trait_on_off.curValue = onoff; + Dictionary<string, string> d = new Dictionary<string, string>(); + d.Add(FunctionAttributeKey.OnOff, f.trait_on_off.curValue.ToString()); + Control.Ins.SendWriteCommand(f, d); + System.Threading.Thread.Sleep(sleepTime); + } + break; + } + } + else + { + switch (functionCategory) + { + case ShowFunction.AC: + List<Function> acList = new List<Function>(); + foreach(var f in FunctionList.List.GetAcList()) + { + acList.Add(f); + } + Control.Ins.SwtichFunctions(onoff == "on", acList); + break; + case ShowFunction.FloorHeating: + List<Function> fhList = new List<Function>(); + foreach (var f in FunctionList.List.GetFloorHeatingList()) + { + fhList.Add(f); + } + Control.Ins.SwtichFunctions(onoff == "on", fhList); + break; + case ShowFunction.Light: + List<Function> lightList = new List<Function>(); + foreach (var f in FunctionList.List.GetLightList()) + { + lightList.Add(f); + } + Control.Ins.SwtichFunctions(onoff == "on", lightList); + break; + case ShowFunction.Electric: + List<Function> eleList = new List<Function>(); + foreach (var f in FunctionList.List.GetElectricals()) + { + eleList.Add(f); + } + Control.Ins.SwtichFunctions(onoff == "on", eleList); + break; + } + + + } + } + catch (Exception ex) + { + MainPage.Log($"{functionCategory}鍏ㄥ紑鍏ㄥ叧澶辫触:{ex.Message}"); + } + finally + { + Application.RunOnMainThread(() => + { + if (waitPage != null) + { + waitPage.RemoveFromParent(); + waitPage = null; + } + }); + } + }) + { IsBackground = true, Priority = System.Threading.ThreadPriority.AboveNormal }.Start(); + }; + } + + + /// <summary> + /// 绐楀笜鍏ㄥ紑鍏ㄥ叧 + /// </summary> + void LoadEvent_CurtainSwitch(Button btnClose, Button btnOpen,FrameLayout view) + { + btnOpen.MouseUpEventHandler = (sender, e) => + { + DB_ResidenceData.Instance.GlobalCurtainStatus = true; + btnOpen.IsSelected = true; + btnClose.IsSelected = false; + var waitPage = new Loading(); + waitPage.BackgroundColor = 0x00000000; + view.AddChidren(waitPage); + waitPage.Start(""); + new System.Threading.Thread(() => + { + try + { + foreach (var f in FunctionList.List.GetCurtainList()) + { + f.trait_on_off.curValue = "on"; + f.SetAttrState(FunctionAttributeKey.Percent, "100"); + Dictionary<string, string> d = new Dictionary<string, string>(); + d.Add("on_off", f.trait_on_off.curValue.ToString()); + Control.Ins.SendWriteCommand(f, d); + System.Threading.Thread.Sleep(100); + } + } + catch (Exception ex) + { + MainPage.Log($"绐楀笜鍏ㄥ紑鍏ㄥ叧澶辫触:{ex.Message}"); + } + finally + { + Application.RunOnMainThread(() => + { + if (waitPage != null) + { + waitPage.RemoveFromParent(); + waitPage = null; + } + }); + } + }) + { IsBackground = true, Priority = System.Threading.ThreadPriority.AboveNormal }.Start(); + }; + + btnClose.MouseUpEventHandler = (sender, e) => + { + DB_ResidenceData.Instance.GlobalCurtainStatus = false; + btnClose.IsSelected = true; + btnOpen.IsSelected = false; + foreach (var f in FunctionList.List.GetCurtainList()) + { + f.trait_on_off.curValue = "off"; + f.SetAttrState(FunctionAttributeKey.Percent, "0"); + Dictionary<string, string> d = new Dictionary<string, string>(); + d.Add("on_off", f.trait_on_off.curValue.ToString()); + Control.Ins.SendWriteCommand(f, d); + } + }; + + + } } } + -- Gitblit v1.8.0