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