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) =>
|
{
|
|
FrameLayout fLayout = new FrameLayout
|
{
|
BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
|
};
|
this.AddChidren(fLayout);
|
SceneMethod(fLayout);
|
};
|
//延时点击事件
|
delayView.btnClick.MouseUpEventHandler += (sen, e) =>
|
{
|
|
FrameLayout fLayout = new FrameLayout
|
{
|
BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
|
};
|
this.AddChidren(fLayout);
|
Delayed(fLayout,false,1000);
|
};
|
#endregion
|
|
}
|
|
/// <summary>
|
/// 添加场景
|
/// </summary>
|
/// <param name="fLayout">弹框主控件</param>
|
public void SceneMethod(FrameLayout fLayout)
|
{
|
int line = 0;
|
var sceneList = LogicMethod.GetSceneList();
|
if (sceneList.Count == 0|| sceneList.Count>5)
|
{
|
line = 5;
|
}
|
else {
|
line = sceneList.Count;
|
}
|
LogicView.DateView view = new LogicView.DateView();
|
view.btnTitle.TextID = StringId.addSceneLogic;
|
view.FLayoutView(fLayout, line);
|
|
view.btnCancel.MouseUpEventHandler += (sender2, e2) =>
|
{
|
fLayout.RemoveFromParent();
|
};
|
FrameLayout frameL = new FrameLayout
|
{
|
Y = Application.GetRealHeight(56),
|
Height = Application.GetRealHeight(50 * line),
|
};
|
|
VerticalRefreshLayout verticalRefresh = new VerticalRefreshLayout
|
{
|
Y = Application.GetRealHeight(56),
|
Height = Application.GetRealHeight(50 * 5),
|
|
};
|
verticalRefresh.BeginHeaderRefreshingAction += () =>
|
{
|
//关闭刷新View;
|
verticalRefresh.EndHeaderRefreshing();
|
};
|
|
if (sceneList.Count == 0)
|
{
|
Button btnTipNot = new Button
|
{
|
X=Application.GetRealWidth(93),
|
Y = Application.GetRealHeight(80),
|
Width = Application.GetRealWidth(158),
|
Height = Application.GetRealWidth(158),
|
UnSelectedImagePath = "TipNot.png",
|
|
};
|
view.frameLayout.AddChidren(btnTipNot);
|
|
Button btnTipNotText = new Button()
|
{
|
Y = btnTipNot.Bottom+ Application.GetRealHeight(16),
|
Height = Application.GetRealHeight(20),
|
TextID = StringId.secnenull,
|
TextColor = CSS.CSS_Color.textColor,
|
TextSize =LogicView.TextSize.text14,
|
TextAlignment = TextAlignment.Center,
|
};
|
view.frameLayout.AddChidren(btnTipNotText);
|
}
|
else if (sceneList.Count <=5 ) {
|
view.frameLayout.AddChidren(frameL);
|
}
|
else if(sceneList.Count>5) {
|
view.frameLayout.AddChidren(verticalRefresh);
|
|
}
|
|
|
//定义一个局部变量记录选中状态
|
Button buttonClick = new Button();
|
HDL_ON.Entity.Scene sceneSelecetd = null;
|
verticalRefresh.BeginHeaderRefreshingAction += () =>
|
{
|
//关闭刷新View;
|
verticalRefresh.EndHeaderRefreshing();
|
};
|
|
for (int i = 0; i < sceneList.Count; i++)
|
{
|
var scene = sceneList[i];
|
LogicView.CheckView sceneView = new LogicView.CheckView();
|
sceneView.btnText.Text = scene.name;
|
sceneView.btnText.TextSize = LogicView.TextSize.text14;
|
if (sceneList.Count <= 5)
|
{
|
sceneView.frameLayout.Y = Application.GetRealWidth(i*50);
|
frameL.AddChidren(sceneView.FLayoutView());
|
if (sceneList.Count-1==i) {
|
sceneView.btnLine.BackgroundColor = CSS.CSS_Color.view;
|
}
|
}
|
else
|
{
|
verticalRefresh.AddChidren(sceneView.FLayoutView());
|
}
|
sceneView.btnClick.Tag = scene;//标记索引
|
//场景的点击事件
|
sceneView.btnClick.MouseUpEventHandler += (sender, e) =>
|
{
|
buttonClick.IsSelected = false;
|
sceneView.btnCheckIcon.IsSelected = true;
|
buttonClick = sceneView.btnCheckIcon;
|
sceneSelecetd = sceneView.btnClick.Tag as HDL_ON.Entity.Scene;
|
};
|
|
}
|
//确认点击事件
|
view.btnConfirm.MouseUpEventHandler += (sender1, e1) =>
|
{
|
if (sceneSelecetd == null)
|
{
|
//提示:还没选中执行周期
|
return;
|
}
|
Output outputDevice = new Output();
|
outputDevice.target_type = "2";
|
outputDevice.sid = sceneSelecetd.sid;
|
//没啥作用,为了发送数据格式统一;
|
outputDevice.status = new List<Dictionary<string, string>> { new Dictionary<string, string> { { "key", "scene"},{ "value", "0" } } };
|
AddOutput(outputDevice);
|
fLayout.RemoveFromParent();
|
LogicMethod.RemoveAllView();
|
AddLogic addLogic = new AddLogic();
|
MainPage.BasePageView.AddChidren(addLogic);
|
addLogic.Show();
|
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
|
};
|
|
}
|
|
/// <summary>
|
/// 延时时间方法
|
/// </summary>
|
/// <param name="fLayout">在哪个界面显示</param>
|
/// <param name="edit">(true=编辑;false=新建)</param>
|
/// <param name="index">编辑条件的索引</param>
|
public void Delayed(FrameLayout fLayout, bool edit, int index)
|
{
|
LogicView.TimeView timePointView = new LogicView.TimeView();
|
timePointView.FLayoutView(fLayout);
|
EventHandler<MouseEventArgs> 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<Dictionary<string, string>> dicList = output.status as List<Dictionary<string, string>>;
|
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<string, string> dic = new Dictionary<string, string>();
|
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;
|
|
};
|
}
|
|
/// <summary>
|
/// 添加目标
|
/// </summary>
|
/// <param name="target"></param>
|
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);
|
}
|
|
}
|
}
|
}
|