using System;
using System.Collections.Generic;
using Newtonsoft.Json.Linq;
using Shared;
using Shared.Common;
using Shared.Phone;
using Shared.Phone.Device.Logic.LogicView;
using Shared.R;
using ZigBee.Device;
namespace Shared.Phone.Device.Logic
{
public class OneLogic : FrameLayout
{
public OneLogic()
{
UserView.HomePage.Instance.RemoveViewByTag("Logic");
Tag = "Logic";
}
///
/// S-one门锁特殊界面
///
///
public void Show(bool Yes)
{
#region View布局代码
UserView.HomePage.Instance.ScrollEnabled = false;
TopView view = new TopView();
this.AddChidren(view.TopRowView());
if (Yes)
{
view.toptitleNameBtn.Text = Language.StringByID(MyInternationalizationString.look);
}
else
{
if (Common.Logic.CurrentLogic.LogicId != 0)
{
view.toptitleNameBtn.Text = Language.StringByID(MyInternationalizationString.editautomation);
}
else
{
view.toptitleNameBtn.Text = Language.StringByID(MyInternationalizationString.newautomation);
}
}
view.clickBtn.MouseDownEventHandler += (sender, e) =>
{
UserView.HomePage.Instance.ScrollEnabled = true;//恢复左滑
RemoveFromParent();
};
var middle = new VerticalScrolViewLayout
{
Y = view.topRowLayout.Bottom,
Height = Application.GetRealHeight(Method.H - 184 - 180),
BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
};
this.AddChidren(middle);
var saveBtn = new SaveView();
saveBtn.frameLayout.Y = middle.Bottom;
saveBtn.frameLayout.Height = Application.GetRealHeight(180);
this.AddChidren(saveBtn.Show());
#endregion
#region -----自动化名称 设置名称-----
var logicnamefl = new FrameLayout
{
Height = Application.GetRealHeight(130),
BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
};
middle.AddChidren(logicnamefl);
var text = new Button
{
Width = Application.GetRealWidth(300),
Height = Application.GetRealHeight(60),
X = Application.GetRealWidth(58),
TextAlignment = TextAlignment.CenterLeft,
//Text = "自动化名称",
TextID = MyInternationalizationString.automationname,
TextColor = ZigbeeColor.Current.LogicTextBlackColor,
Y = Application.GetRealHeight(35),
TextSize = 15,
};
logicnamefl.AddChidren(text);
var logicTextBox = new EditText
{
Y = Application.GetRealHeight(35),
Width = Application.GetRealWidth(1080 - 58 - 300),
Height = Application.GetRealHeight(60),
X = text.Right,
TextAlignment = TextAlignment.CenterLeft,
TextColor = ZigbeeColor.Current.LogicBtnCancelColor,
TextSize = 14,
Text = Common.Logic.CurrentLogic.LogicName,
//TextID=MyInternationalizationString.automation1,
};
logicnamefl.AddChidren(logicTextBox);
if (Yes)
{
//S-one门锁特殊,不能再次编辑;
logicTextBox.Enable = false;
}
var fraline = new FrameLayout
{
Height = Application.GetRealHeight(30),
};
middle.AddChidren(fraline);
#endregion
#region -----显示逻辑条件-----
Addview addconditionview = new Addview();
addconditionview.iconBtn.Visible = false;
addconditionview.titleBtn.TextID = MyInternationalizationString.ifcondition;
middle.AddChidren(addconditionview.AddDeviceView());
///添加条件的点击事件
for (int i = 0; i < Common.Logic.CurrentLogic.Conditions.Count; i++)
{
SelectedDeviceView selecteddevice = new SelectedDeviceView();
selecteddevice.Show(middle);
if (!Yes)
{
//S-one门锁特殊,不能再次编辑;
selecteddevice.stateRow.AddRightView(selecteddevice.edit);
}
var Type = int.Parse(Common.Logic.CurrentLogic.Conditions[i]["Type"]);
var conditions = Common.Logic.CurrentLogic.Conditions[i];
switch (Type)
{
case 0:
{
//"0正常时间点","1日出时间","2日落时间","3正午时间"
switch (int.Parse(conditions["DateType"]))
{
case 0:
{
selecteddevice.ordinaryBtn.Text = Language.StringByID(MyInternationalizationString.immediateexecution);
selecteddevice.iconBtn.UnSelectedImagePath = "ZigeeLogic/timepoint.png";
string s = "";
s = conditions["StartMin"].Length < 2 ? "0" + conditions["StartMin"] : conditions["StartMin"];
selecteddevice.selecetddevicestateBtn.Text= conditions["StartHour"] + ":" + s;
}
break;
}
}
break;
}
if (Yes)
{
//改变字体颜色;
selecteddevice.ordinaryBtn.TextColor = ZigbeeColor.Current.LogicBtnCancelColor;
selecteddevice.selecetddevicestateBtn.TextColor = ZigbeeColor.Current.LogicBtnCancelColor;
}
///编辑
selecteddevice.edit.MouseUpEventHandler += (sender, e) =>
{
if (Type == 0)
{
var oneTimePoint = new OneTimePoint();
UserView.HomePage.Instance.AddChidren(oneTimePoint);
UserView.HomePage.Instance.PageIndex += 1;
oneTimePoint.Show((timeString) =>
{
if (!string.IsNullOrEmpty(timeString))
{
//编辑完回来先更新时间
selecteddevice.selecetddevicestateBtn.Text = timeString;
}
});
}
};
}
#endregion
#region ----显示执行目标----
Addview addactionview = new Addview();
addactionview.iconBtn.Visible = false;
addactionview.titleBtn.TextID = MyInternationalizationString.execute;
middle.AddChidren(addactionview.AddDeviceView());
for (int i = 0; i < Common.Logic.CurrentLogic.Actions.Count; i++)
{
SelectedDeviceView actiondevice = new SelectedDeviceView();
actiondevice.Show(middle);
if (!Yes)
{
//S-one门锁特殊,不能再次编辑;
actiondevice.stateRow.AddRightView(actiondevice.edit);
}
var linkType = int.Parse(Common.Logic.CurrentLogic.Actions[i]["LinkType"].ToString());
var actions = Common.Logic.CurrentLogic.Actions[i];
switch (linkType)
{
case 8:
{
//S-one门锁特殊(Mac是唯一的识别)
///如果不这样查找,分类-自动化进来查看会存在问题
var deviceinof = Common.Logic.LogicDviceList.Find((obj) => { return obj.DeviceAddr == actions["DeviceAddr"].ToString(); });
if (deviceinof == null)
{
deviceinof = new CommonDevice();
}
actiondevice.deviceNameBtn.Text = LocalDevice.Current.GetDeviceEpointName(deviceinof);
actiondevice.deviceNameBtn.Visible = true;
actiondevice.regionNameBtn.Visible = true;
Method.RoomNmae(actiondevice.regionNameBtn, deviceinof);
if (Yes) {
//改变字体颜色;
actiondevice.deviceNameBtn.TextColor = ZigbeeColor.Current.LogicBtnCancelColor;
actiondevice.regionNameBtn.TextColor = ZigbeeColor.Current.LogicBtnCancelColor;
actiondevice.selecetddevicestateBtn.TextColor = ZigbeeColor.Current.LogicBtnCancelColor;
}
switch (deviceinof.Type)
{
case DeviceType.DoorLock:
{
//门锁特殊
actiondevice.iconBtn.UnSelectedImagePath = "ZigeeLogic/doorlock.png";
if (actions["PassData"].ToString() == "055704010112")
{
actiondevice.selecetddevicestateBtn.Text = Language.StringByID(MyInternationalizationString.logicopen);
}
else
{
actiondevice.selecetddevicestateBtn.Text = Language.StringByID(MyInternationalizationString.logicclose);
}
}
break;
}
}
break;
}
///编辑
actiondevice.edit.MouseUpEventHandler += (sender, e) =>
{
switch (linkType)
{
case 8:
{
//S-one门锁特殊(Mac是唯一的识别)
///如果不这样查找,分类-自动化进来查看会存在问题
var deviceinof = Common.Logic.LogicDviceList.Find((obj) => { return obj.DeviceAddr == actions["DeviceAddr"].ToString(); });
if (deviceinof == null)
{
deviceinof = new CommonDevice();
}
DevcieView(deviceinof, actiondevice.selecetddevicestateBtn);
};
break;
}
};
}
#endregion
#region -----每天 设置周期-----
var fraline1 = new FrameLayout
{
Height = Application.GetRealHeight(30),
};
middle.AddChidren(fraline1);
Addview weekview = new Addview();
weekview.iconBtn.Visible = true;
weekview.iconBtn.UnSelectedImagePath = "ZigeeLogic/next.png";
weekview.titleBtn.TextID = MyInternationalizationString.setupcycle;
middle.AddChidren(weekview.AddDeviceView());
var weekBtn = new Button
{
Width = Application.GetRealWidth(595),
Height = Application.GetRealHeight(60),
TextAlignment = TextAlignment.CenterRight,
//Text = "每天",
TextColor = ZigbeeColor.Current.LogicBtnCancelColor,
TextID = MyInternationalizationString.everyday,
Y = Application.GetRealHeight(35 + 30),
X = weekview.titleBtn.Right,
TextSize = 14,
};
weekview.frameLayout.AddChidren(weekBtn);
Method.UpdateWeek(weekBtn, Common.Logic.CurrentLogic);
EventHandler cycleclick = (sender, e) =>
{
if (Yes) {
//S-one门锁特殊,不能再次编辑;
return;
}
var cycle = new Cycle(() => { Method.UpdateWeek(weekBtn, Common.Logic.CurrentLogic); });
UserView.HomePage.Instance.AddChidren(cycle);
UserView.HomePage.Instance.PageIndex += 1;
cycle.Show();
};
weekBtn.MouseUpEventHandler += cycleclick;
weekview.clickBtn.MouseUpEventHandler += cycleclick;
if (Yes)
{
//改变字体颜色;
weekBtn.TextColor = ZigbeeColor.Current.LogicBtnCancelColor;
logicTextBox.TextColor = ZigbeeColor.Current.LogicBtnCancelColor;
}
#endregion
#region ----推送设置----
Method.Push(middle);
#endregion
saveBtn.clickviewBtn.MouseUpEventHandler += (sender, e) =>
{
if (Yes)
{
//S-one门锁特殊,不能再次编辑;
RemoveFromParent();
return;
}
var name = logicTextBox.Text.Trim();
Method.SaveLogic(IfString._SoneLogic, name, IfString.Tag, Common.Logic.CurrentLogic);
};
}
///
/// 选中该作为条件或者目标的视图方法
///
/// Common.
void DevcieView( CommonDevice common,Button button)
{
#region -------界面布局部分
//不让当前界面滑动
UserView.HomePage.Instance.ScrollEnabled = false;
var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor };
this.AddChidren(flMain);
CompleteView completeView = new CompleteView();
flMain.AddChidren(completeView.Show(1));
// completeView.Btntitle.Text =LocalDevice.Current.GetDeviceEpointName(common);
completeView.Btntitle.TextID = MyInternationalizationString.openmode;
EventHandler clickcancel = (sender, e) =>
{
flMain.RemoveFromParent();
};
flMain.MouseUpEventHandler += clickcancel;
completeView.Btncancel.MouseUpEventHandler += clickcancel;
mFunView openView = new mFunView();
openView.frameLayout.Y = Application.GetRealHeight(140 + 20);
completeView.Show(2).AddChidren(openView.Show());
openView.titleBtn.TextID = MyInternationalizationString.logicopen;
mFunView closeView = new mFunView();
closeView.frameLayout.Y = Application.GetRealHeight(140 + 20 + 160);
closeView.frameLayout.Y = openView.frameLayout.Bottom;
completeView.Show(2).AddChidren(closeView.Show());
closeView.titleBtn.TextID = MyInternationalizationString.logicclose;
closeView.lineBtn.BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor;
#endregion
Dictionary actionsInfo = new Dictionary();
actionsInfo.Add("LinkType", 8);
actionsInfo.Add("DeviceAddr", common.DeviceAddr);
actionsInfo.Add("Epoint","200");
string SelectedDeviceStatus = "";
switch (common.Type)
{
case DeviceType.DoorLock:
{
openView.clickviewBtn.MouseUpEventHandler += (sender, e) =>
{
openView.selectedIconBtn.Visible = true;
closeView.selectedIconBtn.Visible = false;
openView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
closeView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
SelectedDeviceStatus = Language.StringByID(MyInternationalizationString.logicopen);
if (actionsInfo.ContainsKey("PassData"))
{
actionsInfo.Remove("PassData");
}
actionsInfo.Add("PassData", "055704010112");//门锁常开
};
///点击取消事件
closeView.clickviewBtn.MouseUpEventHandler += (sender, e) =>
{
openView.selectedIconBtn.Visible = false;
closeView.selectedIconBtn.Visible = true;
openView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
closeView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
SelectedDeviceStatus = Language.StringByID(MyInternationalizationString.logicclose);
if (actionsInfo.ContainsKey("PassData"))
{
actionsInfo.Remove("PassData");
}
actionsInfo.Add("PassData", "055704010113");//门锁常关
};
if (button.Text == Language.StringByID(MyInternationalizationString.logicopen))
{
//开启
SelectedDeviceStatus = Language.StringByID(MyInternationalizationString.logicopen);
openView.selectedIconBtn.Visible = true;
closeView.selectedIconBtn.Visible = false;
openView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
closeView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
}
else {
//关闭
SelectedDeviceStatus = Language.StringByID(MyInternationalizationString.logicclose);
openView.selectedIconBtn.Visible = false;
closeView.selectedIconBtn.Visible = true;
openView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
closeView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
}
}
break;
}
completeView.Btncomplete.MouseUpEventHandler += (sender, e) =>
{
if (!string.IsNullOrEmpty(SelectedDeviceStatus))
{
LogicIfon.AddDoorLockActions(common, actionsInfo);
button.Text = SelectedDeviceStatus;
}
flMain.RemoveFromParent();
};
}
}
}