using System;
|
using System.Collections.Generic;
|
using Shared.Common;
|
using Shared.R;
|
using ZigBee.Device;
|
|
namespace Shared.Phone.Device.Logic
|
{
|
public class LogicDveiceStatus
|
{
|
|
/// <summary>
|
/// 显示逻辑条件状态的方法
|
/// </summary>
|
/// <param name="frameLayout">父控件</param>
|
/// <param name="middle"></param>
|
/// <param name="ListConditions">逻辑条件列表</param>
|
/// <param name="logicName">逻辑名称</param>
|
public void Conditions(FrameLayout frameLayout,VerticalScrolViewLayout middle,List<Dictionary<string, string>> 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(() => { });
|
};
|
|
};
|
|
}
|
}
|
|
|
}
|
/// <summary>
|
///显示逻辑目标状态的方法
|
/// </summary>
|
/// <param name="frameLayout">父控件</param>
|
/// <param name="middle"></param>
|
/// <param name="ListActions">逻辑目标列表</param>
|
/// <param name="logicName">逻辑名称</param>
|
public void Actions(FrameLayout frameLayout,VerticalScrolViewLayout middle, List<Dictionary<string, object>> 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<Dictionary<string, string>>;
|
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<Dictionary<string, string>>;
|
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<Dictionary<string, string>>;
|
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<Dictionary<string, string>>;
|
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<Dictionary<string, string>>;
|
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<Dictionary<string, string>>;
|
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(() => { });
|
};
|
|
};
|
|
|
}
|
}
|
|
|
}
|
/// <summary>
|
/// 与或条件布局界面的方法
|
/// </summary>
|
/// <param name="edit"></param>
|
/// <param name="frameLayout"></param>
|
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<MouseEventArgs> 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();
|
}
|
};
|
|
}
|
}
|
}
|