HDL Home App 第二版本 旧平台金堂用 正在使用
hxb
2022-08-30 25429f085093d89d543a0b90e30d0d62d1b7dac9
ZigbeeApp/Shared/Phone/MainPage/HomeMainPageForm.cs
old mode 100755 new mode 100644
@@ -84,6 +84,8 @@
            this.AddSensorDeviceReportEvent();
            //开启传感器状态还原的线程
            this.StartRecoverSenorStatuThread();
            //显示App公告
            this.ShowAppNotice();
        }
        /// <summary>
@@ -100,7 +102,7 @@
            //楼层图标
            var btnFloorIcon = new IconViewControl(69);
            btnFloorIcon.X = HdlControlResourse.XXLeft;
            btnFloorIcon.X = ControlCommonResourse.XXLeft;
            btnFloorIcon.Gravity = Gravity.CenterVertical;
            btnFloorIcon.UnSelectedImagePath = "Item/Floor.png";
            topFrameLayout.AddChidren(btnFloorIcon);
@@ -135,7 +137,7 @@
            //可视对讲快捷方式
            Shared.Phone.Device.VideoIntercom.VideoMachine.AccountSupportVideo(topFrameLayout);
            //安防快捷方式
            if (HdlUserCenterResourse.ResidenceOption.SafetyShortcut)
            if (UserCenterResourse.ResidenceOption.SafetyShortcut)
            {
                var btnSafety = new Controls.SafetyShortcutControl();
                btnSafety.X = Application.GetRealWidth(860);
@@ -152,7 +154,7 @@
            //住宅名字
            var btnHouseName = new NormalViewControl(700, 95, true);
            btnHouseName.X = HdlControlResourse.XXLeft;
            btnHouseName.X = ControlCommonResourse.XXLeft;
            btnHouseName.Y = Application.GetRealHeight(161);
            btnHouseName.TextSize = 24;
            btnHouseName.TextColor = ZigbeeColor.Current.GXCTextDeepBlackColor;
@@ -188,7 +190,7 @@
        private void InitMidFrameLayoutControl()
        {
            //成员身份不允许添加网关
            if (HdlUserCenterResourse.ResidenceOption.AuthorityNo == 3)
            if (UserCenterResourse.UserInfo.AuthorityNo == 3)
            {
                //初始化场景,功能的切换控件
                this.InitSceneFunctionSwitchControl();
@@ -247,13 +249,13 @@
            btnFunction.TextID = R.MyInternationalizationString.Function;
            btnFunction.TextAlignment = TextAlignment.Center;
            functionSceneView.AddChidren(btnFunction);
            if (HdlUserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex == 1)
            if (UserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex == 1)
            {
                btnScene.IsSelected = true;
                btnScene.TextSize = 17;
                btnScene.IsBold = true;
            }
            else if (HdlUserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex == 2)
            else if (UserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex == 2)
            {
                btnFunction.IsSelected = true;
                btnFunction.TextSize = 17;
@@ -275,7 +277,7 @@
                    return;
                }
                //功能分支选择
                HdlUserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex = 2;
                UserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex = 2;
                btnScene.IsSelected = false;
                btnScene.TextSize = 15;
@@ -295,7 +297,7 @@
                    return;
                }
                //场景分支选择
                HdlUserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex = 1;
                UserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex = 1;
                btnScene.IsSelected = true;
                btnScene.TextSize = 17;
@@ -549,9 +551,9 @@
            var listDevice = new List<CommonDevice>();
            foreach (var mainkeys in HdlRoomLogic.Current.NowMainPageRoom.ListDevice)
            {
                var device = HdlDeviceCommonLogic.Current.GetDevice(mainkeys);
                var device = LocalDevice.Current.GetDevice(mainkeys);
                //判断该设备能否显示在主页
                if (HdlDeviceCommonLogic.Current.CanShowInHomeHomeMainPage(device) == false)
                if (LocalDevice.Current.CanShowInHomeHomeMainPage(device) == false)
                {
                    continue;
                }
@@ -630,6 +632,11 @@
                    {
                        cardContr = new Controls.DevicePmSensorCardControl();
                    }
                    // 晾衣架
                    else if (device.Type == DeviceType.Airer)
                    {
                        cardContr = new Controls.DeviceAirerCardControl();
                    }
                    //彩灯(调光器)
                    else if (device.Type == DeviceType.DimmableLight)
                    {
@@ -643,7 +650,17 @@
                    //温湿度
                    else if (device.Type == DeviceType.TemperatureSensor)
                    {
                        cardContr = new Controls.DeviceTemperatureCardControl();
                        //空气质量传感器
                        //获取设备类型
                        var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { device });
                        if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.AirQualitySensor)
                        {
                            cardContr = new Controls.DeviceAirQualitySensorCardControl();
                        }
                        else
                        {
                            cardContr = new Controls.DeviceTemperatureCardControl();
                        }
                    }
                    //门锁
                    else if (device.Type == DeviceType.DoorLock)
@@ -656,7 +673,7 @@
                        cardContr = new Controls.DeviceColorTemperatureCardControl();
                    }
                    //无法识别
                    else
                    if (cardContr == null)
                    {
                        cardContr = new Controls.DeviceCardCommon();
                    }
@@ -670,7 +687,7 @@
                    cardContr.CardNeedRemoveEvent += () =>
                    {
                        //重置设备卡片控件坐标(卡片需要被删除专用)
                        this.ResetDeviceCardControlLocation(HdlDeviceCommonLogic.Current.GetDeviceMainKeys(device));
                        this.ResetDeviceCardControlLocation(LocalDevice.Current.GetDeviceMainKeys(device));
                    };
                    //设备计数
                    contrCount++;
@@ -682,7 +699,7 @@
                        YY = cardContr.Bottom + this.GetPictrueRealSize(15);
                    }
                    //控件记录到缓存中
                    this.dicDeviceCardControl[HdlDeviceCommonLogic.Current.GetDeviceMainKeys(device)] = cardContr;
                    this.dicDeviceCardControl[LocalDevice.Current.GetDeviceMainKeys(device)] = cardContr;
                    //加缓存,然后发命令
                    listContr.Add(cardContr);
