| | |
| | | Application.RunOnMainThread(() => { |
| | | if (bodyView == null) |
| | | return; |
| | | UpdataFunctionOnCount(function.functionCategory,function.functionType); |
| | | UpdataCloseAllButton(function); |
| | | 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> |
| | | /// <param name="functionCategory"></param> |
| | | static void UpdataFunctionOnCount(FunctionCategory functionCategory, FunctionType functionType) |
| | | static void UpdataFunctionOnCount(ShowFunction functionCategory, string functionType) |
| | | { |
| | | try |
| | | { |
| | |
| | | { |
| | | if (view2.GetChildren(k).GetType() == typeof(FrameLayout)) |
| | | { |
| | | var view3 = view2.GetChildren(j) as FrameLayout; |
| | | if(view3== null) |
| | | 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++) |
| | |
| | | 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") |
| | | { |
| | | string btnText = "0"; |
| | | switch (functionCategory) |
| | | { |
| | | case FunctionCategory.Thermostat: |
| | | switch (functionType) |
| | | { |
| | | case FunctionType.FloorHeating: |
| | | btnText = FunctionList.List.floorHeatings.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count.ToString(); |
| | | break; |
| | | case FunctionType.AC: |
| | | btnText = FunctionList.List.aCs.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count.ToString(); |
| | | break; |
| | | } |
| | | break; |
| | | case FunctionCategory.Curtain: |
| | | btnText = FunctionList.List.curtains.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count.ToString(); |
| | | break; |
| | | case FunctionCategory.Light: |
| | | btnText = FunctionList.List.lights.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count.ToString(); |
| | | break; |
| | | case FunctionCategory.Electrical: |
| | | btnText = FunctionList.List.electricals.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count.ToString(); |
| | | break; |
| | | } |
| | | btn.Text = btnText; |
| | | } |
| | | else if (btn.Tag.ToString() == functionCategory + "_AllControl") |
| | | { |
| | | var openCount = 0; |
| | | switch (functionCategory) |
| | | { |
| | | case FunctionCategory.Thermostat: |
| | | switch (functionType) |
| | | { |
| | | case FunctionType.FloorHeating: |
| | | openCount = FunctionList.List.floorHeatings.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count; |
| | | break; |
| | | case FunctionType.AC: |
| | | openCount = FunctionList.List.aCs.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count; |
| | | break; |
| | | } |
| | | break; |
| | | case FunctionCategory.Curtain: |
| | | openCount = FunctionList.List.curtains.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count; |
| | | break; |
| | | case FunctionCategory.Light: |
| | | openCount = FunctionList.List.lights.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count; |
| | | break; |
| | | case FunctionCategory.Electrical: |
| | | openCount = FunctionList.List.electricals.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count; |
| | | break; |
| | | } |
| | | btn.IsSelected = openCount != 0; |
| | | btn.IsSelected = btnText != "0"; |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | MainPage.Log($"更新全关按钮异常 : {ex.Message}"); |
| | | MainPage.Log($"更新全关按钮异常 : {ex.Message} "); |
| | | } |
| | | } |
| | | /// <summary> |
| | |
| | | { |
| | | foreach (var rId in function.roomIds) |
| | | { |
| | | if(rId == null) |
| | | if (rId == null) |
| | | { |
| | | continue; |
| | | } |
| | | var r = SpatialInfo.CurrentSpatial.RoomList.Find(s => s.roomId == rId); |
| | | if(r == null) |
| | | if (r == null) |
| | | { |
| | | continue; |
| | | } |
| | | var ssd = r.GetRoomFunctions(false).FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on" && obj.functionCategory != FunctionCategory.Scene); |
| | | var ssd = r.GetRoomFunctions(false).FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on"); |
| | | var sss = ssd.Count; |
| | | if (sss == 0) |
| | | { |
| | |
| | | { |
| | | foreach (var f in room.GetRoomFunctions(false)) |
| | | { |
| | | if (f.functionCategory == FunctionCategory.Scene) |
| | | { |
| | | continue; |
| | | } |
| | | |
| | | f.trait_on_off.curValue = "off"; |
| | | Dictionary<string, string> d = new Dictionary<string, string>(); |
| | | d.Add("on_off", f.trait_on_off.curValue.ToString()); |
| | |
| | | |
| | | btn.Visible = false; |
| | | }; |
| | | new PublicAssmebly().TipMsg(StringId.Tip, StringId.TipCloseAllFunctionInRoom, action); |
| | | new PublicAssmebly().TipOptionMsg(StringId.Tip, StringId.TipCloseAllFunctionInRoom, action); |
| | | }; |
| | | foreach (var f in room.GetRoomFunctions(false)) |
| | | { |
| | | if (f.functionCategory == FunctionCategory.Scene) |
| | | { |
| | | continue; |
| | | } |
| | | if (f.trait_on_off.curValue.ToString() == "on") |
| | | { |
| | | btn.Visible = true; |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | MainPage.Log($"load close all function : {ex.Message}"); |
| | | MainPage.Log($"load close all function : {ex.Message} "); |
| | | } |
| | | } |
| | | |
| | |
| | | { |
| | | contentPageView.PageChange = (sender, e) => |
| | | { |
| | | if(contentPageView.PageIndex == 0) |
| | | if (contentPageView.PageIndex == 0) |
| | | { |
| | | btnRoomTilte.IsSelected = true; |
| | | btnRoomTilte.TextSize = CSS_FontSize.HeadlineFontSize; |
| | |
| | | /// <summary> |
| | | /// 关闭打开全部选中类型功能 |
| | | /// </summary> |
| | | void LoadEvent_SwitchFunction(Button btn, ShowFunction functionCategory) |
| | | void LoadEvent_SwitchFunction(Button btn, ShowFunction functionCategory,FrameLayout view) |
| | | { |
| | | btn.MouseUpEventHandler = (sender, e) => { |
| | | btn.IsSelected = !btn.IsSelected; |
| | | var onoff = btn.IsSelected ? "on" : "off"; |
| | | switch (functionCategory) |
| | | { |
| | | case ShowFunction.AC: |
| | | foreach(var f in FunctionList.List.aCs) |
| | | { |
| | | f.trait_on_off.curValue = onoff; |
| | | //Control.Send(CommandType_A.write, f); |
| | | Dictionary<string, string> d = new Dictionary<string, string>(); |
| | | d.Add("on_off", f.trait_on_off.curValue.ToString()); |
| | | Control.Ins.SendWriteCommand(f, d); |
| | | } |
| | | break; |
| | | case ShowFunction.Curtain: |
| | | //foreach (var f in FunctionList.List.curtains) |
| | | //{ |
| | | // f.trait_on_off.value = onoff; |
| | | // //Control.Send(CommandType_A.write, f); |
| | | // Dictionary<string, string> d = new Dictionary<string, string>(); |
| | | // d.Add("percent", "100"); |
| | | // Control.SendWriteCommand(f, d); |
| | | //} |
| | | break; |
| | | case ShowFunction.Light: |
| | | foreach (var f in FunctionList.List.lights) |
| | | { |
| | | f.trait_on_off.curValue = onoff; |
| | | //Control.Send(CommandType_A.write, f); |
| | | Dictionary<string, string> d = new Dictionary<string, string>(); |
| | | d.Add("on_off", f.trait_on_off.curValue.ToString()); |
| | | Control.Ins.SendWriteCommand(f, d); |
| | | } |
| | | break; |
| | | } |
| | | 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) |
| | | void LoadEvent_CurtainSwitch(Button btnClose, Button btnOpen,FrameLayout view) |
| | | { |
| | | btnOpen.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | foreach (var f in FunctionList.List.curtains) |
| | | 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(() => |
| | | { |
| | | f.trait_on_off.curValue = "on"; |
| | | f.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); |
| | | } |
| | | 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) => |
| | | { |
| | | foreach (var f in FunctionList.List.curtains) |
| | | 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.percent = 0; |
| | | 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); |
| | |
| | | } |
| | | } |
| | | } |
| | | |