黄学彪
2020-12-17 9f326f4000847e6167d8166fa2f6a66f53cb3734
ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayInfoEditorForm.cs
@@ -70,27 +70,33 @@
            string caption = Language.StringByID(R.MyInternationalizationString.uDeviceNote);
            string nameValue = HdlGatewayLogic.Current.GetGatewayName(zbGateway);
            var btnNote = new FrameCaptionInputControl(caption, nameValue, listview.rowSpace / 2);
            btnNote.txtInput.MaxByte = 32;//限制只能输入32个字节
            listview.AddChidren(btnNote);
            btnNote.InitControl();
            //划线
            btnNote.AddBottomLine();
            btnNote.txtInput.FinishInputEvent += () =>
            //如果是展示模板的话,不能编辑
            if (Common.Config.Instance.Home.IsShowTemplate == false)
            {
                string oldName = HdlGatewayLogic.Current.GetGatewayName(zbGateway);
                if (btnNote.Text == string.Empty)
                btnNote.txtInput.FinishInputEvent += () =>
                {
                    btnNote.Text = oldName;
                }
                if (oldName != btnNote.Text)
                {
                    //修改名字
                    this.SetGatewayName(btnNote.Text, false);
                }
            };
                    string oldName = HdlGatewayLogic.Current.GetGatewayName(zbGateway);
                    if (btnNote.Text == string.Empty)
                    {
                        btnNote.Text = oldName;
                    }
                    if (oldName != btnNote.Text)
                    {
                        //修改名字
                        this.SetGatewayName(btnNote.Text, false);
                    }
                };
            }
            //设备类型 (固定智能网关)
            caption = Language.StringByID(R.MyInternationalizationString.uDeviceType);
            var btnType = new FrameCaptionViewControl(caption, Language.StringByID(60004), listview.rowSpace / 2);
            var infoContent = HdlDeviceCommonLogic.Current.GetDeviceModelIdNameInfo("1");
            var btnType = new FrameCaptionViewControl(caption, infoContent != null ? infoContent.A类型名字 : string.Empty, listview.rowSpace / 2);
            btnType.UseClickStatu = false;
            listview.AddChidren(btnType);
            btnType.InitControl();
@@ -106,8 +112,13 @@
            rowBeloneArea.SelectRoomEvent += (roomKeys) =>
            {
                //变更网关房间
                HdlGatewayLogic.Current.ChangedGatewayRoom(this.zbGateway, roomKeys);
                HdlRoomLogic.Current.ChangedGatewayRoom(this.zbGateway.GwId, roomKeys);
            };
            //如果是展示模板的话,不能编辑
            if (Common.Config.Instance.Home.IsShowTemplate == true)
            {
                rowBeloneArea.CanClick = false;
            }
            //所属住宅
            caption = Language.StringByID(R.MyInternationalizationString.uBelongResidence);
@@ -122,12 +133,12 @@
            var linuxImageType = this.zbGateway.LinuxImageType;
            if (linuxImageType == 11)
            {
                var listDevice = Common.LocalDevice.Current.GetDeviceByGatewayID(this.zbGateway.GwId);
                var listDevice = HdlDeviceCommonLogic.Current.GetDeviceByGatewayID(this.zbGateway.GwId);
                CommonDevice miniDevice = null;
                foreach (var device in listDevice)
                {
                    //获取这个网关下的小夜灯设备
                    if (Common.LocalDevice.Current.IsMiniLight(device) == true)
                    if (HdlDeviceCommonLogic.Current.IsMiniLight(device) == true)
                    {
                        miniDevice = device;
                        break;
@@ -144,11 +155,15 @@
                    rowFunction.frameTable.AddRightArrow();
                    //底线
                    rowFunction.frameTable.AddBottomLine();
                    rowFunction.frameTable.ButtonClickEvent += (sender, e) =>
                    //如果是展示模板的话,不能编辑
                    if (Common.Config.Instance.Home.IsShowTemplate == false)
                    {
                        var form = new DeviceLight.MiniNightLightFunctionSettionForm();
                        form.AddForm(miniDevice);
                    };
                        rowFunction.frameTable.ButtonClickEvent += (sender, e) =>
                        {
                            var form = new DeviceLight.MiniNightLightFunctionSettionForm();
                            form.AddForm(miniDevice);
                        };
                    }
                }
            }
