黄学彪
2020-04-15 23532fa8ad34c89b6d24b01eaef6475fd0aad898
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs
@@ -207,8 +207,8 @@
            btnFuncSet = new Button
            {
                X = Application.GetRealWidth(103),
                Height = Application.GetRealHeight(69),
                Width = Application.GetRealWidth(69),
                Height = Application.GetMinReal(69),
                Width = Application.GetMinReal(69),
                UnSelectedImagePath = "DoorLock/SettingIcon.png",
            };
            btnFuncSetFrameLayout.AddChidren(btnFuncSet);
@@ -269,8 +269,8 @@
            midTopFrameLayout.AddChidren(btnRecordFrameLayout);
            btnRecord = new Button()
            {
                Width = Application.GetRealWidth(69),
                Height = Application.GetRealHeight(69),
                Width = Application.GetMinReal(69),
                Height = Application.GetMinReal(69),
                X = Application.GetRealWidth(46),
                Y = Application.GetRealHeight(46),
                UnSelectedImagePath = "DoorLock/RecordIcon.png",
@@ -287,8 +287,8 @@
            midTopFrameLayout.AddChidren(btnCollectFrameLayout);
            btnCollect = new Button()
            {
                Width = Application.GetRealWidth(69),
                Height = Application.GetRealHeight(69),
                Width = Application.GetMinReal(69),
                Height = Application.GetMinReal(69),
                X = Application.GetRealWidth(15),
                Y = Application.GetRealHeight(46),
                UnSelectedImagePath = "Item/Collection.png",
@@ -329,8 +329,8 @@
            //门锁开/关图片
            btnDoorLockPic = new Button()
            {
                Width = Application.GetRealWidth(383),
                Height = Application.GetRealHeight(343),
                Width = Application.GetMinReal(383),
                Height = Application.GetMinReal(343),
                X = Application.GetRealWidth(161),
                Y = Application.GetRealHeight(415),
                UnSelectedImagePath = "DoorLock/DoorLockPicClose.png",
@@ -378,8 +378,8 @@
            progressButton = new Button()
            {
                Width = Application.GetRealWidth(84),//639-35
                Height = Application.GetRealHeight(93),
                Width = Application.GetMinReal(84),//639-35
                Height = Application.GetMinReal(93),
                X = Application.GetRealWidth(58),
                Y = Application.GetRealHeight(347),
                UnSelectedImagePath = "DoorLock/UnLockButton.png",
@@ -388,8 +388,8 @@
            btnDoorOpenPic = new Button()
            {
                Width = Application.GetRealWidth(81),
                Height = Application.GetRealHeight(81),
                Width = Application.GetMinReal(81),
                Height = Application.GetMinReal(81),
                X = Application.GetRealWidth(164),
                Y = Application.GetRealHeight(6),
                UnSelectedImagePath = "DoorLock/DoorLockOpen.png",
@@ -398,8 +398,8 @@
            btnDoorClosePic = new Button()
            {
                Width = Application.GetRealWidth(81),
                Height = Application.GetRealHeight(81),
                Width = Application.GetMinReal(81),
                Height = Application.GetMinReal(81),
                X = Application.GetRealWidth(164),
                Y = Application.GetRealHeight(117),
                UnSelectedImagePath = "DoorLock/DoorLockClose.png",
@@ -410,8 +410,8 @@
            //电量
            btnPower = new Button()
            {
                Width = Application.GetRealWidth(81),
                Height = Application.GetRealHeight(81),
                Width = Application.GetMinReal(81),
                Height = Application.GetMinReal(81),
                X = Application.GetRealWidth(253),
                Y = Application.GetRealHeight(994),
                UnSelectedImagePath = "DoorLock/PowerOffline.png",
@@ -429,8 +429,8 @@
            midTopFrameLayout.AddChidren(btnVolumeFrameLayout);
            btnVolume = new Button()
            {
                Width = Application.GetRealWidth(81),
                Height = Application.GetRealHeight(81),
                Width = Application.GetMinReal(81),
                Height = Application.GetMinReal(81),
                X = Application.GetRealWidth(40),
                Y = Application.GetRealHeight(40),
                UnSelectedImagePath = "DoorLock/VolumeIcon.png",
@@ -449,8 +449,8 @@
            midTopFrameLayout.AddChidren(btnNormallyOpenFrameLayout);
            btnNormallyOpen = new Button()
            {
                Width = Application.GetRealWidth(81),
                Height = Application.GetRealHeight(81),
                Width = Application.GetMinReal(81),
                Height = Application.GetMinReal(81),
                X = Application.GetRealWidth(40),
                Y = Application.GetRealHeight(40),
                UnSelectedImagePath = "DoorLock/NormallyOpen.png",
@@ -482,8 +482,8 @@
            #region 当前房间
            var btnCurrentRoomPic = new Button()
            {
                Width = Application.GetRealWidth(81),
                Height = Application.GetRealHeight(81),
                Width = Application.GetMinReal(81),
                Height = Application.GetMinReal(81),
                X = Application.GetRealWidth(58),
                Y = Application.GetRealHeight(29),
                UnSelectedImagePath = "DoorLock/RoomPic.png",
@@ -536,14 +536,14 @@
            };
            flMain.AddChidren(progressBackground);
            var progressValue = (currentVolume * (Convert.ToInt32(((float)100 / 15) * 100))) / 100;
            //var progressValue = (currentVolume * (Convert.ToInt32(((float)100 / 15) * 100))) / 100;
            progressText = new Button()
            {
                Height = Application.GetRealHeight(58),
                Y = Application.GetRealHeight(89),
                TextColor = ZigbeeColor.Current.XMGray2,
                TextAlignment = TextAlignment.Center,
                Text = progressValue.ToString() + "%",
                Text = currentVolume.ToString() + "%",
            };
            diyImageVerticalSeekBar = new DiyImageVerticalSeekBar()
@@ -559,27 +559,14 @@
                ProgressTextColor = ZigbeeColor.Current.LogicBtnCancelColor,
                ProgressTextSize = 12,//显示百分比字体大小 
                SeekBarViewHeight = Application.GetRealHeight(17),//进度条的宽度
                Progress = progressValue,
                Progress = currentVolume,
            };
            progressBackground.AddChidren(progressText);
            progressBackground.AddChidren(diyImageVerticalSeekBar);
            diyImageVerticalSeekBar.OnProgressChangedEvent += (sender, e) =>
            {
                int curVolume = -1;
                if (e == 0)
                {
                    curVolume = 0;
                }
                else if (e == 100)
                {
                    curVolume = 14;
                }
                else
                {
                    int comandValue = e;
                    int comandValueTemp = (comandValue * 100) / (Convert.ToInt32(((float)100 / 15) * 100));
                    curVolume = comandValueTemp;
                }
                curVolume = e;
                currentVolume = curVolume;
                progressText.Text = e.ToString() + "%";
            };
@@ -692,7 +679,15 @@
                            }
                            NormallyOpenModeValue(tempRes);
                            HaveLogicNormallyOpenMode = await Shared.Phone.Device.Logic.SkipView.Exist();
                            var resTemp = await Shared.Phone.Device.Logic.SkipView.Exist();
                            if (resTemp == 1)
                            {
                                HaveLogicNormallyOpenMode = true;
                            }
                            else if (resTemp == 0)
                            {
                                HaveLogicNormallyOpenMode = false;
                            }
                            Application.RunOnMainThread(() =>
                            {
                                UpdateNomallyOpenStatus();
@@ -786,10 +781,13 @@
            //设置
            EventHandler<MouseEventArgs> btnFuncSetHander = (sender, e) =>
            {
                var functionSetting = new Shared.Phone.UserCenter.DoorLock.FunctionSetting(doorLock);
                //打开其他界面时前移除
                RemoveFromParent();
                var functionSetting = new Shared.Phone.UserCenter.DoorLock.FunctionSetting(currentRoom, doorLock);
                Shared.Phone.UserView.HomePage.Instance.AddChidren(functionSetting);
                Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
                functionSetting.Show();
                functionSetting.devicNameAction += (deviceRename) =>
                {
                    if (!string.IsNullOrEmpty(deviceRename))
@@ -910,7 +908,6 @@
            EventHandler<MouseEventArgs> handerNormallyOpen = (sender, e) =>
            {
                NomallyOpenDialog();
            };
            btnNormallyOpenFrameLayout.MouseUpEventHandler += handerNormallyOpen;
            btnNormallyOpen.MouseUpEventHandler += handerNormallyOpen;
@@ -932,15 +929,15 @@
            {
                btnPower.UnSelectedImagePath = "DoorLock/Power40.png";
            }
            else if (currentPower <= 60 && currentPower > 40 || currentPower == 60)
            else if (currentPower <= 60 && currentPower > 40)
            {
                btnPower.UnSelectedImagePath = "DoorLock/Power60.png";
            }
            else if (currentPower <= 80 && currentPower >= 60)
            else if (currentPower <= 80 && currentPower > 60)
            {
                btnPower.UnSelectedImagePath = "DoorLock/Power80.png";
            }
            else if (currentPower <= 100 && currentPower >= 80)
            else if (currentPower <= 100 && currentPower > 80)
            {
                btnPower.UnSelectedImagePath = "DoorLock/Power100.png";
            }
@@ -1052,7 +1049,7 @@
            {
                if (UserCenterResourse.UserInfo.AuthorityNo != 1)
                {
                    this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.NoAccess));
                    this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.OnlyMasterOperate));
                    return;
                }
@@ -1087,6 +1084,9 @@
                        }
                        else
                        {
                            //添加App开启常开模式的历史记录
                            HdlDeviceDoorLockLogic.Current.AddDoorHistoryLog(this.doorLock, 9001, string.Empty);
                            //每次重新设置常开,默认时间都是12小时
                            DoorLockCommonInfo.NormallyOpenModeInvalidTime = 12;
                            NormallyOpenModeValue(true);
@@ -1098,12 +1098,24 @@
                            var doorLockInValidSetting = Language.StringByID(R.MyInternationalizationString.DoorLockInValidSetting);
                            var alertNomallyModeIsTurnOn = new ShowDoorLockMsgControl(ShowDoorLockMsgControl.DoorLockMsgType.DoorLockLogic, msgNomallyModeIsTurnOn, doorLockInValidSetting);
                            alertNomallyModeIsTurnOn.Show();
                            alertNomallyModeIsTurnOn.MsgControlClickEvent += async () =>
                            {
                                //默认创建常开模式的特殊逻辑
                                var res = await Shared.Phone.Device.Logic.SkipView.LockAddModifyLogic(DoorLockCommonInfo.NormallyOpenModeInvalidTime, doorLock);
                                if (!res)
                                {
                                    string msg0 = Language.StringByID(R.MyInternationalizationString.AddLogicNormallyModeFailed);
                                    this.ShowTipMsg(msg0);
                                    return;
                                }
                            };
                            //点击自动化
                            alertNomallyModeIsTurnOn.LogicClickEvent += () =>
                            {
                                //逻辑调用前记得移除
                                ZbGateway.StatusList.Remove(this);
                                //调用逻辑界面
                                Shared.Phone.Device.Logic.SkipView.SkipAddLogic(2, doorLock);
                            };
                            alertNomallyModeIsTurnOn.InvalidClickEvent += async () =>
@@ -1128,6 +1140,7 @@
        {
            if (UserCenterResourse.UserInfo.AuthorityNo != 1)
            {
                this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.OnlyMasterOperate));
                return;
            }
            string msg = Language.StringByID(R.MyInternationalizationString.NomallyModeIsCanceled).Replace("{0}", "\r\n");
@@ -1139,27 +1152,44 @@
                alert = new ShowDoorLockMsgControl(ShowDoorLockMsgControl.DoorLockMsgType.CancelNomallyOpenModeWithLogic, msg, confirm);
            }
            alert.Show();
            alert.MsgControlClickEvent += async () =>
            {
                if (IsFromReport)
                {
                    //取消常开
                    //上报“常开模式”已被取消,app默认了“常开模式”被取消
                    NormallyOpenModeValue(false);
                    UpdateNomallyOpenStatus();
                    //删除已经失效的“常开模式”的逻辑
                    var resTemp = await Shared.Phone.Device.Logic.SkipView.Exist(3);
                    if (resTemp == 3)
                    {
                        string msg0 = Language.StringByID(R.MyInternationalizationString.CancelLogicNormallyModeFailed);
                        this.ShowTipMsg(msg0);
                    }
                }
                else
                {
                    //保持常开
                    //app默认“常开模式”还是开启
                    NormallyOpenModeValue(true);
                    UpdateNomallyOpenStatus();
                }
            };
            alert.CancelClickEvent += async () =>
            {
                //保持常开
                if (IsFromReport)
                {
                    //上报“常开模式”已被取消
                    Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); });
                    //先删除已失效的“常开模式”的逻辑
                    var resTemp = await Shared.Phone.Device.Logic.SkipView.Exist(3);
                    if (resTemp == 3)
                    {
                        string msg0 = Language.StringByID(R.MyInternationalizationString.CancelLogicNormallyModeFailed);
                        this.ShowTipMsg(msg0);
                        return;
                    }
                    //app重新开启“常开模式”
                    var result = await doorLock.SetNormallyOpenModeFuncAsync(true);
                    if (result == null || result.defaultControlResponseData == null)
                    {
@@ -1179,27 +1209,47 @@
                    }
                    else
                    {
                        //保持“常开成功”
                        NormallyOpenModeValue(true);
                        UpdateNomallyOpenStatus();
                        //创建常开模式的特殊逻辑
                        var resu = await Shared.Phone.Device.Logic.SkipView.LockAddModifyLogic(DoorLockCommonInfo.NormallyOpenModeInvalidTime, doorLock);
                        if (!resu)
                        {
                            string msg0 = Language.StringByID(R.MyInternationalizationString.AddLogicNormallyModeFailed);
                            this.ShowTipMsg(msg0);
                            return;
                        }
                        CommonPage.Loading.Hide();
                    }
                }
                else
                {
                    //app操作不取消“常开模式”
                    NormallyOpenModeValue(true);
                    UpdateNomallyOpenStatus();
                }
            };
            alert.ConfirmClickEvent += async () =>
            {
                //确认取消常开
                if (IsFromReport)
                {
                    //上报门锁“常开模式”已经取消,现在app确认“常开模式”取消
                    NormallyOpenModeValue(false);
                    UpdateNomallyOpenStatus();
                    //删除已经失效的“常开模式”的逻辑
                    var resTemp = await Shared.Phone.Device.Logic.SkipView.Exist(3);
                    if (resTemp == 3)
                    {
                        string msg0 = Language.StringByID(R.MyInternationalizationString.CancelLogicNormallyModeFailed);
                        this.ShowTipMsg(msg0);
                    }
                }
                else
                {
                    //app操作取消“常开模式”
                    Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); });
                    var result = await doorLock.SetNormallyOpenModeFuncAsync(false);
                    if (result == null || result.defaultControlResponseData == null)
@@ -1215,18 +1265,32 @@
                        return;
                    }
                    else
                    {
                    {
                        //添加App开启常开模式的历史记录
                        HdlDeviceDoorLockLogic.Current.AddDoorHistoryLog(this.doorLock, 9002, string.Empty);
                        //app确认取消“常开模式”成功
                        NormallyOpenModeValue(false);
                        UpdateNomallyOpenStatus();
                        string msg2 = Language.StringByID(R.MyInternationalizationString.CloseNormallyOpenModeSuccess);
                        this.ShowTipMsg(msg2);
                        Shared.Phone.Device.Logic.SkipView.LockCloseLogic(doorLock);
                        //删除设置常开模式创建的逻辑
                        var resTemp = await Shared.Phone.Device.Logic.SkipView.Exist(3);
                        if (resTemp == 3)
                        {
                            string msg0 = Language.StringByID(R.MyInternationalizationString.CancelLogicNormallyModeFailed);
                            this.ShowTipMsg(msg0);
                        }
                        else if (resTemp == 2)
                        {
                            string msg2 = Language.StringByID(R.MyInternationalizationString.CloseNormallyOpenModeSuccess);
                            this.ShowTipMsg(msg2);
                        }
                    }
                }
            };
        }
        ///// <summary>
        /// <summary>
        /// 常开模式失效时间处理
        /// </summary>
        private void NomallyOpenModeInvalidTimeDialog()
