From 9f326f4000847e6167d8166fa2f6a66f53cb3734 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期四, 17 十二月 2020 09:07:13 +0800
Subject: [PATCH] 新云端Ver1.3

---
 ZigbeeApp/Shared/Phone/MainPage/ControlForm/DeviceColorLightDetailCardForm.cs |  133 ++++++++++++++++++++------------------------
 1 files changed, 60 insertions(+), 73 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/MainPage/ControlForm/DeviceColorLightDetailCardForm.cs b/ZigbeeApp/Shared/Phone/MainPage/ControlForm/DeviceColorLightDetailCardForm.cs
index 53a0bff..d2062bc 100755
--- a/ZigbeeApp/Shared/Phone/MainPage/ControlForm/DeviceColorLightDetailCardForm.cs
+++ b/ZigbeeApp/Shared/Phone/MainPage/ControlForm/DeviceColorLightDetailCardForm.cs
@@ -1,5 +1,4 @@
 锘縰sing Shared.Common;
-using Shared.Phone.Device.DeviceLogic;
 using Shared.Phone.UserCenter;
 using System;
 using System.Collections.Generic;
@@ -32,10 +31,6 @@
         /// </summary>
         private bool isProgressing = false;
         /// <summary>
-        /// 鑳藉惁鍙戦�佽繘搴﹀��
-        /// </summary>
-        private bool canSetProgressValue = true;
-        /// <summary>
         /// 鏄惁宸茬粡鍒濆鍖栦簡鎺т欢(鍥犱负搴曞眰鏈夊彲鑳戒細鍒锋柊鏁翠釜鐣岄潰)
         /// </summary>
         private bool hadInitControl = false;
@@ -62,7 +57,7 @@
             if (((LightBase)this.device).OnOffStatus == 1)
             {
                 //浜害 XX
-                this.SetStatuText(Language.StringByID(R.MyInternationalizationString.uBrightness) + "  " + HdlDeviceOtherLogic.Current.GetDeviceStatu(this.device));
+                this.SetStatuText(Language.StringByID(R.MyInternationalizationString.uBrightness) + "  " + HdlDeviceCommonLogic.Current.GetMainPageDeviceStatuText(this.device));
             }
             else
             {
@@ -73,13 +68,14 @@
             //褰╃伅鎺т欢
             this.waveSeekBar = new WaveSeekBar();
             waveSeekBar.Y = Application.GetRealHeight(377);
-            waveSeekBar.Width = Application.GetMinRealAverage(271);
-            waveSeekBar.Height = Application.GetMinRealAverage(533);
+            waveSeekBar.Width = this.GetPictrueRealSize(271);
+            waveSeekBar.Height = this.GetPictrueRealSize(533);
             waveSeekBar.Gravity = Gravity.CenterHorizontal;
             waveSeekBar.WavePadding = Application.GetRealWidth(8);
             waveSeekBar.MaxValue = 100;
             waveSeekBar.Progress = (int)(((DimmableLight)this.device).Level * 1.0 / MaxLevel * 100);
             waveSeekBar.CornerRadius = Application.GetRealHeight(58);
+            waveSeekBar.SetProgressBarColors(ZigbeeColor.Current.GXCWaveSeekBarColor_Start, ZigbeeColor.Current.GXCWaveSeekBarColor_End);
             frameWhiteBack.AddChidren(waveSeekBar);
 
             //寮�鍏�
@@ -98,17 +94,9 @@
 
             //璁剧疆鍒濆鐘舵��
             this.IsLightOpen = ((LightBase)this.device).OnOffStatus == 1;
-            this.canSetProgressValue = this.IsLightOpen;
             if (IsLightOpen == true)
             {
                 btnSwitch.IsSelected = true;
-                waveSeekBar.IsClickable = true;
-                waveSeekBar.SetProgressBarColors(ZigbeeColor.Current.GXCWaveSeekBarColor_Start, ZigbeeColor.Current.GXCWaveSeekBarColor_End);
-            }
-            else
-            {
-                waveSeekBar.IsClickable = false;
-                waveSeekBar.SetProgressBarColors(ZigbeeColor.Current.GXCWaveSeekBarUnSelectedColor, ZigbeeColor.Current.GXCWaveSeekBarUnSelectedColor);
             }
 
             //褰╃伅鎺т欢閲岄潰鐨勯偅涓樉绀虹櫨鍒嗘瘮鐨勬帶浠�
@@ -155,7 +143,17 @@
                 //鍙樻洿杩涘害鐧惧垎姣旂殑鏄剧ず
                 btnProgress.Y = progressY + waveSeekBar.NowProgressY;
                 btnProgress.Text = value + "%";
-                nowProgressValue = value;
+                if (Common.Config.Instance.Home.IsVirtually == false)
+                {
+                    nowProgressValue = value;
+                }
+                else
+                {
+                    //濡傛灉浣忓畢涓鸿櫄鎷熶綇瀹�,鐩存帴鏀圭紦瀛�
+                    ((DimmableLight)this.device).Level = value * MaxLevel / 100;
+                    //浜害 XX
+                    this.SetStatuText(Language.StringByID(R.MyInternationalizationString.uBrightness) + "  " + HdlDeviceCommonLogic.Current.GetMainPageDeviceStatuText(this.device));
+                }
             };
 
             if (this.hadInitControl == true)