@@ -697,6 +714,7 @@
                        }
                        HdlThreadLogic.Current.RunThread(() =>
                        {
                            int sendCount = 0;
                            while (listDeviceBackContr.Parent != null)
                            {
                                bool hadSend = false;
@@ -712,7 +730,7 @@
                                        //发送获取状态的命令
                                        listContr[i].SendStatuComand();
                                        hadSend = true;
                                        System.Threading.Thread.Sleep(200);
                                        System.Threading.Thread.Sleep(300);
                                    }
                                }
                                if (hadSend == false)
@@ -720,7 +738,13 @@
                                    //如果已经全部回路都接收了网关回复,则不再二次发送
                                    break;
                                }
                                System.Threading.Thread.Sleep(2000);
                                sendCount++;
                                if (sendCount == 2)
                                {
                                    //就发2次
                                    break;
                                }
                                System.Threading.Thread.Sleep(5000);
                            }
                        }, ShowErrorMode.NO);
                    }
@@ -1057,7 +1081,7 @@
            //让界面别闪烁
            HdlThreadLogic.Current.RunMainInThread(() =>
            {
                if (HdlUserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex == 2)
                if (UserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex == 2)
                {
                    //功能
                    this.ShowFunction();
@@ -1113,11 +1137,23 @@
                HdlThreadLogic.Current.RunMain(() =>
                {
                    //处理一般设备的上报数据
                    string mainKeys = HdlDeviceCommonLogic.Current.GetDeviceMainKeys(report);
                    string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report);
                    //晾衣架上报需要特殊处理,其他上报的回路统一转为端点1
                    var tempList = LocalDevice.Current.GetDevicesByMac(report.DeviceAddr);
                    if (tempList.Count > 0)
                    {
                        var tempDeviceEnum = LocalDevice.Current.GetMyDeviceEnumInfo(tempList);
                        if (tempDeviceEnum.ConcreteType == Common.DeviceConcreteType.Airer)
                        {
                            mainKeys = report.DeviceAddr + "_" + 1;
                        }
                    }
                    if (this.dicDeviceCardControl.ContainsKey(mainKeys) == true)
                    {
                        //刷新卡片信息
                        var locadevice = HdlDeviceCommonLogic.Current.GetDevice(mainKeys);
                        var locadevice = LocalDevice.Current.GetDevice(mainKeys);
                        //已经接收到网关的反馈 2020.05.09:删除Ack主题
                        this.dicDeviceCardControl[mainKeys].SetHadGetResponeResultStatu();
                        //刷新控件
@@ -1140,11 +1176,11 @@
            {
                HdlThreadLogic.Current.RunMain(() =>
                {
                    string mainKeys = HdlDeviceCommonLogic.Current.GetDeviceMainKeys(report);
                    string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report);
                    if (this.dicDeviceCardControl.ContainsKey(mainKeys) == true)
                    {
                        //刷新卡片状态
                        bool bolOnline = HdlDeviceCommonLogic.Current.CheckDeviceIsOnline(report);
                        bool bolOnline = Common.LocalDevice.Current.CheckDeviceIsOnline(report);
                        this.dicDeviceCardControl[mainKeys].SetCardOnlineStatu(bolOnline);
                        return;
                    }
@@ -1168,7 +1204,7 @@
                HdlThreadLogic.Current.RunMain(() =>
                {
                    //处理传感器上报数据
                    string mainKeys = HdlDeviceCommonLogic.Current.GetDeviceMainKeys(report);
                    string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report);
                    if (this.dicDeviceCardControl.ContainsKey(mainKeys) == true)
                    {
                        //开启卡片闪烁特效
@@ -1204,7 +1240,7 @@
                                HdlThreadLogic.Current.RunMain(() =>
                                {
                                    //设备状态必须刷新
                                    string statuText = HdlDeviceCommonLogic.Current.GetMainPageDeviceStatuText(contr.device);
                                    string statuText = HdlDeviceOtherLogic.Current.GetDeviceStatu(contr.device);
                                    contr.SetDeviceStatuText(statuText);
                                    //传感器切换为灰色状态
                                    contr.SwitchCardStatuAppeal(false);
@@ -1280,6 +1316,109 @@
            return true;
        }
        /// <summary>
        /// 显示App公告
        /// </summary>
        private void ShowAppNotice()
        {
            HdlThreadLogic.Current.RunThread(() =>
            {
                if (HdlFirmwareUpdateLogic.CheckCanShowNotice() == true)
                {
                    while (this.IsFormOpen("HdlAutoBackupForm") == true)
                    {
                        //自动备份的界面正在打开中
                        System.Threading.Thread.Sleep(1000);
                    }
                    HdlThreadLogic.Current.RunMain(() =>
                    {
                        //加载系统公告
                        var form2 = new AppNoticeForm();
                        UserView.UserPage.Instance.AddChidren(form2);
                        form2.Show();
                        form2.FinishEvent += () =>
                        {
                            HdlThreadLogic.Current.RunThread(() =>
                            {
                                System.Threading.Thread.Sleep(1000);
                                //显示App升级的弹窗
                                this.ShowUpdateAppDialog();
                            }, ShowErrorMode.NO);
                        };
                    }, ShowErrorMode.NO);
                }
                else
                {
                    //显示App升级的弹窗
                    this.ShowUpdateAppDialog();
                }
            }, ShowErrorMode.NO);
        }
        /// <summary>
        /// 显示App升级的弹窗
        /// </summary>
        private void ShowUpdateAppDialog()
        {
            //App升级提示
            if (string.IsNullOrEmpty(FirmwareUpdateResourse.AppNeedUpdateUrl) == false)
            {
                //整了一次之后就不整了
                string updateUrl = FirmwareUpdateResourse.AppNeedUpdateUrl;
                FirmwareUpdateResourse.AppNeedUpdateUrl = string.Empty;
                while (this.IsFormOpen("HdlAutoBackupForm") == true)
                {
                    //自动备份的界面正在打开中
                    System.Threading.Thread.Sleep(1000);
                }
                //发现APP新版本,马上升级{0}开启新体验哦~
                this.ShowMassage(ShowMsgType.Confirm, Language.StringByID(R.MyInternationalizationString.uAppUpdateMsg1).Replace("{0}", "\r\n"), () =>
                {
#if iOS
                    Uri url = new Uri(updateUrl);
                    UIKit.UIApplication.SharedApplication.OpenUrl(url);
#endif
#if Android
                    HDLUtils.OpenUrl(updateUrl);
#endif
                }, Language.StringByID(R.MyInternationalizationString.uLevelUp));
                //App升级提示优先
                return;
            }
            //网关升级提示
            if (FirmwareUpdateResourse.ListGatewayNeedUpdate.Count > 0)
            {
                //整完之后就清空
                var listGateway = new List<string>();
                listGateway.AddRange(FirmwareUpdateResourse.ListGatewayNeedUpdate);
                FirmwareUpdateResourse.ListGatewayNeedUpdate = new List<string>();
                while (this.IsFormOpen("HdlAutoBackupForm") == true)
                {
                    //自动备份的界面正在打开中
                    System.Threading.Thread.Sleep(1000);
                }
                foreach (var gwId in listGateway)
                {
                    //目前只整一个
                    if (HdlGatewayLogic.Current.IsGatewayExist(gwId) == true)
                    {
                        //发现网关新版本,马上升级{0}开启新体验哦~
                        this.ShowMassage(ShowMsgType.Confirm, Language.StringByID(R.MyInternationalizationString.uGatewayUpdateMsg1).Replace("{0}", "\r\n"), () =>
                        {
                            var form = new UserCenter.GatewayUpdate.GatewayFirmwareUpdateForm();
                            form.AddForm(HdlGatewayLogic.Current.GetLocalGateway(gwId));
                        });
                        break;
                    }
                }
                return;
            }
        }
        #endregion
        #region ■ 界面重新激活事件___________________
@@ -1293,6 +1432,6 @@
            return 1;
        }
        #endregion
#endregion
    }
}