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);
|
btnNote.txtInput.MaxByte = 32;//限制只能输入32个字节
|
listview.AddChidren(btnNote);
|
btnNote.InitControl();
|
//划线
|
btnNote.AddBottomLine();
|
//如果是展示模板的话,不能编辑
|
if (Common.Config.Instance.Home.IsShowTemplate == false)
|
{
|
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 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();
|
//划线
|
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) =>
|
{
|
//变更网关房间
|
HdlRoomLogic.Current.ChangedGatewayRoom(this.zbGateway.GwId, roomKeys);
|
};
|
//如果是展示模板的话,不能编辑
|
if (Common.Config.Instance.Home.IsShowTemplate == true)
|
{
|
rowBeloneArea.CanClick = false;
|
}
|
|
//所属住宅
|
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 = HdlDeviceCommonLogic.Current.GetDeviceByGatewayID(this.zbGateway.GwId);
|
CommonDevice miniDevice = null;
|
foreach (var device in listDevice)
|
{
|
//获取这个网关下的小夜灯设备
|
if (HdlDeviceCommonLogic.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();
|
//如果是展示模板的话,不能编辑
|
if (Common.Config.Instance.Home.IsShowTemplate == false)
|
{
|
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();
|
//如果是展示模板的话,不能编辑
|
if (Common.Config.Instance.Home.IsShowTemplate == false)
|
{
|
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);
|
//如果是展示模板的话,不能编辑
|
if (Common.Config.Instance.Home.IsShowTemplate == true)
|
{
|
btnFinish.CanClick = false;
|
}
|
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();
|
}
|
};
|
|
//如果是展示模板的话,不需要检测
|
if (Common.Config.Instance.Home.IsShowTemplate == false)
|
{
|
HdlThreadLogic.Current.RunThread(() =>
|
{
|
//检测新版本
|
this.CheckNewVersion(btnNewVersion);
|
});
|
}
|
}
|
|
#endregion
|
|
#region ■ 右上角菜单_________________________
|
|
/// <summary>
|
/// 初始化右上角菜单
|
/// </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);
|
btnIcon.InitControl();
|
btnIcon.ButtonClickEvent += ((sender, e) =>
|
{
|
//显示右上角菜单界面
|
this.ShowTopRightMenu();
|
});
|
}
|
|
/// <summary>
|
/// 显示右上角菜单界面
|
/// </summary>
|
private void ShowTopRightMenu()
|
{
|
//搜索网关的时候,不能删除,不给他切换,只有定位功能
|
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", () =>
|
{
|
//发送定位功能
|
HdlGatewayLogic.Current.SetFixedPositionCommand(zbGateway);
|
});
|
|
//搜索网关的时候,不能删除,不给他切换
|
if (isSearchGw == false)
|
{
|
//切换
|
MenuName = Language.StringByID(R.MyInternationalizationString.uSwitch1);
|
string strWayId = this.zbGateway.GwId;
|
if (strWayId == HdlGatewayResourse.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 == HdlGatewayResourse.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);
|
});
|
});
|
}
|
//if (canAddReplaceMenu == true)
|
//{
|
// //替换
|
// MenuName = Language.StringByID(R.MyInternationalizationString.uReplace);
|
// frame.AddRowMenu(MenuName, null, "Item/ReplaceIconSelected.png", () =>
|
// {
|
// });
|
//}
|
}
|
#endregion
|
|
#region ■ 检测新版本_________________________
|
|
/// <summary>
|
/// 检测新版本
|
/// </summary>
|
/// <param name="btnNewVersion">提示有新版本的控件</param>
|
private void CheckNewVersion(PicViewControl btnNewVersion)
|
{
|
//获取网关版本信息
|
var result = HdlGatewayLogic.Current.GetGatewayAllNewVersion(this.zbGateway, ShowErrorMode.NO);
|
if (result == null)
|
{
|
return;
|
}
|
HdlThreadLogic.Current.RunMain(() =>
|
{
|
if (this.Parent != null)
|
{
|
if (result[0] != null || result[1] != null || result[2] != null)
|
{
|
//提示有新版本
|
btnNewVersion.Visible = true;
|
}
|
}
|
}, ShowErrorMode.NO);
|
}
|
|
#endregion
|
|
#region ■ 修改名字___________________________
|
|
/// <summary>
|
/// 设置网关名字
|
/// </summary>
|
/// <param name="gatewayName">网关名称</param>
|
private void SetGatewayName(string gatewayName, bool closeForm)
|
{
|
//修改网关名
|
var result = 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 void DoSwitchGateway()
|
{
|
var result = HdlGatewayLogic.Current.DoSwitchGateway(zbGateway.GwId);
|
if (result == false)
|
{
|
return;
|
}
|
|
HdlThreadLogic.Current.RunMain(() =>
|
{
|
//关闭自身
|
this.CloseForm();
|
|
//关闭指定界面(网关搜索)
|
HdlFormLogic.Current.CloseFormByFormName("GatewaySearchListForm");
|
HdlFormLogic.Current.CloseFormByFormName("NewGateWayMenuSelectForm");
|
|
//关闭指定界面(网关编辑)
|
HdlFormLogic.Current.CloseFormByFormName("GatewayListForm");
|
|
if (HdlFormLogic.Current.IsFormOpen("DeviceListMainForm") == false)
|
{
|
//刷新主画面
|
var form = new Device.DeviceListMainForm();
|
form.AddForm();
|
}
|
else
|
{
|
//刷新主画面(不重新获取设备状态)
|
this.LoadFormMethodByName("DeviceListMainForm", "InitMiddleFrame");
|
}
|
});
|
}
|
|
#endregion
|
|
#region ■ 解绑网关___________________________
|
|
/// <summary>
|
/// 解绑网关
|
/// </summary>
|
/// <param name="strWayId"></param>
|
/// <param name="row"></param>
|
private void DeleteGateway(string strWayId)
|
{
|
HdlThreadLogic.Current.RunThread(() =>
|
{
|
//打开进度条
|
this.ShowProgressBar();
|
|
//删除云端网关
|
bool result = HdlGatewayLogic.Current.DeleteGateway(strWayId);
|
//关闭进度条
|
this.CloseProgressBar();
|
if (result == false)
|
{
|
return;
|
}
|
|
if (strWayId == HdlGatewayResourse.AppOldSelectGatewayId)
|
{
|
HdlGatewayLogic.Current.SaveGatewayIdToLocation(string.Empty);
|
}
|
HdlThreadLogic.Current.RunMain(() =>
|
{
|
//关闭自身
|
this.CloseForm();
|
});
|
});
|
}
|
|
#endregion
|
}
|
}
|