using System;
using ZigBee.Device;
using System.Collections.Generic;
namespace Shared.Phone.UserCenter.Gateway
{
///
/// 编辑网关信息的画面UI★
///
public class GatewayInfoEditorForm : UserCenterCommonForm
{
#region ■ 变量声明___________________________
///
/// 网关名称
///
private RowBottomBlackView txtGateway = null;
///
/// 列表控件
///
private VerticalScrolViewLayout listView = 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 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();
}
///
/// 初始化中部控件
///
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行_______________________
///
/// 添加网关IP行
///
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 ■ 添加网关类型行_____________________
///
/// 添加网关类型行
///
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 ■ 添加固件信息行_____________________
///
/// 添加固件信息行
///
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);
}
///
/// 检测新版本
///
/// 提示有新版本的控件
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 ■ 修改名字___________________________
///
/// 设置网关名字
///
/// 网关名称
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
}
}