using System;
using System.Collections.Generic;
using System.Text;
using ZigBee.Device;
namespace Shared.Phone.UserCenter.Safety
{
///
/// 既存报警目标设置画面
///
public class AlarmTargetExistSettionForm : EditorCommonForm
{
#region ■ 变量声明___________________________
///
/// 防区ID(这个东西似乎是唯一的)
///
private int zoonID = 0;
///
/// 列表控件
///
private VerticalListControl listView = null;
#endregion
#region ■ 初始化_____________________________
///
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
///
/// 防区ID
public void ShowForm(int i_zoonID)
{
this.zoonID = i_zoonID;
//设置头部信息
base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uAlarmTargetSettion));
//添加图标
var btnAdd = new MostRightIconControl(69, 69);
btnAdd.UnSelectedImagePath = "Item/Add.png";
topFrameLayout.AddChidren(btnAdd);
btnAdd.InitControl();
btnAdd.ButtonClickEvent += (sender, e) =>
{
var form = new AlarmTargetAddMenuForm();
form.AddForm(this.zoonID);
};
//初始化中部信息
this.InitMiddleFrame();
}
///
/// 初始化中部信息
///
private void InitMiddleFrame()
{
//清空bodyFrame
this.ClearBodyFrame();
//根据防区ID获取本地的报警目标列表
var listData = HdlSafeguardLogic.Current.GetLocalAlarmTargetInfoByZoneId(this.zoonID);
if (listData.Count == 0)
{
//还没有设置报警目标
this.ShowNotDataImage(bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.uDoNotHadSettionTargetMsg));
return;
}
this.listView = new VerticalListControl(23);
listView.BackgroundColor = UserCenterColor.Current.White;
listView.Height = bodyFrameLayout.Height;
bodyFrameLayout.AddChidren(listView);
HdlThreadLogic.Current.RunMainInThread(() =>
{
for (int i = 0; i < listData.Count; i++)
{
var data = listData[i];
//场景
if (data.Type == 1)
{
this.AddSceneRow(data, i != listData.Count - 1);
}
//设备
if (data.Type == 0)
{
this.AddDeviceRow(data, i != listData.Count - 1);
}
}
//调整真实高度
this.listView.AdjustRealHeight(Application.GetRealHeight(23));
});
}
#endregion
#region ■ 报警目标明细行_____________________
///
/// 添加设备行
///
///
///
private void AddDeviceRow(Safeguard.CatActionResponseObj data, bool addLine)
{
//行控件
var row = new DeviceRoomControl(data.DeviceAddr, data.Epoint, listView.rowSpace / 2);
listView.AddChidren(row);
row.InitControl();
row.frameTable.UseClickStatu = false;
if (addLine == true)
{
//底线
row.frameTable.AddBottomLine();
}
//状态显示
var btnStatu = row.frameTable.AddMostRightView("", 400);
if (data.TaskList.Count > 0)
{
btnStatu.Text = HdlSafeguardLogic.Current.GetAdjustTargetStatuText(data.TaskList);
}
else
{
//无动作
btnStatu.TextID = R.MyInternationalizationString.uNotAction;
}
if (row.device != null)
{
//编辑
var btnEditor = row.AddEditorControl();
btnEditor.ButtonClickEvent += (sender, e) =>
{
//编辑报警目标
this.EditorAlarmTarget(row, btnStatu, data);
};
}
//删除
var btnDelete = row.AddDeleteControl();
btnDelete.ButtonClickEvent += (sender, e) =>
{
//删除
string msg = Language.StringByID(R.MyInternationalizationString.uShowDoDeleteMsg);
this.ShowMassage(ShowMsgType.Confirm, msg, () =>
{
//删除报警目标
this.DeleteAlarmTarget(row, data);
});
};
}
///
/// 添加场景行
///
///
///
private void AddSceneRow(Safeguard.CatActionResponseObj data, bool addLine)
{
//行控件
var row = new SceneRoomControl(data.ScenesId, data.ESName, listView.rowSpace / 2);
listView.AddChidren(row);
row.InitControl();
row.frameTable.UseClickStatu = false;
if (addLine == true)
{
//底线
row.frameTable.AddBottomLine();
}
//删除
var btnDelete = row.AddDeleteControl();
btnDelete.ButtonClickEvent += (sender, e) =>
{
string msg = Language.StringByID(R.MyInternationalizationString.uShowDoDeleteMsg);
this.ShowMassage(ShowMsgType.Confirm, msg, () =>
{
//删除报警目标
this.DeleteAlarmTarget(row, data);
});
};
}
#endregion
#region ■ 删除指定报警目标___________________
///
/// 删除指定报警目标
///
///
///
private async void DeleteAlarmTarget(RowLayoutControl row, Safeguard.CatActionResponseObj delObj)
{
//参数
var Pra = new List();
var actionObj = new Safeguard.DelAlarmActionObj();
actionObj.DeviceAddr = delObj.DeviceAddr;
actionObj.Epoint = delObj.Epoint;
actionObj.ScenesId = delObj.ScenesId;
actionObj.Type = delObj.Type;
Pra.Add(actionObj);
//执行删除
bool result = await HdlSafeguardLogic.Current.DeleteAlarmTaget(this.zoonID, Pra);
if (result == false)
{
return;
}
//行移除
row?.RemoveFromParent();
//调整真实高度
listView.AdjustRealHeight(Application.GetRealHeight(23));
if (listView.ChildrenCount == 0)
{
//重新初始化中部信息
this.InitMiddleFrame();
return;
}
}
#endregion
#region ■ 编辑指定报警目标___________________
///
/// 编辑指定报警目标
///
///
///
private void EditorAlarmTarget(DeviceRoomControl deviceRow, NormalViewControl btnStatu, Safeguard.CatActionResponseObj resObj)
{
var device = Common.LocalDevice.Current.GetDevice(resObj.DeviceAddr, resObj.Epoint);
if (device.Type == DeviceType.DimmableLight//调光器
|| device.Type == DeviceType.ColorDimmableLight)//彩灯
{
var form = new AlarmTargetStatuSelectLightForm();
form.AddForm(device, resObj.TaskList);
form.FinishSelectEvent += (statuText, listInfo) =>
{
//还原左右菜单
deviceRow?.HideMenu();
btnStatu.Text = statuText;
//保存编辑的报警目标
this.SaveEditorAlarmTarget(resObj, listInfo);
};
}
else if (device.Type == DeviceType.WindowCoveringDevice)//窗帘
{
var form = new AlarmTargetStatuSelectCurtainForm();
form.AddForm(device, resObj.TaskList);
form.FinishSelectEvent += (statuText, listInfo) =>
{
//还原左右菜单
deviceRow?.HideMenu();
btnStatu.Text = statuText;
//保存编辑的报警目标
this.SaveEditorAlarmTarget(resObj, listInfo);
};
}
else
{
//其他直接归为开关类
var form = new AlarmTargetStatuSelectSwitchForm();
form.AddForm(device, resObj.TaskList);
form.FinishSelectEvent += (statuText, listInfo) =>
{
//还原左右菜单
deviceRow?.HideMenu();
btnStatu.Text = statuText;
//保存编辑的报警目标
this.SaveEditorAlarmTarget(resObj, listInfo);
};
}
}
///
/// 保存编辑的报警目标
///
///
///
private async void SaveEditorAlarmTarget(Safeguard.CatActionResponseObj resObj, List listTask)
{
//先删除 参数
var PraDel = new List();
var actionObjDel = new Safeguard.DelAlarmActionObj();
actionObjDel.DeviceAddr = resObj.DeviceAddr;
actionObjDel.Epoint = resObj.Epoint;
actionObjDel.ScenesId = resObj.ScenesId;
actionObjDel.Type = resObj.Type;
PraDel.Add(actionObjDel);
//执行删除
bool result = await HdlSafeguardLogic.Current.DeleteAlarmTaget(this.zoonID, PraDel);
if (result == false)
{
return;
}
//然后再添加
var listAction = new List();
var actionObjAdd = new Safeguard.AlarmActionObj();
actionObjAdd.DeviceAddr = resObj.DeviceAddr;
actionObjAdd.Epoint = resObj.Epoint;
actionObjAdd.Type = 0;
actionObjAdd.TaskList = listTask;
listAction.Add(actionObjAdd);
//添加报警目标到安防
bool success = await HdlSafeguardLogic.Current.AddAlarmTagetToSafety(this.zoonID, listAction);
if (success == true)
{
resObj.TaskList.Clear();
resObj.TaskList.AddRange(listTask);
}
}
#endregion
#region ■ 界面重新激活事件___________________
///
/// 自身的上层界面关闭后,它自身处于最上层时,触发的事件
///
public override int FormActionAgainEvent()
{
//重新刷新界面
this.InitMiddleFrame();
return 1;
}
#endregion
}
}