using System; using ZigBee.Device; using System.Collections.Generic; namespace Shared.Phone.UserCenter.GatewayManage { /// /// 编辑网关信息的画面UI★ /// public class GatewayInfoEditorForm : EditorCommonForm { #region ■ 变量声明___________________________ /// /// 网关名称控件 /// private FrameCaptionInputControl rowGateway = null; /// /// 设备明细列表控件的桌布 /// private DeviceInformationListControl listDeviceControl = null; /// /// 当前选择的网关 /// private ZbGateway zbGateway = null; #endregion #region ■ 初始化_____________________________ /// /// 画面显示(底层会固定调用此方法,借以完成画面创建) /// /// 当前选择的网关 public void ShowForm(ZbGateway i_zbGateway) { this.zbGateway = i_zbGateway; //设置标题信息 base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uEditorGatewayInformation)); //网关定位 var btnIcon = new MostRightIconControl(69, 69); btnIcon.UnSelectedImagePath = "Item/Test.png"; topFrameLayout.AddChidren(btnIcon); btnIcon.InitControl(); btnIcon.ButtonClickEvent += (sender, e) => { //测试 HdlGatewayLogic.Current.SetTestCommand(i_zbGateway); }; //初始化中部控件 this.InitMiddleFrame(); } /// /// 初始化中部控件 /// private void InitMiddleFrame() { //清空bodyFrame this.ClearBodyFrame(); //图片上下的间距(上下间距一致) int picSpcae = Application.GetRealHeight(100); //图片 var btnPic = new DeviceInfoIconControl(); btnPic.Y = Application.GetRealHeight(92); btnPic.Gravity = Gravity.CenterHorizontal; bodyFrameLayout.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, nameValue, listview.rowSpace / 2); btnType.UseClickStatu = false; listview.AddChidren(btnType); btnType.InitControl(); HdlGatewayLogic.Current.SetGatewayImageText(btnType.txtView, this.zbGateway); //划线 btnType.AddBottomLine(); //数据上传与下载 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 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.BindEventOnly); rowUpDate.ButtonClickEvent += (sender, e) => { btnNewVersion.Visible = false; var form = new GatewayUpdate.GatewayFirmwareInfoForm(); form.AddForm(zbGateway); }; //初始化桌布完成 tableContr.FinishInitControl(bodyFrameLayout, this.listview); tableContr = null; //完成按钮 var btnFinish = new BottomClickButton(); btnFinish.TextID = R.MyInternationalizationString.uFinish; bodyFrameLayout.AddChidren(btnFinish); btnFinish.MouseUpEventHandler += (sender, e) => { //完成按钮按下 this.FinishButtonClick(); }; //白色底部背景 var frameBottomWhite = new FrameLayout(); frameBottomWhite.Y = btnFinish.Y - ControlCommonResourse.BottomButtonAndListViewSpace; frameBottomWhite.Height = bodyFrameLayout.Height - btnFinish.Y + ControlCommonResourse.BottomButtonAndListViewSpace; frameBottomWhite.BackgroundColor = UserCenterColor.Current.White; bodyFrameLayout.AddChidren(frameBottomWhite); //将完成按钮置顶 btnFinish.BringToFront(); //自定义的设备列表容器 this.listDeviceControl = new DeviceInformationListControl(); //列表控件最大的高度(完成按钮的Y轴 - 设置的间隔 - 图片Y轴 - 图片的三分之一) int listViewMaxHeight = btnFinish.Y - ControlCommonResourse.BottomButtonAndListViewSpace - btnImage.Y - btnImage.Height / 3; //明细Frame的最小高度(底部frame的Y轴 - 图片底部 - 图片与弧度圆的间距 - 弧度圆高度) int minDetailHeight = frameBottomWhite.Y - btnImage.Bottom - picSpcae - listDeviceControl.halfRoundHeigth; //初始化控件 listDeviceControl.InitControl(bodyFrameLayout, frameBottomWhite.Height, listViewMaxHeight, minDetailHeight, 4); //设备编辑 var btnTitle = new DetailTitleControl(Application.GetRealWidth(800), listDeviceControl.titleHeight, false); btnTitle.TextID = R.MyInternationalizationString.uDeviceEditor; listDeviceControl.AddChidren(btnTitle); //添加全部菜单行 this.AddAllMenuRow(); } #endregion #region ■ 添加全部菜单行_____________________ /// /// 添加全部菜单行 /// private void AddAllMenuRow() { //网关名称 string caption = Language.StringByID(R.MyInternationalizationString.uGatewayName); string nameValue = HdlGatewayLogic.Current.GetGatewayName(zbGateway); this.rowGateway = new FrameCaptionInputControl(caption, nameValue); listDeviceControl.AddChidren(rowGateway); rowGateway.InitControl(); rowGateway.AddBottomLine(); //网关IP caption = Language.StringByID(R.MyInternationalizationString.uGatewayIP); nameValue = HdlGatewayLogic.Current.GetGatewayBaseInfoAttribute(zbGateway, "IpAddress").ToString(); var btnIp = new FrameCaptionViewControl(caption, nameValue); listDeviceControl.AddChidren(btnIp); btnIp.InitControl(); btnIp.txtView.TextColor = UserCenterColor.Current.TextGrayColor; btnIp.AddBottomLine(); //主网关或者子网关标识 var btnFlage = new RowMostRightTextView(); btnFlage.TextColor = UserCenterColor.Current.TextGrayColor; btnIp.AddChidren(btnFlage, ChidrenBindMode.NotBind); int result = HdlGatewayLogic.Current.IsMainGateway(this.zbGateway); //主网关 if (result == 1) { btnFlage.TextID = R.MyInternationalizationString.uMainGateway; } //子网关 else if (result == 0) { btnFlage.TextID = R.MyInternationalizationString.uChidrenGateway; } //网关类型 caption = Language.StringByID(R.MyInternationalizationString.uGatewayType); nameValue = HdlGatewayLogic.Current.GetGatewayImageText(this.zbGateway); var btnObject = new FrameCaptionViewControl(caption, nameValue); listDeviceControl.AddChidren(btnObject); btnObject.InitControl(); btnObject.txtView.TextColor = UserCenterColor.Current.TextGrayColor; btnObject.AddBottomLine(); //固件信息 this.AddHardWareInfoRow(); } #endregion #region ■ 添加固件信息行_____________________ /// /// 添加固件信息行 /// private void AddHardWareInfoRow() { var rowInfo = new RowLayoutControl(); listDeviceControl.AddChidren(rowInfo); //固件信息 //var btnInfo = new RowCenterViewControl(false, 14); //btnInfo.TextID = R.MyInternationalizationString.uFirmwareInformation; //rowInfo.AddChidren(btnInfo); //向右图标 //rowInfo.AddRightArrow(); //新版本提示控件 var btnNewVersion = new RowNewVersionTipView(); btnNewVersion.Visible = false; rowInfo.AddChidren(btnNewVersion); //rowInfo.MouseUpEvent += (sender, e) => //{ // btnNewVersion.Visible = false; // var form = new GatewayFirmwareInfoForm(); // form.AddForm(zbGateway); //}; //检测新版本 this.CheckNewVersion(btnNewVersion); } /// /// 检测新版本 /// /// 提示有新版本的控件 private async void CheckNewVersion(RowNewVersionTipView btnNewVersion) { //打开进度条 this.ShowProgressBar(); //获取网关版本信息 var result = await HdlGatewayLogic.Current.GetGatewayAllNewVersion(this.zbGateway); if (result == null) { //关闭进度条 this.CloseProgressBar(ShowReLoadMode.YES); return; } //关闭进度条 this.CloseProgressBar(); Application.RunOnMainThread(() => { if (this.rowGateway != null) { //设置网关名称 this.rowGateway.Text = HdlGatewayLogic.Current.GetGatewayName(zbGateway); if (result[0] != null || result[1] != null || result[2] != null) { //提示有新版本 btnNewVersion.Visible = true; } } }); } #endregion #region ■ 完成按钮按下_______________________ /// /// 完成按钮按下 /// private void FinishButtonClick() { if (string.IsNullOrEmpty(this.rowGateway.Text) == true) { //请输入网关名称 this.rowGateway.Text = string.Empty; string msg = Language.StringByID(R.MyInternationalizationString.uGatewayNameMastInput); this.ShowMassage(ShowMsgType.Error, msg); return; } string nameValue = HdlGatewayLogic.Current.GetGatewayName(zbGateway); if (nameValue == this.rowGateway.Text) { //同名不需要处理 this.CloseForm(); return; } //修改名字 this.SetGatewayName(this.rowGateway.Text); } #endregion #region ■ 修改名字___________________________ /// /// 设置网关名字 /// /// 网关名称 private async void SetGatewayName(string gatewayName) { //打开进度条 this.ShowProgressBar(); //修改网关名 var result = await HdlGatewayLogic.Current.ReName(zbGateway, gatewayName); //关闭进度条 this.CloseProgressBar(); //网关修改失败 if (result == false) { return; } Application.RunOnMainThread(() => { //关闭界面 this.CloseForm(); }); } #endregion } }