New file |
| | |
| | | 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, UserCenter.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 UserCenter.MemberInfoRes(); |
| | | } |
| | | if (doorLock == null) |
| | | { |
| | | ///防止抛异常 |
| | | Send.CurrentDoorLock = new DoorLock(); |
| | | } |
| | | ///进来刷新一次设备列表; |
| | | Common.Logic.LogicDviceList.Clear(); |
| | | if (Common.Logic.LogicDviceList.Count == 0) |
| | | { |
| | | Common.Logic.LogicDviceList.AddRange(LocalDevice.Current.listAllDevice.ToArray()); |
| | | } |
| | | var doorLockLogicList = new DoorLockLogic.LockLogicList(); |
| | | UserView.HomePage.Instance.AddChidren(doorLockLogicList); |
| | | UserView.HomePage.Instance.PageIndex += 1; |
| | | doorLockLogicList.Show(); |
| | | } |
| | | break; |
| | | |
| | | } |
| | | |
| | | } |
| | | #region ◆ 自动化__________________________ |
| | | /// <summary> |
| | | /// 自动化功能代码入口 |
| | | /// </summary> |
| | | public static void ShowAutotionView(FrameLayout functionSceneAutoBodyView) |
| | | { |
| | | //functionSceneAutoBodyView.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor; |
| | | #region ---推荐模板的组件 |
| | | //推荐模板背景控件 |
| | | 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); |
| | | bjFrameLayout.SetCornerWithSameRadius(Application.GetRealHeight(58), 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列表 |
| | | 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 (Common.Logic.LogicList.Count == 0) |
| | | { |
| | | 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 UserCenter.ShowMsgControl(UserCenter.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 (UserCenter.UserCenterResourse.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) |
| | | { |
| | | //添加门锁失效时间的历史记录 |
| | | UserCenter.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; |
| | | } |
| | | |
| | | } |
| | | } |
| | | |