@@ -160,11 +175,15 @@
            rowData.frameTable.AddRightArrow();
            //底线
            rowData.frameTable.AddBottomLine();
            rowData.frameTable.ButtonClickEvent += (sender, e) =>
            //如果是展示模板的话,不能编辑
            if (Common.Config.Instance.Home.IsShowTemplate == false)
            {
                var form = new GatewayUploadAndDownLoadForm();
                form.AddForm(this.zbGateway.GwId);
            };
                rowData.frameTable.ButtonClickEvent += (sender, e) =>
                {
                    var form = new GatewayUploadAndDownLoadForm();
                    form.AddForm(this.zbGateway.GwId);
                };
            }
            //通用信息
            var btnGeneral = new FrameRowControl(listview.rowSpace / 2);
@@ -210,6 +229,11 @@
            var btnFinish = new BottomClickButton();
            btnFinish.TextID = R.MyInternationalizationString.uSave;
            bodyFrameLayout.AddChidren(btnFinish);
            //如果是展示模板的话,不能编辑
            if (Common.Config.Instance.Home.IsShowTemplate == true)
            {
                btnFinish.CanClick = false;
            }
            btnFinish.ButtonClickEvent += (sender, e) =>
            {
                string oldName = HdlGatewayLogic.Current.GetGatewayName(zbGateway);
@@ -229,11 +253,15 @@
                }
            };
            HdlThreadLogic.Current.RunThread(() =>
            //如果是展示模板的话,不需要检测
            if (Common.Config.Instance.Home.IsShowTemplate == false)
            {
                //检测新版本
                this.CheckNewVersion(btnNewVersion);
            });
                HdlThreadLogic.Current.RunThread(() =>
                {
                    //检测新版本
                    this.CheckNewVersion(btnNewVersion);
                });
            }
        }
        #endregion