@@ -165,14 +163,19 @@
             }
             this.hadInitControl = true;
 
+            if (Config.Instance.Home.IsVirtually == true)
+            {
+                //铏氭嫙浣忓畢
+                return;
+            }
+
             //寮�涓�涓嚎绋�,鐩戣鏄惁婊戝姩鐨勬粦鍔ㄦ潯,姣忕妫�娴嬩竴娆�
             HdlThreadLogic.Current.RunThread(() =>
             {
                 while (this.Parent != null)
                 {
                     System.Threading.Thread.Sleep(1000);
-                    if (nowProgressValue == oldProgressValue
-                    || this.canSetProgressValue == false)
+                    if (nowProgressValue == oldProgressValue)
                     {
                         //鍊间竴鏍�
                         continue;
@@ -194,52 +197,54 @@
         /// <param name="isOpen"></param>
         private void SetSwitchCommand(bool isOpen)
         {
-            //褰撴寜涓嬪紑鍏虫寜閽椂,涓嶈兘鍐嶅彂閫佽繘搴﹀��
-            this.canSetProgressValue = false;
+            //鑾峰彇褰撳墠浜害
+            int level = Convert.ToInt32(this.device.GetType().InvokeMember("Level", System.Reflection.BindingFlags.GetField, null, this.device, null));
+            //濡傛灉浣忓畢鏄櫄鎷熶綇瀹�
+            if (Common.Config.Instance.Home.IsVirtually == true)
+            {
+                ((LightBase)this.device).OnOffStatus = isOpen == true ? 1 : 0;
+                if (((LightBase)this.device).OnOffStatus == 1 && level == 0)
+                {
+                    //濡傛灉褰撳墠鏄墦寮�鐘舵��,骞朵笖浜害涓�0鐨勮瘽,鍒欓渶瑕佸彉鎴�100%浜害
+                    this.device.GetType().InvokeMember("Level", System.Reflection.BindingFlags.SetField, null, this.device, new object[] { 100 });
+                }
+                //鍒锋柊寮�鍏崇姸鎬�
+                this.RefreshSwitchStatu(isOpen);
+                return;
+            }
 
             //妫�娴嬫槸鍚﹁幏鍙栫綉鍏冲弽棣堢殑缁撴灉,濡傛灉缃戝叧娌℃湁鍥炲,鍒欎細寮瑰嚭娑堟伅
             this.StartCheckResponeResult(this.listControl, (result) =>
             {
                 HdlThreadLogic.Current.RunMain(() =>
                 {
-                    //娌℃湁鎺ユ敹鍒扮綉鍏冲洖澶�
-                    if (result == false)
+                    bool statu = ((LightBase)this.device).OnOffStatus == 1;
+                    //鎺ユ敹鍒扮綉鍏冲洖澶�
+                    if (result == true)
                     {
-                        bool statu = ((LightBase)this.device).OnOffStatus == 1;
                         //鍒锋柊寮�鍏崇姸鎬�
                         this.RefreshSwitchStatu(statu);
-                        if (statu == true)
-                        {
-                            //绛夊緟缁撴灉缁撴潫鍚�,褰╃伅鎺т欢鍙互婊戝姩
-                            waveSeekBar.IsClickable = true;
-                        }
+                        //鐘舵�佸彇鍙�
+                        listControl[0].IsSelected = statu;
                     }
                 });
             });
-
-            //鐘舵�佸彇鍙�
-            listControl[0].IsSelected = !listControl[0].IsSelected;
-            //鍙戦�佺瓑寰呯殑鏃堕棿鍐�,涓嶈兘婊戝姩褰╃伅鎺т欢
-            waveSeekBar.IsClickable = false;
-            if (isOpen == true)
-            {
-                waveSeekBar.SetProgressBarColors(ZigbeeColor.Current.GXCWaveSeekBarColor_Start, ZigbeeColor.Current.GXCWaveSeekBarColor_End);
-            }
-            else
-            {
-                waveSeekBar.SetProgressBarColors(ZigbeeColor.Current.GXCWaveSeekBarUnSelectedColor, ZigbeeColor.Current.GXCWaveSeekBarUnSelectedColor);
-            }
-
             if (isOpen == true)
             {
                 //鎵撳紑
-                this.SetStatuText(Language.StringByID(R.MyInternationalizationString.uOpen1));
-                this.device.SwitchControl(1);
+                if (level == 0)
+                {
+                    //濡傛灉褰撳墠鏄墦寮�鐘舵��,骞朵笖浜害涓�0鐨勮瘽,鍒欓渶瑕佸彉鎴�100%浜害
+                    this.device.GetType().InvokeMember("SetLevel", System.Reflection.BindingFlags.InvokeMethod, null, this.device, new object[] { 254 });
+                }
+                else
+                {
+                    this.device.SwitchControl(1);
+                }
             }
             else
             {
                 //鍏抽棴
-                this.SetStatuText(Language.StringByID(R.MyInternationalizationString.Close));
                 this.device.SwitchControl(0);
             }
         }
@@ -256,17 +261,14 @@
         /// <returns></returns>
         public override bool CheckResponeResultStatu(ReceiveComandDiv comandDiv, CommonDevice report)
         {
-            if (comandDiv == ReceiveComandDiv.A鑺傜偣鎺у埗鍙嶉)
-            {
-                return true;
-            }
-            else if (comandDiv == ReceiveComandDiv.A璁惧灞炴�т笂鎶�)
+            if (comandDiv == ReceiveComandDiv.A璁惧灞炴�т笂鎶�)
             {
                 HdlThreadLogic.Current.RunMain(() =>
                 {
                     //鍒锋柊寮�鍏崇姸鎬�
                     this.RefreshSwitchStatu(((LightBase)this.device).OnOffStatus == 1);
                 });
+                return true;
             }
             return false;
         }
@@ -284,17 +286,18 @@
             if (isOpen == true)
             {
                 //浜害鏄繀椤昏鍒锋柊鐨�  浜害 XX
-                this.SetStatuText(Language.StringByID(R.MyInternationalizationString.uBrightness) + "  " + HdlDeviceOtherLogic.Current.GetDeviceStatu(this.device));
-                if (this.isProgressing == false)
-                {
-                    //褰撹繘搴﹀�煎湪鎵嬪姩鍙樻洿涓椂,涓嶆帴鏀舵帹閫�
-                    waveSeekBar.Progress = (int)(((DimmableLight)this.device).Level * 1.0 / MaxLevel * 100);
-                }
+                this.SetStatuText(Language.StringByID(R.MyInternationalizationString.uBrightness) + "  " + HdlDeviceCommonLogic.Current.GetMainPageDeviceStatuText(this.device));
             }
             if (isOpen == false && this.IsLightOpen == true)
             {
                 //鐘舵�佷笉涓�鏍�,鎵嶅彉鏇村瓧鏍�:鍏抽棴
                 this.SetStatuText(Language.StringByID(R.MyInternationalizationString.Close));
+            }
+
+            if (this.isProgressing == false)
+            {
+                //褰撹繘搴﹀�煎湪鎵嬪姩鍙樻洿涓椂,涓嶆帴鏀舵帹閫�
+                waveSeekBar.Progress = (int)(((DimmableLight)this.device).Level * 1.0 / MaxLevel * 100);
             }
 
             if (listControl[0].IsSelected != isOpen)
@@ -303,23 +306,7 @@
                 listControl[0].IsSelected = isOpen;
             }
 
-            //鐘舵�佷笉涓�鏍锋墠鍙樻洿
-            if (this.IsLightOpen != isOpen)
-            {
-                if (isOpen == true)
-                {
-                    waveSeekBar.IsClickable = true;
-                    waveSeekBar.SetProgressBarColors(ZigbeeColor.Current.GXCWaveSeekBarColor_Start, ZigbeeColor.Current.GXCWaveSeekBarColor_End);
-                }
-                else
-                {
-                    waveSeekBar.IsClickable = false;
-                    waveSeekBar.SetProgressBarColors(ZigbeeColor.Current.GXCWaveSeekBarUnSelectedColor, ZigbeeColor.Current.GXCWaveSeekBarUnSelectedColor);
-                }
-            }
             this.IsLightOpen = isOpen;
-            //鍥炲鐨勭粨鏋滆,澶勪簬鎵撳紑鐘舵�佹墠鑳藉彂閫�
-            this.canSetProgressValue = this.IsLightOpen;
         }
 
         #endregion

--
Gitblit v1.8.0