From d6fb0646531172f23648441c224cdcccd721b894 Mon Sep 17 00:00:00 2001 From: xm <1271024303@qq.com> Date: 星期一, 14 十二月 2020 09:59:01 +0800 Subject: [PATCH] 请合并代码,完成晾衣架最终功能。 --- ZigbeeApp/Shared/Phone/UserCenter/Safety/AlarmTargetAddDeviceForm.cs | 266 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 266 insertions(+), 0 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Safety/AlarmTargetAddDeviceForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Safety/AlarmTargetAddDeviceForm.cs new file mode 100755 index 0000000..ecdd197 --- /dev/null +++ b/ZigbeeApp/Shared/Phone/UserCenter/Safety/AlarmTargetAddDeviceForm.cs @@ -0,0 +1,266 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Text; +using ZigBee.Device; + +namespace Shared.Phone.UserCenter.Safety +{ + /// <summary> + /// 娣诲姞鎶ヨ鐩爣(璁惧)鐨勫垪琛ㄧ晫闈� + /// </summary> + public class AlarmTargetAddDeviceForm : EditorCommonForm + { + #region 鈻� 鍙橀噺澹版槑___________________________ + + /// <summary> + /// 鍒楄〃鎺т欢 + /// </summary> + private VerticalListControl listView = null; + /// <summary> + /// 闃插尯ID(杩欎釜涓滆タ浼间箮鏄敮涓�鐨�) + /// </summary> + private int zoonID = 0; + /// <summary> + /// 璁惧鍒楄〃 + /// </summary> + private List<CommonDevice> listAllDevice = null; + /// <summary> + /// 闇�瑕佹坊鍔犵殑鎶ヨ璁惧 + /// </summary> + private Dictionary<string, TaskInfoData> dicSaveDevice = new Dictionary<string, TaskInfoData>(); + + #endregion + + #region 鈻� 鍒濆鍖朹____________________________ + + /// <summary> + /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓) + /// </summary> + /// <param name="i_zoonID">闃插尯ID</param> + /// <param name="i_deviceText">璁惧绫诲瀷鐨勫悕绉�</param> + /// <param name="i_listDevice">璁惧淇℃伅</param> + public void ShowForm(int i_zoonID, string i_deviceText, List<CommonDevice> i_listDevice) + { + this.zoonID = i_zoonID; + this.listAllDevice = i_listDevice; + + //璁剧疆澶撮儴淇℃伅 + base.SetTitleText(i_deviceText); + + //鍒濆鍖栦腑閮ㄤ俊鎭� + this.InitMiddleFrame(i_deviceText); + } + + /// <summary> + /// 鍒濆鍖栦腑閮ㄤ俊鎭� + /// </summary> + /// <param name="titleText">鍒楄〃澶撮儴鍚嶇О</param> + private void InitMiddleFrame(string titleText) + { + //娓呯┖bodyFrame + this.ClearBodyFrame(); + + var frameBack = new FrameLayout(); + frameBack.BackgroundColor = UserCenterColor.Current.White; + frameBack.Height = Application.GetRealHeight(8); + bodyFrameLayout.AddChidren(frameBack); + + this.listView = new VerticalListControl(12); + listView.Y = frameBack.Bottom; + listView.BackgroundColor = UserCenterColor.Current.White; + listView.Height = bodyFrameLayout.Height - frameBack.Bottom; + bodyFrameLayout.AddChidren(listView); + + //瀹屾垚 + var btnfinish = new BottomClickButton(); + btnfinish.TextID = R.MyInternationalizationString.uFinish; + bodyFrameLayout.AddChidren(btnfinish); + btnfinish.ButtonClickEvent += (sender, e) => + { + //淇濆瓨閫夋嫨鐨勮澶� + this.DoSaveSelectDeviceAsync(); + }; + + HdlThreadLogic.Current.RunMainInThread(() => + { + int count = listAllDevice.Count - 1; + for (int i = 0; i < listAllDevice.Count; i++) + { + //濡傛灉閭d釜璁惧宸茬粡娣诲姞浜嗭紝鍒欎笉鍐嶆樉绀� + if (HdlSafeguardLogic.Current.IsAlarmDeviceExist(this.zoonID, listAllDevice[i]) == true) + { + continue; + } + //娣诲姞琛岀洰鏍� + this.AddRowLayout(listAllDevice[i], i != count); + } + //璋冩暣鐪熷疄楂樺害 + listView.AdjustRealHeightByBottomButton(Application.GetRealHeight(23)); + }); + } + + #endregion + + #region 鈻� 娣诲姞琛岀洰鏍嘷________________________ + + /// <summary> + /// 娣诲姞琛岀洰鏍� + /// </summary> + /// <param name="device"></param> + /// <param name="addLine"></param> + private void AddRowLayout(CommonDevice device, bool addLine) + { + string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(device); + + var rowContr = new FrameRowControl(listView.rowSpace / 2); + listView.AddChidren(rowContr); + + //鍥炬爣 + var btnIcon = rowContr.AddLeftIcon(81); + Common.LocalDevice.Current.SetDeviceIconToControl(btnIcon, device); + //璁惧鍚� + var btnName = rowContr.AddLeftCaption(Common.LocalDevice.Current.GetDeviceEpointName(device), 700); + btnName.TextSize = 15; + //鍙崇澶� + rowContr.AddRightArrow(); + if (addLine == true) + { + //搴曠嚎 + rowContr.AddBottomLine(); + } + //鐘舵�佹樉绀� + var btnStatu = rowContr.AddMostRightView("", 500); + rowContr.ButtonClickEvent += (sender, e) => + { + List<Safeguard.TaskListInfo> listTaskinfo = null; + if (dicSaveDevice.ContainsKey(mainKeys) == true) + { + //鍙栫紦瀛樹腑杩樻湭淇濆瓨鐨勬暟鎹� + listTaskinfo = dicSaveDevice[mainKeys].listInfos; + } + + if (device.Type == DeviceType.DimmableLight//璋冨厜鍣� + || device.Type == DeviceType.ColorDimmableLight)//褰╃伅 + { + var form = new AlarmTargetStatuSelectLightForm(); + form.AddForm(device, listTaskinfo); + form.FinishSelectEvent += (statuText, listInfo) => + { + btnStatu.Text = statuText; + //灏嗘柊鐨勬姤璀︾洰鏍囨坊鍔犲叆缂撳瓨 + this.AddAlarmSettionDataToMemory(device, listInfo); + }; + } + else if (device.Type == DeviceType.WindowCoveringDevice)//绐楀笜 + { + var form = new AlarmTargetStatuSelectCurtainForm(); + form.AddForm(device, listTaskinfo); + form.FinishSelectEvent += (statuText, listInfo) => + { + btnStatu.Text = statuText; + //灏嗘柊鐨勬姤璀︾洰鏍囨坊鍔犲叆缂撳瓨 + this.AddAlarmSettionDataToMemory(device, listInfo); + }; + } + else + { + //鍏朵粬鐩存帴褰掍负寮�鍏崇被 + var form = new AlarmTargetStatuSelectSwitchForm(); + form.AddForm(device, listTaskinfo); + form.FinishSelectEvent += (statuText, listInfo) => + { + btnStatu.Text = statuText; + //灏嗘柊鐨勬姤璀︾洰鏍囨坊鍔犲叆缂撳瓨 + this.AddAlarmSettionDataToMemory(device, listInfo); + }; + } + }; + } + + /// <summary> + /// 灏嗘柊鐨勬姤璀︾洰鏍囨坊鍔犲叆缂撳瓨 + /// </summary> + /// <param name="deviceInfo"></param> + /// <param name="listInfo"></param> + private void AddAlarmSettionDataToMemory(CommonDevice device, List<Safeguard.TaskListInfo> listInfo) + { + string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(device); + if (listInfo == null || listInfo.Count == 0) + { + //鎸囧畾涓烘棤鍔ㄤ綔妯″紡 + if (this.dicSaveDevice.ContainsKey(mainKeys) == true) + { + this.dicSaveDevice.Remove(mainKeys); + } + } + else + { + //纭娣诲姞鍔ㄤ綔 + var data = new TaskInfoData(); + this.dicSaveDevice[mainKeys] = data; + data.MacAddress = device.DeviceAddr; + data.Epoint = device.DeviceEpoint; + data.listInfos.AddRange(listInfo); + } + } + + #endregion + + #region 鈻� 淇濆瓨閫夋嫨鐨勮澶嘷____________________ + + /// <summary> + /// 淇濆瓨閫夋嫨鐨勮澶� + /// </summary> + private async void DoSaveSelectDeviceAsync() + { + if (this.dicSaveDevice.Count == 0) + { + this.CloseForm(); + return; + } + + var listAction = new List<Safeguard.AlarmActionObj>(); + foreach (var data in this.dicSaveDevice.Values) + { + var actionObj = new Safeguard.AlarmActionObj(); + actionObj.DeviceAddr = data.MacAddress; + actionObj.Epoint = data.Epoint; + actionObj.Type = 0; + actionObj.TaskList = data.listInfos; + listAction.Add(actionObj); + } + //娣诲姞鎶ヨ鐩爣鍒板畨闃� + bool success = await HdlSafeguardLogic.Current.AddAlarmTagetToSafety(this.zoonID, listAction); + if (success == true) + { + //鍏抽棴鑷韩 + this.CloseForm(); + } + } + + #endregion + + #region 鈻� 缁撴瀯浣揰____________________________ + + /// <summary> + /// 鎶ヨ鐩爣鏁版嵁 + /// </summary> + private class TaskInfoData + { + /// <summary> + /// MAC鍦板潃 + /// </summary> + public string MacAddress = string.Empty; + /// <summary> + /// 绔彛鍙� + /// </summary> + public int Epoint = 0; + /// <summary> + /// 鎶ヨ鍔ㄤ綔 + /// </summary> + public List<Safeguard.TaskListInfo> listInfos = new List<Safeguard.TaskListInfo>(); + } + + #endregion + } +} -- Gitblit v1.8.0