using System; using ZigBee.Device; using System.Collections.Generic; using System.Threading.Tasks; namespace Shared.Phone.UserCenter.GatewayManage { /// /// 编辑网关信息的画面UI★ /// public class GatewayInfoEditorForm : EditorCommonForm { #region ■ 变量声明___________________________ /// /// 列表控件 /// private FrameListControl listview = null; /// /// 当前选择的网关 /// private ZbGateway zbGateway = null; #endregion #region ■ 初始化_____________________________ /// /// 画面显示(底层会固定调用此方法,借以完成画面创建) /// /// 当前选择的网关 public void ShowForm(ZbGateway i_zbGateway) { this.zbGateway = i_zbGateway; //设置标题信息 base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uDeviceSettion)); //初始化右上角菜单 this.InitTopRightMenu(); //初始化中部控件 this.InitMiddleFrame(); } /// /// 初始化中部控件 /// private void InitMiddleFrame() { //清空bodyFrame this.ClearBodyFrame(); var listBackControl = new VerticalFrameControl(); listBackControl.Height = bodyFrameLayout.Height; bodyFrameLayout.AddChidren(listBackControl); //初始化桌布 var tableContr = new InformationEditorControl(); this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uInfoEditor), 1368); //图片 var btnPic = new DeviceInfoIconControl(); btnPic.Y = Application.GetRealHeight(92); btnPic.Gravity = Gravity.CenterHorizontal; listBackControl.frameTable.AddChidren(btnPic); btnPic.InitControl(this.zbGateway); //设备备注 string caption = Language.StringByID(R.MyInternationalizationString.uDeviceNote); string nameValue = HdlGatewayLogic.Current.GetGatewayName(zbGateway); var btnNote = new FrameCaptionInputControl(caption, nameValue, listview.rowSpace / 2); listview.AddChidren(btnNote); btnNote.InitControl(); //划线 btnNote.AddBottomLine(); btnNote.txtInput.FinishInputEvent += () => { 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); btnType.UseClickStatu = false; listview.AddChidren(btnType); btnType.InitControl(); //划线 btnType.AddBottomLine(); //安装位置 var rowBeloneArea = new BelongAreaControl(listview.rowSpace / 2); listview.AddChidren(rowBeloneArea); rowBeloneArea.InitControl(Language.StringByID(R.MyInternationalizationString.uInstallationLocation), this.zbGateway); //底线 rowBeloneArea.AddBottomLine(); rowBeloneArea.SelectRoomEvent += (roomKeys) => { //变更网关房间 HdlGatewayLogic.Current.ChangedGatewayRoom(this.zbGateway, roomKeys); }; //所属住宅 caption = Language.StringByID(R.MyInternationalizationString.uBelongResidence); var btnBeloneArea = new FrameCaptionViewControl(caption, Common.Config.Instance.Home.Name, listview.rowSpace / 2); btnBeloneArea.UseClickStatu = false; listview.AddChidren(btnBeloneArea); btnBeloneArea.InitControl(); //划线 btnBeloneArea.AddBottomLine(); //mini网关有个功能设置 var linuxImageType = this.zbGateway.LinuxImageType; if (linuxImageType == 11) { var listDevice = Common.LocalDevice.Current.GetDeviceByGatewayID(this.zbGateway.GwId); CommonDevice miniDevice = null; foreach (var device in listDevice) { //获取这个网关下的小夜灯设备 if (Common.LocalDevice.Current.IsMiniLight(device) == true) { miniDevice = device; break; } } //如果找得到的话 if (miniDevice != null) { //功能设置 var rowFunction = new RowLayoutControl(listview.rowSpace / 2); listview.AddChidren(rowFunction); rowFunction.frameTable.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uFunctionSettingUp), 700); //右图标 rowFunction.frameTable.AddRightArrow(); //底线 rowFunction.frameTable.AddBottomLine(); rowFunction.frameTable.ButtonClickEvent += (sender, e) => { var form = new DeviceLight.MiniNightLightFunctionSettionForm(); form.AddForm(miniDevice); }; } } //数据上传与下载 var rowData = new RowLayoutControl(listview.rowSpace / 2); listview.AddChidren(rowData); rowData.frameTable.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uDataUploadAndDownLoad), 700); //右图标 rowData.frameTable.AddRightArrow(); //底线 rowData.frameTable.AddBottomLine(); rowData.frameTable.ButtonClickEvent += (sender, e) => { var form = new GatewayUploadAndDownLoadForm(); form.AddForm(this.zbGateway.GwId); }; //通用信息 var btnGeneral = new FrameRowControl(listview.rowSpace / 2); listview.AddChidren(btnGeneral); btnGeneral.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uGeneralInformation), 600); //向右图标 btnGeneral.AddRightArrow(); //底线 btnGeneral.AddBottomLine(); btnGeneral.ButtonClickEvent += (sender, e) => { var form = new GatewayGeneralInformationForm(); form.AddForm(zbGateway); }; //固件升级 var rowUpDate = new FrameRowControl(listview.rowSpace / 2); listview.AddChidren(rowUpDate); rowUpDate.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uFirmwareUpdate), 600); //向右图标 rowUpDate.AddRightArrow(); //底线 rowUpDate.AddBottomLine(); //提示有新版本 var btnNewVersion = new PicViewControl(78, 55); btnNewVersion.UnSelectedImagePath = "Item/NewVersion.png"; btnNewVersion.Visible = false; btnNewVersion.X = Application.GetRealWidth(242); btnNewVersion.Y = Application.GetRealHeight(23); rowUpDate.AddChidren(btnNewVersion, ChidrenBindMode.BindEvent); rowUpDate.ButtonClickEvent += (sender, e) => { btnNewVersion.Visible = false; var form = new GatewayUpdate.GatewayFirmwareUpdateForm(); form.AddForm(zbGateway); }; //初始化桌布完成 tableContr.FinishInitControl(); tableContr = null; //保存 var btnFinish = new BottomClickButton(); btnFinish.TextID = R.MyInternationalizationString.uSave; bodyFrameLayout.AddChidren(btnFinish); btnFinish.ButtonClickEvent += (sender, e) => { string oldName = HdlGatewayLogic.Current.GetGatewayName(zbGateway); if (btnNote.Text == string.Empty) { btnNote.Text = oldName; } if (oldName != btnNote.Text) { //修改名字 this.SetGatewayName(btnNote.Text, true); } else { //关闭自身 this.CloseForm(); } }; HdlThreadLogic.Current.RunThread(() => { //检测新版本 this.CheckNewVersion(btnNewVersion); }); } #endregion #region ■ 右上角菜单_________________________ /// /// 初始化右上角菜单 /// private void InitTopRightMenu() { var btnIcon = new MostRightIconControl(69, 69); btnIcon.UnSelectedImagePath = "Item/More.png"; topFrameLayout.AddChidren(btnIcon); btnIcon.InitControl(); btnIcon.ButtonClickEvent += ((sender, e) => { //显示右上角菜单界面 this.ShowTopRightMenu(); }); } /// /// 显示右上角菜单界面 /// private void ShowTopRightMenu() { bool flage = UserCenterResourse.DicActionForm.ContainsKey("NewGateWayMenuSelectForm"); var frame = new TopRightMenuControl(flage == true ? 1 : 3, 1); //定位 string MenuName = Language.StringByID(R.MyInternationalizationString.uFixedPosition); frame.AddRowMenu(MenuName, "Item/FixedPosition.png", "Item/FixedPositionSelected.png", () => { //发送定位功能 HdlGatewayLogic.Current.SetFixedPositionCommand(zbGateway); }); if (flage == true) { //搜索网关的时候,不能删除,不给他切换 return; } //切换 MenuName = Language.StringByID(R.MyInternationalizationString.uSwitch1); string strWayId = this.zbGateway.GwId; if (strWayId == GatewayResourse.AppOldSelectGatewayId) { 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) { //是否重新刷新{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) { msg = string.Format(msg, "\r\n"); } this.ShowMassage(ShowMsgType.Confirm, msg, () => { this.DeleteGateway(strWayId); }); }); } #endregion #region ■ 检测新版本_________________________ /// /// 检测新版本 /// /// 提示有新版本的控件 private void CheckNewVersion(PicViewControl btnNewVersion) { //获取网关版本信息 var result = HdlGatewayLogic.Current.GetGatewayAllNewVersion(this.zbGateway); if (result == null) { return; } Application.RunOnMainThread(() => { if (this.Parent != null) { if (result[0] != null || result[1] != null || result[2] != null) { //提示有新版本 btnNewVersion.Visible = true; } } }); } #endregion #region ■ 修改名字___________________________ /// /// 设置网关名字 /// /// 网关名称 private async void SetGatewayName(string gatewayName, bool closeForm) { //修改网关名 var result = await HdlGatewayLogic.Current.ReName(zbGateway, gatewayName); //网关修改失败 if (result == false) { return; } if (closeForm == true) { //关闭界面 this.CloseForm(); } } #endregion #region ■ 网关切换___________________________ /// /// 执行切换网关操作 /// /// /// private async void DoSwitchGateway() { var result = await HdlGatewayLogic.Current.DoSwitchGateway(zbGateway.GwId); if (result == false) { return; } HdlThreadLogic.Current.RunMain(() => { //关闭自身 this.CloseForm(); //关闭指定界面(网关搜索) this.CloseFormByFormName("GatewaySearchListForm"); this.CloseFormByFormName("NewGateWayMenuSelectForm"); //关闭指定界面(网关编辑) this.CloseFormByFormName("GatewayListForm"); if (UserCenterResourse.DicActionForm.ContainsKey("DeviceListMainForm") == false) { //刷新主画面 var form = new Device.DeviceListMainForm(); form.AddForm(); } else { //刷新主画面(不重新获取设备状态) this.LoadFormMethodByName("DeviceListMainForm", "InitMiddleFrame"); } }); } #endregion #region ■ 解绑网关___________________________ /// /// 解绑网关 /// /// /// private void DeleteGateway(string strWayId) { HdlThreadLogic.Current.RunThread(async () => { //打开进度条 this.ShowProgressBar(); //删除云端网关 bool result = await HdlGatewayLogic.Current.DeleteGateway(strWayId); //关闭进度条 this.CloseProgressBar(); if (result == false) { return; } if (strWayId == GatewayResourse.AppOldSelectGatewayId) { HdlGatewayLogic.Current.SaveGatewayIdToLocation(string.Empty); } HdlThreadLogic.Current.RunMain(() => { //关闭自身 this.CloseForm(); }); }); } #endregion } }