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 FrameListControl 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 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);
};
//所属住宅
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 = Common.LocalDevice.Current.GetDeviceByGatewayID(this.zbGateway.GwId);
CommonDevice miniDevice = null;
foreach (var device in listDevice)
{
//获取这个网关下的小夜灯设备
if (Common.LocalDevice.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();
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();
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);
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();
}
};
HdlThreadLogic.Current.RunThread(() =>
{
//检测新版本
this.CheckNewVersion(btnNewVersion);
});
}
#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 = this.zbGateway.GwId;
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 void CheckNewVersion(PicViewControl btnNewVersion)
{
//获取网关版本信息
var result = 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 ■ 修改名字___________________________
///
/// 设置网关名字
///
/// 网关名称
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()
{
var result = await HdlGatewayLogic.Current.DoSwitchGateway(zbGateway.GwId);
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");
}
});
}
#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
}
}