黄学彪
2019-10-12 c6b35c3138b944830b5336bf610f918154dd47c7
ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceListMainForm.cs
@@ -303,7 +303,10 @@
        private void AddDeviceDetailRow(FrameListControl frame, CommonDevice device)
        {
            var rowInfo = this.dicRowInfo[device.DeviceAddr];
            rowInfo.dicDetailRow = new Dictionary<string, DeviceRoomControl>();
            if (rowInfo.dicDetailRow == null)
            {
                rowInfo.dicDetailRow = new Dictionary<string, DeviceRoomControl>();
            }
            //行控件
            var rowDevice = new DeviceRoomControl(device, frame.rowSpace / 2);
@@ -314,6 +317,8 @@
            rowDevice.frameTable.AddBottomLine();
            //右箭头
            rowDevice.frameTable.AddRightArrow();
            //在线状态
            rowDevice.isOnline = device.IsOnline == 1;
            //保存控件
            string maikey = Common.LocalDevice.Current.GetDeviceMainKeys(device);
@@ -521,28 +526,28 @@
            {
                //这里主要只是获取在线状态
                var zbway = HdlGatewayLogic.Current.GetLocalGateway(gwId);
                var result = await Common.LocalDevice.Current.GetDeviceListFromGateway(zbway, this.ReceiveDeviceStatuPush);
                var result = await Common.LocalDevice.Current.GetDeviceListFromGateway(zbway, false, this.ReceiveDeviceStatuPush, ShowErrorMode.NO);
            });
        }
        /// <summary>
        /// 接受设备在线推送(网关在线推送即在线)
        /// 接受设备在线推送
        /// </summary>
        /// <param name="device"></param>
        private void ReceiveDeviceStatuPush(CommonDevice device)
        {
            lock (dicRowInfo)
            {
                if (device == null || this.Parent == null)
                if (this.Parent == null)
                {
                    return;
                }
                DeviceObjectControl row = null;
                DeviceObjRowInfo rowInfo = null;
                if (this.dicRowInfo.ContainsKey(device.DeviceAddr) == true)
                {
                    row = this.dicRowInfo[device.DeviceAddr].MenuRow;
                    rowInfo = this.dicRowInfo[device.DeviceAddr];
                }
                if (row == null)
                if (rowInfo == null || rowInfo.MenuRow == null)
                {
                    return;
                }
@@ -561,11 +566,18 @@
                    localDevice.ReSave();
                }
                Application.RunOnMainThread(() =>
                HdlThreadLogic.Current.RunMain(() =>
                {
                    if (row != null)
                    if (rowInfo != null)
                    {
                        row.isOnline = device.IsOnline == 1;
                        rowInfo.MenuRow.isOnline = device.IsOnline == 1;
                        if (rowInfo.dicDetailRow != null)
                        {
                            foreach (var detailRow in rowInfo.dicDetailRow.Values)
                            {
                                detailRow.isOnline = rowInfo.MenuRow.isOnline;
                            }
                        }
                    }
                });
            }
@@ -707,11 +719,9 @@
        /// <param name="listDevice"></param>
        private void MargeAllDeviceByMac(List<CommonDevice> listDevice)
        {
            //设备排序
            List<CommonDevice> listSort = Common.LocalDevice.Current.SortDeviceList(listDevice);
            //根据Mac全部分组
            var dic = new Dictionary<string, List<CommonDevice>>();
            foreach (CommonDevice device in listSort)
            foreach (CommonDevice device in listDevice)
            {
                if (device == null || device.DeviceAddr == null)
                {