黄学彪
2020-07-06 f23ad1b3f9f6193f35f72104d690b21dc67d5c1f
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/DeviceControls/DeviceObjectControl.cs
@@ -20,24 +20,27 @@
        /// </summary>
        private bool hadRefresh = false;
        /// <summary>
        /// 在线状态
        /// </summary>
        private bool m_isOnline = false;
        /// <summary>
        /// 传感器推送中
        /// </summary>
        private bool sensorPushing = false;
        /// <summary>
        /// 在线状态
        /// </summary>
        public bool isOnline
        private bool m_isOnline = true;
        /// <summary>
        /// 在线状态
        /// </summary>
        public bool IsOnline
        {
            get { return m_isOnline; }
            set
            {
                m_isOnline = value;
                //设置在线状态的特效
                this.SetOnlineStatu(m_isOnline);
                if (m_isOnline != value)
                {
                    m_isOnline = value;
                    //设置在线状态的特效
                    this.SetOnlineStatu(m_isOnline);
                }
            }
        }
@@ -62,7 +65,7 @@
        /// 做成一个显示设备类型+设备MAC备注的RowLayout
        /// </summary>
        /// <param name="i_deviceMac">设备的Mac地址</param>
        /// <param name="i_ChidrenYaxis">子控件Y轴偏移量(真实值,有些界面需要这种特殊操作)</param>
        /// <param name="i_ChidrenYaxis">子控件Y轴偏移量(【列表控件的rowSpace/2】即可,不懂默认为0即可)</param>
        public DeviceObjectControl(string i_deviceMac, int i_ChidrenYaxis = 0) : base(i_ChidrenYaxis)
        {
            this.deviceMac = i_deviceMac;
@@ -74,34 +77,29 @@
        public void InitControl()
        {
            var listDevice = Common.LocalDevice.Current.GetDevicesByMac(this.deviceMac);
            if (listDevice.Count == 0)
            {
                //针对单纯只有一个200端点的设备
                listDevice.Add(Common.LocalDevice.Current.GetOTADevice(this.deviceMac));
            }
            //图标
            btnIcon = frameTable.AddLeftIcon(81);
            Common.LocalDevice.Current.SetDeviceBeloneIconToControl(btnIcon, listDevice);
            Common.LocalDevice.Current.SetDeviceObjectIconToControl(btnIcon, listDevice);
            //设备
            string deviceName = Common.LocalDevice.Current.GetDeviceMacName(listDevice[0]);
            btnDeviceName = frameTable.AddLeftCaption(deviceName, 800, 60, true);
            btnDeviceName.TextSize = 15;
            //这个坐标有点特殊
            btnDeviceName.Y = Application.GetRealHeight(12) + this.chidrenYaxis;
            btnDeviceName.Text = Common.LocalDevice.Current.GetDeviceObjectText(listDevice);
            frameTable.AddChidren(btnDeviceName, ChidrenBindMode.BindEventOnly);
            btnDeviceName = frameTable.AddTopView(deviceName, 800);
            frameTable.AddChidren(btnDeviceName, ChidrenBindMode.BindEvent);
            //房间
            string roomName = Common.LocalDevice.Current.GeteRealDeviceRoomName(listDevice[0]);
            btnDeviceRoom = frameTable.AddLeftCaption(roomName, 800, 49, true);
            //这个坐标有点特殊
            btnDeviceRoom.Y = Application.GetRealHeight(72) + this.chidrenYaxis;
            btnDeviceRoom.TextSize = 12;
            btnDeviceRoom.TextColor = UserCenterColor.Current.TextGrayColor1;
            btnDeviceRoom.Text = Common.LocalDevice.Current.GetDeviceMacName(listDevice[0]);
            frameTable.AddChidren(btnDeviceRoom, ChidrenBindMode.BindEventOnly);
            btnDeviceRoom = frameTable.AddBottomView(roomName, 800);
            //底线
            frameTable.AddBottomLine();
            //设置在线状态的特效
            this.isOnline = listDevice[0].IsOnline == 1;
            this.IsOnline = Common.LocalDevice.Current.CheckDeviceIsOnline(listDevice[0]);
        }
        #endregion
@@ -111,10 +109,10 @@
        /// <summary>
        /// 设置在线状态的特效
        /// </summary>
        /// <param name="isOnline"></param>
        private void SetOnlineStatu(bool isOnline)
        /// <param name="i_isOnline"></param>
        private void SetOnlineStatu(bool i_isOnline)
        {
            if (isOnline == false)
            if (i_isOnline == false)
            {
                btnDeviceName.TextColor = UserCenterColor.Current.TextGrayColor1;
            }
@@ -137,14 +135,17 @@
            hadRefresh = true;
            var listDevice = Common.LocalDevice.Current.GetDevicesByMac(this.deviceMac);
            if (listDevice.Count == 0)
            {
                //针对单纯只有一个200端点的设备
                listDevice.Add(Common.LocalDevice.Current.GetOTADevice(this.deviceMac));
            }
            //图标
            Common.LocalDevice.Current.SetDeviceBeloneIconToControl(btnIcon, listDevice);
            Common.LocalDevice.Current.SetDeviceObjectIconToControl(btnIcon, listDevice);
            //设备
            btnDeviceName.Text = Common.LocalDevice.Current.GetDeviceMacName(listDevice[0]);
            //设备房间
            btnDeviceRoom.Text = Common.LocalDevice.Current.GeteRealDeviceRoomName(listDevice[0]);
            //设置在线状态的特效
            this.isOnline = listDevice[0].IsOnline == 1;
        }
@@ -159,27 +160,60 @@
                return;
            }
            this.sensorPushing = true;
            //设备
            uint oldTextColor1 = btnDeviceName.TextColor;
            btnDeviceName.TextColor = UserCenterColor.Current.TextOrangeColor;
            //设备房间
            uint oldTextColor2 = btnDeviceRoom.TextColor;
            btnDeviceRoom.TextColor = UserCenterColor.Current.TextOrangeColor;
            HdlThreadLogic.Current.RunThread(() =>
            {
                System.Threading.Thread.Sleep(5000);
                HdlThreadLogic.Current.RunMain(() =>
                //闪烁5秒,间隔400毫秒
                int count = 5000 / 400;
                bool isOpen = false;
                while (this.Parent != null && count >= 0)
                {
                    if (btnDeviceName.Parent != null)
                    //闪烁特效
                    HdlThreadLogic.Current.RunMain(() =>
                    {
                        //设备
                        btnDeviceName.TextColor = oldTextColor1;
                        //设备房间
                        btnDeviceRoom.TextColor = oldTextColor2;
                    }
                    this.sensorPushing = false;
                }, ShowErrorMode.NO);
            });
                        isOpen = !isOpen;
                        this.SwitchRowStatuAppeal(isOpen);
                    }, ShowErrorMode.NO);
                    System.Threading.Thread.Sleep(400);
                    count--;
                }
                if (this.Parent != null && isOpen == true)
                {
                    HdlThreadLogic.Current.RunMain(() =>
                    {
                        //结束时,默认为无特效
                        this.SwitchRowStatuAppeal(false);
                    }, ShowErrorMode.NO);
                }
                this.sensorPushing = false;
            }, ShowErrorMode.NO);
        }
        /// <summary>
        /// 切换行闪烁特效
        /// </summary>
        /// <param name="isOpen"></param>
        private void SwitchRowStatuAppeal(bool isOpen)
        {
            if (isOpen == true)
            {
                //图标
                btnIcon.IsSelected = true;
                //设备
                btnDeviceName.TextColor = UserCenterColor.Current.TextOrangeColor;
                //设备房间
                btnDeviceRoom.TextColor = UserCenterColor.Current.TextOrangeColor;
            }
            else
            {
                //图标
                btnIcon.IsSelected = false;
                //设备
                btnDeviceName.TextColor = UserCenterColor.Current.TextColor1;
                //设备房间
                btnDeviceRoom.TextColor = UserCenterColor.Current.TextGrayColor1;
            }
        }
        #endregion