using System;
|
using Shared;
|
using System.Collections.Generic;
|
|
|
namespace HDL_ON.UI.UI2.Intelligence.Automation
|
{
|
public class AddLogic : FrameLayout
|
{
|
public AddLogic()
|
{
|
Tag = "Logic";
|
}
|
|
public void Show()
|
{
|
#region 界面布局
|
this.BackgroundColor = CSS.CSS_Color.viewMiddle;
|
LogicView.TopView topView = new LogicView.TopView();
|
topView.setBtn.Visible = true;
|
this.AddChidren(topView.FLayoutView());
|
topView.clickBackBtn.MouseUpEventHandler += (e, sen) =>
|
{
|
RemoveFromParent();
|
};
|
if (string.IsNullOrEmpty(Logic.currlogic.userLogicId))
|
{
|
topView.topNameBtn.TextID = StringId.newAutomation;
|
topView.setBtn.Visible = false;
|
topView.clickSetBtn.Visible = false;
|
}
|
else
|
{
|
topView.topNameBtn.TextID = StringId.editAutomation;
|
topView.setBtn.Visible = true;
|
topView.clickSetBtn.Visible = true;
|
}
|
|
|
VerticalScrolViewLayout viewLayout = new VerticalScrolViewLayout
|
{
|
Y = Application.GetRealHeight(64),
|
Width = Application.GetRealWidth(LogicView.TextSize.view375),
|
Height = Application.GetRealHeight(LogicView.TextSize.view667 - 64 - 76),
|
BackgroundColor = CSS.CSS_Color.viewMiddle,
|
};
|
this.AddChidren(viewLayout);
|
#region 条件
|
///如果的View
|
LogicView.AddOutputInputTextView addInputTextView = new LogicView.AddOutputInputTextView();
|
addInputTextView.btnIf.TextID = StringId.ifCondition;
|
viewLayout.AddChidren(addInputTextView.FLayoutView(46, 12));
|
///满足以下条件的View
|
LogicView.LogicTypeTitleView titleCondition = new LogicView.LogicTypeTitleView();
|
titleCondition.btnText.Width = Application.GetRealWidth(300);
|
titleCondition.btnText.Height = Application.GetRealHeight(28);
|
titleCondition.btnText.IsMoreLines = true;
|
titleCondition.frameLayout.SetCornerWithSameRadius(Application.GetRealHeight(12), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
|
titleCondition.btnText.TextID = StringId.andCondition;
|
viewLayout.AddChidren(titleCondition.FLayoutView());
|
|
if (Logic.currlogic.relation == "and")
|
{
|
titleCondition.btnText.Text = Language.StringByID(StringId.andCondition);
|
}
|
else
|
{
|
titleCondition.btnText.Text = Language.StringByID(StringId.orCondition);
|
|
}
|
|
// 条件处理方法
|
InpOrOutLogicMethod.InputCondition(this, viewLayout);
|
///添加图标的View
|
LogicView.LogicAddView addInputIcon = new LogicView.LogicAddView();
|
addInputIcon.frameLayout.SetCornerWithSameRadius(Application.GetRealHeight(12), HDLUtils.RectCornerBottomLeft | HDLUtils.RectCornerBottomRight);
|
viewLayout.AddChidren(addInputIcon.FLayoutView());
|
#endregion
|
|
#region 目标
|
///就执行View
|
LogicView.AddOutputInputTextView addOutpuTextView = new LogicView.AddOutputInputTextView();
|
addOutpuTextView.btnIf.TextID = StringId.isExecuted;
|
viewLayout.AddChidren(addOutpuTextView.FLayoutView(54, 20));
|
///以下动作View
|
LogicView.LogicTypeTitleView titleOutpu = new LogicView.LogicTypeTitleView();
|
titleOutpu.frameLayout.SetCornerWithSameRadius(Application.GetRealHeight(12), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
|
titleOutpu.btnText.TextID = StringId.theFollowingActions;
|
titleOutpu.btnNextIcon.Visible = false;
|
viewLayout.AddChidren(titleOutpu.FLayoutView());
|
//目标处理方法
|
InpOrOutLogicMethod.OutputTarget(this, viewLayout);
|
///添加图标的View
|
LogicView.LogicAddView addOutputIcon = new LogicView.LogicAddView();
|
addOutputIcon.frameLayout.SetCornerWithSameRadius(Application.GetRealHeight(12), HDLUtils.RectCornerBottomLeft | HDLUtils.RectCornerBottomRight);
|
viewLayout.AddChidren(addOutputIcon.FLayoutView());
|
|
#endregion
|
|
#region 循环方式
|
///循环方式iew
|
LogicView.AddOutputInputTextView cyclicTextView = new LogicView.AddOutputInputTextView();
|
cyclicTextView.btnIf.TextID = StringId.cyclic;
|
viewLayout.AddChidren(cyclicTextView.FLayoutView(54, 20));
|
///选择周期类型View
|
LogicView.LogicTypeTitleView cyclicTitle = new LogicView.LogicTypeTitleView();
|
cyclicTitle.frameLayout.Height = Application.GetRealHeight(50);
|
cyclicTitle.frameLayout.Radius = (uint)Application.GetRealHeight(12);
|
cyclicTitle.btnText.Text = MainView.GetCyclicText(Logic.currlogic);
|
viewLayout.AddChidren(cyclicTitle.FLayoutView());
|
|
#endregion
|
|
#region 执行推送 发送通知
|
///上下间隔12像素
|
viewLayout.AddChidren(new FrameLayout { Height = Application.GetRealHeight(12) });
|
///执行推送iew
|
LogicView.LogicTypeTitleView push = new LogicView.LogicTypeTitleView();
|
push.frameLayout.Height = Application.GetRealHeight(50);
|
push.frameLayout.SetCornerWithSameRadius(Application.GetRealHeight(12), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
|
push.btnText.TextID = StringId.push;
|
push.btnNextIcon.Width = Application.GetRealWidth(36);
|
push.btnNextIcon.Height = Application.GetRealWidth(36);
|
push.btnNextIcon.X = Application.GetRealWidth(305);
|
push.btnNextIcon.UnSelectedImagePath = "LogicIcon/off.png";
|
push.btnNextIcon.SelectedImagePath = "LogicIcon/on.png";
|
push.btnClick.Width = Application.GetRealWidth(305);
|
viewLayout.AddChidren(push.FLayoutView());
|
///发送通知View
|
LogicView.LogicTypeTitleView notification = new LogicView.LogicTypeTitleView();
|
notification.frameLayout.SetCornerWithSameRadius(Application.GetRealHeight(12), HDLUtils.RectCornerBottomLeft | HDLUtils.RectCornerBottomRight);
|
notification.btnText.TextID = StringId.notification;
|
notification.btnLine.BackgroundColor = CSS.CSS_Color.textWhiteColor;
|
viewLayout.AddChidren(notification.FLayoutView());
|
//显示之前推送开关状态
|
if (Logic.currlogic.noticeConfig.enable)
|
{
|
push.btnNextIcon.IsSelected = true;
|
}
|
else
|
{
|
push.btnNextIcon.IsSelected = false;
|
}
|
///上下间隔62像素
|
viewLayout.AddChidren(new FrameLayout { Height = Application.GetRealHeight(40) });
|
#endregion
|
|
#region 保存
|
///保存View
|
LogicView.SaveView saveView = new LogicView.SaveView();
|
saveView.frameLayout.SetCornerWithSameRadius(Application.GetRealHeight(24), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
|
this.AddChidren(saveView.FLayoutView());
|
|
#endregion
|
#endregion
|
|
#region 界面各种点击事件
|
///设置图标点击事件
|
topView.clickSetBtn.MouseUpEventHandler += (sender, e) =>
|
{
|
Set set = new Set();
|
MainPage.BasePageView.AddChidren(set);
|
set.Show();
|
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
|
|
};
|
///或和与点击事件
|
titleCondition.btnClick.MouseUpEventHandler += (sender, e) =>
|
{
|
AndOrMethod(titleCondition.btnText);
|
};
|
///条件添加点击事件
|
addInputIcon.btnClick.MouseUpEventHandler += (sen, e) =>
|
{
|
var addInputType = new AddInputType();
|
MainPage.BasePageView.AddChidren(addInputType);
|
addInputType.Show();
|
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
|
};
|
///目标添加点击事件
|
addOutputIcon.btnClick.MouseUpEventHandler += (sen, e) =>
|
{
|
var addTarget = new AddTarget();
|
MainPage.BasePageView.AddChidren(addTarget);
|
addTarget.Show();
|
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
|
};
|
///循环方式点击事件
|
cyclicTitle.btnClick.MouseUpEventHandler += (sender, e) =>
|
{
|
DateMethod(cyclicTitle.btnText);
|
};
|
///是否要推送点击事件
|
push.btnNextIcon.MouseUpEventHandler += (sender, e) =>
|
{
|
//账号列表为空默认推送当前账号
|
if (Logic.currlogic.pushConfigs.Count == 0)
|
{
|
//初始化对象
|
PushConfigs pushConfigs = new PushConfigs();
|
//默认添加推送当前账号
|
pushConfigs.pushTarget.Add(UserInfo.Current.ID);
|
Logic.currlogic.pushConfigs.Add(pushConfigs);
|
}
|
push.btnNextIcon.IsSelected = !push.btnNextIcon.IsSelected;
|
if (push.btnNextIcon.IsSelected)
|
{
|
Logic.currlogic.noticeConfig.enable = true;
|
}
|
else
|
{
|
Logic.currlogic.noticeConfig.enable = false;
|
}
|
};
|
///输入推送文本
|
notification.btnClick.MouseUpEventHandler += (sender, e) =>
|
{
|
InputPushText inputPushText = new InputPushText();
|
MainPage.BasePageView.AddChidren(inputPushText);
|
inputPushText.Show();
|
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
|
};
|
///保存点击事件
|
saveView.btnClick.MouseUpEventHandler += (sender, e) =>
|
{
|
if (Logic.currlogic.input.Count == 0 && Logic.currlogic.output.Count == 0)
|
{
|
new LogicView.TipPopView().TipBox(StringId.tip, StringId.conditioncNullOrtargetNull);
|
return;
|
}
|
if (Logic.currlogic.input.Count == 0)
|
{
|
new LogicView.TipPopView().TipBox(StringId.tip, StringId.conditioncNull);
|
return;
|
}
|
if (Logic.currlogic.output.Count == 0)
|
{
|
new LogicView.TipPopView().TipBox(StringId.tip, StringId.targetNull);
|
return;
|
}
|
|
|
|
|
Loading loading = new Loading();
|
this.AddChidren(loading);
|
HDL_ON.DAL.Server.ResponsePackNew responsePackNew = null;
|
if (string.IsNullOrEmpty(Logic.currlogic.userLogicId))
|
{
|
List<string> list = new List<string>();
|
foreach (var logic in Logic.LogicList)
|
{
|
list.Add(logic.name);
|
}
|
new LogicView.TipPopView().InputBox(StringId.editName, InpOrOutLogicMethod.GetLogicName(Logic.currlogic), StringId.nameNull, StringId.NameAlreadyExists, list, (logicName, view
|
) =>
|
{
|
Logic.currlogic.name = logicName;
|
Logic.currlogic.sid = LogicMethod.CurrLogicMethod.NewSid();
|
loading.Start();
|
new System.Threading.Thread(() =>
|
{
|
try
|
{
|
if (!MainPage.NoLoginMode)
|
{
|
//发送新加逻辑命令;
|
responsePackNew = Send.AddLogic(Logic.currlogic);
|
}
|
|
}
|
catch { }
|
finally
|
{
|
Application.RunOnMainThread(() =>
|
{
|
loading.Hide();
|
if(MainPage.NoLoginMode)
|
{
|
Logic.LogicList.Add(Logic.currlogic);
|
LogicMethod.CurrLogicMethod.RemoveAllView();
|
MainView.MainShow();
|
return;
|
}
|
|
if (responsePackNew != null && responsePackNew.Code == "0" && responsePackNew.Data.ToString() != "")
|
{
|
//获取逻辑详细返回是一个数组(object类型转换为数组);
|
var jArray = Newtonsoft.Json.Linq.JArray.Parse(responsePackNew.Data.ToString());
|
for (int a = 0; a < jArray.Count; a++)
|
{
|
var jay = jArray[a];
|
//数据返序列化为Logic对象
|
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jay);
|
var logic = Newtonsoft.Json.JsonConvert.DeserializeObject<Logic>(str);
|
if (logic.userLogicId != "")
|
{
|
//更新云端唯一自动化id;
|
Logic.currlogic.userLogicId = logic.userLogicId;
|
}
|
else
|
{
|
//自己看的所以不需要支持中英文
|
new LogicView.TipPopView().FlashingBox("没有返回云端唯一自动化id");
|
}
|
|
}
|
|
Logic.LogicList.Add(Logic.currlogic);
|
LogicMethod.CurrLogicMethod.RemoveAllView();
|
MainView.MainShow();
|
}
|
else if (responsePackNew != null && responsePackNew.Code == "14005")
|
{
|
new LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.gatewayNotOnline));
|
}
|
else
|
{
|
new LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.saveFail));
|
}
|
});
|
}
|
|
})
|
{ IsBackground = true }.Start();
|
|
}, () => { });
|
|
}
|
else
|
{
|
loading.Start();
|
new System.Threading.Thread(() =>
|
{
|
|
try
|
{
|
//发送修改逻辑命令;
|
responsePackNew = Send.UpdateLogic(Logic.currlogic);
|
|
}
|
catch { }
|
finally
|
{
|
Application.RunOnMainThread(() =>
|
{
|
loading.Hide();
|
if (responsePackNew != null && responsePackNew.Code == "0")
|
{
|
LogicMethod.CurrLogicMethod.RemoveAllView();
|
MainView.MainShow();
|
}
|
else if (responsePackNew != null && responsePackNew.Code == "14005")
|
{
|
new LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.gatewayNotOnline));
|
}
|
else
|
{
|
new LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.saveFail));
|
}
|
});
|
}
|
|
|
|
})
|
{ IsBackground = true }.Start();
|
|
}
|
|
};
|
#endregion
|
}
|
/// <summary>
|
/// 循环方式(每天,每月。。)
|
/// </summary>
|
/// <param name="button">显示文本</param>
|
public void DateMethod(Button button)
|
{
|
FrameLayout fLayout = new FrameLayout
|
{
|
BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
|
};
|
this.AddChidren(fLayout);
|
LogicView.DateView dateView = new LogicView.DateView();
|
dateView.btnTitle.TextID = StringId.cyclic;
|
dateView.FLayoutView(fLayout, 4);
|
dateView.btnCancel.MouseUpEventHandler += (sender2, e2) =>
|
{
|
//移除fLayout界面
|
fLayout.RemoveFromParent();
|
};
|
//定义一个局部变量记录选中文本状态
|
string weekName = "";
|
//定义一个局部Btn用来记录选中Btn;
|
var selecetdBtn = new Button() { Text = "" };
|
for (int i = 0; i < 4; i++)
|
{
|
LogicView.SelectTypeView dateTypeView = new LogicView.SelectTypeView();
|
dateTypeView.frameLayout.BackgroundColor = CSS.CSS_Color.viewTranslucence;
|
dateTypeView.frameLayout.Y = Application.GetRealHeight(56 + 50 * i);
|
dateTypeView.btnIcon.Visible = false;
|
dateTypeView.btnText.X = Application.GetRealWidth(20);
|
dateTypeView.btnNextIcon.X = Application.GetRealWidth(307);
|
dateTypeView.btnLine.X = Application.GetRealWidth(20);
|
dateTypeView.btnLine.Width = Application.GetRealWidth(303);
|
dateView.frameLayout.AddChidren(dateTypeView.FLayoutView());
|
dateTypeView.btnClick.Tag = i;//标记类型
|
|
switch (i)
|
{
|
case 0:
|
{
|
weekName = Language.StringByID(StringId.performA);
|
dateTypeView.btnNextIcon.Visible = false;
|
}
|
break;
|
case 1:
|
{
|
weekName = Language.StringByID(StringId.days);
|
dateTypeView.btnNextIcon.Visible = false;
|
}
|
break;
|
case 2:
|
{
|
weekName = Language.StringByID(StringId.weekly);
|
}
|
break;
|
case 3:
|
{
|
weekName = Language.StringByID(StringId.monthly);
|
}
|
break;
|
|
|
}
|
dateTypeView.btnText.Text = weekName;
|
//循环类型(例如:每月,每天)点击事件
|
dateTypeView.btnClick.MouseUpEventHandler += (sender, e) =>
|
{
|
int clickIndex = int.Parse(dateTypeView.btnClick.Tag.ToString());
|
switch (clickIndex)
|
{
|
case 0:
|
{
|
weekName = Language.StringByID(StringId.performA);
|
selecetdBtn.TextColor = CSS.CSS_Color.textColor;
|
dateTypeView.btnText.TextColor = CSS.CSS_Color.textConfirmColor;
|
selecetdBtn = dateTypeView.btnText;
|
}
|
break;
|
case 1:
|
{
|
weekName = Language.StringByID(StringId.days);
|
selecetdBtn.TextColor = CSS.CSS_Color.textColor;
|
dateTypeView.btnText.TextColor = CSS.CSS_Color.textConfirmColor;
|
selecetdBtn = dateTypeView.btnText;
|
|
}
|
break;
|
case 2:
|
{
|
WeekMethod(fLayout, button);
|
}
|
break;
|
case 3:
|
{
|
MonMethod(fLayout, button);
|
}
|
break;
|
|
|
}
|
};
|
|
|
//显示之前的状态
|
if (button.Text == weekName)
|
{
|
dateTypeView.btnText.TextColor = CSS.CSS_Color.textConfirmColor;
|
selecetdBtn = dateTypeView.btnText;
|
|
}
|
}
|
//确定保存
|
dateView.btnConfirm.MouseUpEventHandler += (sender3, e3) =>
|
{
|
if (selecetdBtn.Text == Language.StringByID(StringId.performA))
|
{
|
//执行一次
|
Logic.currlogic.cycle.type = "once";
|
}
|
else if (selecetdBtn.Text == Language.StringByID(StringId.days))
|
{
|
//每天
|
Logic.currlogic.cycle.type = "day";
|
|
}
|
else
|
{
|
//提示:还未选
|
return;
|
}
|
//选中保存之后显示文本
|
button.Text = selecetdBtn.Text;
|
//移除fLayout界面
|
fLayout.RemoveFromParent();
|
};
|
}
|
/// <summary>
|
/// 选中星期几(周一,周二 。。。)
|
/// </summary>
|
/// <param name="fLayout">弹框主控件</param>
|
/// <param name="button">显示文本</param>
|
public void WeekMethod(FrameLayout fLayout, Button button)
|
{
|
//定义一个局部weekList列表用来记录选中数据;
|
List<string> weekStateList = new List<string>();
|
PublicInterface weekView = new PublicInterface();
|
if (Logic.currlogic.cycle.type == "week")
|
{
|
//数据转换
|
var list = weekView.GetWeekString(Logic.currlogic.cycle.value, "int");
|
//加载之前保存的数据
|
weekStateList.AddRange(list);
|
}
|
var weekListStr = weekView.GetViewList("week");
|
weekView.MultiSelectShow(fLayout, weekListStr, Language.StringByID(StringId.cyclic), weekStateList
|
, (list) =>
|
{
|
|
//选中数据处理
|
var statelist = weekView.GetWeekString(list, "str");
|
string textStr = MainView.GetWeekString(statelist);
|
//显示选中数据
|
button.Text = textStr;
|
//封装数据
|
Logic.currlogic.cycle.type = "week";
|
Logic.currlogic.cycle.value = statelist;
|
|
});
|
}
|
/// <summary>
|
/// 每月
|
/// </summary>
|
/// <param name="fLayout">弹框主控件</param>
|
/// <param name="button">显示文本</param>
|
public void MonMethod(FrameLayout fLayout, Button button)
|
{
|
|
PublicInterface weekView = new PublicInterface();
|
weekView.MonSelectShow(fLayout, Logic.currlogic, (monList) =>
|
{
|
//选中数据处理
|
string textStr = MainView.GetMonString(monList);
|
//显示选中数据
|
button.Text = textStr;
|
//封装数据
|
Logic.currlogic.cycle.type = "mon";
|
Logic.currlogic.cycle.value = monList;
|
});
|
|
}
|
/// <summary>
|
/// 满足条件
|
/// </summary>
|
/// <param name="button">显示文本</param>
|
public void AndOrMethod(Button button)
|
{
|
|
///之前的状态文本
|
string currCondition = button.Text;
|
PublicInterface conditionView = new PublicInterface();
|
var strList = conditionView.GetViewList("andor");
|
conditionView.SingleSelectionShow(this, strList, Language.StringByID(StringId.meetTheCondition), currCondition
|
, (stateValue) =>
|
{
|
//界面显示选中值
|
button.Text = stateValue;
|
//封装数据
|
if (stateValue == Language.StringByID(StringId.orCondition))
|
{
|
Logic.currlogic.relation = "or";
|
}
|
else
|
{
|
Logic.currlogic.relation = "and";
|
}
|
|
});
|
|
|
}
|
|
|
}
|
}
|