@@ -1237,25 +1301,33 @@
            var alertTimeInValidSetting = new ShowDoorLockMsgControl(ShowDoorLockMsgControl.DoorLockMsgType.InValid, msgTimeInValidSetting, timeConfrim);
            alertTimeInValidSetting.Show();
            alertTimeInValidSetting.InvalidTimeAction += (obj) =>
            {
                Regex rg = new Regex("^[0-9]+$");
                if (!rg.IsMatch(obj))
                {
                    //必须是数字
                    string msg0 = Language.StringByID(R.MyInternationalizationString.NormallyOpenModeInvalidTimeTip);
                    this.ShowTipMsg(msg0);
            alertTimeInValidSetting.InvalidTimeAction += async (obj) =>
             {
                 Regex rg = new Regex("^[0-9]+$");
                 if (!rg.IsMatch(obj))
                 {
                     //必须是数字
                     string msg0 = Language.StringByID(R.MyInternationalizationString.NormallyOpenModeInvalidTimeTip);
                     this.ShowTipMsg(msg0);
                    string msgTimeInValidSetting2 = Language.StringByID(R.MyInternationalizationString.DoorLockOpenAllTheTime);
                    var timeConfrim2 = Language.StringByID(R.MyInternationalizationString.Confrim);
                    var alertTimeInValidSetting2 = new ShowDoorLockMsgControl(ShowDoorLockMsgControl.DoorLockMsgType.InValid, msgTimeInValidSetting2, timeConfrim2);
                    alertTimeInValidSetting2.Show();
                    return;
                }
                var temp = int.Parse(obj);
                DoorLockCommonInfo.NormallyOpenModeInvalidTime = temp;
                Shared.Phone.Device.Logic.SkipView.LockAddModifyLogic(DoorLockCommonInfo.NormallyOpenModeInvalidTime, doorLock);
            };
                     string msgTimeInValidSetting2 = Language.StringByID(R.MyInternationalizationString.DoorLockOpenAllTheTime);
                     var timeConfrim2 = Language.StringByID(R.MyInternationalizationString.Confrim);
                     var alertTimeInValidSetting2 = new ShowDoorLockMsgControl(ShowDoorLockMsgControl.DoorLockMsgType.InValid, msgTimeInValidSetting2, timeConfrim2);
                     alertTimeInValidSetting2.Show();
                     return;
                 }
                 //常开模式失效时间设置成功
                 var temp = int.Parse(obj);
                 DoorLockCommonInfo.NormallyOpenModeInvalidTime = temp;
                 //默认创建常开模式的特殊逻辑
                 var res = await Shared.Phone.Device.Logic.SkipView.LockAddModifyLogic(DoorLockCommonInfo.NormallyOpenModeInvalidTime, doorLock);
                 if (!res)
                 {
                     string msg0 = Language.StringByID(R.MyInternationalizationString.AddLogicNormallyModeFailed);
                     this.ShowTipMsg(msg0);
                     return;
                 }
             };
        }
        /// <summary>
        /// 常开模式状态更新
@@ -1305,7 +1377,7 @@
                    var result1 = await DoorLockCommonInfo.GetDoorLockUnlockAccess(doorLock, Shared.Common.Config.Instance.Guid);
                    if (result1 == true)
                    {
                        RemoteUnlockRequest(doorLock, action, progressButton, btnDoorLockPic, btnStatus, btnDoorLockTitle);
                        RemoteUnlockRequest(currentRoom, deviceUI, action, progressButton, btnDoorLockPic, btnStatus, btnDoorLockTitle);
                        devicNameSecAction += (deviceRename) =>
                        {
                            if (!string.IsNullOrEmpty(deviceRename))
@@ -1335,7 +1407,7 @@
            }
            else
            {
                RemoteUnlockRequest(doorLock, action, progressButton, btnDoorLockPic, btnStatus, btnDoorLockTitle);
                RemoteUnlockRequest(currentRoom, deviceUI, action, progressButton, btnDoorLockPic, btnStatus, btnDoorLockTitle);
                devicNameSecAction += (deviceRename) =>
                {
                    if (!string.IsNullOrEmpty(deviceRename))