From 94e4e5b9fd3da964c44b7b14227d6fe2bbb426d7 Mon Sep 17 00:00:00 2001 From: WJC <wjc@hdlchina.com.cn> Date: 星期四, 02 四月 2020 13:56:39 +0800 Subject: [PATCH] 2020-04-02-2 --- ZigbeeApp/Shared/Phone/Device/Curtain/RollerShadeControl.cs | 347 +++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 248 insertions(+), 99 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/Device/Curtain/RollerShadeControl.cs b/ZigbeeApp/Shared/Phone/Device/Curtain/RollerShadeControl.cs index 681e7eb..bc33a45 100755 --- a/ZigbeeApp/Shared/Phone/Device/Curtain/RollerShadeControl.cs +++ b/ZigbeeApp/Shared/Phone/Device/Curtain/RollerShadeControl.cs @@ -1,6 +1,7 @@ 锘縰sing System; using Shared.Common; using Shared.Phone.Device.CommonForm; +using Shared.Phone.Device.DeviceLogic; using Shared.Phone.UserView; using ZigBee.Device; @@ -12,7 +13,7 @@ /// <summary> /// The action. /// </summary> - public Action action; + public Action<CommonDevice, Common.Room> action; /// <summary> /// 鏀惰棌鎸夐挳 @@ -21,7 +22,7 @@ /// <summary> /// 浼犺繃鏉ョ殑璁惧 /// </summary> - private DeviceUI device; + private CommonDevice device; /// <summary> /// 浼犺繃鏉ョ殑鎴块棿 /// </summary> @@ -65,18 +66,37 @@ /// StopBtn /// </summary> public Button StopBtn; + /// <summary> + /// 寮�鍚堝笜 + /// </summary> + private CurtainSeekBar curtainSeekBar = new CurtainSeekBar { }; + /// <summary> + /// 鍗峰笜 + /// </summary> + private CurtainRollSeekBar curtainRollSeekBar = new CurtainRollSeekBar { }; + + /// <summary> + /// IsDrawerLockMode + /// </summary> + public bool IsDrawerLockMode; + + /// <summary> + /// ProgressBtn + /// </summary> + Button ProgressBtn; + /// <summary> + /// ProgressBtnY + /// </summary> + int ProgressBtnY; + /// <summary> + /// ProgressBtnX + /// </summary> + int ProgressBtnX; + #endregion #region 鈼� 鎺ュ彛___________________________ - /// <summary> - /// 澶勭悊鍙樺寲浜嬩欢 --灏嗗純鐢� 鏀圭敤DeviceInfoChange() - /// </summary> - /// <returns>The changed.</returns> - /// <param name="common">Common.</param> - public void Changed(CommonDevice common) - { - } /// <summary> /// 璁惧鐘舵�佹洿鏂版帴鍙� /// <para>type锛氬鏋滀负 DeviceInComingRespon:璁惧鏂颁笂鎶�</para> @@ -97,12 +117,12 @@ { var deviceUI = this.device; //璁惧涓虹┖ - if (deviceUI.CommonDevice == null) + if (deviceUI == null) { return; } //鏄惁涓哄綋鍓嶈澶� - if (deviceUI.CommonDevice.DeviceEpoint != common.DeviceEpoint || deviceUI.CommonDevice.DeviceAddr != common.DeviceAddr) + if (deviceUI.DeviceEpoint != common.DeviceEpoint || deviceUI.DeviceAddr != common.DeviceAddr) { return; } @@ -111,18 +131,24 @@ if (common.DeviceStatusReport.AttriBute[0].AttributeId == 8) { //绐楀笜鐧惧垎姣� - var rollerShade = deviceUI.CommonDevice as Rollershade; + var rollerShade = deviceUI as Rollershade; rollerShade.DeviceStatusReport = common.DeviceStatusReport; rollerShade.WcdCurrentPositionLiftPercentage = common.DeviceStatusReport.AttriBute[0].AttriButeData; - StatuBtn.Text = $"{Language.StringByID(R.MyInternationalizationString.Current)} { deviceUI.GetDeviceStatu()}"; - //SeekBar.Progress = rollerShade.WcdCurrentPositionLiftPercentage; - //seekBarTitle.Text = $"{SeekBar.Progress} %"; + StatuBtn.Text = $"{Language.StringByID(R.MyInternationalizationString.Current)} { UserCenter.HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI)}"; + if(rollerShade.WcdType==0) + { + curtainRollSeekBar.Progress = rollerShade.WcdCurrentPositionLiftPercentage; + } + else if(rollerShade.WcdType==4) + { + curtainSeekBar.Progress = rollerShade.WcdCurrentPositionLiftPercentage; + } rollerShade.LastDateTime = DateTime.Now; } else if (common.DeviceStatusReport.AttriBute[0].AttributeId == 0) { ////绐楀笜绫诲瀷 - var rollerShade = device.CommonDevice as Rollershade; + var rollerShade = device as Rollershade; rollerShade.DeviceStatusReport = common.DeviceStatusReport; rollerShade.WcdType = common.DeviceStatusReport.AttriBute[0].AttriButeData; rollerShade.LastDateTime = DateTime.Now; @@ -172,22 +198,7 @@ }); } } - /// <summary> - /// Changeds the IL ogic status. - /// </summary> - /// <param name="logic">Logic.</param> - public void ChangedILogicStatus(ZigBee.Device.Logic logic) - { - //throw new NotImplementedException(); - } - /// <summary> - /// Changeds the IS cene status. - /// </summary> - /// <param name="scene">Scene.</param> - public void ChangedISceneStatus(Scene scene) - { - //throw new NotImplementedException(); - } + #endregion #region 鈼� 鏋勯�犳柟娉昣_______________________ @@ -212,9 +223,13 @@ { UserView.HomePage.Instance.ScrollEnabled = true; ZigBee.Device.ZbGateway.StatusList.Remove(this); - //action(); - //action = null; + action(device,room); + action = null; RemoveUpdateControlDeviceStatuAction(); + if (IsDrawerLockMode) + { + CommonPage.Instance.IsDrawerLockMode = false; + } base.RemoveFromParent(); } @@ -227,10 +242,10 @@ /// </summary> /// <param name="dev">Device.</param> /// <param name="room">Room.</param> - public void Show(DeviceUI dev, Shared.Common.Room room) + public void Show(CommonDevice dev, Shared.Common.Room room) { device = dev; - zbGateway = this.device.CommonDevice.Gateway; + zbGateway = this.device.Gateway; this.room = room; AddTop(); @@ -238,7 +253,7 @@ AddBodyView(device); - var rollerShade = device.CommonDevice as ZigBee.Device.Rollershade; + var rollerShade = device as ZigBee.Device.Rollershade; //涓嶄笂闈炶繙绋� if (rollerShade.Gateway == null) { @@ -248,8 +263,7 @@ { UserHomeView.ReadStatus(rollerShade, () => { - rollerShade.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); - rollerShade.ReadWcdCurrentPositionLiftPercentage(); + ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(device); }); } else @@ -257,13 +271,11 @@ //闃叉鐭椂闂村唴澶氭璇诲彇 if ((DateTime.Now - rollerShade.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan) { - rollerShade.ReadWcdCurrentPositionLiftPercentage(); - rollerShade.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); + ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(device); } } - var de = Shared.Common.Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName); - if (de == null) + if (UserCenter.HdlRoomLogic.Current.IsCollectInRoom(device) == false) { collectionBtn.IsSelected = false; } @@ -294,15 +306,6 @@ RemoveFromParent(); }; - var sharedBtn = new Button - { - X = Application.GetRealWidth(850), - Width = Application.GetMinReal(69), - Height = Application.GetMinReal(69), - Gravity = Gravity.CenterVertical, - UnSelectedImagePath = "Item/Shared.png" - }; - top.topView.AddChidren(sharedBtn); var moreBtn = new Button { @@ -320,7 +323,7 @@ /// <summary> /// AddBodyView /// </summary> - public void AddBodyView(DeviceUI device) + public void AddBodyView(CommonDevice device) { bodyFrameLayout = new FrameLayout() { @@ -358,9 +361,10 @@ Width = Application.GetRealWidth(500), Height = Application.GetRealHeight(60), Gravity = Gravity.CenterHorizontal, - Text = device.CommonDevice.DeviceEpointName, + Text = Common.LocalDevice.Current.GetDeviceEpointName(device), TextColor = ZigbeeColor.Current.GXCTextBlackColor, - TextSize = 15 + TextSize = 15, + IsBold=true }; itemView.AddChidren(deviceNameBtn); @@ -371,7 +375,8 @@ Height = Application.GetRealHeight(60), Gravity = Gravity.CenterHorizontal, TextColor = ZigbeeColor.Current.GXCTextGrayColor, - Text = $"{Language.StringByID(R.MyInternationalizationString.Current)} {device.GetDeviceStatu()}" + Text = $"{Language.StringByID(R.MyInternationalizationString.Current)} {UserCenter.HdlDeviceOtherLogic.Current.GetDeviceStatu(device)}", + TextSize = 10 }; itemView.AddChidren(StatuBtn); @@ -386,7 +391,7 @@ itemView.AddChidren(OpenOrUpBtn); OpenOrUpBtn.MouseUpEventHandler += (sender, e) => { - (device.CommonDevice as ZigBee.Device.Rollershade).CurtainUpDownStopControl(0); + (device as Rollershade).CurtainUpDownStopControl(0); }; StopBtn = new Button @@ -401,7 +406,7 @@ itemView.AddChidren(StopBtn); StopBtn.MouseUpEventHandler += (sender, e) => { - (device.CommonDevice as ZigBee.Device.Rollershade).CurtainUpDownStopControl(2); + (device as Rollershade).CurtainUpDownStopControl(2); }; CloseOrDownBtn = new Button @@ -414,26 +419,28 @@ itemView.AddChidren(CloseOrDownBtn); CloseOrDownBtn.MouseUpEventHandler += (sender, e) => { - (device.CommonDevice as ZigBee.Device.Rollershade).CurtainUpDownStopControl(1); + (device as Rollershade).CurtainUpDownStopControl(1); }; - SetRollerShadeIcon((device.CommonDevice as Rollershade).WcdType); - if ((device.CommonDevice as Rollershade).WcdType == -1) + if ((device as Rollershade).WcdType == -1) { CommonPage.Loading.Start(); new System.Threading.Thread(() => { - Rollershade.ReadWcdTypeAction(device.CommonDevice, () => + Rollershade.ReadWcdTypeAction(device, () => { Application.RunOnMainThread(() => { - SetRollerShadeIcon((device.CommonDevice as Rollershade).WcdType); + SetRollerShadeIcon((device as Rollershade).WcdType); CommonPage.Loading.Hide(); }); }); }) { IsBackground = true }.Start(); } + + SetCurtainType(itemView, (device as Rollershade).WcdType); + var roomBG = new Button { Y = Application.GetRealHeight(1178 - 50), @@ -469,7 +476,8 @@ Height = Application.GetRealHeight(50), Text = room.Name, TextAlignment = TextAlignment.CenterLeft, - TextColor = ZigbeeColor.Current.GXCTextWhiteColor + TextColor = ZigbeeColor.Current.GXCTextWhiteColor, + TextSize = 12 }; itemView.AddChidren(roomName); } @@ -486,28 +494,12 @@ //upBtn.MouseUpEventHandler += Up; //stopBtn.MouseUpEventHandler += Stop; //downBtn.MouseUpEventHandler += Down; - //SeekBar.ProgressChanged += SeekBar_ProgressChange; - //collectionBtn.MouseUpEventHandler += Collection; - //moreBtn.MouseUpEventHandler += More; - //roomBtn.MouseUpEventHandler += BackToRoomHandler; - //roomName.MouseUpEventHandler += BackToRoomHandler; + collectionBtn.MouseUpEventHandler += Collection; } #endregion - #region 鈼� 鎺у埗___________________________ - - /// <summary> - /// 婊戞潯绉诲姩鍙戦�佸懡浠� - /// </summary> - /// <param name="sender">Sender.</param> - /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param> - private void SeekBar_ProgressChange(object sender, int mouseEventArgs) - { - //seekBarTitle.Text = $"{SeekBar.Progress}%"; - //(device.CommonDevice as ZigBee.Device.Rollershade).WcdGoToTiltValue(SeekBar.Progress); - } - + #region 鈼� 鎺у埗__________________________ /// <summary> /// 涓娿�佸紑 @@ -518,9 +510,9 @@ { sendedControlCommand = false; zbGateway.ReportAction += UpdateDeviceControllStatu; - (device.CommonDevice as ZigBee.Device.Rollershade).CurtainUpDownStopControl(0); + (device as ZigBee.Device.Rollershade).CurtainUpDownStopControl(0); //鎺у埗寤舵椂鍥炶皟 - DeviceUI.SendCommandDelayAction(device.CommonDevice, () => + UserCenter.HdlDeviceOtherLogic.Current.SendCommandDelayAction(device, () => { if (Parent == null) { @@ -529,7 +521,7 @@ RemoveUpdateControlDeviceStatuAction(); if (sendedControlCommand == false) { - DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); + UserCenter.HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL); } }); } @@ -543,9 +535,9 @@ { sendedControlCommand = false; zbGateway.ReportAction += UpdateDeviceControllStatu; - (device.CommonDevice as ZigBee.Device.Rollershade).CurtainUpDownStopControl(1); + (device as ZigBee.Device.Rollershade).CurtainUpDownStopControl(1); //鎺у埗寤舵椂鍥炶皟 - DeviceUI.SendCommandDelayAction(device.CommonDevice, () => + UserCenter.HdlDeviceOtherLogic.Current.SendCommandDelayAction(device, () => { if (Parent == null) { @@ -554,7 +546,7 @@ RemoveUpdateControlDeviceStatuAction(); if (sendedControlCommand == false) { - DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); + UserCenter.HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL); } }); } @@ -568,9 +560,9 @@ { sendedControlCommand = false; zbGateway.ReportAction += UpdateDeviceControllStatu; - (device.CommonDevice as ZigBee.Device.Rollershade).CurtainUpDownStopControl(2); + (device as ZigBee.Device.Rollershade).CurtainUpDownStopControl(2); //鎺у埗寤舵椂鍥炶皟 - DeviceUI.SendCommandDelayAction(device.CommonDevice, () => + UserCenter.HdlDeviceOtherLogic.Current.SendCommandDelayAction(device, () => { if (Parent == null) { @@ -579,7 +571,7 @@ RemoveUpdateControlDeviceStatuAction(); if (sendedControlCommand == false) { - DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); + UserCenter.HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL); } }); } @@ -600,7 +592,7 @@ return; } var tempDevice = (CommonDevice)objValue; - if (tempDevice.DeviceEpoint != this.device.CommonDevice.DeviceEpoint || tempDevice.DeviceAddr != this.device.CommonDevice.DeviceAddr) + if (tempDevice.DeviceEpoint != this.device.DeviceEpoint || tempDevice.DeviceAddr != this.device.DeviceAddr) { //涓嶆槸褰撳墠璁惧鐨勬帹閫侊紝鍒欎笉澶勭悊 return; @@ -638,10 +630,21 @@ UserView.HomePage.Instance.AddChidren(detailInfo); UserView.HomePage.Instance.PageIndex += 1; detailInfo.Show(device, room); - detailInfo.action = () => + detailInfo.EditAction += (curDev,curRoom) => { - Show(device, room); + Show(curDev, curRoom); }; + } + + /// <summary> + /// SetCurtainType + /// </summary> + /// <param name="layout"></param> + /// <param name="type"></param> + private void SetCurtainType(FrameLayout layout, int type) + { + SetRollerShadeIcon(type); + SetRollerSeekBar(layout, type); } /// <summary> @@ -649,7 +652,7 @@ /// WcdType=0锛氬嵎甯� /// </summary> /// <param name="type"></param> - public void SetRollerShadeIcon(int type) + private void SetRollerShadeIcon(int type) { if (type == 0) { @@ -669,6 +672,153 @@ } } + /// <summary> + /// SetRollerSeekBar + /// </summary> + /// <param name="layout"></param> + /// <param name="type"></param> + private void SetRollerSeekBar(FrameLayout layout,int type) + { + if(type == 0) + { + curtainRollSeekBar.Y = Application.GetRealHeight(300); + curtainRollSeekBar.Width = Application.GetRealWidth(438); + curtainRollSeekBar.Height = Application.GetRealHeight(576); + curtainRollSeekBar.Gravity = Gravity.CenterHorizontal; + curtainRollSeekBar.Progress = (device as Rollershade).WcdCurrentPositionLiftPercentage; + layout.AddChidren(curtainRollSeekBar); + curtainRollSeekBar.IsProgressTextShow = false; + curtainRollSeekBar.CurtainPaddingTop = Application.GetRealHeight(110); + curtainRollSeekBar.OnStopTrackingTouchEvent += (sender, e) => + { + (device as Rollershade).WcdGoToTiltValue(curtainRollSeekBar.Progress); + }; + + curtainRollSeekBar.OnStartTrackingTouchEvent += (sender, e) => + { + OnProgressButtonMove(curtainRollSeekBar.Progress); + ProgressBtn.Visible = true; + }; + + curtainRollSeekBar.OnStopTrackingTouchEvent += (sender, e) => + { + ProgressBtn.Visible = false; + }; + + curtainRollSeekBar.OnProgressChangedEvent += (send2, e2) => + { + + OnProgressButtonMove(e2); + + //鍒ゆ柇鏄惁300ms灞忚斀 + //if (curtainRollSeekBar.IsProgressChangeDelay()) return; + + //(device.CommonDevice as Rollershade).WcdGoToTiltValue(curtainRollSeekBar.Progress); + }; + + InitProgressBtn(layout); + } + else + { + curtainSeekBar.Y = Application.GetRealHeight(334); + curtainSeekBar.Width = Application.GetRealWidth(570); + curtainSeekBar.Height = Application.GetRealHeight(513); + curtainSeekBar.Gravity = Gravity.CenterHorizontal; + curtainSeekBar.IsProgressTextShow = false; + curtainSeekBar.Progress = (device as Rollershade).WcdCurrentPositionLiftPercentage; + layout.AddChidren(curtainSeekBar); + + curtainSeekBar.OnStopTrackingTouchEvent += (sender, e) => + { + (device as Rollershade).WcdGoToTiltValue(curtainSeekBar.Progress); + }; + + curtainSeekBar.OnStartTrackingTouchEvent += (sender, e) => + { + OnProgressButtonMoveForCurtain(curtainSeekBar.Progress); + ProgressBtn.Visible = true; + }; + + curtainSeekBar.OnStopTrackingTouchEvent += (sender, e) => + { + ProgressBtn.Visible = false; + }; + + curtainSeekBar.OnProgressChangedEvent += (send2, e2) => + { + + OnProgressButtonMoveForCurtain(e2); + + //鍒ゆ柇鏄惁300ms灞忚斀 + //if (curtainRollSeekBar.IsProgressChangeDelay()) return; + + //(device.CommonDevice as Rollershade).WcdGoToTiltValue(curtainRollSeekBar.Progress); + }; + InitProgressBtnForCurtain(layout); + } + } + + /// <summary> + /// 娣诲姞杩涘害鎸夐挳 + /// </summary> + private void InitProgressBtn(FrameLayout layout) + { + ProgressBtnY = curtainRollSeekBar.Y - Application.GetMinReal(204); + ProgressBtn = new Button() + { + Y = ProgressBtnY, + Width = Application.GetMinReal(135), + Height = Application.GetMinReal(104), + UnSelectedImagePath = "Item/ProgressBubbles.png", + Visible = false, + Gravity = Gravity.CenterHorizontal, + TextSize=14, + IsBold=true, + TextColor=ZigbeeColor.Current.GXCTextWhiteColor + }; + layout.AddChidren(ProgressBtn); + } + + /// <summary> + /// OnProgressButtonMove + /// </summary> + private void OnProgressButtonMove(int mProgress) + { + ProgressBtn.Y = ProgressBtnY + curtainRollSeekBar.NowProgressY; + ProgressBtn.Text = mProgress + "%"; + } + + + /// <summary> + /// 娣诲姞杩涘害鎸夐挳 + /// </summary> + private void InitProgressBtnForCurtain(FrameLayout layout) + { + ProgressBtnX = curtainSeekBar.X - Application.GetMinReal(20); + ProgressBtn = new Button() + { + X = ProgressBtnX, + Y = curtainSeekBar.Y + curtainSeekBar.Height / 2 - Application.GetMinReal(180), + Width = Application.GetMinReal(135), + Height = Application.GetMinReal(104), + UnSelectedImagePath = "Item/ProgressBubbles.png", + Visible = false, + TextSize = 14, + IsBold = true, + TextColor = ZigbeeColor.Current.GXCTextWhiteColor + }; + layout.AddChidren(ProgressBtn); + } + + /// <summary> + /// OnProgressButtonMove + /// </summary> + private void OnProgressButtonMoveForCurtain(int mProgress) + { + ProgressBtn.X = ProgressBtnX + curtainSeekBar.NowProgressX- Application.GetMinReal(5); + ProgressBtn.Text = mProgress + "%"; + } + #endregion #region 鈼� 鏀惰棌鍒颁富椤礯______________________ @@ -680,15 +830,14 @@ /// <param name="e">E.</param> private void Collection(object sender, MouseEventArgs e) { - //collection if (collectionBtn.IsSelected) { - Shared.Common.Room.Lists[0].DeleteDevice(device.FileName); + UserCenter.HdlRoomLogic.Current.DeleteLoveDevice(device); collectionBtn.IsSelected = false; } else { - Shared.Common.Room.Lists[0].AddDevice(device.FileName); + UserCenter.HdlRoomLogic.Current.AddLoveDevice(device); collectionBtn.IsSelected = true; } } -- Gitblit v1.8.0