From 9a4b76398009cf76c508d61f7e48fb6f5cb7ac2d Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期二, 21 七月 2020 09:46:53 +0800
Subject: [PATCH] 请合并最新多功能面板代码

---
 ZigbeeApp/Shared/Phone/UserCenter/Safety/AlarmTargetExistSettionForm.cs |  338 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 338 insertions(+), 0 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Safety/AlarmTargetExistSettionForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Safety/AlarmTargetExistSettionForm.cs
new file mode 100755
index 0000000..f37f622
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Safety/AlarmTargetExistSettionForm.cs
@@ -0,0 +1,338 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Text;
+using ZigBee.Device;
+
+namespace Shared.Phone.UserCenter.Safety
+{
+    /// <summary>
+    /// 鏃㈠瓨鎶ヨ鐩爣璁剧疆鐢婚潰
+    /// </summary>
+    public class AlarmTargetExistSettionForm : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 闃插尯ID(杩欎釜涓滆タ浼间箮鏄敮涓�鐨�)
+        /// </summary>
+        private int zoonID = 0;
+        /// <summary>
+        /// 鍒楄〃鎺т欢
+        /// </summary>
+        private VerticalListControl listView = null;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        /// <param name="i_zoonID">闃插尯ID</param>
+        public void ShowForm(int i_zoonID)
+        {
+            this.zoonID = i_zoonID;
+
+            //璁剧疆澶撮儴淇℃伅
+            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uAlarmTargetSettion));
+
+            //娣诲姞鍥炬爣
+            var btnAdd = new MostRightIconControl(69, 69);
+            btnAdd.UnSelectedImagePath = "Item/Add.png";
+            topFrameLayout.AddChidren(btnAdd);
+            btnAdd.InitControl();
+            btnAdd.ButtonClickEvent += (sender, e) =>
+            {
+                var form = new AlarmTargetAddMenuForm();
+                form.AddForm(this.zoonID);
+            };
+
+            //鍒濆鍖栦腑閮ㄤ俊鎭�
+            this.InitMiddleFrame();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+        /// </summary>
+        private void InitMiddleFrame()
+        {
+            //娓呯┖bodyFrame
+            this.ClearBodyFrame();
+
+            //鏍规嵁闃插尯ID鑾峰彇鏈湴鐨勬姤璀︾洰鏍囧垪琛�
+            var listData = HdlSafeguardLogic.Current.GetLocalAlarmTargetInfoByZoneId(this.zoonID);
+            if (listData.Count == 0)
+            {
+                //杩樻病鏈夎缃姤璀︾洰鏍�
+                this.ShowNotDataImage(bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.uDoNotHadSettionTargetMsg));
+                return;
+            }
+
+            this.listView = new VerticalListControl(23);
+            listView.BackgroundColor = UserCenterColor.Current.White;
+            listView.Height = bodyFrameLayout.Height;
+            bodyFrameLayout.AddChidren(listView);
+
+            HdlThreadLogic.Current.RunMainInThread(() =>
+            {
+                for (int i = 0; i < listData.Count; i++)
+                {
+                    var data = listData[i];
+                    //鍦烘櫙
+                    if (data.Type == 1)
+                    {
+                        this.AddSceneRow(data, i != listData.Count - 1);
+                    }
+                    //璁惧
+                    if (data.Type == 0)
+                    {
+                        this.AddDeviceRow(data, i != listData.Count - 1);
+                    }
+                }
+                //璋冩暣鐪熷疄楂樺害
+                this.listView.AdjustRealHeight(Application.GetRealHeight(23));
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 鎶ヨ鐩爣鏄庣粏琛宊____________________
+
+        /// <summary>
+        /// 娣诲姞璁惧琛�
+        /// </summary>
+        /// <param name="data"></param>
+        /// <param name="addLine"></param>
+        private void AddDeviceRow(Safeguard.CatActionResponseObj data, bool addLine)
+        {
+            //琛屾帶浠�
+            var row = new DeviceRoomControl(data.DeviceAddr, data.Epoint, listView.rowSpace / 2);
+            listView.AddChidren(row);
+            row.InitControl();
+            row.frameTable.UseClickStatu = false;
+            if (addLine == true)
+            {
+                //搴曠嚎
+                row.frameTable.AddBottomLine();
+            }
+            //鐘舵�佹樉绀�
+            var btnStatu = row.frameTable.AddMostRightView("", 400);
+            if (data.TaskList.Count > 0)
+            {
+                btnStatu.Text = HdlSafeguardLogic.Current.GetAdjustTargetStatuText(data.TaskList);
+            }
+            else
+            {
+                //鏃犲姩浣�
+                btnStatu.TextID = R.MyInternationalizationString.uNotAction;
+            }
+
+            if (row.device != null)
+            {
+                //缂栬緫
+                var btnEditor = row.AddEditorControl();
+                btnEditor.ButtonClickEvent += (sender, e) =>
+                {
+                    //缂栬緫鎶ヨ鐩爣
+                    this.EditorAlarmTarget(row, btnStatu, data);
+                };
+            }
+
+            //鍒犻櫎
+            var btnDelete = row.AddDeleteControl();
+            btnDelete.ButtonClickEvent += (sender, e) =>
+            {
+                //鍒犻櫎
+                string msg = Language.StringByID(R.MyInternationalizationString.uShowDoDeleteMsg);
+                this.ShowMassage(ShowMsgType.Confirm, msg, () =>
+                {
+                    //鍒犻櫎鎶ヨ鐩爣
+                    this.DeleteAlarmTarget(row, data);
+                });
+            };
+        }
+
+        /// <summary>
+        /// 娣诲姞鍦烘櫙琛�
+        /// </summary>
+        /// <param name="data"></param>
+        /// <param name="addLine"></param>
+        private void AddSceneRow(Safeguard.CatActionResponseObj data, bool addLine)
+        {
+            //琛屾帶浠�
+            var row = new SceneRoomControl(data.ScenesId, data.ESName, listView.rowSpace / 2);
+            listView.AddChidren(row);
+            row.InitControl();
+            row.frameTable.UseClickStatu = false;
+
+            if (addLine == true)
+            {
+                //搴曠嚎
+                row.frameTable.AddBottomLine();
+            }
+
+            //鍒犻櫎
+            var btnDelete = row.AddDeleteControl();
+            btnDelete.ButtonClickEvent += (sender, e) =>
+            {
+                string msg = Language.StringByID(R.MyInternationalizationString.uShowDoDeleteMsg);
+                this.ShowMassage(ShowMsgType.Confirm, msg, () =>
+                {
+                    //鍒犻櫎鎶ヨ鐩爣
+                    this.DeleteAlarmTarget(row, data);
+                });
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 鍒犻櫎鎸囧畾鎶ヨ鐩爣___________________
+
+        /// <summary>
+        /// 鍒犻櫎鎸囧畾鎶ヨ鐩爣
+        /// </summary>
+        /// <param name="row"></param>
+        /// <param name="delObj"></param>
+        private async void DeleteAlarmTarget(RowLayoutControl row, Safeguard.CatActionResponseObj delObj)
+        {
+            //鍙傛暟
+            var Pra = new List<Safeguard.DelAlarmActionObj>();
+            var actionObj = new Safeguard.DelAlarmActionObj();
+            actionObj.DeviceAddr = delObj.DeviceAddr;
+            actionObj.Epoint = delObj.Epoint;
+            actionObj.ScenesId = delObj.ScenesId;
+            actionObj.Type = delObj.Type;
+            Pra.Add(actionObj);
+
+            //鎵ц鍒犻櫎
+            bool result = await HdlSafeguardLogic.Current.DeleteAlarmTaget(this.zoonID, Pra);
+            if (result == false)
+            {
+                return;
+            }
+
+            //琛岀Щ闄�
+            row?.RemoveFromParent();
+            //璋冩暣鐪熷疄楂樺害
+            listView.AdjustRealHeight(Application.GetRealHeight(23));
+            if (listView.ChildrenCount == 0)
+            {
+                //閲嶆柊鍒濆鍖栦腑閮ㄤ俊鎭�
+                this.InitMiddleFrame();
+                return;
+            }
+        }
+        #endregion
+
+        #region 鈻� 缂栬緫鎸囧畾鎶ヨ鐩爣___________________
+
+        /// <summary>
+        /// 缂栬緫鎸囧畾鎶ヨ鐩爣
+        /// </summary>
+        /// <param name="btnStatu"></param>
+        /// <param name="resObj"></param>
+        private void EditorAlarmTarget(DeviceRoomControl deviceRow, NormalViewControl btnStatu, Safeguard.CatActionResponseObj resObj)
+        {
+            var device = Common.LocalDevice.Current.GetDevice(resObj.DeviceAddr, resObj.Epoint);
+            if (device.Type == DeviceType.DimmableLight//璋冨厜鍣�
+                || device.Type == DeviceType.ColorDimmableLight)//褰╃伅
+            {
+                var form = new AlarmTargetStatuSelectLightForm();
+                form.AddForm(device, resObj.TaskList);
+                form.FinishSelectEvent += (statuText, listInfo) =>
+                {
+                    //杩樺師宸﹀彸鑿滃崟
+                    deviceRow?.HideMenu();
+                    btnStatu.Text = statuText;
+                    //淇濆瓨缂栬緫鐨勬姤璀︾洰鏍�
+                    this.SaveEditorAlarmTarget(resObj, listInfo);
+                };
+            }
+            else if (device.Type == DeviceType.WindowCoveringDevice)//绐楀笜
+            {
+                var form = new AlarmTargetStatuSelectCurtainForm();
+                form.AddForm(device, resObj.TaskList);
+                form.FinishSelectEvent += (statuText, listInfo) =>
+                {
+                    //杩樺師宸﹀彸鑿滃崟
+                    deviceRow?.HideMenu();
+                    btnStatu.Text = statuText;
+                    //淇濆瓨缂栬緫鐨勬姤璀︾洰鏍�
+                    this.SaveEditorAlarmTarget(resObj, listInfo);
+                };
+            }
+            else
+            {
+                //鍏朵粬鐩存帴褰掍负寮�鍏崇被
+                var form = new AlarmTargetStatuSelectSwitchForm();
+                form.AddForm(device, resObj.TaskList);
+                form.FinishSelectEvent += (statuText, listInfo) =>
+                {
+                    //杩樺師宸﹀彸鑿滃崟
+                    deviceRow?.HideMenu();
+                    btnStatu.Text = statuText;
+                    //淇濆瓨缂栬緫鐨勬姤璀︾洰鏍�
+                    this.SaveEditorAlarmTarget(resObj, listInfo);
+                };
+            }
+        }
+
+        /// <summary>
+        /// 淇濆瓨缂栬緫鐨勬姤璀︾洰鏍�
+        /// </summary>
+        /// <param name="resObj"></param>
+        /// <param name="listTask"></param>
+        private async void SaveEditorAlarmTarget(Safeguard.CatActionResponseObj resObj, List<Safeguard.TaskListInfo> listTask)
+        {
+            //鍏堝垹闄� 鍙傛暟
+            var PraDel = new List<Safeguard.DelAlarmActionObj>();
+            var actionObjDel = new Safeguard.DelAlarmActionObj();
+            actionObjDel.DeviceAddr = resObj.DeviceAddr;
+            actionObjDel.Epoint = resObj.Epoint;
+            actionObjDel.ScenesId = resObj.ScenesId;
+            actionObjDel.Type = resObj.Type;
+            PraDel.Add(actionObjDel);
+
+            //鎵ц鍒犻櫎
+            bool result = await HdlSafeguardLogic.Current.DeleteAlarmTaget(this.zoonID, PraDel);
+            if (result == false)
+            {
+                return;
+            }
+
+            //鐒跺悗鍐嶆坊鍔�
+            var listAction = new List<Safeguard.AlarmActionObj>();
+            var actionObjAdd = new Safeguard.AlarmActionObj();
+            actionObjAdd.DeviceAddr = resObj.DeviceAddr;
+            actionObjAdd.Epoint = resObj.Epoint;
+            actionObjAdd.Type = 0;
+            actionObjAdd.TaskList = listTask;
+            listAction.Add(actionObjAdd);
+
+            //娣诲姞鎶ヨ鐩爣鍒板畨闃�
+            bool success = await HdlSafeguardLogic.Current.AddAlarmTagetToSafety(this.zoonID, listAction);
+            if (success == true)
+            {
+                resObj.TaskList.Clear();
+                resObj.TaskList.AddRange(listTask);
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 鐣岄潰閲嶆柊婵�娲讳簨浠禵__________________
+
+        /// <summary>
+        /// 鑷韩鐨勪笂灞傜晫闈㈠叧闂悗,瀹冭嚜韬浜庢渶涓婂眰鏃�,瑙﹀彂鐨勪簨浠�
+        /// </summary>
+        public override int FormActionAgainEvent()
+        {
+            //閲嶆柊鍒锋柊鐣岄潰
+            this.InitMiddleFrame();
+
+            return 1;
+        }
+
+        #endregion
+    }
+}

--
Gitblit v1.8.0