New file |
| | |
| | | using System;
|
| | | using ZigBee.Device;
|
| | | using System.Collections.Generic;
|
| | | using System.Threading.Tasks;
|
| | |
|
| | | namespace Shared.Phone.UserCenter.GatewayManage
|
| | | {
|
| | | /// <summary>
|
| | | /// 编辑网关信息的画面UI★
|
| | | /// </summary>
|
| | | public class GatewayInfoEditorForm : EditorCommonForm
|
| | | {
|
| | | #region ■ 变量声明___________________________
|
| | |
|
| | | /// <summary>
|
| | | /// 列表控件
|
| | | /// </summary>
|
| | | private FrameListControl listview = null;
|
| | | /// <summary>
|
| | | /// 当前选择的网关
|
| | | /// </summary>
|
| | | private ZbGateway zbGateway = null;
|
| | |
|
| | | #endregion
|
| | |
|
| | | #region ■ 初始化_____________________________
|
| | |
|
| | | /// <summary>
|
| | | /// 画面显示(底层会固定调用此方法,借以完成画面创建)
|
| | | /// </summary>
|
| | | /// <param name="i_zbGateway">当前选择的网关</param>
|
| | | public void ShowForm(ZbGateway i_zbGateway)
|
| | | {
|
| | | this.zbGateway = i_zbGateway;
|
| | |
|
| | | //设置标题信息
|
| | | base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uDeviceSettion));
|
| | |
|
| | | //初始化右上角菜单
|
| | | this.InitTopRightMenu();
|
| | |
|
| | | //初始化中部控件
|
| | | this.InitMiddleFrame();
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 初始化中部控件
|
| | | /// </summary>
|
| | | 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);
|
| | | };
|
| | |
|
| | | //数据上传与下载
|
| | | 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(HdlGatewayLogic.Current.GetGatewayId(this.zbGateway));
|
| | | };
|
| | |
|
| | | //通用信息
|
| | | 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.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, false);
|
| | | }
|
| | | else
|
| | | {
|
| | | //关闭自身
|
| | | this.CloseForm();
|
| | | }
|
| | | };
|
| | |
|
| | | HdlThreadLogic.Current.RunThread(() =>
|
| | | {
|
| | | //检测新版本
|
| | | this.CheckNewVersion(btnNewVersion);
|
| | | });
|
| | | }
|
| | |
|
| | | #endregion
|
| | |
|
| | | #region ■ 右上角菜单_________________________
|
| | |
|
| | | /// <summary>
|
| | | /// 初始化右上角菜单
|
| | | /// </summary>
|
| | | 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();
|
| | | });
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 显示右上角菜单界面
|
| | | /// </summary>
|
| | | 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 = HdlGatewayLogic.Current.GetGatewayId(zbGateway);
|
| | | 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 ■ 检测新版本_________________________
|
| | |
|
| | | /// <summary>
|
| | | /// 检测新版本
|
| | | /// </summary>
|
| | | /// <param name="btnNewVersion">提示有新版本的控件</param>
|
| | | private async void CheckNewVersion(PicViewControl btnNewVersion)
|
| | | {
|
| | | //获取网关版本信息
|
| | | var result = await 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 ■ 完成按钮按下_______________________
|
| | |
|
| | | /// <summary>
|
| | | /// 完成按钮按下
|
| | | /// </summary>
|
| | | /// <param name="gatewayName">网关名</param>
|
| | | private void FinishButtonClick(string gatewayName)
|
| | | {
|
| | | if (string.IsNullOrEmpty(gatewayName) == true)
|
| | | {
|
| | | //请输入网关名称
|
| | | string msg = Language.StringByID(R.MyInternationalizationString.uGatewayNameMastInput);
|
| | | this.ShowMassage(ShowMsgType.Error, msg);
|
| | | return;
|
| | | }
|
| | | string nameValue = HdlGatewayLogic.Current.GetGatewayName(zbGateway);
|
| | | if (nameValue == gatewayName)
|
| | | {
|
| | | //同名不需要处理
|
| | | this.CloseForm();
|
| | | return;
|
| | | }
|
| | | //修改名字
|
| | | this.SetGatewayName(gatewayName, true);
|
| | | }
|
| | |
|
| | | #endregion
|
| | |
|
| | | #region ■ 修改名字___________________________
|
| | |
|
| | | /// <summary>
|
| | | /// 设置网关名字
|
| | | /// </summary>
|
| | | /// <param name="gatewayName">网关名称</param>
|
| | | 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 ■ 网关切换___________________________
|
| | |
|
| | | /// <summary>
|
| | | /// 执行切换网关操作
|
| | | /// </summary>
|
| | | /// <param name="gatewayId"></param>
|
| | | /// <param name="online"></param>
|
| | | private async void DoSwitchGateway()
|
| | | {
|
| | | string gatewayId = HdlGatewayLogic.Current.GetGatewayId(zbGateway);
|
| | | var result = await HdlGatewayLogic.Current.DoSwitchGateway(gatewayId);
|
| | | 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", false);
|
| | | }
|
| | | });
|
| | | }
|
| | |
|
| | | #endregion
|
| | |
|
| | | #region ■ 解绑网关___________________________
|
| | |
|
| | | /// <summary>
|
| | | /// 解绑网关
|
| | | /// </summary>
|
| | | /// <param name="strWayId"></param>
|
| | | /// <param name="row"></param>
|
| | | 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
|
| | | }
|
| | | }
|