陈嘉乐
2020-07-10 48ba446936b51fffafa7c3600c0dadc6ac0e8c20
ZigbeeApp/Shared/Phone/MainPage/Controls/DeviceCard/Base/DeviceCardCommon.cs
@@ -57,6 +57,10 @@
        /// 判断是否有开关功能
        /// </summary>
        private bool isHadOpenSwitch = true;
        /// <summary>
        /// 当前选择的房间
        /// </summary>
        public Common.Room nowSelectRoom = null;
        #endregion
@@ -79,15 +83,17 @@
        /// 初始化控件
        /// </summary>
        /// <param name="i_device">指定设备</param>
        public virtual void InitControl(CommonDevice i_device)
        /// <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.BindEventOnly);
            this.AddChidren(btnBackGroud, ChidrenBindMode.BindEvent);
            //设备名称控件
            this.btnDeviceName = new NormalViewControl(320, 63, true);
@@ -97,7 +103,7 @@
            btnDeviceName.TextColor = UserCenterColor.Current.TextGrayColor1;
            btnDeviceName.SelectedTextColor = UserCenterColor.Current.White;
            btnDeviceName.Text = Common.LocalDevice.Current.GetDeviceEpointName(i_device);
            this.AddChidren(btnDeviceName, ChidrenBindMode.BindEventOnly);
            this.AddChidren(btnDeviceName, ChidrenBindMode.BindEvent);
            //收集控件
            this.btnCollect = new IconViewControl(107);
@@ -115,7 +121,7 @@
                {
                    //取消收藏
                    HdlRoomLogic.Current.DeleteLoveDevice(i_device);
                    if (HdlRoomLogic.Current.CurrentRoom.IsLove == true)
                    if (this.nowSelectRoom.IsLove == true)
                    {
                        //如果当前房间是我的喜爱的话,回调卡片被删除的事件
                        this.CardNeedRemoveEvent?.Invoke();
@@ -136,13 +142,13 @@
            fraDeviceRound.X = HdlControlLogic.Current.GetPictrueRealSize(44);
            fraDeviceRound.Y = HdlControlLogic.Current.GetPictrueRealSize(101);
            fraDeviceRound.BackgroundColor = Common.ZigbeeColor.Current.GXCForFunctionUnSelectedBackgroundColor;
            this.AddChidren(fraDeviceRound, ChidrenBindMode.BindEventOnly);
            this.AddChidren(fraDeviceRound, ChidrenBindMode.BindEvent);
            //设备图标控件
            this.btnDeviceIcon = new IconViewControl(86);
            btnDeviceIcon.Gravity = Gravity.Center;
            fraDeviceRound.AddChidren(btnDeviceIcon);
            this.ChangedChidrenBindMode(fraDeviceRound, ChidrenBindMode.BindEventOnly);
            this.ChangedChidrenBindMode(fraDeviceRound, ChidrenBindMode.BindEvent);
            //状态文本控件
            this.btnStatu = new NormalViewControl(HdlControlLogic.Current.GetPictrueRealSize(300), HdlControlLogic.Current.GetPictrueRealSize(63), false);
@@ -151,7 +157,7 @@
            btnStatu.TextColor = UserCenterColor.Current.TextColor1;
            btnStatu.SelectedTextColor = Common.ZigbeeColor.Current.GXCTextSelectedColor;
            btnStatu.IsBold = true;
            this.AddChidren(btnStatu, ChidrenBindMode.BindEventOnly);
            this.AddChidren(btnStatu, ChidrenBindMode.BindEvent);
            //开关控件(不加入父控件中)
            this.btnSwitch = new PicViewControl(109, 104);
@@ -296,7 +302,7 @@
            //如果这个函数被重写的话,则代表这个设备有开关功能
            this.isHadOpenSwitch = false;
            //默认用在线状态来判断
            return i_device.IsOnline == 1;
            return Common.LocalDevice.Current.CheckDeviceIsOnline(i_device);
        }
@@ -308,10 +314,9 @@
        /// 深度卡片信息的返回事件(底层专用)
        /// </summary>
        /// <param name="device">设备</param>
        /// <param name="room">房间</param>
        public void CardDetailInfoBackEvent(CommonDevice device, Common.Room room)
        public void CardDetailInfoBackEvent(CommonDevice device)
        {
            if (HdlRoomLogic.Current.CurrentRoom.IsLove == true)
            if (this.nowSelectRoom.IsLove == true)
            {
                //如果是主页取消搜藏的话,回调卡片被删除的函数
                if (HdlRoomLogic.Current.IsCollectInRoom(device) == false)
@@ -324,7 +329,7 @@
            {
                //如果这个设备改变了房间的话,回调卡片被删除的函数
                var nowRoom = HdlRoomLogic.Current.GetRoomByDevice(device);
                if (nowRoom == null || nowRoom.Id != HdlRoomLogic.Current.CurrentRoom.Id)
                if (nowRoom == null || nowRoom.Id != this.nowSelectRoom.Id)
                {
                    this.CardNeedRemoveEvent?.Invoke();
                    return;
@@ -356,7 +361,7 @@
            HdlThreadLogic.Current.RunThread(() =>
            {
                int waitime = 30;
                int waitime = 40;
                while (waitime > 0)
                {
                    System.Threading.Thread.Sleep(100);
@@ -366,8 +371,15 @@
                        break;
                    }
                    waitime--;
                    //2秒的时候,还是接受不到的话,强制再次刷新设备状态
                    if (waitime == 20)
                    {
                        //从新发送获取设备的状态(强制)
                        this.device.HadReadDeviceStatu = false;
                        this.SendStatuComand();
                    }
                }
                if (waitime <= 0)
                if (waitime <= 0 && this.Parent != null)
                {
                    //没有获取得到结果
                    HdlThreadLogic.Current.RunMain(() =>