黄学彪
2020-12-17 9f326f4000847e6167d8166fa2f6a66f53cb3734
ZigbeeApp/Shared/Phone/UserCenter/Gateway/Update/GatewayHistoryFirmwareVersionForm.cs
@@ -29,7 +29,7 @@
        /// <summary>
        /// 列表控件
        /// </summary>
        private VerticalScrolViewLayout listView = null;
        private VerticalListControl listView = null;
        /// <summary>
        /// 虚拟驱动号
        /// </summary>
@@ -37,7 +37,7 @@
        /// <summary>
        /// 界面关闭的Action(虚拟设备,协调器,网关)
        /// </summary>
        public Action<FirmwareVersionInfo, FirmwareVersionInfo, FirmwareVersionInfo, List<ZbGatewayData.DriveCodeObj>> FormCloseAction = null;
        public Action<FirmwareVersionInfo, FirmwareVersionInfo, FirmwareVersionInfo, List<ZbGatewayData.DriveCodeObj>> SelectFirmwareInfoEvent = null;
        /// <summary>
        /// 画面显示(底层会固定调用此方法,借以完成画面创建)
@@ -60,144 +60,175 @@
            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uHistoryVersion) + "(测试版,后面估计会删除)");
            //初始化中部控件
            //this.InitMiddleFrame();
            this.InitMiddleFrame();
        }
        ///// <summary>
        ///// 初始化中部控件
        ///// </summary>
        //private void InitMiddleFrame()
        //{
        //    //清空bodyFrame
        //    this.ClearBodyFrame();
        /// <summary>
        /// 初始化中部控件
        /// </summary>
        private void InitMiddleFrame()
        {
            //清空bodyFrame
            this.ClearBodyFrame();
        //    listView = new VerticalScrolViewLayout();
        //    listView.Height = bodyFrameLayout.Height;
        //    bodyFrameLayout.AddChidren(listView);
            listView = new VerticalListControl();
            listView.Height = bodyFrameLayout.Height;
            listView.BackgroundColor = UserCenterColor.Current.White;
            bodyFrameLayout.AddChidren(listView);
        //    //网关
        //    var listData1 = HdlFirmwareUpdateLogic.GetFirmwareVersionListInfo(FirmwareLevelType.Linux,
        //         Common.LocalGateway.Current.GetGwInfoAttribute(upDatezbGateway, "LinuxHWVersion").ToString(),
        //         Common.LocalGateway.Current.GetGwInfoAttribute(upDatezbGateway, "LinuxImageType").ToString());
            //网关
            var listData1 = HdlFirmwareUpdateLogic.Current.GetFirmwareVersionListInfo(FirmwareLevelType.Linux,
                 upDatezbGateway.LinuxHardVersion.ToString(),
                 upDatezbGateway.LinuxImageType.ToString());
        //    //协调器
        //    var listData2 = HdlFirmwareUpdateLogic.GetFirmwareVersionListInfo(FirmwareLevelType.Coordinator,
        //         Common.LocalGateway.Current.GetGwInfoAttribute(upDatezbGateway, "ZbHWVersion").ToString(),
        //         Common.LocalGateway.Current.GetGwInfoAttribute(upDatezbGateway, "ZbImageType").ToString());
            //协调器
            var listData2 = HdlFirmwareUpdateLogic.Current.GetFirmwareVersionListInfo(FirmwareLevelType.A协调器,
                 upDatezbGateway.CoordinatorHardVersion.ToString(),
                 upDatezbGateway.CoordinatorImageId.ToString());
        //    //虚拟驱动
        //    var listData3 = new List<FirmwareVersionInfo>();
        //    if (this.listVode != null && this.listVode.Count > 0)
        //    {
        //        //如果这个网关要有虚拟驱动这个东西的时候才考虑
        //        listData3 = HdlFirmwareUpdateLogic.GetFirmwareVersionListInfo(FirmwareLevelType.VirtualDevice,
        //             this.listVode[0].DriveHwVersion.ToString(),
        //             this.listVode[0].DriveImageType.ToString());
        //    }
            //虚拟驱动
            var listData3 = new List<FirmwareVersionInfo>();
            if (this.listVode != null && this.listVode.Count > 0)
            {
                //如果这个网关要有虚拟驱动这个东西的时候才考虑
                listData3 = HdlFirmwareUpdateLogic.Current.GetFirmwareVersionListInfo(FirmwareLevelType.A虚拟驱动,
                     this.listVode[0].DriveHwVersion.ToString(),
                     this.listVode[0].DriveImageType.ToString());
            }
        //    HdlThreadLogic.Current.Run(() =>
        //    {
        //        string fVersion = Common.LocalGateway.Current.GetGwInfoAttribute(upDatezbGateway, "LinuxFWVersion").ToString();
        //        string imageType = Common.LocalGateway.Current.GetGwInfoAttribute(upDatezbGateway, "LinuxImageType").ToString();
        //        foreach (var data in listData1)
        //        {
        //            //if (data.ImagType == imageType && fVersion == data.FirmwareVersion)
        //            //{
        //            //    //同一个东西,不显示出来
        //            //    continue;
        //            //}
        //            Application.RunOnMainThread(() =>
        //            {
        //                this.AddRowlayout(data, FirmwareLevelType.Linux);
        //            });
        //        }
            HdlThreadLogic.Current.RunMainInThread(() =>
            {
                bool canAddTitle = true;
                int fVersion1 = upDatezbGateway.LinuxFirmwareVersion;
                string imageType1 = upDatezbGateway.LinuxImageType.ToString();
                foreach (var data in listData1)
                {
                    if (data.ImagType == imageType1 && fVersion1 == data.FirmwareVersion)
                    {
                        //同一个东西,不显示出来
                        continue;
                    }
                    if (canAddTitle == true)
                    {
                        this.AddTitleRowlayout("Linux模块");
                        canAddTitle = false;
                    }
                    this.AddRowlayout(data, FirmwareLevelType.Linux);
                }
        //        fVersion = Common.LocalGateway.Current.GetGwInfoAttribute(upDatezbGateway, "ZbFWVersion").ToString();
        //        imageType = Common.LocalGateway.Current.GetGwInfoAttribute(upDatezbGateway, "ZbImageType").ToString();
        //        foreach (var data in listData2)
        //        {
        //            if (data.ImagType == imageType && Convert.ToInt32(fVersion) == data.FirmwareVersion)
        //            {
        //                //同一个东西,不显示出来
        //                continue;
        //            }
        //            Application.RunOnMainThread(() =>
        //            {
        //                this.AddRowlayout(data, FirmwareLevelType.Coordinator);
        //            });
        //        }
                canAddTitle = true;
                int fVersion2 = upDatezbGateway.CoordinatorFirmwareVersion;
                string imageType2 = upDatezbGateway.CoordinatorImageId.ToString();
                foreach (var data in listData2)
                {
                    if (data.ImagType == imageType2 && fVersion2 == data.FirmwareVersion)
                    {
                        //同一个东西,不显示出来
                        continue;
                    }
                    if (canAddTitle == true)
                    {
                        this.AddTitleRowlayout("协调器模块");
                        canAddTitle = false;
                    }
                    this.AddRowlayout(data, FirmwareLevelType.A协调器);
                }
        //        imageType = this.listVode[0].DriveImageType.ToString();
        //        foreach (var data in listData3)
        //        {
        //            if (data.ImagType == imageType && this.listVode[0].DriveFwVersion == data.FirmwareVersion)
        //            {
        //                //同一个东西,不显示出来
        //                continue;
        //            }
        //            Application.RunOnMainThread(() =>
        //            {
        //                this.AddRowlayout(data, FirmwareLevelType.VirtualDevice);
        //            });
        //        }
        //    });
        //}
                canAddTitle = true;
                string imageType3 = this.listVode[0].DriveImageType.ToString();
                foreach (var data in listData3)
                {
                    if (data.ImagType == imageType3 && this.listVode[0].DriveFwVersion == data.FirmwareVersion)
                    {
                        //同一个东西,不显示出来
                        continue;
                    }
                    if (canAddTitle == true)
                    {
                        this.AddTitleRowlayout("虚拟设备模块");
                        canAddTitle = false;
                    }
                    this.AddRowlayout(data, FirmwareLevelType.A虚拟驱动);
                }
                listView.AdjustRealHeight(Application.GetRealHeight(23));
            });
        }
        ///// <summary>
        ///// 添加行
        ///// </summary>
        ///// <param name="info"></param>
        ///// <param name="levelType"></param>
        //private void AddRowlayout(FirmwareVersionInfo info, FirmwareLevelType levelType)
        //{
        //    var rowlayout = new StatuRowLayout(listView);
        /// <summary>
        /// 添加行
        /// </summary>
        /// <param name="info"></param>
        /// <param name="levelType"></param>
        private void AddRowlayout(FirmwareVersionInfo info, FirmwareLevelType levelType)
        {
            var rowlayout = new FrameRowControl();
            this.listView.AddChidren(rowlayout);
        //    //图标
        //    var btnIcon = new RowLeftIconView();
        //    Common.LocalGateway.Current.SetGatewayIcon(btnIcon, this.upDatezbGateway);
        //    rowlayout.AddChidren(btnIcon);
            //图标
            var btnIcon = rowlayout.AddLeftIcon(81);
            HdlGatewayLogic.Current.SetGatewayIcon(btnIcon, this.upDatezbGateway);
            rowlayout.AddChidren(btnIcon);
        //    //指定的网关
        //    var btnGateway = new RowTopBlackView();
        //    btnGateway.BackgroundColor = UserCenterColor.Current.Transparent;
        //    btnGateway.Text = info.ShowName;
        //    rowlayout.AddChidren(btnGateway);
            //指定的网关
            rowlayout.AddTopView(info.ShowName, 800);
        //    //固件信息
        //    var btnVersion = new RowBottomBlackView();
        //    btnVersion.Text = Common.LocalDevice.Current.AppendVersion(info.FirmwareVersion);
        //    rowlayout.AddChidren(btnVersion);
            //固件信息
            string firmwareText = HdlDeviceCommonLogic.Current.AppendVersion(info.FirmwareVersion);
            firmwareText += "        " + HdlCommonLogic.Current.ConvertUtcTimeToLocalTime(info.CreatedOnUtc).ToString("yyyy/MM/dd HH:mm:ss");
            rowlayout.AddBottomView(firmwareText, 800);
        //    //向右的图标
        //    rowlayout.AddRightArrow();
            //向右的图标
            rowlayout.AddRightArrow();
            rowlayout.AddBottomLine();
        //    rowlayout.MouseUpEvent += (sender, e) =>
        //    {
        //        string gwID = Common.LocalGateway.Current.GetGatewayId(upDatezbGateway);
        //        if (FirmwareUpdateResourse.dicGatewayUpdateList.ContainsKey(gwID) == true)
        //        {
        //            this.CloseForm();
        //            return;
        //        }
        //        if (levelType == FirmwareLevelType.Linux)
        //        {
        //            this.gatewayFirmware = info;
        //        }
        //        else if (levelType == FirmwareLevelType.Coordinator)
        //        {
        //            this.coordinatorFirmware = info;
        //        }
        //        else if (levelType == FirmwareLevelType.VirtualDevice)
        //        {
        //            this.virtualFirmware = info;
        //            this.virtualFirmware.VirtualCode = this.listVode[0].DriveCode;
        //        }
            rowlayout.ButtonClickEvent += (sender, e) =>
            {
                if (HdlFirmwareUpdateResourse.dicUpdateList.ContainsKey(upDatezbGateway.GwId) == true)
                {
                    this.CloseForm();
                    return;
                }
                if (levelType == FirmwareLevelType.Linux)
                {
                    this.gatewayFirmware = info;
                }
                else if (levelType == FirmwareLevelType.A协调器)
                {
                    this.coordinatorFirmware = info;
                }
                else if (levelType == FirmwareLevelType.A虚拟驱动)
                {
                    this.virtualFirmware = info;
                    this.virtualFirmware.VirtualCode = this.listVode[0].DriveCode;
                }
        //        FormCloseAction?.Invoke(this.virtualFirmware, this.coordinatorFirmware, this.gatewayFirmware, this.listVode);
        //        FormCloseAction = null;
                SelectFirmwareInfoEvent?.Invoke(this.virtualFirmware, this.coordinatorFirmware, this.gatewayFirmware, this.listVode);
        //        this.CloseForm();
        //    };
        //}
                this.CloseForm();
            };
        }
        /// <summary>
        /// 添加标题行
        /// </summary>
        /// <param name="title"></param>
        private void AddTitleRowlayout(string title)
        {
            var rowlayout = new FrameRowControl();
            rowlayout.UseClickStatu = false;
            this.listView.AddChidren(rowlayout);
            rowlayout.AddLeftCaption(title, 800);
        }
        /// <summary>
        /// 界面关闭
        /// </summary>
        public override void CloseFormBefore()
        {
            SelectFirmwareInfoEvent = null;
            base.CloseFormBefore();
        }
    }
}