using System; using System.Collections.Generic; using Shared.Common; using Shared.R; using Shared; namespace Shared.Phone.Device.Logic { public class SoneLogicList : FrameLayout { /// /// 给Sone门锁徐梅更新界面用的 /// /// public SoneLogicList() { Tag = "SoneLogic"; } /// 给徐梅刷新界面用的 public Action action; public async void Show() { #region 界面的布局代码 UserView.HomePage.Instance.ScrollEnabled = false;//锁住左滑 TopView view = new TopView(); this.AddChidren(view.TopRowView()); view.toptitleNameBtn.TextID = MyInternationalizationString.selection; view.clickBtn.MouseDownEventHandler += (sender, e) => { UserView.HomePage.Instance.ScrollEnabled = true; RemoveFromParent(); if (action != null) { action(Send.CurrentDoorLock.IsDoorLockNormallyMode); } }; var middle = new FrameLayout { Y = view.topRowLayout.Bottom, Height = Application.GetRealHeight(Method.H - 184), BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor, }; this.AddChidren(middle); #endregion #region 常开模式图标 时效性常开设置 ///第二块第一级父控件 var fLayout = new FrameLayout { Width = Application.GetRealWidth(1080), Height = Application.GetRealHeight(829 - 184), BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor, }; middle.AddChidren(fLayout); ///常开模式图标 var modeIconBtn = new Button { X = Application.GetRealWidth(395), Y = Application.GetRealHeight(92), Width = Application.GetMinRealAverage(294), Height = Application.GetMinRealAverage(294), }; fLayout.AddChidren(modeIconBtn); if (Send.CurrentDoorLock.IsDoorLockNormallyMode) { /// 查找是否存在时效性自动化;有的话就返回自动化对象; var logic = await SkipView.GetLogicIfon(); fLayout.Height = Application.GetRealHeight(780);//改变高度 modeIconBtn.UnSelectedImagePath = "ZigeeLogic/openMode.png";//改变图标状态 ///第二级父控件 var openModeFl = new FrameLayout { Y = Application.GetRealHeight(455), Height = Application.GetRealHeight(127 + 199), Width = Application.GetRealWidth(1080), }; fLayout.AddChidren(openModeFl); ///关闭时效性自动化 Button closeBtn = new Button { X = Application.GetRealWidth(86), Height = Application.GetRealHeight(127), Width = Application.GetRealWidth(907), Radius = (uint)Application.GetRealHeight(58), BackgroundColor = ZigbeeColor.Current.LogicBtnSaveBackgroundColor, TextID = MyInternationalizationString.closeUp, TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor, TextSize = 16, }; openModeFl.AddChidren(closeBtn); closeBtn.MouseUpEventHandler += async (sender, e) => { var result = await UserCenter.DoorLock.DoorLockCommonInfo.DelNormallyOpenMode(Send.CurrentDoorLock); if (result) { if (logic != null) { ///有可能只有常开模式,没有时效性自动化 ///没有判断的话,逻辑会为空,抛出异常; Send.DelLogic(logic.LogicId); } Send.CurrentDoorLock.IsDoorLockNormallyMode = false; this.RemoveFromParent(); var soneLogicList = new SoneLogicList(); UserView.HomePage.Instance.AddChidren(soneLogicList); UserView.HomePage.Instance.PageIndex += 1; soneLogicList.Show(); soneLogicList.action = action; } else { LogicView.TipView.ShowFlashTip("关闭失败"); } }; ///显示失效设置时间文本控件 var timeTextBtn = new Button { Y = Application.GetRealHeight(127 + 69), X = Application.GetRealWidth(125), Width = Application.GetRealWidth(634 + 200), Height = Application.GetRealHeight(60), TextSize = 15, TextColor = ZigbeeColor.Current.LogicTextBlackColor, Text = "时效性常开设置12:20", }; if (logic != null) { ///有时效性常开才显示时间条件文本 openModeFl.AddChidren(timeTextBtn); } ///时效性常开只有一个条件; try { var y = DateTime.Now.ToString("yy");//那一年 var m = DateTime.Now.ToString("mm");//那一月 var d = DateTime.Now.ToString("dd");//那一天 var h = int.Parse(DateTime.Now.ToString("HH"));//当前系统时间 var me = DateTime.Now.ToLongDateString(); var timeInt = int.Parse(logic.Conditions[0]["DoorLockOpenDelayTime"]); int dayInt = (h + timeInt) / 24;//算出几天后执行 int hour = (h + timeInt) % 24;//算出几天后那个时间执行 int days = int.Parse(d) + dayInt; timeTextBtn.Text = "时效性常开设置" + y + "年" + m + "月" + days.ToString() + "号" + hour.ToString() + "时" + "执行"; } catch { } } else { fLayout.Height = Application.GetRealHeight(645);//改变高度 modeIconBtn.UnSelectedImagePath = "ZigeeLogic/noMode.png";//改变图标状态 ///第二级父控件 var modeFl = new FrameLayout { Y = Application.GetRealHeight(478), X = Application.GetRealWidth(58), Height = Application.GetRealHeight(138), Width = Application.GetRealWidth(1022), BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor, }; fLayout.AddChidren(modeFl); modeFl.SetCornerWithSameRadius(Application.GetRealHeight(17), HDLUtils.RectCornerTopLeft); modeFl.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerBottomLeft); ///时效性常开设置显示文本控件 var modeTextBtn = new Button { Y = Application.GetRealHeight(40), X = Application.GetRealWidth(58), Width = Application.GetRealWidth(600), Height = Application.GetRealHeight(60), TextSize = 15, TextColor = ZigbeeColor.Current.LogicTextBlackColor, TextAlignment = TextAlignment.CenterLeft, // Text = "时效性常开设置", TextID = MyInternationalizationString.timeSetSone, }; modeFl.AddChidren(modeTextBtn); ///下一级菜单图标控件 var nextIconBtn = new Button { Width = Application.GetMinRealAverage(104), Height = Application.GetMinRealAverage(104), X = Application.GetRealWidth(861), Y = Application.GetRealHeight(17), UnSelectedImagePath = "ZigeeLogic/nextIconSone.png", }; modeFl.AddChidren(nextIconBtn); nextIconBtn.MouseUpEventHandler += (sender, e) => { LogicView.TipView.ShowConfrimTip(() => {///再次确认 LogicView.TipView.ShowInputTip(true, async (str) => {///确认发送命令 try { ///xm var result = await UserCenter.DoorLock.DoorLockCommonInfo.SetNormallyOpenModeFuncAsync(Send.CurrentDoorLock); if (!result) { LogicView.TipView.ShowFlashTip("开启失败"); return; } else { ///因为有常开模式下才可以创建失效逻辑; SkipView.GetLogicAll();//删除之前所有失效逻辑 var addResult = await SkipView.LockAddModifyLogic(int.Parse(str), Send.CurrentDoorLock);//添加一条失效逻辑 if (!addResult) { ///提示失败 LogicView.TipView.ShowFlashTip("添加失败"); return; } Send.CurrentDoorLock.IsDoorLockNormallyMode = true; this.RemoveFromParent(); var soneLogicList = new SoneLogicList(); UserView.HomePage.Instance.AddChidren(soneLogicList); UserView.HomePage.Instance.PageIndex += 1; soneLogicList.Show(); soneLogicList.action = action; //soneLogicList.action += (c) => { // if (action != null) // { // action(Send.CurrentDoorLock.IsDoorLockNormallyMode); // } //}; } } catch { } }); }); }; } #endregion #region 常开自动化 ///第三块第一级父控件 var listLogicFl = new FrameLayout { Y = fLayout.Bottom, X = Application.GetRealWidth(58), Height = middle.Height - fLayout.Height, Width = Application.GetRealWidth(1022), BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor, }; middle.AddChidren(listLogicFl); listLogicFl.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft); ///添加常开自动化的父控件 var addLogicfL = new FrameLayout { Height = Application.GetRealHeight(187), Width = Application.GetRealWidth(1080 - 58), }; listLogicFl.AddChidren(addLogicfL); ///常开自动化显示文本的控件 var addTextBtn = new Button { Y = Application.GetRealHeight(46), X = Application.GetRealWidth(58), Width = Application.GetRealWidth(600), Height = Application.GetRealHeight(95), TextSize = 24, TextColor = ZigbeeColor.Current.LogicTextBlackColor, TextAlignment = TextAlignment.CenterLeft, //Text = "常开自动化", TextID = MyInternationalizationString.openAutomationSone, }; addLogicfL.AddChidren(addTextBtn); ///添加自动化图标的控件 var addIconBtn = new Button { Width = Application.GetMinRealAverage(69), Height = Application.GetMinRealAverage(69), X = Application.GetRealWidth(890), Y = Application.GetRealHeight(60), UnSelectedImagePath = "ZigeeLogic/add.png", }; addLogicfL.AddChidren(addIconBtn); addIconBtn.MouseUpEventHandler += (sender, e) => { //读取系统当前时间:时-分 //读取系统当前时间:时-分 var h = DateTime.Now.ToString("HH"); var m = DateTime.Now.ToString("mm"); Dictionary timeConditionsInfo = new Dictionary(); 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("DoorLockOpenDelayTime", "0"); timeConditionsInfo.Add("StartHour", h); timeConditionsInfo.Add("StartMin", m); Dictionary actionsInfo = new Dictionary(); actionsInfo.Add("LinkType", 8); actionsInfo.Add("DeviceAddr", Send.CurrentDoorLock.DeviceAddr); actionsInfo.Add("Epoint", "200"); actionsInfo.Add("PassData", "055704010113");//默认门锁常关 //new一个新逻辑对象; //新增门锁常开模式自动化入口; Common.Logic.CurrentLogic = new Common.Logic(); Common.Logic.CurrentLogic.IsEnable = 1;//默认为开 Common.Logic.CurrentLogic.LogicType = 2;//标记逻辑类型 Common.Logic.CurrentLogic.LogicName = Language.StringByID(MyInternationalizationString.openmode); Common.Logic.CurrentLogic.Conditions.Add(timeConditionsInfo);//添加条件 Common.Logic.CurrentLogic.Actions.Add(actionsInfo);//添加目标 var oneLogic = new OneLogic(); UserView.HomePage.Instance.AddChidren(oneLogic); UserView.HomePage.Instance.PageIndex += 1; oneLogic.Show(false); }; ///常开自动化列表上下滑动的控件 var verticalRefresh = new VerticalRefreshLayout { Y = addLogicfL.Bottom, X = Application.GetRealWidth(46), Height = listLogicFl.Height - addLogicfL.Height, Width = listLogicFl.Width - Application.GetRealWidth(46), }; listLogicFl.AddChidren(verticalRefresh); verticalRefresh.BeginHeaderRefreshingAction += () => { Common.Logic.SoneLogicList.Clear(); Read(verticalRefresh, false); verticalRefresh.EndHeaderRefreshing(); }; Read(verticalRefresh, true); #endregion } /// /// 读取自动化列表数据; /// /// private async void Read(VerticalRefreshLayout verticalRefresh, bool yes) { if (yes) { CommonPage.Loading.Start(); } try { if (Common.Logic.SoneLogicList.Count == 0) { var Idlist = await Send.GetLogicId(2);//门锁常开模式 if (Idlist.Count != 0) { var listlogic = await Send.ReadList(Idlist.Count, 2); for (int i = 0; i < listlogic.Count; i++) { var logic = listlogic[i]; if (logic.LogicType != 2) { continue; } Common.Logic.SoneLogicList.Add(logic); } } } } catch (Exception e) { var dd = e.Message; } //自动化 RefreshView(verticalRefresh); if (yes) { CommonPage.Loading.Hide(); } } /// /// 加载自动化列表 /// /// RowLayout selectedRow = new RowLayout() { Tag = "0" };//记录左滑状态 int a = 1; private void RefreshView(VerticalRefreshLayout verticalRefresh) { verticalRefresh.RemoveAll(); foreach (var logic in Common.Logic.SoneLogicList) { #region 自动化布局View ///自动化父控件 var fLayout = new FrameLayout { Height = Application.GetRealHeight(184), }; verticalRefresh.AddChidren(fLayout); ///左右可滑动控件 var logicRow = new RowLayout { LineColor = ZigbeeColor.Current.LogicBackgroundColor, BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor, SubViewWidth = Application.GetRealWidth(184),//改变编辑控件宽度多少; Tag = a.ToString(), }; fLayout.AddChidren(logicRow); //左滑菜单事件 logicRow.OpenMenuAction += () => { if (selectedRow.Tag.ToString() != logicRow.Tag.ToString()) { //保留左滑只有一个; selectedRow.HideMenu();// } selectedRow = logicRow; }; a++; ///显示逻辑名称的控件 var nameBtn = new Button { Height = Application.GetRealHeight(58), Width = Application.GetRealWidth(350), Text = logic.LogicName, X = Application.GetRealWidth(12), Y = Application.GetRealHeight(3), TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.LogicTextBlackColor, TextSize = 14, }; logicRow.AddChidren(nameBtn); ///显示目标功能背景颜色的控件 var typeBjBtn = new FrameLayout { Width = Application.GetMinRealAverage(82), Height = Application.GetMinRealAverage(82), X = Application.GetRealWidth(17), Y = Application.GetRealHeight(84), Radius = (uint)Application.GetMinRealAverage(41), BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor, }; logicRow.AddChidren(typeBjBtn); ///显示目标功能图标的控件 var typeIconBtn = new Button { Width = Application.GetMinRealAverage(58), Height = Application.GetMinRealAverage(58), Gravity = Gravity.Center, }; typeBjBtn.AddChidren(typeIconBtn); ///逻辑开关图标的控件 var switchBtn = new Button { Width = Application.GetMinRealAverage(104), Height = Application.GetMinRealAverage(63), UnSelectedImagePath = "ZigeeLogic/logicclose.png", SelectedImagePath = "ZigeeLogic/logicopen.png", X = Application.GetRealWidth(815), Y = Application.GetRealHeight(92), }; logicRow.AddChidren(switchBtn); if (logic.IsEnable == 1) { switchBtn.IsSelected = true; typeIconBtn.UnSelectedImagePath = "ZigeeLogic/function1.png"; typeBjBtn.BackgroundColor = ZigbeeColor.Current.LogicFunction1Color; } else if (logic.IsEnable == 0) { switchBtn.IsSelected = false; typeIconBtn.UnSelectedImagePath = "ZigeeLogic/nofunction.png"; typeBjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor; } ///编辑 var edit = new Button { BackgroundColor = ZigbeeColor.Current.LogicEditBlackColor1, Text = Language.StringByID(MyInternationalizationString.edit), TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor, }; logicRow.AddRightView(edit); if (logic.LogicType == 2) { edit.TextID = MyInternationalizationString.look; } ///删除 var del = new Button { BackgroundColor = ZigbeeColor.Current.LogicDelBlackColor1, Text = Language.StringByID(MyInternationalizationString.del), TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor, }; logicRow.AddRightView(del); ///线的控件 var line = new Button { Y = fLayout.Height - 1, Height = 1, Width = Application.GetRealWidth(976), BackgroundColor = ZigbeeColor.Current.LogicRowLayoutLineColor, }; fLayout.AddChidren(line); #endregion ///开关点击事件 switchBtn.MouseUpEventHandler += (sender1, e1) => { switchBtn.IsSelected = !switchBtn.IsSelected; if (switchBtn.IsSelected) { //逻辑开 logic.IsEnable = 1; typeIconBtn.UnSelectedImagePath = "ZigeeLogic/function1.png"; typeBjBtn.BackgroundColor = ZigbeeColor.Current.LogicFunction1Color; } else { //逻辑关 typeIconBtn.UnSelectedImagePath = "ZigeeLogic/nofunction.png"; typeBjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor; } Send.LogicControlSwitch(logic); //Logic.Send.AddModifyLogic(logic); }; ///编辑点击事件 edit.MouseUpEventHandler += (sender, e) => { Common.Logic.CurrentLogic = logic; var oneLogic = new OneLogic(); UserView.HomePage.Instance.AddChidren(oneLogic); UserView.HomePage.Instance.PageIndex += 1; oneLogic.Show(false); }; ///删除点击事件 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.SoneLogicList.Remove(logic); //logicRow.Parent.RemoveFromParent(); fLayout.RemoveFromParent(); Send.DelLogic(logic.LogicId); }; }; } } } }