using System;
using System.Collections.Generic;
using Shared;
namespace HDL_ON.UI.UI2.Intelligence.Automation
{
public class AddTarget : FrameLayout
{
public AddTarget()
{
Tag = "Logic";
}
public void Show()
{
LogicView.TopView topView = new LogicView.TopView();
this.AddChidren(topView.FLayoutView());
topView.clickBackBtn.MouseUpEventHandler += (e, sen) =>
{
RemoveFromParent();
};
topView.topNameBtn.TextID = StringId.addtarget;
FrameLayout viewLayout = new FrameLayout
{
Y = Application.GetRealHeight(64),
Width = Application.GetRealWidth(LogicView.TextSize.view375),
Height = Application.GetRealHeight(LogicView.TextSize.view667 - 64),
BackgroundColor = CSS.CSS_Color.viewMiddle,
};
this.AddChidren(viewLayout);
#region 功能
//功能
LogicView.SelectTypeView functionView = new LogicView.SelectTypeView();
functionView.btnText.TextID = StringId.funLogic;
functionView.btnIcon.UnSelectedImagePath = "LogicIcon/functionicon.png";
viewLayout.AddChidren(functionView.FLayoutView());
//场景
LogicView.SelectTypeView sceneView = new LogicView.SelectTypeView();
sceneView.frameLayout.Y = functionView.frameLayout.Bottom;
sceneView.btnText.TextID = StringId.Scenes;
sceneView.btnIcon.UnSelectedImagePath = "LogicIcon/scene.png";
viewLayout.AddChidren(sceneView.FLayoutView());
//延时
LogicView.SelectTypeView delayView = new LogicView.SelectTypeView();
delayView.frameLayout.Y = sceneView.frameLayout.Bottom;
delayView.btnText.TextID = StringId.delayLogic;
delayView.btnIcon.UnSelectedImagePath = "LogicIcon/delayed.png";
//viewLayout.AddChidren(delayView.FLayoutView());
#endregion
#region 所有点击事件
//功能点击事件
functionView.btnClick.MouseUpEventHandler += (sen, e) =>
{
FunTpye funTpye = new FunTpye();
MainPage.BasePageView.AddChidren(funTpye);
funTpye.Show(LogicMethod.target_if);
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
};
//场景点击事件
sceneView.btnClick.MouseUpEventHandler += (sen, e) =>
{
SceneMethod();
};
//延时点击事件
delayView.btnClick.MouseUpEventHandler += (sen, e) =>
{
FrameLayout fLayout = new FrameLayout
{
BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
};
this.AddChidren(fLayout);
Delayed(fLayout,false,1000);
};
#endregion
}
///
/// 添加场景
///
public void SceneMethod()
{
var sceneList = LogicMethod.GetSceneList();
List nameList = new List();
for (int i = 0; i < sceneList.Count; i++) {
var scene = sceneList[i];
nameList.Add(scene.name);
}
PublicInterface publicInterface = new PublicInterface();
publicInterface.FrameOrVv(this, nameList, StringId.addSceneLogic, (index) =>
{
var sceneSelecetd = sceneList[index];
Output outputDevice = new Output();
outputDevice.target_type = "2";
outputDevice.sid = sceneSelecetd.sid;
//没啥作用,为了发送数据格式统一;
outputDevice.status = new List> { new Dictionary { { "key", "scene" }, { "value", "0" } } };
AddOutput(outputDevice);
LogicMethod.RemoveAllView();
AddLogic addLogic = new AddLogic();
MainPage.BasePageView.AddChidren(addLogic);
addLogic.Show();
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
});
}
///
/// 延时时间方法
///
/// 在哪个界面显示
/// (true=编辑;false=新建)
/// 编辑条件的索引
public void Delayed(FrameLayout fLayout, bool edit, int index)
{
LogicView.TimeView timePointView = new LogicView.TimeView();
timePointView.FLayoutView(fLayout);
EventHandler RemovefLayout = (sender, e1) =>
{
//移除fLayout界面
fLayout.RemoveFromParent();
};
//取消点击事件
timePointView.btnCancel.MouseUpEventHandler += RemovefLayout;
//加载数据界面的设置方法(列表互不联动)
timePointView.mUIPickerView.setNPicker(timePointView.GethStringList0(), timePointView.GetmStringList(), null);
//默认初始选中状态
timePointView.mUIPickerView.setCurrentItems(0, 5, 0);
//定义一个局部变量记录选中时间
string timepoint = "00:05";
if (edit)
{
Output output = Logic.currlogic.output[index];
if (output.target_type == "3")
{
List> dicList = output.status as List>;
foreach (var dic in dicList)
{
string timeValue = dic["value"];
int hIndex = timePointView.GetValueIndex(timeValue, 0, 1, timePointView.GethIntList());
int mIndex = timePointView.GetValueIndex(timeValue, 1, 0, timePointView.GetmIntList());
//更新初始状态
timePointView.mUIPickerView.setCurrentItems(hIndex, mIndex, 0);
timepoint = timeValue;
}
}
}
//选中时间回调方法,时间变化一次回调一次
timePointView.mUIPickerView.OnSelectChangeEvent += (index1, index2, index3) =>
{
string hour = timePointView.GethStringList0()[index1].Split(' ')[0];
string minuet = timePointView.GetmStringList()[index2].Split(' ')[0];
timepoint = hour + ":" + minuet;
};
//确定点击事件
timePointView.btnConfirm.MouseUpEventHandler += (sender, e3) =>
{
if (timepoint=="00:00") {
//提示
return;
}
Output outputTime= new Output();
outputTime.sid = LogicMethod.NewSid();
outputTime.target_type = "3";
Dictionary dic = new Dictionary();
LogicMethod.dictionary(dic, "key", "delay");
LogicMethod.dictionary(dic, "value", timepoint);
outputTime.status.Add(dic);
if (edit)
{
//移除旧数据
Logic.currlogic.output.RemoveAt(index);
//新数据插入旧数据的位置;
Logic.currlogic.output.Insert(index, outputTime);
}
else
{
//添加一个新的时间点条件
AddOutput(outputTime);
}
fLayout.RemoveFromParent();
LogicMethod.RemoveAllView();
AddLogic addLogic = new AddLogic();
MainPage.BasePageView.AddChidren(addLogic);
addLogic.Show();
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
};
}
///
/// 添加目标
///
///
private void AddOutput(Output target)
{
int indexValue = -1;
for (int i = 0; i < Logic.currlogic.output.Count; i++)
{
if (Logic.currlogic.output[i].sid == target.sid)
{
indexValue = i;
break;
}
}
if (indexValue != -1)
{
Logic.currlogic.output.RemoveAt(indexValue);
Logic.currlogic.output.Insert(indexValue, target);
}
else
{
Logic.currlogic.output.Add(target);
}
}
}
}