using System;
using System.Collections.Generic;
using Shared.Common;
using Shared.R;
using ZigBee.Device;
namespace Shared.Phone.Device.Logic
{
public class LogicDveiceStatus
{
///
/// 显示逻辑条件状态的方法
///
/// 父控件
///
/// 逻辑条件列表
/// 逻辑名称
public void Conditions(FrameLayout frameLayout,VerticalScrolViewLayout middle,List> ListConditions,string logicName)
{
for (int i = 0; i < ListConditions.Count; i++)
{
if (i == (ListConditions.Count - 1))
{
LogicView.AddDeviceView addflview = new LogicView.AddDeviceView();
addflview.titleBtn.TextID = MyInternationalizationString.addconditions;
middle.AddChidren(addflview.AddFl());
addflview.clickBtn.MouseUpEventHandler += (sender, e) =>
{
Common.Logic.CurrentLogic.LogicName = logicName;
if (Common.Logic.CurrentLogic.Conditions.Count == 1)
{
ConditionView(false, frameLayout);
}
else
{
var addLogicPage = new AddLogicPage();
UserView.HomePage.Instance.AddChidren(addLogicPage);
UserView.HomePage.Instance.PageIndex += 1;
addLogicPage.Show();
}
};
}
else
{
SelectedDeviceView selecteddevice = new SelectedDeviceView();
selecteddevice.Show(middle);
selecteddevice.stateRow.AddRightView(selecteddevice.edit);
selecteddevice.stateRow.AddRightView(selecteddevice.del);
var Type = int.Parse(ListConditions[i]["Type"]);
var conditions = ListConditions[i];
string name = "";
string icon = "";
string state = "";
switch (Type)
{
/// (0:时间点条件;1:设备状态变化条件;2:其他逻辑条件;3:计数器条件;4:倒计时;5:时间段条件;6:安防条件;7:地理位置)
case 0:
{
//"0正常时间点","1日出时间","2日落时间","3正午时间"
switch (int.Parse(conditions["DateType"]))
{
case 0:
{
name = Language.StringByID(MyInternationalizationString.immediateexecution);
icon = "ZigeeLogic/timepoint.png";
string s = "";
s = conditions["StartMin"].Length < 2 ? "0" + conditions["StartMin"] : conditions["StartMin"];
state = conditions["StartHour"] + ":" + s;
}
break;
case 1:
{
name = Language.StringByID(MyInternationalizationString.sunrise);
icon = "ZigeeLogic/sunrise.png";
if (int.Parse(conditions["AdjustTime"]) > 0)
{
state = Language.StringByID(MyInternationalizationString.delayed) + conditions["AdjustTime"] + Language.StringByID(MyInternationalizationString.logicminute);
}
else if (int.Parse(conditions["AdjustTime"]) < 0)
{
state = Language.StringByID(MyInternationalizationString.advance) + Math.Abs(int.Parse(conditions["AdjustTime"])).ToString() + Language.StringByID(MyInternationalizationString.logicminute);
}
else
{
//timeTxet.Text = Language.StringByID(MyInternationalizationString.sunrise);
}
}
break;
case 2:
{
name = Language.StringByID(MyInternationalizationString.sunset);
icon = "ZigeeLogic/sunset.png";
if (int.Parse(conditions["AdjustTime"]) > 0)
{
state = Language.StringByID(MyInternationalizationString.delayed) + conditions["AdjustTime"] + Language.StringByID(MyInternationalizationString.logicminute);
}
else if (int.Parse(conditions["AdjustTime"]) < 0)
{
state = Language.StringByID(MyInternationalizationString.advance) + Math.Abs(int.Parse(conditions["AdjustTime"])).ToString() + Language.StringByID(MyInternationalizationString.logicminute);
}
else
{
// timevalue.Text = Language.StringByID(MyInternationalizationString.sunset);
}
}
break;
case 3:
{
name = Language.StringByID(MyInternationalizationString.noon);
icon = "ZigeeLogic/noon.png";
if (int.Parse(conditions["AdjustTime"]) > 0)
{
state = Language.StringByID(MyInternationalizationString.delayed) + conditions["AdjustTime"] + Language.StringByID(MyInternationalizationString.logicminute);
}
else if (int.Parse(conditions["AdjustTime"]) < 0)
{
state = Language.StringByID(MyInternationalizationString.advance) + Math.Abs(int.Parse(conditions["AdjustTime"])).ToString() + Language.StringByID(MyInternationalizationString.logicminute);
}
else
{
// timeTxet.Text = Language.StringByID(MyInternationalizationString.noon);
}
}
break;
}
}
break;
case 5:
{
icon = "ZigeeLogic/timeparagraph.png";
string s1 = "", s2 = "";
s1 = conditions["StartMin"].Length < 2 ? "0" + conditions["StartMin"] : conditions["StartMin"];
s2 = conditions["StopMin"].Length < 2 ? "0" + conditions["StopMin"] : conditions["StopMin"];
///显示时间
name = conditions["StartHour"] + ":" + s1 + "-" + conditions["StopHour"] + ":" + s2;
state =Language.StringByID(MyInternationalizationString.timeframe);
}
break;
case 1:
{
var deviceinof = Method.GetCommonDevice(conditions["MacAddr"], conditions["Epoint"]);
name = LocalDevice.Current.GetDeviceEpointName(deviceinof);
selecteddevice.regionNameBtn.Visible = true;
Method.RoomNmae(selecteddevice.regionNameBtn, deviceinof);
switch (deviceinof.Type)
{
case DeviceType.OnOffOutput:
{
icon = "ZigeeLogic/light.png";
if (conditions["AttriButeId"] == "0")
{
if (conditions["AttriButeData1"] == "1")
{
state = Language.StringByID(MyInternationalizationString.open);
}
else
{
state = Language.StringByID(MyInternationalizationString.close);
}
}
}
break;
case DeviceType.IASZone:
{
var iASZonedevice = deviceinof as IASZone;
var intvalue = conditions["AttriButeData1"];
icon = $"ZigeeLogic/sensor{iASZonedevice.IasDeviceType}.png";
switch (iASZonedevice.IasDeviceType)
{
case 13:
{
if (conditions.ContainsKey("IgnoreTime"))
{
int minute = int.Parse(conditions["IgnoreTime"]) / 60;
int second = int.Parse(conditions["IgnoreTime"]) % 60;
if (minute != 0 && second != 0)
{
state = minute.ToString() + Language.StringByID(MyInternationalizationString.minute) + second.ToString() + Language.StringByID(MyInternationalizationString.second) + Language.StringByID(MyInternationalizationString.unattendedtime1);
}
else
{
if (minute == 0 && second != 0)
{
state = second.ToString() + Language.StringByID(MyInternationalizationString.second) + Language.StringByID(MyInternationalizationString.unattendedtime1);
}
if (minute != 0 && second == 0)
{
state = minute.ToString() + Language.StringByID(MyInternationalizationString.Minute) + Language.StringByID(MyInternationalizationString.unattendedtime1);
}
}
}
else
{
state = Language.StringByID(MyInternationalizationString.someone);
}
}
break;
case 21:
case 22:
{
if (conditions.ContainsKey("IgnoreTime"))
{
int minute = int.Parse(conditions["IgnoreTime"]) / 60;
int second = int.Parse(conditions["IgnoreTime"]) % 60;
if (minute != 0 && second != 0)
{
state = minute.ToString() + Language.StringByID(MyInternationalizationString.minute) + second.ToString() + Language.StringByID(MyInternationalizationString.second) + Language.StringByID(MyInternationalizationString.closetime);
}
else
{
if (minute == 0 && second != 0)
{
state = second.ToString() + Language.StringByID(MyInternationalizationString.second) + Language.StringByID(MyInternationalizationString.closetime);
}
if (minute != 0 && second == 0)
{
state = minute.ToString() + Language.StringByID(MyInternationalizationString.Minute) + Language.StringByID(MyInternationalizationString.closetime);
}
}
}
else
{
if (intvalue == "1")
{
state = Language.StringByID(MyInternationalizationString.logicopen);
}
else
{
state = Language.StringByID(MyInternationalizationString.logicclose);
}
}
}
break;
case 40:
{
if (intvalue == "1")
{
state =Language.StringByID(MyInternationalizationString.smokescreen);
}
}
break;
case 42:
{
if (intvalue == "1")
{
state =Language.StringByID( MyInternationalizationString.waterleakage);
}
else
{
state =Language.StringByID( MyInternationalizationString.noleakage);
}
}
break;
case 43:
{
if (intvalue == "1")
{
state =Language.StringByID( MyInternationalizationString.gas);
}
}
break;
case 277:
{
if (intvalue == "1")
{
state =Language.StringByID( MyInternationalizationString.callthepolice);
}
}
break;
case 541:
{
if (conditions["Cluster_ID"] == "1024") {
state = Language.StringByID(MyInternationalizationString.ambientLight)+"<"+conditions["AttriButeData1"]+"lux"+ Language.StringByID(MyInternationalizationString.hour1);
}
else
{
if (conditions.ContainsKey("IgnoreTime"))
{
int minute = int.Parse(conditions["IgnoreTime"]) / 60;
int second = int.Parse(conditions["IgnoreTime"]) % 60;
if (minute != 0 && second != 0)
{
state = minute.ToString() + Language.StringByID(MyInternationalizationString.minute) + second.ToString() + Language.StringByID(MyInternationalizationString.second) + Language.StringByID(MyInternationalizationString.unattendedtime1);
}
else
{
if (minute == 0 && second != 0)
{
state = second.ToString() + Language.StringByID(MyInternationalizationString.second) + Language.StringByID(MyInternationalizationString.unattendedtime1);
}
if (minute != 0 && second == 0)
{
state = minute.ToString() + Language.StringByID(MyInternationalizationString.Minute) + Language.StringByID(MyInternationalizationString.unattendedtime1);
}
}
}
else
{
state = Language.StringByID(MyInternationalizationString.someone);
}
}
}
break;
default:
{
if (intvalue == "1")
{
state =Language.StringByID(MyInternationalizationString.callthepolice);
}
}
break;
}
}
break;
case DeviceType.OnOffSwitch:
{
icon = "ZigeeLogic/panel.png";
state = Language.StringByID(MyInternationalizationString.OnOffSwitch) + conditions["Epoint"];
}
break;
case DeviceType.DoorLock:
{
icon = "ZigeeLogic/doorlock.png";
for (int a = 0; a < Common.Logic.CurrentLogic.Accounts.Count; a++)
{
if (Common.Logic.CurrentLogic.Accounts[a]["Type"] == "1")
{
if (Common.Logic.CurrentLogic.Accounts[a]["UserId"] == conditions["AttriButeData2"])
{
state = Common.Logic.CurrentLogic.Accounts[a]["AccountName"];
break;
}
}
}
}
break;
case DeviceType.TemperatureSensor:
{
// conditionIcon.UnSelectedImagePath = "ZigeeLogic/temperature.png";
var dev = deviceinof as TemperatureSensor;
if (conditions["Cluster_ID"] == "1026")
{
dev.SensorDiv = 1;
}
else
{
dev.SensorDiv = 2;
}
string s = "";
switch (conditions["Range"])
{
case "0":
{
s = ">";
}
break;
case "1":
{
s = "=";
}
break;
case "2":
{
s = "<";
}
break;
case "6":
{
s = "≥";
}
break;
case "7":
{
s = "≤";
}
break;
}
///转换温度值/100
string srtValue = (int.Parse(conditions["AttriButeData1"]) / 100).ToString();
if (conditions["Cluster_ID"] == "1026")
{
icon = "ZigeeLogic/temperature.png";
state = s + srtValue + "℃";
}
else
{
icon = "ZigeeLogic/humidity.png";
state = s + srtValue + "%";
}
break;
}
}
}
break;
case 6:
{
switch (conditions["EnOrWithdrawMode"])
{
case "0":
{
if (conditions["ModeId"] == "1")
{
icon = "ZigeeLogic/athome.png";
name = Language.StringByID(MyInternationalizationString.logicathomegarrison);
}
else
{
icon = "ZigeeLogic/leavehome.png";
name = Language.StringByID(MyInternationalizationString.logicremovehomegarrison);
}
}
break;
case "1":
{
icon = "ZigeeLogic/withdrawal.png";
name = Language.StringByID(MyInternationalizationString.withdrawal);
}
break;
case "2":
{
icon = "ZigeeLogic/withdrawal.png";
name = Language.StringByID(MyInternationalizationString.urgentwithdrawal);
}
break;
}
}
break;
case 7:
{
icon = "ZigeeLogic/position.png";
name = Language.StringByID(MyInternationalizationString.geographicalposition);
foreach (var radius in Common.Logic.CurrentLogic.Accounts)
{
if (radius["Type"] == "7")
{
if (conditions["AtHome"] == "1")
{
state = Language.StringByID(MyInternationalizationString.athome) + radius["Radius"] + Language.StringByID(MyInternationalizationString.mi);
}
else
{
state = Language.StringByID(MyInternationalizationString.leavehome) + radius["Radius"] + Language.StringByID(MyInternationalizationString.mi);
}
}
}
}
break;
}
if (Type != 1)
{
selecteddevice.ordinaryBtn.Visible = true;
selecteddevice.iconBtn.UnSelectedImagePath = icon;
selecteddevice.ordinaryBtn.Text = name;
selecteddevice.selecetddevicestateBtn.Text = state;
}
else
{
//设备状态
selecteddevice.deviceNameBtn.Visible = true;
selecteddevice.iconBtn.UnSelectedImagePath = icon;
selecteddevice.deviceNameBtn.Text = name;
selecteddevice.selecetddevicestateBtn.Text = state;
}
///编辑
selecteddevice.edit.Tag = i.ToString();
selecteddevice.edit.MouseUpEventHandler += (sender, e) =>
{
switch (Type)
{
/// (0:时间点条件;1:设备状态变化条件;2:其他逻辑条件;3:计数器条件;4:倒计时;5:时间段条件;6:安防条件;7:地理位置)
case 0:
{
var timePoint = new TimePoint();
UserView.HomePage.Instance.AddChidren(timePoint);
UserView.HomePage.Instance.PageIndex += 1;
timePoint.IsEditor = true;
timePoint.Show(conditions);
}
break;
case 5:
{
var timePage = new TimePage();
UserView.HomePage.Instance.AddChidren(timePage);
UserView.HomePage.Instance.PageIndex += 1;
timePage.str1 = conditions["StartHour"] + ":" + conditions["StartMin"] + "-" + conditions["StopHour"] + ":" + conditions["StopMin"];
timePage.IsEditor = true;
timePage.Show();
}
break;
case 1:
{
var deviceinof = Method.GetCommonDevice(conditions["MacAddr"], conditions["Epoint"]);
if (deviceinof.Type != DeviceType.DoorLock)
{
var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor };
frameLayout.AddChidren(flMain);
CurrentDeviceState.CurrentDeviceView(flMain, deviceinof, true, "condition_logic",int.Parse(selecteddevice.edit.Tag.ToString()));
}
else
{
var memberList = new MemberList();
UserView.HomePage.Instance.AddChidren(memberList);
UserView.HomePage.Instance.PageIndex += 1;
MemberList.edit = true;
memberList.Show(deviceinof, conditions);
}
}
break;
case 6:
{
var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor };
frameLayout.AddChidren(flMain);
AddLogicPage.SecurityView(flMain, true);
}
break;
case 7:
{
var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor };
frameLayout.AddChidren(flMain);
AddLogicPage.LocationView(flMain, true);
}
break;
}
};
///删除控件
selecteddevice.del.MouseUpEventHandler += (sender, e) =>
{
var alert = new UserCenter.ShowMsgControl(UserCenter.ShowMsgType.Confirm,
Language.StringByID(MyInternationalizationString.doyouwanttodelete),
Language.StringByID(MyInternationalizationString.confrim));
alert.Show();
alert.ConfirmClickEvent += () =>
{
Common.Logic.CurrentLogic.Conditions.Remove(conditions);
selecteddevice.selecetdFrameLayout.RemoveFromParent();
//var logicCommunalPage = new LogicCommunalPage();
//UserView.HomePage.Instance.AddChidren(logicCommunalPage);
//UserView.HomePage.Instance.PageIndex += 1;
//logicCommunalPage.Show(() => { });
};
};
}
}
}
///
///显示逻辑目标状态的方法
///
/// 父控件
///
/// 逻辑目标列表
/// 逻辑名称
public void Actions(FrameLayout frameLayout,VerticalScrolViewLayout middle, List> ListActions, string logicName)
{
for (int i = 0; i < ListActions.Count; i++)
{
if (i == (ListActions.Count - 1))
{
LogicView.AddDeviceView addflview = new LogicView.AddDeviceView();
addflview.titleBtn.TextID = MyInternationalizationString.addfunction;
middle.AddChidren(addflview.AddFl());
addflview.clickBtn.MouseUpEventHandler += (sender, e) =>
{
Common.Logic.CurrentLogic.LogicName = logicName;
Method.View(LogicView.IfString.Action_Logic, LogicView.IfString.Action_LogicScene);
};
}
else
{
SelectedDeviceView actiondevice = new SelectedDeviceView();
actiondevice.Show(middle);
var linkType = int.Parse(ListActions[i]["LinkType"].ToString());
var actions = ListActions[i];
string name = "";
string icon = "";
string state = "";
switch (linkType)
{
case 0:
case 8:
{
var deviceinof = Method.GetCommonDevice(actions["DeviceAddr"].ToString(), actions["Epoint"].ToString());
name = LocalDevice.Current.GetDeviceEpointName(deviceinof);
actiondevice.regionNameBtn.Visible = true;
Method.RoomNmae(actiondevice.regionNameBtn, deviceinof);
switch (deviceinof.Type)
{
case DeviceType.OnOffOutput:
{
icon = "ZigeeLogic/light.png";
var TaskList = actions["TaskList"] as List>;
if (TaskList == null)
{
continue;
}
foreach (var status in TaskList)
{
if (status["TaskType"].ToString() == "1")
{
if (status["Data1"].ToString() == "0")
{
state = Language.StringByID(MyInternationalizationString.close);
}
else if (status["Data1"].ToString() == "1")
{
state = Language.StringByID(MyInternationalizationString.open);
}
else if (status["Data1"].ToString() == "2")
{
state = Language.StringByID(MyInternationalizationString.onoff);
}
}
}
}
break;
case DeviceType.DimmableLight:
{
icon = "ZigeeLogic/dimmableLight.png";
var TaskList = actions["TaskList"] as List>;
if (TaskList == null)
{
continue;
}
foreach (var status in TaskList)
{
if (status["TaskType"].ToString() == "3")
{
var intvalue = int.Parse(status["Data1"]);
var lightbrightnessvalue = (intvalue * 100) / 254;
state = lightbrightnessvalue.ToString() + "%";
}
else if (status["TaskType"].ToString() == "1")
{
if (status["Data1"].ToString() == "0")
{
state = Language.StringByID(MyInternationalizationString.close);
}
else if (status["Data1"].ToString() == "2")
{
state = Language.StringByID(MyInternationalizationString.onoff);
}
}
}
}
break;
case DeviceType.WindowCoveringDevice:
{
icon = "ZigeeLogic/curtain.png";
var TaskList = actions["TaskList"] as List>;
if (TaskList == null)
{
continue;
}
foreach (var status in TaskList)
{
if (status["TaskType"] == "6")
{
if (status["Data1"] == "0")
{
state = Language.StringByID(MyInternationalizationString.open);
}
else if (status["Data1"] == "1")
{
state = Language.StringByID(MyInternationalizationString.close);
}
else if (status["Data1"] == "5")
{
state = status["Data2"] + "%";
}
}
}
}
break;
case DeviceType.AirSwitch:
{
icon = "ZigeeLogic/airswitch.png";
var TaskList = actions["TaskList"] as List>;
if (TaskList == null)
{
continue;
}
foreach (var status in TaskList)
{
if (status["TaskType"].ToString() == "1")
{
if (status["Data1"].ToString() == "0")
{
state = Language.StringByID(MyInternationalizationString.close);
}
else if (status["Data1"].ToString() == "1")
{
state = Language.StringByID(MyInternationalizationString.open);
}
else if (status["Data1"].ToString() == "2")
{
state = Language.StringByID(MyInternationalizationString.onoff);
}
}
}
}
break;
case DeviceType.Thermostat:
{
icon = "ZigeeLogic/ac.png";
var TaskList = actions["TaskList"] as List>;
if (TaskList == null)
{
continue;
}
string modetext = "", temperaturetext = "", speedtext = "";
bool ifclose = false;
foreach (var status in TaskList)
{
if (TaskList.Count == 1)
{
//数组只有一个元素说明当前空调状态为关;
ifclose = false;
//如果空调状态是关;直接跳出for循坏;
break;
}
else
{
ifclose = true;
}
if (status["TaskType"].ToString() == "5")
{
if (status["Data1"] == "3")
{//3---设置工作模式(1:自动;3:制冷;4:制热;7:送风;8:除湿)
switch (status["Data2"])
{
case "3":
{
modetext = Language.StringByID(MyInternationalizationString.logiccool);
}
break;
case "4":
{
modetext = Language.StringByID(MyInternationalizationString.logicheat);
}
break;
case "1":
{
modetext = Language.StringByID(MyInternationalizationString.logicauto);
}
break;
case "8":
{
modetext = Language.StringByID(MyInternationalizationString.logicdry);
}
break;
case "7":
{
modetext = Language.StringByID(MyInternationalizationString.logicfanonly);
}
break;
}
}
else if (status["Data1"] == "6")
{//6---设置风扇模式(1:低风;2:中风;3:高风;)
switch (status["Data2"])
{
case "1":
{
speedtext = Language.StringByID(MyInternationalizationString.logiclow);
}
break;
case "2":
{
speedtext = Language.StringByID(MyInternationalizationString.logicmedium);
}
break;
case "3":
{
speedtext = Language.StringByID(MyInternationalizationString.logichigh);
}
break;
}
}
//4---设置加热度数;5---设置制冷、除湿度数;7---设置自动度数
else if (status["Data1"] == "4" || status["Data1"] == "5" || status["Data1"] == "7")
{
var s = int.Parse(status["Data2"]) / 100;
temperaturetext = s.ToString();
}
else if (status["Data1"] == "20")
{
temperaturetext = "无";
}
}
}
if (ifclose)
{
state = modetext + ";" + temperaturetext + "℃;" + speedtext;
}
else
{
state = Language.StringByID(MyInternationalizationString.close);
}
}
break;
case DeviceType.DoorLock:
{
//门锁特殊
icon = "ZigeeLogic/doorlock.png";
if (actions["PassData"].ToString() == "055704010112")
{
state = Language.StringByID(MyInternationalizationString.logicopen);
}
else
{
state = Language.StringByID(MyInternationalizationString.logicclose);
}
}
break;
case DeviceType.ColorTemperatureLight:
{
icon = "ZigeeLogic/nightLight.png";
var taskList = actions["TaskList"] as List>;
if (taskList == null)
{
continue;
}
foreach (var tasks in taskList)
{
switch (tasks["TaskType"])
{
case "1":
{
if (tasks["Data1"] == "0")
{
state += Language.StringByID(MyInternationalizationString.close) + ";";
}
else
{
state += Language.StringByID(MyInternationalizationString.open) + ";";
}
}
break;
}
}
foreach (var tasks in taskList)
{
switch (tasks["TaskType"])
{
case "3":
{
var intvalue = int.Parse(tasks["Data1"]);
var lightbrightnessvalue = (intvalue * 100) / 254;
state += Language.StringByID(MyInternationalizationString.brightness) + lightbrightnessvalue.ToString() + "%;";
}
break;
}
}
foreach (var tasks in taskList)
{
switch (tasks["TaskType"])
{
case "7":
{
if (tasks["Data1"] == "0")
{
state += Language.StringByID(MyInternationalizationString.buzzer) + Language.StringByID(MyInternationalizationString.close) + ";";
}
else
{
state += Language.StringByID(MyInternationalizationString.buzzer) + Language.StringByID(MyInternationalizationString.open) + ";";
}
}
break;
}
}
foreach (var tasks in taskList)
{
switch (tasks["TaskType"])
{
case "8":
{
var intvalue = int.Parse(tasks["Data1"]);
var colorTemperatureValue = 1000000 / (intvalue * 100);
state += Language.StringByID(MyInternationalizationString.colorTemperature) + colorTemperatureValue.ToString() + "K";
}
break;
}
}
state = state.TrimEnd(';');//去掉最后那个";"
}
break;
}
}
break;
case 2:
{
//在本地查找该场景;
var sceneinof = UserCenter.HdlSceneLogic.Current.GetSceneUIBySceneId(Convert.ToInt32(actions["DeviceAddr"].ToString()));
//本地没有存在;
if (sceneinof == null)
{
//实现目的:显示出来让可以自己是否删除
sceneinof = new SceneUI();
#region --------
////在网关查找该场景;
////标记问题:网络请求,存在视图加载快慢的问题;
//sceneinof = await Send.GetScene(int.Parse(actions["DeviceAddr"].ToString()));
////网关没有存在;
//if (sceneinof == null)
//{
// //注解:本地和网关都不存在该场景,界面将不会显示该场景;
// //sceneinof = new SceneUI();
// //移除该场景数据;
// Common.Logic.CurrentLogic.Actions.Remove(actions);
// //移除该场景视图;
// devicesFrameLayout.RemoveFromParent();
// continue;
//}
#endregion
}
icon = "ZigeeLogic/scene.png";
name = sceneinof.Name;
actiondevice.regionNameBtn.Visible = true;
/////通过设备找到区域(房间)名称
Common.Room room = new Common.Room();
actiondevice.regionNameBtn.Text = UserCenter.HdlRoomLogic.Current.GetRoomNameBySceneId(sceneinof.Id);
}
break;
case 6:
{
if (actions["SecuritySetting"].ToString() == "0")
{
if (actions["Password"].ToString() == "888888")
{
icon = "ZigeeLogic/withdrawal.png";
state = Language.StringByID(MyInternationalizationString.urgentwithdrawal);
}
else
{
icon = "ZigeeLogic/withdrawal.png";
state = Language.StringByID(MyInternationalizationString.withdrawal);
}
}
else if (actions["SecuritySetting"].ToString() == "1")
{
if (actions["SecurityModeId"].ToString() == "1")
{
icon = "ZigeeLogic/athome.png";
state = Language.StringByID(MyInternationalizationString.logicathomegarrison);
}
else if (actions["SecurityModeId"].ToString() == "2")
{
icon = "ZigeeLogic/leavehome.png";
state = Language.StringByID(MyInternationalizationString.logicremovehomegarrison);
}
}
}
break;
case 7:
{
var delaytimevalue = int.Parse(actions["DelayTime"].ToString());
var Minutes = delaytimevalue / 60;
var seconds = delaytimevalue % 60;
icon = "ZigeeLogic/delay.png";
if (Minutes != 0)
{
if (seconds == 0)
{
state = Minutes.ToString() + Language.StringByID(MyInternationalizationString.minute);
}
else
{
state = Minutes.ToString() + Language.StringByID(MyInternationalizationString.minute) + seconds.ToString() + Language.StringByID(MyInternationalizationString.second);
}
}
else
{
state = seconds.ToString() + Language.StringByID(MyInternationalizationString.second);
}
//记录延时;
actiondevice.edit.Tag = i;
};
break;
}
if (linkType != 2)
{
actiondevice.stateRow.AddRightView(actiondevice.edit);
}
actiondevice.stateRow.AddRightView(actiondevice.del);
if (linkType == 6 || linkType == 7)
{
actiondevice.ordinaryBtn.Visible = true;
actiondevice.iconBtn.UnSelectedImagePath = icon;
actiondevice.ordinaryBtn.Text = name;
actiondevice.selecetddevicestateBtn.Text = state;
}
else
{
//设备状态
actiondevice.deviceNameBtn.Visible = true;
actiondevice.iconBtn.UnSelectedImagePath = icon;
actiondevice.deviceNameBtn.Text = name;
actiondevice.selecetddevicestateBtn.Text = state;
}
///编辑
actiondevice.edit.Tag = i.ToString();
actiondevice.edit.MouseUpEventHandler += (sender, e) =>
{
switch (linkType)
{
case 8:
case 0:
{
var deviceinof = Method.GetCommonDevice(actions["DeviceAddr"].ToString(), actions["Epoint"].ToString());
var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor };
frameLayout.AddChidren(flMain);
CurrentDeviceState.CurrentDeviceView(flMain, deviceinof, true, "action_logic", int.Parse(actiondevice.edit.Tag.ToString()));
}
break;
case 6:
{
var securityMode = new SecurityMode();
UserView.HomePage.Instance.AddChidren(securityMode);
UserView.HomePage.Instance.PageIndex += 1;
securityMode.IsDeviceEditor = true;
securityMode.Show();
}
break;
case 7:
{
var delayTime = new DelayTime();
UserView.HomePage.Instance.AddChidren(delayTime);
UserView.HomePage.Instance.PageIndex += 1;
delayTime.Show(int.Parse(actiondevice.edit.Tag.ToString()), true);
}
break;
}
};
///删除控件
actiondevice.del.MouseUpEventHandler += (sender, e) =>
{
var alert = new UserCenter.ShowMsgControl(UserCenter.ShowMsgType.Confirm,
Language.StringByID(MyInternationalizationString.doyouwanttodelete),
Language.StringByID(MyInternationalizationString.confrim));
alert.Show();
alert.ConfirmClickEvent += () =>
{
Common.Logic.CurrentLogic.Actions.Remove(actions);
actiondevice.selecetdFrameLayout.RemoveFromParent();
// devicesFrameLayout.RemoveFromParent();
//var logicCommunalPage = new LogicCommunalPage();
//UserView.HomePage.Instance.AddChidren(logicCommunalPage);
//UserView.HomePage.Instance.PageIndex += 1;
//logicCommunalPage.Show(() => { });
};
};
}
}
}
///
/// 与或条件布局界面的方法
///
///
///
public void ConditionView(bool edit, FrameLayout frameLayout)
{
#region ------组合条件界面布局部分
var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicTranslucentColor };
frameLayout.AddChidren(flMain);
CompleteView completeView = new CompleteView();
flMain.AddChidren(completeView.Show(2));
completeView.Btntitle.TextID = MyInternationalizationString.condition;
EventHandler clickcancel = (sender, e) =>
{
UserView.HomePage.Instance.ScrollEnabled = true;
flMain.RemoveFromParent();
};
flMain.MouseUpEventHandler += clickcancel;
completeView.Btncancel.MouseUpEventHandler += clickcancel;
//满足所有条件
mFunView allFunView = new mFunView();
allFunView.frameLayout.Y = Application.GetRealHeight(140 + 20);
completeView.Show(2).AddChidren(allFunView.Show());
allFunView.titleBtn.TextID = MyInternationalizationString.Allconditions;
//满足其中一个条件
mFunView ormFunview = new mFunView();
ormFunview.frameLayout.Y = allFunView.frameLayout.Bottom;
completeView.Show(2).AddChidren(ormFunview.Show());
ormFunview.titleBtn.TextID = MyInternationalizationString.anycondition;
ormFunview.lineBtn.BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor;
#endregion
///满足所有条件点击事件
allFunView.clickviewBtn.MouseUpEventHandler += (sedner, e) =>
{
allFunView.selectedIconBtn.Visible = true;
ormFunview.selectedIconBtn.Visible = false;
allFunView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
ormFunview.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
};
///满足其中一个条件点击事件
ormFunview.clickviewBtn.MouseUpEventHandler += (sedner, e) =>
{
allFunView.selectedIconBtn.Visible = false;
ormFunview.selectedIconBtn.Visible = true;
allFunView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
ormFunview.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
};
if (edit)
{
if (Common.Logic.CurrentLogic.Relationship == 0)
{
allFunView.selectedIconBtn.Visible = true;
ormFunview.selectedIconBtn.Visible = false;
allFunView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
ormFunview.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
}
else
{
allFunView.selectedIconBtn.Visible = false;
ormFunview.selectedIconBtn.Visible = true;
allFunView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
ormFunview.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
}
}
completeView.Btncomplete.MouseUpEventHandler += (sender, e) =>
{
if (!allFunView.selectedIconBtn.Visible && !ormFunview.selectedIconBtn.Visible)
{
///可以提示未选中状态;
return;
}
flMain.RemoveFromParent();
if (allFunView.selectedIconBtn.Visible)
{
Common.Logic.CurrentLogic.Relationship = 0;
}
if (ormFunview.selectedIconBtn.Visible)
{
Common.Logic.CurrentLogic.Relationship = 1;
}
if (edit)
{
if (Common.Logic.CurrentLogic.LogicId != 0)
{
Send.LogicControlSwitch(Common.Logic.CurrentLogic);
}
var logicCommunalPage = new LogicCommunalPage();
UserView.HomePage.Instance.AddChidren(logicCommunalPage);
UserView.HomePage.Instance.PageIndex += 1;
logicCommunalPage.Show(() => { });
}
else
{
var addLogicPage = new AddLogicPage();
UserView.HomePage.Instance.AddChidren(addLogicPage);
UserView.HomePage.Instance.PageIndex += 1;
addLogicPage.Show();
}
};
}
}
}