From f71e74b5f0d2716fbf05da016cdaa18d64e09f80 Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期四, 31 十二月 2020 17:01:18 +0800
Subject: [PATCH] 又换完成最新门锁。空气质量传感器完成数据和基本配置功能。开发图表和自动化的同事可下载此代码

---
 ZigbeeApp/Shared/Phone/MainPage/Controls/DeviceCard/Base/DeviceCardCommon.cs |  601 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 601 insertions(+), 0 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/MainPage/Controls/DeviceCard/Base/DeviceCardCommon.cs b/ZigbeeApp/Shared/Phone/MainPage/Controls/DeviceCard/Base/DeviceCardCommon.cs
new file mode 100644
index 0000000..7d71fea
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/MainPage/Controls/DeviceCard/Base/DeviceCardCommon.cs
@@ -0,0 +1,601 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Text;
+using ZigBee.Device;
+using Shared.Phone.UserCenter;
+
+namespace Shared.Phone.MainPage.Controls
+{
+  /// <summary>
+  /// 涓婚〉鐨勮澶囧崱鐗囨帶浠跺簳灞傚叡閫�(瀹藉害:458 + 14 * 2 楂樺害:305 + 43)
+  /// </summary>
+  public class DeviceCardCommon : FrameLayoutStatuControl
+  {
+    #region 鈻� 鍙橀噺澹版槑___________________________
+
+    /// <summary>
+    /// 璁惧瀵硅薄
+    /// </summary>
+    public CommonDevice device = null;
+    /// <summary>
+    /// 鍗$墖闇�瑕佽绉婚櫎鐨勪簨浠�
+    /// </summary>
+    public Action CardNeedRemoveEvent = null;
+    /// <summary>
+    /// 鑳屾櫙鍥剧墖鎺т欢
+    /// </summary>
+    private PicViewControl btnBackGroud = null;
+    /// <summary>
+    /// 璁惧鍚嶇О鎺т欢
+    /// </summary>
+    private NormalViewControl btnDeviceName = null;
+    /// <summary>
+    /// 璁惧鐨勮儗鏅渾鍦堝浘鎺т欢
+    /// </summary>
+    private FrameLayout fraDeviceRound = null;
+    /// <summary>
+    /// 璁惧鍥炬爣鎺т欢
+    /// </summary>
+    private IconViewControl btnDeviceIcon = null;
+    /// <summary>
+    /// 鐘舵�佹枃鏈帶浠�
+    /// </summary>
+    private NormalViewControl btnStatu = null;
+    /// <summary>
+    /// 寮�鍏虫帶浠�
+    /// </summary>
+    private PicViewControl btnSwitch = null;
+    /// <summary>
+    /// 鏀堕泦鎺т欢
+    /// </summary>
+    private IconViewControl btnCollect = null;
+    /// <summary>
+    /// 鐢垫睜鎺т欢
+    /// </summary>
+    private IconViewControl btnBattery = null;
+    /// <summary>
+    /// 鏄惁鑾峰彇缃戝叧鍙嶉鐨勭粨鏋�  0:娌℃湁鑾峰彇寰楀埌  1:宸茬粡鑾峰彇寰楀埌
+    /// </summary>
+    private int ResponeResult = 0;
+    /// <summary>
+    /// 鍒ゆ柇鏄惁鏈夊紑鍏冲姛鑳�
+    /// </summary>
+    private bool isHadOpenSwitch = true;
+    /// <summary>
+    /// 褰撳墠閫夋嫨鐨勬埧闂�
+    /// </summary>
+    public Common.Room nowSelectRoom = null;
+
+    #endregion
+
+    #region 鈻� 鍒濆鍖朹____________________________
+
+    /// <summary>
+    /// 涓婚〉鐨勮澶囧崱鐗囨帶浠跺簳灞傚叡閫�(瀹藉害:458 + 14 * 2 楂樺害:305 + 43)
+    /// </summary>
+    public DeviceCardCommon()
+    {
+      //鍥剧墖鐪熷疄瀹藉害+鍥剧墖鑷韩宸﹀彸绌虹櫧
+      this.Width = HdlControlLogic.Current.GetPictrueRealSize(458 + 14 * 2);
+      //鍥剧墖楂樺害+闃村奖
+      this.Height = HdlControlLogic.Current.GetPictrueRealSize(305 + 43);
+      //鍙栨秷鐐瑰嚮鐗规晥
+      this.UseClickStatu = false;
+    }
+
+    /// <summary>
+    /// 鍒濆鍖栨帶浠�
+    /// </summary>
+    /// <param name="i_device">鎸囧畾璁惧</param>
+    /// <param name="i_nowSelectRoom">褰撳墠閫夋嫨鐨勬埧闂�(鏈夌偣鐢ㄥ)</param>
+    public virtual void InitControl(CommonDevice i_device, Common.Room i_nowSelectRoom)
+    {
+      this.device = i_device;
+      this.nowSelectRoom = i_nowSelectRoom;
+      //鑳屾櫙鍥剧墖
+      this.btnBackGroud = new PicViewControl(this.Width, this.Height, false);
+      btnBackGroud.UnSelectedImagePath = "Item/FunctionCardView.png";
+      btnBackGroud.SelectedImagePath = "Item/FunctionCardViewSelected.png";
+      btnBackGroud.Gravity = Gravity.CenterHorizontal;
+      this.AddChidren(btnBackGroud, ChidrenBindMode.BindEvent);
+
+      //璁惧鍚嶇О鎺т欢
+      this.btnDeviceName = new NormalViewControl(360, 63, true);
+      btnDeviceName.X = HdlControlLogic.Current.GetPictrueRealSize(40);
+      btnDeviceName.Y = HdlControlLogic.Current.GetPictrueRealSize(17);
+      btnDeviceName.TextSize = 16;
+      btnDeviceName.TextColor = UserCenterColor.Current.TextGrayColor1;
+      btnDeviceName.SelectedTextColor = UserCenterColor.Current.White;
+      btnDeviceName.Text = Common.LocalDevice.Current.GetDeviceEpointName(i_device);
+      this.AddChidren(btnDeviceName, ChidrenBindMode.BindEvent);
+
+      //鏀堕泦鎺т欢
+      this.btnCollect = new IconViewControl(107);
+      btnCollect.X = HdlControlLogic.Current.GetPictrueRealSize(350);
+      btnCollect.Y = HdlControlLogic.Current.GetPictrueRealSize(12);
+      btnCollect.UnSelectedImagePath = "Item/Collection1.png";
+      btnCollect.SelectedImagePath = "Item/CollectionSelected1.png";
+      this.AddChidren(btnCollect, ChidrenBindMode.NotBind);
+      btnCollect.IsSelected = HdlRoomLogic.Current.IsCollectInRoom(i_device);
+      btnCollect.ButtonClickEvent += (sender, e) =>
+      {
+        //鐘舵�佸彇鍙�
+        btnCollect.IsSelected = !btnCollect.IsSelected;
+        if (btnCollect.IsSelected == false)
+        {
+          //鍙栨秷鏀惰棌
+          HdlRoomLogic.Current.DeleteLoveDevice(i_device);
+          if (this.nowSelectRoom.IsLove == true)
+          {
+            //濡傛灉褰撳墠鎴块棿鏄垜鐨勫枩鐖辩殑璇�,鍥炶皟鍗$墖琚垹闄ょ殑浜嬩欢
+            this.CardNeedRemoveEvent?.Invoke();
+          }
+        }
+        else
+        {
+          //娣诲姞鏀惰棌
+          HdlRoomLogic.Current.AddLoveDevice(i_device);
+        }
+      };
+
+      //璁惧鐨勮儗鏅渾鍦堝浘
+      this.fraDeviceRound = new FrameLayout();
+      fraDeviceRound.Width = HdlControlLogic.Current.GetPictrueRealSize(124);
+      fraDeviceRound.Height = HdlControlLogic.Current.GetPictrueRealSize(124);
+      fraDeviceRound.Radius = (uint)HdlControlLogic.Current.GetPictrueRealSize(124) / 2;
+      fraDeviceRound.X = HdlControlLogic.Current.GetPictrueRealSize(44);
+      fraDeviceRound.Y = HdlControlLogic.Current.GetPictrueRealSize(101);
+      fraDeviceRound.BackgroundColor = Common.ZigbeeColor.Current.GXCForFunctionUnSelectedBackgroundColor;
+      this.AddChidren(fraDeviceRound, ChidrenBindMode.BindEvent);
+
+      //璁惧鍥炬爣鎺т欢
+      this.btnDeviceIcon = new IconViewControl(86);
+      btnDeviceIcon.Gravity = Gravity.Center;
+      fraDeviceRound.AddChidren(btnDeviceIcon);
+      this.ChangedChidrenBindMode(fraDeviceRound, ChidrenBindMode.BindEvent);
+
+      //鐘舵�佹枃鏈帶浠�
+      this.btnStatu = new NormalViewControl(HdlControlLogic.Current.GetPictrueRealSize(400), HdlControlLogic.Current.GetPictrueRealSize(63), false);
+      btnStatu.X = HdlControlLogic.Current.GetPictrueRealSize(46);
+      btnStatu.Y = HdlControlLogic.Current.GetPictrueRealSize(236);
+      btnStatu.TextColor = UserCenterColor.Current.TextColor1;
+      btnStatu.SelectedTextColor = Common.ZigbeeColor.Current.GXCTextSelectedColor;
+      btnStatu.IsBold = true;
+      this.AddChidren(btnStatu, ChidrenBindMode.BindEvent);
+
+      //寮�鍏虫帶浠�(涓嶅姞鍏ョ埗鎺т欢涓�)
+      this.btnSwitch = new PicViewControl(109, 104);
+      btnSwitch.X = HdlControlLogic.Current.GetPictrueRealSize(325);
+      btnSwitch.Y = HdlControlLogic.Current.GetPictrueRealSize(202);
+      btnSwitch.UnSelectedImagePath = "Item/Switch1.png";
+      btnSwitch.SelectedImagePath = "Item/SwitchSelected1.png";
+
+      //鐢垫睜鎺т欢
+      if (this.device.Type == DeviceType.IASZone)
+      {
+        this.btnBattery = new IconViewControl(69);
+        btnBattery.X = HdlControlLogic.Current.GetPictrueRealSize(348);
+        btnBattery.Y = HdlControlLogic.Current.GetPictrueRealSize(236);
+        btnBattery.UnSelectedImagePath = "Item/Battery.png";
+        btnBattery.SelectedImagePath = "Item/BatterySelected.png";
+        this.AddChidren(btnBattery, ChidrenBindMode.BindEvent);
+        if (this.device.IsBatteryDown == false)
+        {
+          btnBattery.Visible = false;
+        }
+      }
+
+      //鍒锋柊淇℃伅
+      this.RefreshControlInfo(i_device);
+    }
+
+    #endregion
+
+    #region 鈻� 娣诲姞寮�鍏虫帶浠禵______________________
+
+    /// <summary>
+    /// 娣诲姞寮�鍏虫帶浠�
+    /// </summary>
+    /// <returns></returns>
+    public PicViewControl AddSwitchControl()
+    {
+      this.AddChidren(this.btnSwitch, ChidrenBindMode.NotBind);
+      return btnSwitch;
+    }
+
+    #endregion
+
+    #region 鈻� 鍒锋柊鎺т欢鐘舵�乢______________________
+
+    /// <summary>
+    /// 鍒锋柊鎺т欢鐘舵��
+    /// </summary>
+    /// <param name="i_device">璁惧瀵硅薄,涓嶆槸鎺ㄩ�佺殑閭d釜</param>
+    public void RefreshControlInfo(CommonDevice i_device)
+    {
+      bool collect = HdlRoomLogic.Current.IsCollectInRoom(i_device);
+      if (btnCollect.IsSelected != collect)
+      {
+        btnCollect.IsSelected = collect;
+      }
+      //璁惧鍥炬爣涔熷埛鏂�
+      Common.LocalDevice.Current.SetDeviceIconToControl2(btnDeviceIcon, i_device);
+      //鍚嶅瓧鍒锋柊
+      this.btnDeviceName.Text = Common.LocalDevice.Current.GetDeviceEpointName(i_device);
+      //妫�娴嬭澶囨槸鍚︽槸鎵撳紑鐘舵��
+      bool isOpen = this.CheckIsOpenStatu(i_device);
+      if (this.isHadOpenSwitch == true && i_device.HadReadDeviceStatu == false)
+      {
+        //濡傛灉杩欎釜鍗$墖鏈夊紑鍏冲姛鑳�,骞朵笖缃戝叧杩樻病鏈夊洖澶嶄箣鍓�,榛樿鏄叧闂姸鎬�
+        //绛夊緟缃戝叧鍥炲鍚庝細閲嶆柊鍒锋柊,涓嶇劧涓�鐩存槸鍏抽棴鐘舵��
+        isOpen = false;
+      }
+      //濡傛灉鏄紶鎰熷櫒绫�,鍒欓粯璁ゆ槸鍏崇殑鏁堟灉
+      if (this.device.Type == DeviceType.PMSensor || this.device.Type == DeviceType.IASZone
+          || this.device.Type == DeviceType.TemperatureSensor)
+      {
+        isOpen = false;
+      }
+
+      this.SetCardOpenStatu(isOpen);
+    }
+
+    /// <summary>
+    /// 璁剧疆鍗$墖鐘舵��
+    /// </summary>
+    /// <param name="isOpen"></param>
+    public void SetCardOpenStatu(bool isOpen)
+    {
+      //鑾峰彇璁惧绫诲瀷
+      var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { device });
+      if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.AirQualitySensor)
+      {
+        var aqSensor = (TemperatureSensor)this.device;
+        //绌烘皵璐ㄩ噺浼犳劅鍣� 
+        var tempAirQuality = aqSensor.AirQuality(aqSensor);
+        string curQuality = string.Empty;
+        if (tempAirQuality == 1)
+        {
+          curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
+        }
+        else if (tempAirQuality == 2)
+        {
+          curQuality = Language.StringByID(R.MyInternationalizationString.GoodAirQuality);
+        }
+        else if (tempAirQuality == 3)
+        {
+          curQuality = Language.StringByID(R.MyInternationalizationString.Pollution);
+
+        }
+        else
+        {
+          curQuality = "";
+        }
+        this.btnStatu.Text = curQuality;
+      }
+      else
+      {
+        //璁惧鐘舵�佸繀椤诲埛鏂�
+        this.btnStatu.Text = HdlDeviceOtherLogic.Current.GetDeviceStatu(this.device);
+      }
+
+      //寮�鍏虫帶浠�
+      if (btnSwitch != null && this.btnSwitch.IsSelected != isOpen)
+      {
+        this.btnSwitch.IsSelected = isOpen;
+      }
+
+      //鍒囨崲鍗$墖鐘舵�佺壒鏁�
+      this.SwitchCardStatuAppeal(isOpen);
+    }
+
+    /// <summary>
+    /// 璁剧疆鍗$墖鐨勫湪绾跨姸鎬�
+    /// </summary>
+    /// <param name="isOnline">鍦ㄧ嚎</param>
+    public void SetCardOnlineStatu(bool isOnline)
+    {
+      if (this.isHadOpenSwitch == true)
+      {
+        //濡傛灉杩欎釜璁惧鏈夊紑鍏冲姛鑳�,鍒欏湪绾跨姸鎬佷笉浼氭敼鍙樼姸鎬�
+        return;
+      }
+      this.SetCardOpenStatu(isOnline);
+    }
+
+    /// <summary>
+    /// 璁剧疆璁惧鐨勭姸鎬佹枃鏈�
+    /// </summary>
+    /// <param name="i_Text">鐘舵�佹枃鏈�</param>
+    public void SetDeviceStatuText(string i_Text)
+    {
+      this.btnStatu.Text = i_Text;
+    }
+
+    #endregion
+
+    #region 鈻� 鍙戦�佽幏鍙栫姸鎬佸懡浠__________________
+
+    /// <summary>
+    /// 鍙戦�佽幏鍙栫姸鎬佸懡浠�
+    /// </summary>
+    public virtual void SendStatuComand()
+    {
+      return;
+    }
+
+    #endregion
+
+    #region 鈻� 妫�娴嬭澶囨墦寮�鐘舵�乢__________________
+
+    /// <summary>
+    /// 妫�娴嬭澶囨槸鍚︽槸鎵撳紑鐘舵��
+    /// </summary>
+    /// <param name="i_device"></param>
+    /// <returns></returns>
+    public virtual bool CheckIsOpenStatu(CommonDevice i_device)
+    {
+      //濡傛灉杩欎釜鍑芥暟琚噸鍐欑殑璇�,鍒欎唬琛ㄨ繖涓澶囨湁寮�鍏冲姛鑳�
+      this.isHadOpenSwitch = false;
+      //榛樿鐢ㄥ湪绾跨姸鎬佹潵鍒ゆ柇
+      return Common.LocalDevice.Current.CheckDeviceIsOnline(i_device);
+    }
+
+
+    #endregion
+
+    #region 鈻� 娣卞害鍗$墖淇℃伅鐨勮繑鍥炰簨浠禵____________
+
+    /// <summary>
+    /// 娣卞害鍗$墖淇℃伅鐨勮繑鍥炰簨浠�(搴曞眰涓撶敤)
+    /// </summary>
+    /// <param name="device">璁惧</param>
+    public void CardDetailInfoBackEvent(CommonDevice device)
+    {
+      if (this.nowSelectRoom.IsLove == true)
+      {
+        //濡傛灉鏄富椤靛彇娑堟悳钘忕殑璇�,鍥炶皟鍗$墖琚垹闄ょ殑鍑芥暟
+        if (HdlRoomLogic.Current.IsCollectInRoom(device) == false)
+        {
+          this.CardNeedRemoveEvent?.Invoke();
+          return;
+        }
+      }
+      else
+      {
+        //濡傛灉杩欎釜璁惧鏀瑰彉浜嗘埧闂寸殑璇�,鍥炶皟鍗$墖琚垹闄ょ殑鍑芥暟
+        var nowRoom = HdlRoomLogic.Current.GetRoomByDevice(device);
+        if (nowRoom == null || nowRoom.Id != this.nowSelectRoom.Id)
+        {
+          this.CardNeedRemoveEvent?.Invoke();
+          return;
+        }
+      }
+      //濡傛灉瀹冭繕鍦ㄨ繖涓埧闂寸殑璇�,鍒锋柊鍗$墖淇℃伅
+      this.RefreshControlInfo(device);
+    }
+
+    #endregion
+
+    #region 鈻� 鏄惁鑾峰彇缃戝叧鍙嶉鐨勭粨鏋淿____________
+
+    /// <summary>
+    /// <para>妫�娴嬫槸鍚﹁幏鍙栫綉鍏冲弽棣堢殑缁撴灉,濡傛灉缃戝叧娌℃湁鍥炲,鍒欎細寮瑰嚭娑堟伅</para>
+    /// <para>鑾峰彇鍒板洖澶嶇粨鏋滀箣鍚�,璁板緱璋冪敤SetHadGetResponeResultStatu()鍑芥暟璁剧疆鐘舵��</para>
+    /// </summary>
+    /// <param name="oldOpenStatu">璁惧鐩墠鐨勫紑鍏崇姸鎬�</param>
+    public void StartCheckResponeResult(bool oldOpenStatu)
+    {
+      if (Common.Config.Instance.Home.IsVirtually == true)
+      {
+        //濡傛灉浣忓畢涓鸿櫄鎷熶綇瀹�,鍒欐鍔熻兘鏃犳晥
+        return;
+      }
+      this.ResponeResult = 0;
+      //寮�鍏虫寜閽笉鑳藉啀鐐瑰嚮
+      if (btnSwitch != null) { this.btnSwitch.CanClick = false; }
+
+      HdlThreadLogic.Current.RunThread(() =>
+      {
+        int waitime = 40;
+        while (waitime > 0)
+        {
+          System.Threading.Thread.Sleep(100);
+          if (this.ResponeResult == 1)
+          {
+            //宸茬粡鑾峰彇寰楀埌鏁版嵁
+            break;
+          }
+          waitime--;
+          //2绉掔殑鏃跺��,杩樻槸鎺ュ彈涓嶅埌鐨勮瘽,寮哄埗鍐嶆鍒锋柊璁惧鐘舵��
+          if (waitime == 20)
+          {
+            //浠庢柊鍙戦�佽幏鍙栬澶囩殑鐘舵��(寮哄埗)
+            this.device.HadReadDeviceStatu = false;
+            this.SendStatuComand();
+          }
+        }
+        if (waitime <= 0 && this.Parent != null)
+        {
+          //娌℃湁鑾峰彇寰楀埌缁撴灉
+          HdlThreadLogic.Current.RunMain(() =>
+          {
+            var msgContr = new ShowMsgControl(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.FAIL));
+            msgContr.Show();
+                  //鍙樻洿鍥炲師鏉ョ殑鐘舵��
+                  this.SetCardOpenStatu(oldOpenStatu);
+          });
+        }
+        //寮�鍏虫寜閽笉鑳藉啀鐐瑰嚮
+        if (btnSwitch != null) { this.btnSwitch.CanClick = true; }
+      });
+    }
+
+    /// <summary>
+    /// 璁剧疆宸茬粡鑾峰彇鍒扮綉鍏崇殑鍙嶉缁撴灉
+    /// </summary>
+    public void SetHadGetResponeResultStatu()
+    {
+      this.ResponeResult = 1;
+    }
+
+    /// <summary>
+    /// 鎺ユ敹缃戝叧鍥炲鐨勭姸鎬�(true:宸茬粡鎺ユ敹鍒扮綉鍏崇殑鍥炲 false:杩樻病鏈夋帴鏀跺埌缃戝叧鍥炲)
+    /// </summary>
+    /// <returns></returns>
+    public bool ReceiveResponeResultStatu()
+    {
+      return this.ResponeResult == 1;
+    }
+
+    #endregion
+
+    #region 鈻� 鏄剧ず浣庣數閲廮________________________
+
+    /// <summary>
+    /// 鍒锋柊鐢垫睜鐢甸噺鐘舵��
+    /// </summary>
+    public void RefreshBatteryStatu()
+    {
+      if (this.btnBattery == null) { return; }
+      if (this.device.IsBatteryDown == true)
+      {
+        //鐢甸噺浣�,鏄剧ず鍥炬爣
+        if (this.btnBattery.Visible == false)
+        {
+          this.btnBattery.Visible = true;
+        }
+      }
+      else
+      {
+        //鐢甸噺瓒冲,闅愯棌鍥炬爣
+        if (this.btnBattery.Visible == true)
+        {
+          this.btnBattery.Visible = false;
+        }
+      }
+    }
+
+    #endregion
+
+    #region 鈻� 涓�鑸柟娉昣__________________________
+
+    /// <summary>
+    /// 妫�娴嬭兘鍚﹀彂閫佽幏鍙栫姸鎬佸懡浠�
+    /// </summary>
+    /// <returns></returns>
+    public bool CheckCanSendStatuComand()
+    {
+      if (this.device.HadReadDeviceStatu == false)
+      {
+        //杩樻病鏈夎鍙栬繃鏁版嵁
+        return true;
+      }
+      if ((DateTime.Now - this.device.LastDateTime).TotalMinutes >= 10)
+      {
+        //10鍒嗛挓鍚庡彲浠ュ啀娆¤幏鍙�
+        return true;
+      }
+      return false;
+    }
+
+    #endregion
+
+    #region 鈻� 鍗$墖闂儊鐗规晥_______________________
+
+    /// <summary>
+    /// 鏄惁澶勪簬鐗规晥涓�
+    /// </summary>
+    private bool isAppeal = false;
+    /// <summary>
+    /// 寮�鍚崱鐗囬棯鐑佺壒鏁�
+    /// </summary>
+    public void StartCardLightAppeal()
+    {
+      //璁惧鐘舵�佸繀椤诲埛鏂�
+      this.btnStatu.Text = HdlDeviceOtherLogic.Current.GetDeviceStatu(this.device);
+
+      if (this.isAppeal == true) { return; }
+      this.isAppeal = true;
+
+      HdlThreadLogic.Current.RunThread(() =>
+      {
+        //闂儊5绉�,闂撮殧400姣
+        int count = 5000 / 400;
+        bool isOpen = false;
+        while (this.Parent != null && count >= 0)
+        {
+          //闂儊鐗规晥
+          HdlThreadLogic.Current.RunMain(() =>
+          {
+            isOpen = !isOpen;
+            this.SwitchCardStatuAppeal(isOpen);
+          });
+          System.Threading.Thread.Sleep(400);
+          count--;
+        }
+        if (this.Parent != null && isOpen == false)
+        {
+          HdlThreadLogic.Current.RunMain(() =>
+                {
+                  //缁撴潫鏃�,榛樿涓烘墦寮�鐗规晥
+                  this.SwitchCardStatuAppeal(true);
+                }, ShowErrorMode.NO);
+        }
+        this.isAppeal = false;
+
+      }, ShowErrorMode.NO);
+    }
+
+    /// <summary>
+    /// 鍒囨崲鍗$墖鐘舵�佺壒鏁�
+    /// </summary>
+    public void SwitchCardStatuAppeal(bool isOpen)
+    {
+      if (this.btnBackGroud.IsSelected == isOpen)
+      {
+        //鐘舵�佷竴鏍�,鍒欎笉闇�瑕佸鐞�
+        return;
+      }
+      //鑳屾櫙鍥剧墖
+      this.btnBackGroud.IsSelected = isOpen;
+      //璁惧鍚嶇О鎺т欢
+      this.btnDeviceName.IsSelected = isOpen;
+      this.btnDeviceName.IsBold = isOpen;
+      //璁惧鐨勮儗鏅渾鍦堝浘
+      if (isOpen == true)
+      {
+        fraDeviceRound.BackgroundColor = Common.ZigbeeColor.Current.GXCForFunctionBackgroundColor;
+      }
+      else
+      {
+        fraDeviceRound.BackgroundColor = Common.ZigbeeColor.Current.GXCForFunctionUnSelectedBackgroundColor;
+      }
+      //璁惧鍥炬爣鎺т欢
+      this.btnDeviceIcon.IsSelected = isOpen;
+      //鐘舵�佹枃鏈帶浠�
+      this.btnStatu.IsSelected = isOpen;
+      //鐢垫睜鎺т欢
+      if (this.btnBattery != null && this.btnBattery.Visible == true)
+      {
+        this.btnBattery.IsSelected = isOpen;
+      }
+    }
+
+    #endregion
+
+    #region 鈻� 鎺т欢鎽ф瘉___________________________
+
+    /// <summary>
+    /// 鎺т欢鎽ф瘉
+    /// </summary>
+    public override void RemoveFromParent()
+    {
+      this.CardNeedRemoveEvent = null;
+
+      base.RemoveFromParent();
+    }
+
+    #endregion
+  }
+}

--
Gitblit v1.8.0