@@ -245,6 +273,11 @@
        /// </summary>
        private void InitTopRightMenu()
        {
            //如果是展示模板的话,不能编辑
            if (Common.Config.Instance.Home.IsShowTemplate == true)
            {
                return;
            }
            var btnIcon = new MostRightIconControl(69, 69);
            btnIcon.UnSelectedImagePath = "Item/More.png";
            topFrameLayout.AddChidren(btnIcon);
@@ -261,8 +294,29 @@
        /// </summary>
        private void ShowTopRightMenu()
        {
            bool flage = UserCenterResourse.DicActionForm.ContainsKey("NewGateWayMenuSelectForm");
            var frame = new TopRightMenuControl(flage == true ? 1 : 3, 1);
            //搜索网关的时候,不能删除,不给他切换,只有定位功能
            bool isSearchGw = HdlFormLogic.Current.IsFormOpen("NewGateWayMenuSelectForm");
            int menuCount = isSearchGw == true ? 1 : 3;
            bool canAddReplaceMenu = false;
            //获取本地网关
            var listGateway = HdlGatewayLogic.Current.GetAllLocalGateway();
            foreach (var gw in listGateway)
            {
                if (gw.GwId != this.zbGateway.GwId && gw.LinuxImageType == this.zbGateway.LinuxImageType)
                {
                    //如果是同一种类型的网关,允许出现替换菜单
                    canAddReplaceMenu = true;
                    break;
                }
            }
            if (canAddReplaceMenu == true
                && Common.Config.Instance.Home.IsShowTemplate == false
                && Common.Config.Instance.Home.IsVirtually == false)
            {
                //menuCount++;
            }
            var frame = new TopRightMenuControl(menuCount, 1);
            //定位
            string MenuName = Language.StringByID(R.MyInternationalizationString.uFixedPosition);
            frame.AddRowMenu(MenuName, "Item/FixedPosition.png", "Item/FixedPositionSelected.png", () =>
@@ -270,53 +324,60 @@
                //发送定位功能
                HdlGatewayLogic.Current.SetFixedPositionCommand(zbGateway);
            });
            if (flage == true)
            {
                //搜索网关的时候,不能删除,不给他切换
                return;
            }
            //切换
            MenuName = Language.StringByID(R.MyInternationalizationString.uSwitch1);
            string strWayId = this.zbGateway.GwId;
            if (strWayId == GatewayResourse.AppOldSelectGatewayId)
            //搜索网关的时候,不能删除,不给他切换
            if (isSearchGw == false)
            {
                MenuName = Language.StringByID(R.MyInternationalizationString.uRefresh);
            }
            frame.AddRowMenu(MenuName, "Item/GwSwitchIcon.png", "Item/GwSwitchIconSelected.png", () =>
            {
                string nameValue = HdlGatewayLogic.Current.GetGatewayName(zbGateway);
                //是否切换到{0}网关?
                string msg = string.Format(Language.StringByID(R.MyInternationalizationString.uConfirmWantToSwitchTheGateway), "[" + nameValue + "]");
                if (strWayId == GatewayResourse.AppOldSelectGatewayId)
                //切换
                MenuName = Language.StringByID(R.MyInternationalizationString.uSwitch1);
                string strWayId = this.zbGateway.GwId;
                if (strWayId == HdlGatewayResourse.AppOldSelectGatewayId)
                {
                    //是否重新刷新{0}网关?
                    msg = string.Format(Language.StringByID(R.MyInternationalizationString.uConfirmWantToRefreshTheGateway), "[" + nameValue + "]");
                    MenuName = Language.StringByID(R.MyInternationalizationString.uRefresh);
                }
                this.ShowMassage(ShowMsgType.Confirm, msg, () =>
                frame.AddRowMenu(MenuName, "Item/GwSwitchIcon.png", "Item/GwSwitchIconSelected.png", () =>
                {
                    HdlThreadLogic.Current.RunThread(() =>
                    string nameValue = HdlGatewayLogic.Current.GetGatewayName(zbGateway);
                    //是否切换到{0}网关?
                    string msg = string.Format(Language.StringByID(R.MyInternationalizationString.uConfirmWantToSwitchTheGateway), "[" + nameValue + "]");
                    if (strWayId == HdlGatewayResourse.AppOldSelectGatewayId)
                    {
                        //执行切换网关操作
                        this.DoSwitchGateway();
                        //是否重新刷新{0}网关?
                        msg = string.Format(Language.StringByID(R.MyInternationalizationString.uConfirmWantToRefreshTheGateway), "[" + nameValue + "]");
                    }
                    this.ShowMassage(ShowMsgType.Confirm, msg, () =>
                    {
                        HdlThreadLogic.Current.RunThread(() =>
                        {
                            //执行切换网关操作
                            this.DoSwitchGateway();
                        });
                    });
                });
            });
            //删除
            MenuName = Language.StringByID(R.MyInternationalizationString.uDelete);
            frame.AddRowMenu(MenuName, "Item/DeleteIcon2.png", "Item/DeleteIcon2Selected.png", () =>
            {
                //如移除网关,该网关绑定的设备列表{0}将清空,确认继续执行该操作?
                string msg = Language.StringByID(R.MyInternationalizationString.uUnBindedMsg);
                if (msg.Contains("{0}") == true)
                //删除
                MenuName = Language.StringByID(R.MyInternationalizationString.uDelete);
                frame.AddRowMenu(MenuName, "Item/DeleteIcon2.png", "Item/DeleteIcon2Selected.png", () =>
                {
                    msg = string.Format(msg, "\r\n");
                }
                this.ShowMassage(ShowMsgType.Confirm, msg, () =>
                {
                    this.DeleteGateway(strWayId);
                    //如移除网关,该网关绑定的设备列表{0}将清空,确认继续执行该操作?
                    string msg = Language.StringByID(R.MyInternationalizationString.uUnBindedMsg);
                    if (msg.Contains("{0}") == true)
                    {
                        msg = string.Format(msg, "\r\n");
                    }
                    this.ShowMassage(ShowMsgType.Confirm, msg, () =>
                    {
                        this.DeleteGateway(strWayId);
                    });
                });
            });
            }
            //if (canAddReplaceMenu == true)
            //{
            //    //替换
            //    MenuName = Language.StringByID(R.MyInternationalizationString.uReplace);
            //    frame.AddRowMenu(MenuName, null, "Item/ReplaceIconSelected.png", () =>
            //    {
            //    });
            //}
        }
        #endregion
@@ -329,12 +390,12 @@
        private void CheckNewVersion(PicViewControl btnNewVersion)
        {
            //获取网关版本信息
            var result = HdlGatewayLogic.Current.GetGatewayAllNewVersion(this.zbGateway);
            var result = HdlGatewayLogic.Current.GetGatewayAllNewVersion(this.zbGateway, ShowErrorMode.NO);
            if (result == null)
            {
                return;
            }
            Application.RunOnMainThread(() =>
            HdlThreadLogic.Current.RunMain(() =>
            {
                if (this.Parent != null)
                {
@@ -344,7 +405,7 @@
                        btnNewVersion.Visible = true;
                    }
                }
            });
            }, ShowErrorMode.NO);
        }
        #endregion
