using System; using System.Collections.Generic; using HDL_ON.Entity; using HDL_ON.UI.CSS; using Shared; namespace HDL_ON.UI { public partial class ClassificationPage { /// /// 更新界面信息 /// /// public static void UpdataInfo(Function function) { Application.RunOnMainThread(() => { if (bodyView == null) return; UpdataFunctionOnCount(function.functionCategory,function.functionType); UpdataCloseAllButton(function); }); } /// /// 更新功能打开数量 /// /// static void UpdataFunctionOnCount(FunctionCategory functionCategory, FunctionType 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(j) as FrameLayout; 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 && btn.Tag.ToString() == functionCategory + "_onCount") { string btnText = "0/0"; switch (functionCategory) { case FunctionCategory.Thermostat: switch (functionType) { case FunctionType.FloorHeating: btnText = DB_ResidenceData.residenceData.functionList.floorHeatings.FindAll((obj) => obj.on_off == "on").Count + "/" + DB_ResidenceData.residenceData.functionList.floorHeatings.Count; break; case FunctionType.AC: btnText = DB_ResidenceData.residenceData.functionList.aCs.FindAll((obj) => obj.on_off == "on").Count + "/" + DB_ResidenceData.residenceData.functionList.aCs.Count; break; } break; case FunctionCategory.Curtain: btnText = DB_ResidenceData.residenceData.functionList.curtains.FindAll((obj) => obj.on_off == "on").Count + "/" + DB_ResidenceData.residenceData.functionList.curtains.Count; break; case FunctionCategory.Light: btnText = DB_ResidenceData.residenceData.functionList.lights.FindAll((obj) => obj.on_off == "on").Count + "/" + DB_ResidenceData.residenceData.functionList.lights.Count; break; case FunctionCategory.Electrical: btnText = DB_ResidenceData.residenceData.functionList.electricals.FindAll((obj) => obj.on_off == "on").Count + "/" + DB_ResidenceData.residenceData.functionList.electricals.Count; break; } btn.Text = btnText; } } } } } } } } } } catch (Exception ex) { MainPage.Log($"更新全关按钮异常 : {ex.Message}"); } } /// /// 更新全关功能状态 /// 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.roomIdList.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.on_off == "on") { btn.Visible = true; } else { foreach (var rId in function.roomIdList) { if(rId == null) { continue; } var r = DB_ResidenceData.residenceData.rooms.Find(s => s.sid == rId); if(r == null) { continue; } var ssd = r.functions.FindAll((obj) => obj.on_off == "on" && obj.functionCategory != FunctionCategory.Scene); var sss = ssd.Count; if (sss == 0) { btn.Visible = false; } } } } } } } } } /// /// 加载关闭房间所有功能事件 /// void LoadEvent_CloseAllFunction(Button btn, Room room) { try { btn.MouseUpEventHandler = (sender, e) => { Action action = () => { foreach (var f in room.functions) { if (f.functionCategory == FunctionCategory.Scene) { continue; } f.on_off = "off"; //Control.Send(CommandType_A.write, f); System.Collections.Generic.Dictionary d = new System.Collections.Generic.Dictionary(); d.Add("on_off", f.on_off.ToString()); Control.SendWriteCommand(f, d); } btn.Visible = false; }; new PublicAssmebly().TipMsg(StringId.Tip, StringId.TipCloseAllFunctionInRoom, action); }; foreach (var f in room.functions) { if (f.functionCategory == FunctionCategory.Scene) { continue; } if (f.on_off == "on") { btn.Visible = true; break; } } } catch (Exception ex) { MainPage.Log($"load close all function : {ex.Message}"); } } /// /// 加载事件列表 /// void LoadEventList() { LoadEvent_ShowedChange(); } #region 顶部导航栏事件 /// /// 显示界面切换 /// 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 /// /// 关闭打开全部选中类型功能 /// void LoadEvent_SwitchFunction(Button btn, ShowFunction functionCategory) { btn.MouseUpEventHandler = (sender, e) => { btn.IsSelected = !btn.IsSelected; switch(functionCategory) { case ShowFunction.AC: foreach(var f in DB_ResidenceData.residenceData.functionList.aCs) { f.on_off = btn.IsSelected ? "on" : "off"; //Control.Send(CommandType_A.write, f); System.Collections.Generic.Dictionary d = new System.Collections.Generic.Dictionary(); d.Add("on_off", f.on_off.ToString()); Control.SendWriteCommand(f, d); } break; case ShowFunction.Curtain: break; case ShowFunction.Light: foreach (var f in DB_ResidenceData.residenceData.functionList.lights) { f.on_off = btn.IsSelected ? "on" : "off"; //Control.Send(CommandType_A.write, f); System.Collections.Generic.Dictionary d = new System.Collections.Generic.Dictionary(); d.Add("on_off", f.on_off.ToString()); Control.SendWriteCommand(f, d); } break; } }; } /// /// 窗帘全开全关 /// void LoadEvent_CurtainSwitch(Button btnClose, Button btnOpen) { btnOpen.MouseUpEventHandler = (sender, e) => { if (btnOpen.IsSelected) { return; } btnOpen.IsSelected = true; btnClose.IsSelected = false; foreach (var f in DB_ResidenceData.residenceData.functionList.curtains) { f.on_off = "on"; //Control.Send(CommandType_A.write, f); System.Collections.Generic.Dictionary d = new System.Collections.Generic.Dictionary(); d.Add("on_off", f.on_off.ToString()); Control.SendWriteCommand(f, d); } }; btnClose.MouseUpEventHandler = (sender, e) => { if (btnClose.IsSelected) { return; } btnClose.IsSelected = true; btnOpen.IsSelected = false; foreach (var f in DB_ResidenceData.residenceData.functionList.curtains) { f.on_off = "off"; //Control.Send(CommandType_A.write, f); System.Collections.Generic.Dictionary d = new System.Collections.Generic.Dictionary(); d.Add("on_off", f.on_off.ToString()); Control.SendWriteCommand(f, d); } }; } } }