using System;
|
using System.Collections.Generic;
|
using Newtonsoft.Json.Linq;
|
using Shared.Common;
|
using Shared.Phone.UserView;
|
using Shared.R;
|
using ZigBee.Device;
|
|
namespace Shared.Phone.Device.Logic
|
{
|
public class SkipView:FrameLayout
|
{
|
|
/// <summary>
|
/// 其它界面跳进来的入口
|
/// </summary>
|
public async static void SkipAddLogic(int intvalue, DoorLock doorLock = null, MemberInfoRes accountObj = null)
|
{
|
/// 0.正常自动化;1.门锁自动化;2.Sone门锁;
|
switch (intvalue)
|
{
|
case 0:
|
{
|
//new一个新逻辑对象;
|
//新增正常自动化入口
|
Common.Logic.CurrentLogic = new Common.Logic();
|
Common.Logic.CurrentLogic.IsEnable = 1;//默认为开
|
Common.Logic.CurrentLogic.LogicType = 0;//标记逻辑类型
|
Common.Logic.CurrentLogic.LogicName = Language.StringByID(MyInternationalizationString.automation1);
|
var addLogicPage = new AddLogicPage();
|
UserView.HomePage.Instance.AddChidren(addLogicPage);
|
UserView.HomePage.Instance.PageIndex += 1;
|
addLogicPage.Show();
|
}
|
break;
|
case 1:
|
{
|
//进入门锁联动事件入口
|
Send.UserMemberInfoRes = accountObj;
|
Send.CurrentDoorLock = doorLock;
|
if (accountObj == null)
|
{
|
///防止抛异常
|
Send.UserMemberInfoRes = new MemberInfoRes();
|
}
|
if (doorLock == null)
|
{
|
///防止抛异常
|
Send.CurrentDoorLock = new DoorLock();
|
}
|
///进来刷新一次设备列表;
|
Common.Logic.LogicDviceList.Clear();
|
if (Common.Logic.LogicDviceList.Count == 0)
|
{
|
Common.Logic.LogicDviceList.AddRange(HdlDeviceCommonLogic.Current.listAllDevice.ToArray());
|
}
|
var doorLockLogicList = new DoorLockLogic.LockLogicList();
|
UserView.HomePage.Instance.AddChidren(doorLockLogicList);
|
UserView.HomePage.Instance.PageIndex += 1;
|
doorLockLogicList.Show();
|
}
|
break;
|
|
}
|
|
}
|
#region ◆ 自动化__________________________
|
public static bool If_once = true;//进来只读一次标识;
|
/// <summary>
|
/// 自动化功能代码入口
|
/// </summary>
|
public static void ShowAutotionView(FrameLayout functionSceneAutoBodyView)
|
{
|
//functionSceneAutoBodyView.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
|
#region ---推荐模板的组件
|
//推荐模板背景控件
|
|
|
var bjFrameLayout1 = new FrameLayout
|
{
|
Width = Application.GetRealWidth(1080 - 58),
|
Height = Application.GetRealHeight(50),
|
BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
|
X = Application.GetRealWidth(58),
|
//Radius = (uint)Application.GetRealHeight(50),
|
Y = Application.GetRealHeight(30),
|
|
};
|
functionSceneAutoBodyView.AddChidren(bjFrameLayout1);
|
var bjFrameLayout = new FrameLayout
|
{
|
Width = Application.GetRealWidth(1080 - 58),
|
Height = Application.GetRealHeight(170),
|
BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
|
X = Application.GetRealWidth(58),
|
//Radius = (uint)Application.GetRealHeight(50),
|
Y = Application.GetRealHeight(30),
|
};
|
functionSceneAutoBodyView.AddChidren(bjFrameLayout);
|
bjFrameLayout1.SetCornerWithSameRadius(Application.GetRealHeight(17), HDLUtils.RectCornerTopLeft);
|
bjFrameLayout.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft|HDLUtils.RectCornerBottomLeft);
|
//图标控件
|
var sigBtn = new Button
|
{
|
Width = Application.GetMinRealAverage(84),
|
Height = Application.GetMinRealAverage(84),
|
UnSelectedImagePath = "ZigeeLogic/sign.png",
|
X = Application.GetRealWidth(58),
|
Gravity = Gravity.CenterVertical,
|
};
|
bjFrameLayout.AddChidren(sigBtn);
|
//推荐模板文本控件
|
var recommendtextBtn = new Button
|
{
|
Width = Application.GetMinRealAverage(300),
|
Height = Application.GetMinRealAverage(84),
|
X = sigBtn.Right + Application.GetRealWidth(35),
|
TextAlignment = TextAlignment.CenterLeft,
|
//Text = "推荐模板",
|
TextID = MyInternationalizationString.logictemplate,
|
Gravity = Gravity.CenterVertical,
|
TextColor = ZigbeeColor.Current.LogicBtnSelectedColor,
|
TextSize = 15,
|
};
|
bjFrameLayout.AddChidren(recommendtextBtn);
|
//推荐模板开关控件
|
var recommendswitchBtn = new Button
|
{
|
Width = Application.GetRealWidth(104),
|
Height = Application.GetRealHeight(63),
|
UnSelectedImagePath = "ZigeeLogic/logicclose.png",
|
SelectedImagePath = "ZigeeLogic/logicopen.png",
|
X = bjFrameLayout.Width - Application.GetRealWidth(104 + 58),
|
Gravity = Gravity.CenterVertical,
|
};
|
bjFrameLayout.AddChidren(recommendswitchBtn);
|
#endregion
|
//默认推荐模板左右可滑控件
|
var scenehorizontalScrol = new HorizontalScrolViewLayout
|
{
|
Width = Application.GetRealWidth(1080 - 58),
|
X = Application.GetRealWidth(58),
|
Y = bjFrameLayout.Bottom + Application.GetRealHeight(30),
|
Height = Application.GetRealHeight(0),
|
};
|
functionSceneAutoBodyView.AddChidren(scenehorizontalScrol);
|
//显示自动化列表上下可滑控件
|
var logicScrolView = new VerticalRefreshLayout//VerticalScrolViewLayout
|
{
|
Height = functionSceneAutoBodyView.Height - bjFrameLayout.Height - bjFrameLayout.Y - scenehorizontalScrol.Height - Application.GetRealHeight(30),
|
//BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,/
|
X = Application.GetRealWidth(58),
|
Y = scenehorizontalScrol.Bottom,
|
};
|
functionSceneAutoBodyView.AddChidren(logicScrolView);
|
|
logicScrolView.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft);
|
bool no = false;
|
//显示默认模板的界面事件
|
recommendswitchBtn.MouseUpEventHandler += (sender, e) =>
|
{
|
int Yheight = 0;
|
recommendswitchBtn.IsSelected = !recommendswitchBtn.IsSelected;
|
scenehorizontalScrol.RemoveAll();
|
if (recommendswitchBtn.IsSelected)
|
{
|
no = true;
|
scenehorizontalScrol.Height = Application.GetRealHeight(246);
|
Yheight = 20;
|
for (int i = 1; i < 4; i++)
|
{
|
|
var frameLayout = new FrameLayout
|
{
|
Width = Application.GetMinRealAverage(369 + 46),
|
Height = Application.GetMinRealAverage(246),
|
};
|
scenehorizontalScrol.AddChidren(frameLayout);
|
var logiciocnBtn = new Button
|
{
|
Width = Application.GetMinRealAverage(369),
|
Height = Application.GetMinRealAverage(246),
|
UnSelectedImagePath = "ZigeeLogic/" + i + ".png",
|
Tag = i,
|
};
|
frameLayout.AddChidren(logiciocnBtn);
|
|
var logicnameBtn = new Button
|
{
|
Width = Application.GetMinRealAverage(250),
|
Height = Application.GetMinRealAverage(80),
|
X = Application.GetRealWidth(23),
|
Y = Application.GetRealHeight(246 - 23 - 80),
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor,
|
TextSize = 14,
|
};
|
frameLayout.AddChidren(logicnameBtn);
|
|
if (i == 1)
|
{
|
logicnameBtn.Text = Language.StringByID(MyInternationalizationString.onlight);
|
}
|
else if (i == 2)
|
{
|
logicnameBtn.Text = Language.StringByID(MyInternationalizationString.offlight);
|
}
|
else if (i == 3)
|
{
|
logicnameBtn.Text = Language.StringByID(MyInternationalizationString.automation1);
|
}
|
|
|
EventHandler<MouseEventArgs> iconclick = (sender1, e1) =>
|
{
|
Common.Logic.CurrentLogic = new Common.Logic();
|
Common.Logic.CurrentLogic.IsEnable = 1;//默认为开
|
if (logiciocnBtn.Tag.ToString() == "3")
|
{
|
Common.Logic.CurrentLogic.LogicName = logicnameBtn.Text;
|
//Common.Logic.CurrentLogic.LogicCustomPushText = Common.Logic.CurrentLogic.LogicName + Language.StringByID(MyInternationalizationString.defaulttext);
|
var addLogicPage = new Device.Logic.AddLogicPage();
|
HomePage.Instance.AddChidren(addLogicPage);
|
HomePage.Instance.PageIndex += 1;
|
addLogicPage.Show();
|
}
|
else
|
{
|
|
Common.Logic.CurrentLogic.LogicName = logicnameBtn.Text;
|
//Common.Logic.CurrentLogic.LogicCustomPushText = Common.Logic.CurrentLogic.LogicName + Language.StringByID(MyInternationalizationString.defaulttext);
|
Device.Logic.TemplatePage templatePage = new Device.Logic.TemplatePage();
|
Device.Logic.TemplatePage.s = logiciocnBtn.Tag.ToString();
|
HomePage.Instance.AddChidren(templatePage);
|
HomePage.Instance.PageIndex += 1;
|
templatePage.Show();
|
}
|
};
|
logiciocnBtn.MouseUpEventHandler += iconclick;
|
logicnameBtn.MouseUpEventHandler += iconclick;
|
}
|
}
|
else
|
{
|
no = false;
|
scenehorizontalScrol.Height = Application.GetRealHeight(0);
|
Yheight = 0;
|
}
|
logicScrolView.Y = scenehorizontalScrol.Bottom + Yheight;
|
logicScrolView.Height = functionSceneAutoBodyView.Height - bjFrameLayout.Height - bjFrameLayout.Y - scenehorizontalScrol.Height - Application.GetRealHeight(30) - Yheight;
|
Automationview(logicScrolView, no);
|
};
|
//下拉刷新自动化列表的事件
|
logicScrolView.BeginHeaderRefreshingAction += () =>
|
{
|
if (!Config.Instance.Home.IsVirtually)
|
{//虚拟的不获取网关逻辑列表
|
//重新刷新logic列表
|
If_once = true;
|
Common.Logic.LogicList.Clear();
|
Read(logicScrolView, no);
|
}
|
//关闭刷新View;
|
logicScrolView.EndHeaderRefreshing();
|
};
|
|
//自动化
|
Read(logicScrolView, no);
|
|
}
|
/// <summary>
|
/// 读取自动化列表数据;
|
/// </summary>
|
/// <param name="logicScrolView"></param>
|
private static async void Read(VerticalRefreshLayout logicScrolView, bool no)
|
{
|
//if (Config.Instance.HomeId != UserCenter.UserCenterResourse.AccountOption.OldHomeStringId)
|
//{
|
// //切换住宅清除之前缓存数据;
|
// Common.Logic.LogicList.Clear();
|
// Common.Logic.LockLogicList.Clear();
|
// Common.Logic.SoneLogicList.Clear();
|
//}
|
|
CommonPage.Loading.Start();
|
try
|
{
|
if (!Config.Instance.Home.IsVirtually)//虚拟的不获取网关逻辑列表
|
{
|
if (If_once)
|
{
|
if (Common.Logic.LogicList.Count == 0)
|
{
|
If_once = false;
|
var Idlist1 = await Send.GetLogicId(0);//
|
var Idlist2 = await Send.GetLogicId(2);//门锁常开模式
|
if (Idlist1.Count != 0)
|
{
|
var listlogic1 = await Send.ReadList(Idlist1.Count, 0);
|
for (int j = 0; j < listlogic1.Count; j++)
|
{
|
var logic = listlogic1[j];
|
if (logic.LogicType != 0)
|
{
|
continue;
|
}
|
Common.Logic.LogicList.Add(logic);
|
}
|
}
|
if (Idlist2.Count != 0)
|
{
|
var listlogic2 = await Send.ReadList(Idlist2.Count, 2);
|
for (int j = 0; j < listlogic2.Count; j++)
|
{
|
var logic = listlogic2[j];
|
if (logic.LogicType != 2)
|
{
|
continue;
|
}
|
Common.Logic.LogicList.Add(logic);
|
}
|
}
|
|
}
|
}
|
}
|
}
|
catch (Exception e)
|
{
|
var dd = e.Message;
|
}
|
//自动化
|
Automationview(logicScrolView, no);
|
CommonPage.Loading.Hide();
|
}
|
static RowLayout selectedRow = new RowLayout() { Tag = "0" };//记录左滑状态
|
|
/// <summary>
|
/// 加载自动化列表界面
|
/// </summary>
|
/// <param name="refresview">Refresview.</param>
|
private static async void Automationview(VerticalRefreshLayout refresview, bool no)
|
{
|
|
refresview.RemoveAll();
|
if (Common.Logic.LogicList.Count == 0 && no == false)
|
{
|
//就是为了显示引导添加图标;
|
refresview.BackgroundColor = 0x00000000;
|
var noFrameLayout = new FrameLayout
|
{
|
Height = Application.GetRealHeight(434 + 200 + 32 + 294 - 55),
|
//BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
|
};
|
refresview.AddChidren(noFrameLayout);
|
|
|
var noIconBtn = new Button
|
{
|
Y = Application.GetRealHeight(294 - 55),
|
Width = Application.GetMinRealAverage(757),
|
Height = Application.GetMinRealAverage(435),
|
UnSelectedImagePath = "Item/NoFunction.png",
|
X = Application.GetRealWidth(104),
|
};
|
noFrameLayout.AddChidren(noIconBtn);
|
|
var noTextBtn = new Button()
|
{
|
Y = noIconBtn.Bottom,
|
Height = Application.GetRealHeight(200) + Application.GetRealHeight(32),
|
Width = Application.GetRealWidth(700),
|
//Gravity = Gravity.CenterHorizontal,
|
Text = Language.StringByID(MyInternationalizationString.automationaddtext).Replace("{\\r\\n}", "\r\n"),
|
TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
|
TextAlignment = TextAlignment.Center,
|
IsMoreLines = true,
|
X = Application.GetRealWidth(190 - 58),
|
};
|
noFrameLayout.AddChidren(noTextBtn);
|
|
}
|
else
|
{
|
|
if (Common.Logic.LogicList.Count == 0 && no == true)
|
{
|
///改变滑动view的颜色;
|
refresview.BackgroundColor = 0x00000000;
|
}
|
else
|
{
|
refresview.BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor;
|
}
|
}
|
int i = 1;//局部变量,默认是第一条逻辑;
|
foreach (var logic in Common.Logic.LogicList)
|
{
|
|
var fLayout = new FrameLayout
|
{
|
Height = Application.GetRealHeight(190 + 30),
|
Width = Application.GetRealWidth(1080 - 58),
|
BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
|
};
|
refresview.AddChidren(fLayout);
|
|
var logicRowlayout = new RowLayout
|
{
|
Height = Application.GetRealHeight(190 + 30),
|
Width = Application.GetRealWidth(1080 - 58),
|
LineColor = ZigbeeColor.Current.LogicBackgroundColor,
|
BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
|
SubViewWidth = Application.GetRealWidth(184),//改变编辑控件宽度多少;
|
Tag = i.ToString(),
|
|
};
|
fLayout.AddChidren(logicRowlayout);
|
//左滑菜单事件
|
logicRowlayout.OpenMenuAction += () =>
|
{
|
if (selectedRow.Tag.ToString() != logicRowlayout.Tag.ToString())
|
{ //保留左滑只有一个;
|
selectedRow.HideMenu();//
|
}
|
selectedRow = logicRowlayout;
|
};
|
if (i == 1)
|
{
|
//实现android显示逻辑列表的圆角;
|
fLayout.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft);
|
logicRowlayout.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft);
|
|
}
|
i++;
|
var logicnameBtn = new Button
|
{
|
Height = Application.GetRealHeight(58),
|
Width = Application.GetRealWidth(350),
|
Text = logic.LogicName,
|
X = Application.GetRealWidth(12 + 46),
|
Y = Application.GetRealHeight(30),
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = ZigbeeColor.Current.LogicTextBlackColor,
|
TextSize = 14,
|
};
|
logicRowlayout.AddChidren(logicnameBtn);
|
|
var logicswitchBtn = new Button
|
{
|
Width = Application.GetMinRealAverage(104),
|
Height = Application.GetMinRealAverage(63),
|
UnSelectedImagePath = "ZigeeLogic/logicclose.png",
|
SelectedImagePath = "ZigeeLogic/logicopen.png",
|
X = logicRowlayout.Width - Application.GetRealWidth(104 + 58),
|
Y = Application.GetRealHeight(58 + 30 + 9 + 30),
|
|
};
|
logicRowlayout.AddChidren(logicswitchBtn);
|
|
logicswitchBtn.MouseUpEventHandler += (sender1, e1) =>
|
{
|
logicswitchBtn.IsSelected = !logicswitchBtn.IsSelected;
|
if (logicswitchBtn.IsSelected)
|
{
|
//逻辑开
|
logic.IsEnable = 1;
|
StatusColor(logic, logicRowlayout, 1);
|
}
|
else
|
{
|
//逻辑关
|
logic.IsEnable = 0;
|
StatusColor(logic, logicRowlayout, 0);
|
}
|
if (!Config.Instance.Home.IsVirtually)
|
{
|
Send.LogicControlSwitch(logic);
|
}
|
//Logic.Send.AddModifyLogic(logic);
|
};
|
if (logic.IsEnable == 1)
|
{
|
logicswitchBtn.IsSelected = true;
|
StatusColor(logic, logicRowlayout, 1);
|
}
|
else if (logic.IsEnable == 0)
|
{
|
logicswitchBtn.IsSelected = false;
|
StatusColor(logic, logicRowlayout, 0);
|
}
|
///编辑
|
var edit = new Button
|
{
|
BackgroundColor = ZigbeeColor.Current.LogicEditBlackColor1,
|
Text = Language.StringByID(MyInternationalizationString.edit),
|
TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor,
|
};
|
logicRowlayout.AddRightView(edit);
|
if (logic.LogicType == 2)
|
{
|
edit.TextID = MyInternationalizationString.look;
|
}
|
edit.MouseUpEventHandler += (sender, e) =>
|
{
|
Common.Logic.CurrentLogic = logic;
|
if (Common.Logic.CurrentLogic.LogicType == 2)
|
{
|
var oneLogic = new OneLogic();
|
UserView.HomePage.Instance.AddChidren(oneLogic);
|
UserView.HomePage.Instance.PageIndex += 1;
|
oneLogic.Show(true);
|
}
|
else
|
{
|
var logicCommunalPage = new LogicCommunalPage();
|
HomePage.Instance.AddChidren(logicCommunalPage);
|
HomePage.Instance.PageIndex += 1;
|
logicCommunalPage.Show(() => { logicnameBtn.Text = logic.LogicName; Automationview(refresview, no); });
|
}
|
};
|
|
///删除
|
var del = new Button
|
{
|
BackgroundColor = ZigbeeColor.Current.LogicDelBlackColor1,
|
Text = Language.StringByID(MyInternationalizationString.del),
|
TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor,
|
};
|
logicRowlayout.AddRightView(del);
|
del.MouseUpEventHandler += (sender, e) =>
|
{
|
var alert = new ShowMsgControl(ShowMsgType.Confirm,
|
Language.StringByID(MyInternationalizationString.doyouwanttodelete),
|
Language.StringByID(MyInternationalizationString.confrim));
|
alert.Show();
|
alert.ConfirmClickEvent += () =>
|
{
|
Common.Logic.LogicList.Remove(logic);
|
Automationview(refresview, no);
|
if (!Config.Instance.Home.IsVirtually)
|
{
|
Send.DelLogic(logic.LogicId);
|
}
|
};
|
|
};
|
var line = new Button
|
{
|
Y = fLayout.Height - 1,
|
Height = 1,
|
X = Application.GetRealWidth(58),
|
Width = Application.GetRealWidth(1080 - 58),
|
BackgroundColor = ZigbeeColor.Current.LogicRowLayoutLineColor,
|
};
|
fLayout.AddChidren(line);
|
|
|
}
|
|
}
|
/// <summary>
|
/// 显示自动化输出功能模块图标的颜色
|
/// </summary>
|
/// <param name="logic"></param>
|
/// <param name="logicRowlayout"></param>
|
/// <param name="intvalue"></param>
|
private static void StatusColor(Common.Logic logic, RowLayout logicRowlayout, int intvalue)
|
{
|
|
var logictimeBtn = new Button
|
{
|
Height = Application.GetRealHeight(58),
|
Width = logicRowlayout.Width - Application.GetRealWidth(58 + 12 + 350),
|
Y = Application.GetRealHeight(30),
|
X = Application.GetRealWidth(365),
|
TextAlignment = TextAlignment.CenterRight,
|
TextColor = ZigbeeColor.Current.LogicListWeekTextColor,
|
};
|
logicRowlayout.AddChidren(logictimeBtn);
|
|
///显示执行周期
|
Method.UpdateWeek(logictimeBtn, logic);
|
|
|
List<string> indexlist = new List<string>();
|
List<string> iconIndexlist = new List<string>();
|
for (int i = 0; i < logic.Actions.Count; i++)
|
{
|
var linkType = logic.Actions[i]["LinkType"].ToString();
|
var d = indexlist.Find((value) => { return value == linkType; });
|
if (d == null)
|
{
|
indexlist.Add(linkType);
|
}
|
}
|
//排列图标顺序;
|
if (indexlist.Contains("0") || indexlist.Contains("8"))
|
{
|
iconIndexlist.Add("0");
|
}
|
if (indexlist.Contains("2"))
|
{
|
iconIndexlist.Add("2");
|
}
|
if (indexlist.Contains("6"))
|
{
|
iconIndexlist.Add("6");
|
}
|
if (indexlist.Contains("7"))
|
{
|
iconIndexlist.Add("7");
|
}
|
for (int i = 0; i < iconIndexlist.Count; i++)
|
{
|
var iconindex = iconIndexlist[i];
|
var typebjBtn = new FrameLayout
|
{
|
Width = Application.GetMinRealAverage(82),
|
Height = Application.GetMinRealAverage(82),
|
X = Application.GetRealWidth(58) + Application.GetRealWidth(12 + (12 + 82 + 45 + 12) * i),
|
Y = Application.GetRealHeight(58 + 30 + 30),
|
Radius = (uint)Application.GetMinRealAverage(41),
|
BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
|
};
|
logicRowlayout.AddChidren(typebjBtn);
|
|
var typeIconBtn = new Button
|
{
|
Width = Application.GetMinRealAverage(58),
|
Height = Application.GetMinRealAverage(58),
|
Gravity = Gravity.Center,
|
|
};
|
typebjBtn.AddChidren(typeIconBtn);
|
|
var connectIconBtn = new Button
|
{
|
Y = typebjBtn.Y + Application.GetRealHeight(35),
|
X = Application.GetRealWidth(58) + Application.GetRealWidth((12 + 82 + 12) + (12 + 45 + 82 + 12) * i),
|
Width = Application.GetRealWidth(48),
|
Height = Application.GetRealHeight(15),
|
UnSelectedImagePath = "ZigeeLogic/connect.png",
|
};
|
logicRowlayout.AddChidren(connectIconBtn);
|
if (iconIndexlist.Count - 1 == i)
|
{
|
connectIconBtn.Visible = false;
|
}
|
switch (iconindex)
|
{
|
case "0":
|
{
|
if (intvalue == 1)
|
{
|
typeIconBtn.UnSelectedImagePath = "ZigeeLogic/function1.png";
|
typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicFunction1Color;
|
}
|
else
|
{
|
typeIconBtn.UnSelectedImagePath = "ZigeeLogic/nofunction.png";
|
typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
|
}
|
}
|
break;
|
case "2":
|
{
|
|
if (intvalue == 1)
|
{
|
typeIconBtn.UnSelectedImagePath = "ZigeeLogic/scene1.png";
|
typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicScene1Color;
|
}
|
else
|
{
|
typeIconBtn.UnSelectedImagePath = "ZigeeLogic/noscene.png";
|
typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
|
}
|
|
}
|
break;
|
case "6":
|
{
|
if (intvalue == 1)
|
{
|
typeIconBtn.UnSelectedImagePath = "ZigeeLogic/security1.png";
|
typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicSecurity1Color;
|
|
}
|
else
|
{
|
typeIconBtn.UnSelectedImagePath = "ZigeeLogic/nosecurity.png";
|
typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
|
}
|
|
}
|
break;
|
case "7":
|
{
|
if (intvalue == 1)
|
{
|
typeIconBtn.UnSelectedImagePath = "ZigeeLogic/delay1.png";
|
typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicDelay1Color;
|
}
|
else
|
{
|
typeIconBtn.UnSelectedImagePath = "ZigeeLogic/nodelay.png";
|
typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
|
}
|
|
}
|
break;
|
|
}
|
}
|
}
|
#endregion
|
|
/// <summary>
|
/// 门锁失效设置用的方法(相当一个关闭常开模式按钮,分类-自动化-不需要显示该自动化)
|
/// </summary>
|
/// <param name="timeVlaue">时间值</param>
|
/// <param name="common">设备</param>
|
/// <returns></returns>
|
public static async System.Threading.Tasks.Task<int> LockAddModifyLogic(int timeVlaue, CommonDevice common)
|
{
|
//读取系统当前时间:时-分
|
var h = DateTime.Now.ToString("HH");
|
var m = DateTime.Now.ToString("mm");
|
Dictionary<string, string> timeConditionsInfo = new Dictionary<string, string>();
|
timeConditionsInfo.Add("Type", "0");
|
timeConditionsInfo.Add("IsValid", "1");
|
timeConditionsInfo.Add("DateType", "0");
|
timeConditionsInfo.Add("RemindTime", "0");
|
timeConditionsInfo.Add("EnDelay", "0");
|
timeConditionsInfo.Add("DelayTime", "0");
|
timeConditionsInfo.Add("StartHour", h);
|
timeConditionsInfo.Add("StartMin", m);
|
if (HdlUserCenterResourse.HideOption.DoorLockNomallyOpenTimeMode == 1)
|
{
|
//强制变更时间模式为分钟
|
timeConditionsInfo.Add("DoorLockOpenDelayTime", (timeVlaue * 60).ToString());
|
}
|
else
|
{
|
timeConditionsInfo.Add("DoorLockOpenDelayTime", (timeVlaue * 3600).ToString());
|
}
|
Dictionary<string, object> actionsInfo = new Dictionary<string, object>();
|
actionsInfo.Add("LinkType", 8);
|
actionsInfo.Add("DeviceAddr", common.DeviceAddr);
|
actionsInfo.Add("Epoint", "200");
|
actionsInfo.Add("PassData", "055704010113");//默认门锁常关
|
|
Dictionary<string, string> accounts = new Dictionary<string, string>();
|
accounts.Add("Type", "8");
|
accounts.Add("Option4", common.DeviceAddr.ToString());//用于判断识别是哪个门锁;
|
accounts.Add("Option2", common.DeviceEpoint.ToString());
|
|
Common.Logic currentLogic = new Common.Logic();
|
currentLogic.IsEnable = 1;//默认为开
|
currentLogic.TimeAttribute.Repeat = 0;//执行一次
|
currentLogic.LogicType = 3;//标记逻辑类型
|
currentLogic.LogicName = Language.StringByID(R.MyInternationalizationString.openmode);
|
currentLogic.Conditions.Add(timeConditionsInfo);
|
currentLogic.Actions.Add(actionsInfo);
|
currentLogic.Accounts.Add(accounts);
|
var logicIfon = await Send.AddModifyLogic(currentLogic);
|
if (logicIfon != null && logicIfon.LogicId != 0)
|
{
|
//添加门锁失效时间的历史记录
|
HdlDeviceDoorLockLogic.Current.AddDoorHistoryLog((DoorLock)common, 9003, timeVlaue.ToString());
|
return logicIfon.LogicId;//表示添加成功;
|
}
|
return 0;//表示添加失败;
|
|
}
|
|
///<summary>
|
/// s-one门锁是否存在自动化的方法;
|
/// 注意(参数:2-常开自动化;3-失效时间自动化);
|
/// 返回值:0不存在;其它值都存在;
|
/// </summary>
|
public static async System.Threading.Tasks.Task<int> Exist(int valueInt, ZigBee.Device.DoorLock doorLock)
|
{
|
|
int exist = 0;
|
var IdList = await Send.GetLogicId(valueInt);
|
if (IdList.Count != 0)
|
{
|
for (int i = 0; i < IdList.Count; i++)
|
{
|
var id = IdList[i];
|
var logic = await Send.GetLogic(id, valueInt);
|
if (logic != null)
|
{
|
if (ExistLogic(logic, doorLock))
|
{
|
exist = id;
|
///找到退出
|
break;
|
}
|
}
|
|
}
|
}
|
return exist;
|
}
|
|
///<summary>
|
///获取门锁时效性逻辑信息
|
/// 返回值:null不存在;其它值都存在;
|
/// </summary>
|
public static async System.Threading.Tasks.Task<Common.Logic> GetLogicIfon(ZigBee.Device.DoorLock doorLock)
|
{
|
Common.Logic logic = null;
|
var Idlist = await Send.GetLogicId(3);
|
if (Idlist.Count != 0)
|
{
|
//默认取第一个逻辑ID(时效性只有一条逻辑)
|
int exist = Idlist[0];
|
logic = await Send.GetLogic(exist, 3);
|
if (!ExistLogic(logic, doorLock))
|
{
|
logic = null;
|
}
|
}
|
return logic;
|
}
|
|
///<summary>
|
///删除该门锁所有时效性自动化
|
/// 返回值:true成功;false失败;
|
/// </summary>
|
public static async System.Threading.Tasks.Task<bool> DelAllLogic(ZigBee.Device.DoorLock doorLock)
|
{
|
bool _if = false;
|
var Idlist = await Send.GetLogicId(3);
|
if (Idlist.Count != 0)
|
{
|
for (int i = 0; i < Idlist.Count; i++)
|
{
|
int id = Idlist[i];
|
var logic = await Send.GetLogic(id, 3);
|
if (logic != null)
|
{
|
if (ExistLogic(logic, doorLock))
|
{
|
//本来只有一条时效性自动化,
|
//防止特殊情况,找到就删除掉;
|
//var valueInt = await Send.DelLogic(id);
|
//if (valueInt == 0)
|
//{
|
// _if = true;
|
//}
|
//(考虑性能默认删除成功,直接返回成功结果true)
|
_if = true;
|
Send.DelLogic(id);
|
|
|
}
|
}
|
}
|
}
|
return _if;
|
}
|
|
/// <summary>
|
/// 查找这一条自动化是否属于该门锁
|
/// </summary>
|
/// <returns></returns>
|
public static bool ExistLogic(Common.Logic logic, ZigBee.Device.DoorLock doorLock)
|
{
|
for (int j = 0; j < logic.Accounts.Count; j++)
|
{
|
//Option4是设备mac;
|
if (logic.Accounts[j]["Option4"].ToString() == doorLock.DeviceAddr)
|
{
|
//查找是否是那个门锁;
|
//如果不是该门锁联动事件不显示出来;
|
return true;
|
}
|
|
}
|
return false;
|
}
|
|
|
|
}
|
}
|