using System;
|
using ZigBee.Device;
|
using System.Collections.Generic;
|
|
namespace Shared.Phone.UserCenter.Gateway
|
{
|
/// <summary>
|
/// 编辑网关信息的画面UI★
|
/// </summary>
|
public class GatewayInfoEditorForm : UserCenterCommonForm
|
{
|
#region ■ 变量声明___________________________
|
|
/// <summary>
|
/// 网关名称
|
/// </summary>
|
private RowBottomBlackView txtGateway = null;
|
/// <summary>
|
/// 列表控件
|
/// </summary>
|
private VerticalScrolViewLayout 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.uEditorGatewayInformation));
|
|
//网关定位
|
var btnIcon = new TopLayoutMostRightView();
|
btnIcon.UnSelectedImagePath = "Item/Test.png";
|
btnIcon.SelectedImagePath = "Item/TestSelected.png";
|
topFrameLayout.AddChidren(btnIcon);
|
|
btnIcon.MouseUpEventHandler += (sender, e) =>
|
{
|
//测试
|
Common.LocalGateway.Current.SetTestCommand(i_zbGateway);
|
};
|
|
//初始化中部控件
|
this.InitMiddleFrame();
|
}
|
|
/// <summary>
|
/// 初始化中部控件
|
/// </summary>
|
private void InitMiddleFrame()
|
{
|
bodyFrameLayout.RemoveAll();
|
|
//图片
|
var btnImage = new PicViewControl(915, 492, true);
|
btnImage.Y = Application.GetRealHeight(10);
|
btnImage.Gravity = Gravity.CenterHorizontal;
|
Common.LocalGateway.Current.SetRealGatewayPictrue(btnImage, zbGateway);
|
bodyFrameLayout.AddChidren(btnImage);
|
|
listView = new VerticalScrolViewLayout();
|
listView.Y = btnImage.Bottom + Application.GetRealHeight(20);
|
listView.Height = bodyFrameLayout.Height - btnImage.Bottom - Application.GetRealHeight(20);
|
bodyFrameLayout.AddChidren(listView);
|
|
//网关名称
|
string caption = Language.StringByID(R.MyInternationalizationString.uGatewayName);
|
var btnGateway = new EditorNameValueRow(caption, Common.LocalGateway.Current.GetGatewayName(zbGateway));
|
listView.AddChidren(btnGateway);
|
btnGateway.InitControl();
|
//请输入网关名称
|
btnGateway.SetEmptyNameTip(Language.StringByID(R.MyInternationalizationString.uGatewayNameMastInput));
|
//编辑网关名称
|
btnGateway.SetDialogTitle(Language.StringByID(R.MyInternationalizationString.uEditorGatewayName));
|
btnGateway.ActionNameChangedEvent += (gatewayName) =>
|
{
|
//设置网关名称
|
this.SetGatewayName(gatewayName);
|
};
|
this.txtGateway = btnGateway.btnName;
|
|
//添加网关IP行
|
this.AddGatewayIpRow();
|
//添加网关类型行
|
this.AddGatewayObjectRow();
|
//添加固件信息行
|
this.AddHardWareInfoRow();
|
}
|
|
#endregion
|
|
#region ■ 添加网关IP行_______________________
|
|
/// <summary>
|
/// 添加网关IP行
|
/// </summary>
|
private void AddGatewayIpRow()
|
{
|
//网关ip行
|
var rowIp = new RowLayout();
|
rowIp.Height = ControlCommonResourse.ListViewRowHeight;
|
listView.AddChidren(rowIp);
|
|
//网关ip
|
var btnIpView = new RowTopGrayView(false);
|
btnIpView.TextID = R.MyInternationalizationString.uGatewayIP;
|
rowIp.AddChidren(btnIpView);
|
var btnIp = new RowBottomBlackView(false);
|
var ipValue = Common.LocalGateway.Current.GetGatewayBaseInfoAttribute(zbGateway, "IpAddress");
|
btnIp.Text = ipValue.ToString();
|
rowIp.AddChidren(btnIp);
|
|
var btnFlage = new RowMostRightTextView();
|
btnFlage.Gravity = Gravity.Frame;
|
btnFlage.Y = btnIp.Y;
|
btnFlage.TextColor = UserCenterColor.Current.TextGrayColor;
|
int result = Common.LocalGateway.Current.IsMainGateway(this.zbGateway);
|
if (result == 1)
|
{
|
//主网关
|
btnFlage.Text += Language.StringByID(R.MyInternationalizationString.uMainGateway);
|
}
|
else if (result == 0)
|
{
|
//子网关
|
btnFlage.Text += Language.StringByID(R.MyInternationalizationString.uChidrenGateway);
|
}
|
rowIp.AddChidren(btnFlage);
|
}
|
|
#endregion
|
|
#region ■ 添加网关类型行_____________________
|
|
/// <summary>
|
/// 添加网关类型行
|
/// </summary>
|
private void AddGatewayObjectRow()
|
{
|
//网关类型行
|
var rowIp = new RowLayout();
|
rowIp.Height = ControlCommonResourse.ListViewRowHeight;
|
listView.AddChidren(rowIp);
|
|
//网关类型
|
var btnView = new RowTopGrayView(false);
|
btnView.TextID = R.MyInternationalizationString.uGatewayType;
|
rowIp.AddChidren(btnView);
|
|
var btnObj = new RowBottomBlackView(false);
|
btnObj.Text = Common.LocalGateway.Current.GetGatewayImageText(this.zbGateway);
|
rowIp.AddChidren(btnObj);
|
}
|
|
#endregion
|
|
#region ■ 添加固件信息行_____________________
|
|
/// <summary>
|
/// 添加固件信息行
|
/// </summary>
|
private void AddHardWareInfoRow()
|
{
|
var rowInfo = new StatuRowLayout(listView);
|
//固件信息
|
var btnInfo = new RowCenterView(false);
|
btnInfo.TextID = R.MyInternationalizationString.uFirmwareInformation;
|
rowInfo.AddChidren(btnInfo);
|
|
//向右图标
|
rowInfo.AddRightIconControl();
|
|
//新版本提示控件
|
var btnNewVersion = new RowNewVersionTipView();
|
btnNewVersion.Visible = false;
|
rowInfo.AddChidren(btnNewVersion);
|
|
rowInfo.MouseUpEvent += (sender, e) =>
|
{
|
btnNewVersion.Visible = false;
|
var form = new GatewayFirmwareInfoForm();
|
this.AddForm(form, zbGateway);
|
};
|
|
//检测新版本
|
this.CheckNewVersion(btnNewVersion);
|
}
|
|
/// <summary>
|
/// 检测新版本
|
/// </summary>
|
/// <param name="btnNewVersion">提示有新版本的控件</param>
|
private async void CheckNewVersion(RowNewVersionTipView btnNewVersion)
|
{
|
//打开进度条
|
this.ShowProgressBar();
|
|
//获取网关版本信息
|
var result = await Common.LocalGateway.Current.GetGatewayAllNewVersion(this.zbGateway);
|
if (result == null)
|
{
|
//关闭进度条
|
this.CloseProgressBar(ShowReLoadMode.YES);
|
return;
|
}
|
//关闭进度条
|
this.CloseProgressBar();
|
|
Application.RunOnMainThread(() =>
|
{
|
//设置网关名称
|
txtGateway.Text = Common.LocalGateway.Current.GetGatewayName(zbGateway);
|
if (result[0] != null || result[1] != null || result[2] != null)
|
{
|
//提示有新版本
|
btnNewVersion.Visible = true;
|
}
|
});
|
}
|
|
#endregion
|
|
#region ■ 修改名字___________________________
|
|
/// <summary>
|
/// 设置网关名字
|
/// </summary>
|
/// <param name="gatewayName">网关名称</param>
|
private async void SetGatewayName(string gatewayName)
|
{
|
//打开进度条
|
this.ShowProgressBar();
|
//修改网关名
|
var result = await Common.LocalGateway.Current.ReName(zbGateway, gatewayName);
|
//关闭进度条
|
this.CloseProgressBar();
|
|
//网关修改失败
|
if (result == false)
|
{
|
return;
|
}
|
Application.RunOnMainThread(() =>
|
{
|
//网关列表刷新
|
this.LoadFormMethodByName("GatewayManagementForm", "AddRowLayout", Common.LocalGateway.Current.GetGatewayId(zbGateway));
|
//变更设备管理界面的网关名字
|
this.LoadFormMethodByName("DeviceManagementMainForm", "ChangedGatewayName", zbGateway);
|
});
|
}
|
#endregion
|
}
|
}
|