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