From fa6bcb2e9907772480f99205f36ec2a1ce735a22 Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期四, 09 一月 2020 14:11:07 +0800 Subject: [PATCH] 合并代码 --- ZigbeeApp/Shared/Phone/Device/Light/AirSwitchControl.cs | 302 +++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 260 insertions(+), 42 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/Device/Light/AirSwitchControl.cs b/ZigbeeApp/Shared/Phone/Device/Light/AirSwitchControl.cs index 4e94f7b..8927f17 100755 --- a/ZigbeeApp/Shared/Phone/Device/Light/AirSwitchControl.cs +++ b/ZigbeeApp/Shared/Phone/Device/Light/AirSwitchControl.cs @@ -8,7 +8,7 @@ namespace Shared.Phone.Device.Light { /// <summary> - /// 鐏厜鎺у埗鐣岄潰 + /// 寮�鍏� /// </summary> public class AirSwitchControl : FrameLayout, ZigBee.Common.IStatus { @@ -20,7 +20,7 @@ /// <summary> /// The action. /// </summary> - public Action action; + public Action<DeviceUI, Common.Room> action; /// <summary> /// The light image. @@ -62,12 +62,19 @@ private FrameLayout bodyFrameLayout; private Button StatuBtn; + /// <summary> + /// OnBtn + /// </summary> + private Button OnBtn; + /// <summary> + /// OffBtn + /// </summary> + private Button OffBtn; /// <summary> /// IsDrawerLockMode /// </summary> public bool IsDrawerLockMode; - #endregion #region 鈼� 鎺ュ彛__________________________ @@ -129,7 +136,7 @@ { if (common.DeviceStatusReport.CluterID == 6) { - var light = deviceUI.CommonDevice as ZigBee.Device.AirSwitch; + var light = deviceUI.CommonDevice as AirSwitch; light.DeviceStatusReport = common.DeviceStatusReport; //璁板綍銆佹洿鏂扮姸鎬� if (light.DeviceStatusReport.AttriBute == null || light.DeviceStatusReport.AttriBute.Count == 0) @@ -137,8 +144,22 @@ return; } light.OnOffStatus = light.DeviceStatusReport.AttriBute[0].AttriButeData; - deviceIMG.IsSelected = switchBtn.IsSelected = light.OnOffStatus == 1; StatuBtn.Text = $"{Language.StringByID(R.MyInternationalizationString.Current)} {device.GetDeviceStatu()}"; + + if (device.CommonDevice.DfunctionType == DeviceFunctionType.A寮�鍏�) + { + SetONOFFStatu(light.OnOffStatus == 1); + } + else if (device.CommonDevice.DfunctionType == DeviceFunctionType.A鎻掑骇) + { + deviceIMG.IsSelected = switchBtn.IsSelected = light.OnOffStatus == 1; + } + else + { + deviceIMG.IsSelected = switchBtn.IsSelected = light.OnOffStatus == 1; + } + + light.LastDateTime = DateTime.Now; } } @@ -151,7 +172,30 @@ } else if (typeTag == "OnlineStatusChange") { - + Application.RunOnMainThread(() => + { + try + { + var deviceUI = device; + //璁惧涓虹┖ + if (deviceUI.CommonDevice == null) + { + return; + } + //鏄惁涓哄綋鍓嶈澶� + if (deviceUI.CommonDevice.DeviceEpoint != common.DeviceEpoint || deviceUI.CommonDevice.DeviceAddr != common.DeviceAddr) + { + return; + } + deviceUI.CommonDevice.IsOnline = common.IsOnline; + //OnBtn.IsSelected = OffBtn.IsSelected= deviceUI.CommonDevice.IsOnline == 1; + deviceUI.CommonDevice.LastDateTime = DateTime.Now; + } + catch (Exception ex) + { + System.Console.WriteLine($"Error:{ex.Message}"); + } + }); } } #endregion @@ -163,8 +207,8 @@ public override void RemoveFromParent() { ZbGateway.StatusList.Remove(this); - //action(); - //action = null; + action(device, room); + action = null; RemoveUpdateControlDeviceStatuAction(); if (IsDrawerLockMode) { @@ -197,7 +241,7 @@ AddBodyView(device); - var light = dev.CommonDevice as ZigBee.Device.AirSwitch; + var light = dev.CommonDevice as AirSwitch; //琛ヤ笂闈炶繙绋� if (light.Gateway == null) { @@ -219,8 +263,7 @@ } } - var de = Shared.Common.Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName); - if (de == null) + if (Common.Room.CurrentRoom.IsCollectInRoom(device.FileName) == false) { collectionBtn.IsSelected = false; } @@ -308,7 +351,7 @@ Text = device.CommonDevice.DeviceEpointName, TextColor = ZigbeeColor.Current.GXCTextBlackColor, TextSize = 15, - IsBold=true + IsBold = true }; itemView.AddChidren(deviceNameBtn); @@ -323,30 +366,6 @@ TextSize = 10 }; itemView.AddChidren(StatuBtn); - - deviceIMG = new Button() - { - Y = Application.GetRealHeight(389), - Width = Application.GetMinRealAverage(377), - Height = Application.GetMinRealAverage(435), - Gravity = Gravity.CenterHorizontal, - UnSelectedImagePath = "Light/DeskLamp.png", - SelectedImagePath = "Light/DeskLampSelected.png", - IsSelected = (device.CommonDevice as ZigBee.Device.AirSwitch).OnOffStatus == 1 - }; - itemView.AddChidren(deviceIMG); - - switchBtn = new Button() - { - Y = Application.GetRealHeight(996), - Width = Application.GetMinRealAverage(81), - Height = Application.GetMinRealAverage(81), - Gravity = Gravity.CenterHorizontal, - UnSelectedImagePath = "Item/Switch.png", - SelectedImagePath = "Item/SwitchSelected.png", - IsSelected = (device.CommonDevice as ZigBee.Device.AirSwitch).OnOffStatus == 1 - }; - itemView.AddChidren(switchBtn); var roomBG = new Button { @@ -387,6 +406,138 @@ TextSize = 12 }; itemView.AddChidren(roomName); + + AddByFunctionType(itemView); + } + + /// <summary> + /// AddByFunctionType + /// </summary> + private void AddByFunctionType(FrameLayout itemView) + { + if (device.CommonDevice.DfunctionType == DeviceFunctionType.A寮�鍏�) + { + AddOnOff(itemView); + } + else if (device.CommonDevice.DfunctionType == DeviceFunctionType.A鎻掑骇) + { + AddPlug(itemView); + } + else + { + AddLight(itemView); + } + } + + /// <summary> + /// AddOnOff + /// </summary> + private void AddOnOff(FrameLayout itemView) + { + deviceIMG = new Button() + { + Y = Application.GetRealHeight(340), + Width = Application.GetMinRealAverage(579), + Height = Application.GetMinRealAverage(579), + Gravity = Gravity.CenterHorizontal, + UnSelectedImagePath = "Light/OnOff.png", + }; + itemView.AddChidren(deviceIMG); + + OffBtn = new Button + { + X = Application.GetRealWidth(294), + Y = Application.GetRealHeight(588), + Width = Application.GetMinRealAverage(81), + Height = Application.GetMinRealAverage(81), + UnSelectedImagePath = "Light/OFF.png", + SelectedImagePath = "Light/OFFSelected.png", + IsSelected = (device.CommonDevice as AirSwitch).OnOffStatus == 0 + }; + itemView.AddChidren(OffBtn); + + OnBtn = new Button + { + X = Application.GetRealWidth(590), + Y = Application.GetRealHeight(588), + Width = Application.GetMinRealAverage(81), + Height = Application.GetMinRealAverage(81), + UnSelectedImagePath = "Light/ON.png", + SelectedImagePath = "Light/ONSelected.png", + IsSelected = (device.CommonDevice as AirSwitch).OnOffStatus == 1 + }; + itemView.AddChidren(OnBtn); + + OnBtn.MouseUpEventHandler += ON; + OffBtn.MouseUpEventHandler += OFF; + } + + /// <summary> + /// light + /// </summary> + /// <param name="itemView"></param> + private void AddLight(FrameLayout itemView) + { + deviceIMG = new Button() + { + Y = Application.GetRealHeight(389), + Width = Application.GetMinRealAverage(377), + Height = Application.GetMinRealAverage(435), + Gravity = Gravity.CenterHorizontal, + UnSelectedImagePath = "Light/DeskLamp.png", + SelectedImagePath = "Light/DeskLampSelected.png", + IsSelected = (device.CommonDevice as AirSwitch).OnOffStatus == 1 + }; + itemView.AddChidren(deviceIMG); + + switchBtn = new Button() + { + Y = Application.GetRealHeight(996), + Width = Application.GetMinRealAverage(81), + Height = Application.GetMinRealAverage(81), + Gravity = Gravity.CenterHorizontal, + UnSelectedImagePath = "Item/Switch.png", + SelectedImagePath = "Item/SwitchSelected.png", + IsSelected = (device.CommonDevice as AirSwitch).OnOffStatus == 1 + }; + itemView.AddChidren(switchBtn); + + switchBtn.MouseUpEventHandler += Switch; + deviceIMG.MouseUpEventHandler += Switch; + } + + /// <summary> + /// plug + /// </summary> + /// <param name="itemView"></param> + private void AddPlug(FrameLayout itemView) + { + deviceIMG = new Button() + { + Y = Application.GetRealHeight(344), + Width = Application.GetMinRealAverage(567), + Height = Application.GetMinRealAverage(567), + Gravity = Gravity.CenterHorizontal, + UnSelectedImagePath = "Light/Plug.png", + SelectedImagePath = "Light/PlugSelected.png", + IsSelected = (device.CommonDevice as AirSwitch).OnOffStatus == 1 + }; + itemView.AddChidren(deviceIMG); + + switchBtn = new Button() + { + Y = Application.GetRealHeight(996), + Width = Application.GetMinRealAverage(81), + Height = Application.GetMinRealAverage(81), + Gravity = Gravity.CenterHorizontal, + UnSelectedImagePath = "Item/Switch.png", + SelectedImagePath = "Item/SwitchSelected.png", + IsSelected = (device.CommonDevice as AirSwitch).OnOffStatus == 1 + }; + itemView.AddChidren(switchBtn); + + switchBtn.MouseUpEventHandler += Switch; + deviceIMG.MouseUpEventHandler += Switch; } #endregion @@ -397,8 +548,6 @@ /// </summary> private void BindEvent() { - switchBtn.MouseUpEventHandler += Switch; - deviceIMG.MouseUpEventHandler += Switch; collectionBtn.MouseUpEventHandler += Collection; } @@ -418,13 +567,14 @@ switchBtn.IsSelected = !switchBtn.IsSelected; deviceIMG.IsSelected = !deviceIMG.IsSelected; StatuBtn.Text = deviceIMG.IsSelected ? $"{Language.StringByID(R.MyInternationalizationString.Current)} {Language.StringByID(R.MyInternationalizationString.Open)}" : $"{Language.StringByID(R.MyInternationalizationString.Current)} {Language.StringByID(R.MyInternationalizationString.Shut)}"; + if (switchBtn.IsSelected == true) { - (device.CommonDevice as ZigBee.Device.AirSwitch).SwitchControl(1); + (device.CommonDevice as AirSwitch).SwitchControl(1); } else { - (device.CommonDevice as ZigBee.Device.AirSwitch).SwitchControl(0); + (device.CommonDevice as AirSwitch).SwitchControl(0); } //鎺у埗寤舵椂鍥炶皟 DeviceUI.SendCommandDelayAction(device.CommonDevice, () => @@ -441,6 +591,73 @@ }); } + /// <summary> + /// ON + /// </summary> + /// <param name="sender"></param> + /// <param name="eventArgs"></param> + private void ON(object sender, MouseEventArgs eventArgs) + { + SetONOFFStatu(true); + (device.CommonDevice as AirSwitch).SwitchControl(1); + //鎺у埗寤舵椂鍥炶皟 + zbGateway.ReportAction += UpdateDeviceControllStatu; + DeviceUI.SendCommandDelayAction(device.CommonDevice, () => + { + if (Parent == null) + { + return; + } + RemoveUpdateControlDeviceStatuAction(); + if (sendedControlCommand == false) + { + DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); + } + }); + } + /// <summary> + /// OFF + /// </summary> + /// <param name="sender"></param> + /// <param name="eventArgs"></param> + private void OFF(object sender, MouseEventArgs eventArgs) + { + SetONOFFStatu(false); + (device.CommonDevice as AirSwitch).SwitchControl(0); + //鎺у埗寤舵椂鍥炶皟 + zbGateway.ReportAction += UpdateDeviceControllStatu; + DeviceUI.SendCommandDelayAction(device.CommonDevice, () => + { + if (Parent == null) + { + return; + } + RemoveUpdateControlDeviceStatuAction(); + if (sendedControlCommand == false) + { + DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); + } + }); + } + + /// <summary> + /// SetONOFFStatu + /// </summary> + /// <param name="statu"></param> + private void SetONOFFStatu(bool statu) + { + if (statu) + { + OnBtn.IsSelected = true; + OffBtn.IsSelected = false; + } + else + { + OnBtn.IsSelected = false; + OffBtn.IsSelected = true; + } + StatuBtn.Text = statu ? $"{Language.StringByID(R.MyInternationalizationString.Current)} {Language.StringByID(R.MyInternationalizationString.Open)}" : $"{Language.StringByID(R.MyInternationalizationString.Current)} {Language.StringByID(R.MyInternationalizationString.Shut)}"; + } #endregion @@ -457,9 +674,9 @@ UserView.HomePage.Instance.AddChidren(detailInfo); UserView.HomePage.Instance.PageIndex += 1; detailInfo.Show(device, room); - detailInfo.EditAction = (d,r) => + detailInfo.EditAction += (curDev, curRoom) => { - Show(device, room); + Show(curDev, curRoom); }; } @@ -473,6 +690,7 @@ /// <param name="e">E.</param> private void Collection(object sender, MouseEventArgs e) { + //collection if ((sender as Button).IsSelected) { Shared.Common.Room.CurrentRoom.GetLoveRoom().DeleteDevice(device.FileName); -- Gitblit v1.8.0