From 66a9965c44ecc32a6696abca876ab9d1cd091584 Mon Sep 17 00:00:00 2001 From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local> Date: 星期五, 28 二月 2020 15:25:13 +0800 Subject: [PATCH] 2020.2.28 --- ZigbeeApp/Shared/Phone/Device/Light/DimmableLightControl.cs | 154 ++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 108 insertions(+), 46 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/Device/Light/DimmableLightControl.cs b/ZigbeeApp/Shared/Phone/Device/Light/DimmableLightControl.cs old mode 100755 new mode 100644 index 5dd0ba7..0695856 --- a/ZigbeeApp/Shared/Phone/Device/Light/DimmableLightControl.cs +++ b/ZigbeeApp/Shared/Phone/Device/Light/DimmableLightControl.cs @@ -1,6 +1,7 @@ 锘縰sing System; using Shared.Common; using Shared.Phone.Device.CommonForm; +using Shared.Phone.Device.DeviceLogic; using ZigBee.Device; namespace Shared.Phone.Device.Light @@ -12,7 +13,7 @@ /// <summary> /// The action. /// </summary> - public Action action; + public Action<DeviceUI, Common.Room> action; ///// <summary> ///// The top view. ///// </summary> @@ -37,7 +38,7 @@ /// 鏀惰棌鎸夐挳 /// </summary> private Button collectionBtn; - + /// <summary> /// 寮�鍏� /// </summary> @@ -46,7 +47,7 @@ /// 婊戞潯 /// </summary> private WaveSeekBar levelSeekBar; - + private Button StatuBtn; /// <summary> @@ -61,6 +62,20 @@ /// MaxLevel /// </summary> private const int MaxLevel = 254; + + /// <summary> + /// IsDrawerLockMode + /// </summary> + public bool IsDrawerLockMode; + /// <summary> + /// ProgressBtn + /// </summary> + Button ProgressBtn; + /// <summary> + /// ProgressBtnY + /// </summary> + int ProgressBtnY; + #endregion #region 鈼� 鎺ュ彛__________________________ @@ -124,25 +139,24 @@ { dimmableLight = deviceUI.CommonDevice as DimmableLight; dimmableLight.DeviceStatusReport = common.DeviceStatusReport; - //璁板綍銆佹洿鏂扮姸鎬� if (dimmableLight.DeviceStatusReport.AttriBute == null || dimmableLight.DeviceStatusReport.AttriBute.Count == 0) { return; } dimmableLight.OnOffStatus = dimmableLight.DeviceStatusReport.AttriBute[0].AttriButeData; switchBtn.IsSelected = dimmableLight.OnOffStatus == 1; - StatuBtn.Text = CommonFormResouce.GetSwitchStatu(switchBtn.IsSelected); + StatuBtn.Text = switchBtn.IsSelected ? $"{Language.StringByID(R.MyInternationalizationString.CurrentLightLevel)} { device.GetDeviceStatu()}" : $"{Language.StringByID(R.MyInternationalizationString.Current)} {Language.StringByID(R.MyInternationalizationString.Shut)}"; + if (switchBtn.IsSelected == true) { levelSeekBar.IsClickable = true; - levelSeekBar.WaveColor = ZigbeeColor.Current.GXCWaveSeekBarColor; + levelSeekBar.SetProgressBarColors(ZigbeeColor.Current.GXCWaveSeekBarColor_Start, ZigbeeColor.Current.GXCWaveSeekBarColor_End); } else { levelSeekBar.IsClickable = false; - levelSeekBar.WaveColor = ZigbeeColor.Current.GXCWaveSeekBarUnSelectedColor; + levelSeekBar.SetProgressBarColors(ZigbeeColor.Current.GXCWaveSeekBarUnSelectedColor, ZigbeeColor.Current.GXCWaveSeekBarUnSelectedColor); } - //change color dimmableLight.LastDateTime = DateTime.Now; } //浜害 @@ -162,10 +176,11 @@ dimmableLight.Level = attriButeList[0].AttriButeData; dimmableLight.LastDateTime = DateTime.Now; levelSeekBar.Progress = (int)(dimmableLight.Level*1.0/MaxLevel*100); + StatuBtn.Text = switchBtn.IsSelected ? $"{Language.StringByID(R.MyInternationalizationString.CurrentLightLevel)} { device.GetDeviceStatu()}" : $"{Language.StringByID(R.MyInternationalizationString.Current)} {Language.StringByID(R.MyInternationalizationString.Shut)}"; break; } } - + } } catch (Exception ex) @@ -176,7 +191,7 @@ } else if (typeTag == "OnlineStatusChange") { - + } } @@ -191,8 +206,12 @@ { ZbGateway.StatusList.Remove(this); UserView.HomePage.Instance.ScrollEnabled = true; - action(); + action(device, room); action = null; + if (IsDrawerLockMode) + { + CommonPage.Instance.IsDrawerLockMode = false; + } base.RemoveFromParent(); } @@ -204,6 +223,7 @@ /// </summary> public DimmableLightControl() { + UserView.HomePage.Instance.ScrollEnabled = false; BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor; ZbGateway.StatusList.Add(this); } @@ -236,9 +256,7 @@ //鍙戦�佽鍙栫姸鎬佸懡浠� UserView.UserHomeView.ReadStatus(dimmableLight, () => { - dimmableLight.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); - dimmableLight.ReadOnOffStatus(); - dimmableLight.ReadLevel(); + ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(device.CommonDevice); }); } else @@ -246,9 +264,7 @@ //闃叉鐭椂闂村唴澶氭璇诲彇璁惧鐘舵�� if ((DateTime.Now - dimmableLight.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan) { - dimmableLight.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); - dimmableLight.ReadOnOffStatus(); - dimmableLight.ReadLevel(); + ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(device.CommonDevice); } } } @@ -269,16 +285,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 { @@ -303,9 +309,9 @@ 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); }; } @@ -365,9 +371,10 @@ Width = Application.GetRealWidth(500), Height = Application.GetRealHeight(60), Gravity = Gravity.CenterHorizontal, - Text = device.CommonDevice.DeviceEpointName, + Text = Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice), TextColor = ZigbeeColor.Current.GXCTextBlackColor, - TextSize = 15 + TextSize = 15, + IsBold=true }; itemView.AddChidren(deviceNameBtn); @@ -378,8 +385,10 @@ Height = Application.GetRealHeight(60), Gravity = Gravity.CenterHorizontal, TextColor = ZigbeeColor.Current.GXCTextGrayColor, - Text = CommonFormResouce.GetSwitchStatu(device.CommonDevice.IsOnline == 1) + Text = dimmableLight.Level>0?$"{Language.StringByID(R.MyInternationalizationString.CurrentLightLevel)} { device.GetDeviceStatu()}" :$"{Language.StringByID(R.MyInternationalizationString.Current)} {Language.StringByID(R.MyInternationalizationString.Shut)}", + TextSize=10 }; + itemView.AddChidren(StatuBtn); levelSeekBar = new WaveSeekBar() @@ -388,28 +397,51 @@ Width = Application.GetRealWidth(271), Height = Application.GetRealHeight(533), Gravity = Gravity.CenterHorizontal, - WavePadding = 2, + WavePadding = Application.GetRealWidth(8), MaxValue=100, Progress = (int)(dimmableLight.Level*1.0/MaxLevel*100), - WaveColor = ZigbeeColor.Current.GXCWaveSeekBarColor + + CornerRadius= Application.GetRealHeight(58) }; + itemView.AddChidren(levelSeekBar); - if (dimmableLight.OnOffStatus==1) + if (dimmableLight.OnOffStatus == 1) { levelSeekBar.IsClickable = true; - levelSeekBar.WaveColor = ZigbeeColor.Current.GXCWaveSeekBarColor; + levelSeekBar.SetProgressBarColors(ZigbeeColor.Current.GXCWaveSeekBarColor_Start, ZigbeeColor.Current.GXCWaveSeekBarColor_End); } else { levelSeekBar.IsClickable = false; - levelSeekBar.WaveColor = ZigbeeColor.Current.GXCWaveSeekBarUnSelectedColor; + levelSeekBar.SetProgressBarColors(ZigbeeColor.Current.GXCWaveSeekBarUnSelectedColor, ZigbeeColor.Current.GXCWaveSeekBarUnSelectedColor); } - levelSeekBar.OnProgressChangedEvent += (send2, e2) => + levelSeekBar.OnStartTrackingTouchEvent += (sender, e) => + { + OnProgressButtonMove(levelSeekBar.Progress); + levelSeekBar.IsProgressTextShow = false; + ProgressBtn.Visible = true; + }; + + levelSeekBar.OnStopTrackingTouchEvent += (sender, e) => + { + ProgressBtn.Visible = false; + levelSeekBar.IsProgressTextShow = true; + dimmableLight.SetLevel((int)(levelSeekBar.Progress * MaxLevel / 100.0)); + }; + + levelSeekBar.OnProgressChangedEvent += (send2, e2) => { - dimmableLight.SetLevel((int)(levelSeekBar.Progress*MaxLevel/100.0)); - }; + + OnProgressButtonMove(e2); + + //鍒ゆ柇鏄惁300ms灞忚斀 + //if (levelSeekBar.IsProgressChangeDelay()) return; + //dimmableLight.SetLevel((int)(levelSeekBar.Progress * MaxLevel / 100.0)); + }; + + InitProgressBtn(itemView); switchBtn = new Button() { @@ -458,9 +490,40 @@ Height = Application.GetRealHeight(50), Text = room.Name, TextAlignment = TextAlignment.CenterLeft, - TextColor = ZigbeeColor.Current.GXCTextWhiteColor + TextColor = ZigbeeColor.Current.GXCTextWhiteColor, + TextSize = 12 }; itemView.AddChidren(roomName); + } + + /// <summary> + /// OnProgressButtonMove + /// </summary> + private void OnProgressButtonMove(int mProgress) + { + ProgressBtn.Y = ProgressBtnY + levelSeekBar.NowProgressY; + ProgressBtn.Text = mProgress + "%"; + } + + /// <summary> + /// 娣诲姞杩涘害鎸夐挳 + /// </summary> + private void InitProgressBtn(FrameLayout layout) + { + ProgressBtnY = levelSeekBar.Y - Application.GetMinReal(154); + 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); } #endregion @@ -487,18 +550,18 @@ private void Switch_MouseUpEvent(object sender, MouseEventArgs eventArgs) { switchBtn.IsSelected = !switchBtn.IsSelected; - StatuBtn.Text = CommonFormResouce.GetSwitchStatu(switchBtn.IsSelected); + StatuBtn.Text = switchBtn.IsSelected ? $"{Language.StringByID(R.MyInternationalizationString.CurrentLightLevel)} { device.GetDeviceStatu()}" : $"{Language.StringByID(R.MyInternationalizationString.Current)} {Language.StringByID(R.MyInternationalizationString.Shut)}"; if (switchBtn.IsSelected == true) { dimmableLight.SwitchControl(1); levelSeekBar.IsClickable = true; - levelSeekBar.WaveColor = ZigbeeColor.Current.GXCWaveSeekBarColor; + levelSeekBar.SetProgressBarColors(ZigbeeColor.Current.GXCWaveSeekBarColor_Start, ZigbeeColor.Current.GXCWaveSeekBarColor_End); } else { dimmableLight.SwitchControl(0); levelSeekBar.IsClickable = false; - levelSeekBar.WaveColor = ZigbeeColor.Current.GXCWaveSeekBarUnSelectedColor; + levelSeekBar.SetProgressBarColors(ZigbeeColor.Current.GXCWaveSeekBarUnSelectedColor, ZigbeeColor.Current.GXCWaveSeekBarUnSelectedColor); } } @@ -511,8 +574,7 @@ /// </summary> private void InitCollection() { - var dev = Shared.Common.Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName); - if (dev == null) + if (Common.Room.CurrentRoom.IsCollectInRoom(device.FileName) == false) { collectionBtn.IsSelected = false; } -- Gitblit v1.8.0