using System;
using ZigBee.Device;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Shared.Phone.UserCenter.GatewayManage
{
///
/// 编辑网关信息的画面UI★
///
public class GatewayInfoEditorForm : EditorCommonForm
{
#region ■ 变量声明___________________________
///
/// 列表控件
///
private VerticalListControl listview = null;
///
/// 当前选择的网关
///
private ZbGateway zbGateway = null;
#endregion
#region ■ 初始化_____________________________
///
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
///
/// 当前选择的网关
public void ShowForm(ZbGateway i_zbGateway)
{
this.zbGateway = i_zbGateway;
//设置标题信息
base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uDeviceSettion));
//初始化右上角菜单
this.InitTopRightMenu();
//初始化中部控件
this.InitMiddleFrame();
}
///
/// 初始化中部控件
///
private void InitMiddleFrame()
{
//清空bodyFrame
this.ClearBodyFrame();
//初始化桌布
var tableContr = new InformationEditorControl();
this.listview = tableContr.InitControl(bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.uInfoEditor), 369, 1368);
//图片
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 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(bodyFrameLayout, this.listview);
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, btnType);
});
}
#endregion
#region ■ 右上角菜单_________________________
///
/// 初始化右上角菜单
///
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();
});
}
///
/// 显示右上角菜单界面
///
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 ■ 检测新版本_________________________
///
/// 检测新版本
///
/// 提示有新版本的控件
/// 网关类型控件
private async void CheckNewVersion(PicViewControl btnNewVersion, FrameCaptionViewControl btnType)
{
//获取网关版本信息
var result = await HdlGatewayLogic.Current.GetGatewayAllNewVersion(this.zbGateway);
if (result == null)
{
return;
}
Application.RunOnMainThread(() =>
{
if (this.Parent != null)
{
HdlGatewayLogic.Current.SetGatewayImageText(btnType.txtView, this.zbGateway);
if (result[0] != null || result[1] != null || result[2] != null)
{
//提示有新版本
btnNewVersion.Visible = true;
}
}
});
}
#endregion
#region ■ 完成按钮按下_______________________
///
/// 完成按钮按下
///
/// 网关名
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 ■ 修改名字___________________________
///
/// 设置网关名字
///
/// 网关名称
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 ■ 网关切换___________________________
///
/// 执行切换网关操作
///
///
///
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 ■ 解绑网关___________________________
///
/// 解绑网关
///
///
///
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
}
}