@@ -355,10 +416,10 @@
        /// 设置网关名字
        /// </summary>
        /// <param name="gatewayName">网关名称</param>
        private async void SetGatewayName(string gatewayName, bool closeForm)
        private void SetGatewayName(string gatewayName, bool closeForm)
        {
            //修改网关名
            var result = await HdlGatewayLogic.Current.ReName(zbGateway, gatewayName);
            var result = HdlGatewayLogic.Current.ReName(zbGateway, gatewayName);
            //网关修改失败
            if (result == false)
            {
@@ -379,9 +440,9 @@
        /// </summary>
        /// <param name="gatewayId"></param>
        /// <param name="online"></param>
        private async void DoSwitchGateway()
        private void DoSwitchGateway()
        {
            var result = await HdlGatewayLogic.Current.DoSwitchGateway(zbGateway.GwId);
            var result = HdlGatewayLogic.Current.DoSwitchGateway(zbGateway.GwId);
            if (result == false)
            {
                return;
@@ -393,13 +454,13 @@
                this.CloseForm();
                //关闭指定界面(网关搜索)
                this.CloseFormByFormName("GatewaySearchListForm");
                this.CloseFormByFormName("NewGateWayMenuSelectForm");
                HdlFormLogic.Current.CloseFormByFormName("GatewaySearchListForm");
                HdlFormLogic.Current.CloseFormByFormName("NewGateWayMenuSelectForm");
                //关闭指定界面(网关编辑)
                this.CloseFormByFormName("GatewayListForm");
                HdlFormLogic.Current.CloseFormByFormName("GatewayListForm");
                if (UserCenterResourse.DicActionForm.ContainsKey("DeviceListMainForm") == false)
                if (HdlFormLogic.Current.IsFormOpen("DeviceListMainForm") == false)
                {
                    //刷新主画面
                    var form = new Device.DeviceListMainForm();
@@ -424,13 +485,13 @@
        /// <param name="row"></param>
        private void DeleteGateway(string strWayId)
        {
            HdlThreadLogic.Current.RunThread(async () =>
            HdlThreadLogic.Current.RunThread(() =>
            {
                //打开进度条
                this.ShowProgressBar();
                //删除云端网关
                bool result = await HdlGatewayLogic.Current.DeleteGateway(strWayId);
                bool result = HdlGatewayLogic.Current.DeleteGateway(strWayId);
                //关闭进度条
                this.CloseProgressBar();
                if (result == false)
@@ -438,7 +499,7 @@
                    return;
                }
                if (strWayId == GatewayResourse.AppOldSelectGatewayId)
                if (strWayId == HdlGatewayResourse.AppOldSelectGatewayId)
                {
                    HdlGatewayLogic.Current.SaveGatewayIdToLocation(string.Empty);
                }