From 404cdc88627f942df7944af04ee05b9d527752d6 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期一, 30 九月 2019 13:22:40 +0800
Subject: [PATCH] 合并了徐梅的按键面板绑定

---
 ZigbeeApp/Shared/Phone/UserCenter/Safety/AlarmTargetSettionForm.cs |  325 ++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 241 insertions(+), 84 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Safety/AlarmTargetSettionForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Safety/AlarmTargetSettionForm.cs
index a9d9944..ec32d7c 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Safety/AlarmTargetSettionForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Safety/AlarmTargetSettionForm.cs
@@ -8,8 +8,10 @@
     /// <summary>
     /// 鎶ヨ鐩爣璁剧疆鐢婚潰
     /// </summary>
-    public class AlarmTargetSettionForm : UserCenterCommonForm
+    public class AlarmTargetSettionForm : EditorCommonForm
     {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
         /// <summary>
         /// 闃插尯ID(杩欎釜涓滆タ浼间箮鏄敮涓�鐨�)
         /// </summary>
@@ -17,11 +19,15 @@
         /// <summary>
         /// 鍒楄〃鎺т欢
         /// </summary>
-        private VerticalScrolViewLayout listView = null;
+        private VerticalListControl listView = null;
         /// <summary>
-        /// 鏍囬鎺т欢
+        /// 搴曢儴鐨勩�愭坊鍔犵洰鏍囥�戠殑琛�
         /// </summary>
-        private TitleViewControl btnTitle = null;
+        private FrameRowControl frameBottomAddRow = null;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
 
         /// <summary>
         /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
@@ -32,18 +38,7 @@
             this.zoonID = i_zoonID;
 
             //璁剧疆澶撮儴淇℃伅
-            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uAlarmTargetSettion));
-
-            //鍙充笂娣诲姞鎸夐挳
-            var btnAddDeviceIcon = new TopLayoutMostRightView();
-            btnAddDeviceIcon.UnSelectedImagePath = "Item/Add.png";
-            btnAddDeviceIcon.SelectedImagePath = "Item/AddSelected.png";
-            topFrameLayout.AddChidren(btnAddDeviceIcon);
-            btnAddDeviceIcon.MouseUpEventHandler += (sender, e) =>
-            {
-                var form = new AddAlarmTargetTypeListForm();
-                this.AddForm(form, this.zoonID);
-            };
+            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uAlarmTargetSettion));
 
             //鍒濆鍖栦腑閮ㄤ俊鎭�
             this.InitMiddleFrame();
@@ -54,44 +49,151 @@
         /// </summary>
         private void InitMiddleFrame()
         {
-            //褰撹闃插尯鎶ヨ鏃讹紝浠ヤ笅鐩爣灏嗕細鍝嶅簲
-            btnTitle = new TitleViewControl();
-            btnTitle.TextColor = UserCenterColor.Current.TextGrayColor;
-            btnTitle.Visible = false;
-            btnTitle.Y = Application.GetRealHeight(40);
-            btnTitle.TextID = R.MyInternationalizationString.uTargetViewAlarmAfterZoonAlarm;
-            bodyFrameLayout.AddChidren(btnTitle);
+            //娓呯┖bodyFrame
+            this.ClearBodyFrame();
 
-            this.listView = new VerticalScrolViewLayout();
-            this.listView.Y = btnTitle.Bottom + Application.GetRealHeight(20);
-            this.listView.Height = bodyFrameLayout.Height - btnTitle.Bottom - Application.GetRealHeight(20);
+            //鏍规嵁闃插尯ID鑾峰彇鏈湴鐨勬姤璀︾洰鏍囧垪琛�
+            var listData = HdlSafeguardLogic.Current.GetLocalAlarmTargetInfoByZoneId(this.zoonID);
+            if (listData.Count == 0)
+            {
+                //鐗规畩鐗规晥,濡傛灉娌℃湁鎶ヨ鐩爣鐨勮瘽,鍒欐樉绀虹殑鐣岄潰鏁堟灉闈炲父鐨勫ぇ
+                this.ShowNotAlarmTargetAppeal();
+                frameBottomAddRow = null;
+                return;
+            }
+
+            //褰撹闃插尯鎶ヨ鏃讹紝浠ヤ笅鐩爣灏嗕細鍝嶅簲
+            var frameBack = new FrameLayout();
+            frameBack.Height = Application.GetRealHeight(92);
+            frameBack.BackgroundColor = UserCenterColor.Current.White;
+            bodyFrameLayout.AddChidren(frameBack);
+
+            var btnTitle = new NormalViewControl(860, 49, true);
+            btnTitle.X = ControlCommonResourse.XXLeft;
+            btnTitle.Y = Application.GetRealHeight(35);
+            btnTitle.TextSize = 12;
+            btnTitle.TextColor = UserCenterColor.Current.TextGrayColor2;
+            btnTitle.TextID = R.MyInternationalizationString.uTargetViewAlarmAfterZoonAlarm;
+            frameBack.AddChidren(btnTitle);
+
+            int maxRowCount = listData.Count;
+            if (maxRowCount > 8)
+            {
+                //鐗规晥闂,瀹冨彧鑳芥樉绀�8涓�,瓒呰繃8涓彧鑳界敤婊戝姩
+                maxRowCount = 8;
+            }
+            this.listView = new VerticalListControl(29);
+            this.listView.Y = frameBack.Bottom;
+            this.listView.BackgroundColor = UserCenterColor.Current.White;
+            this.listView.Height = (ControlCommonResourse.ListViewRowHeight + Application.GetRealHeight(29)) * maxRowCount;
             bodyFrameLayout.AddChidren(this.listView);
 
-            //璁剧疆涓棿閮ㄥ垎淇℃伅
-            this.SetMiddleInfo();
+            //娣诲姞搴曢儴 娣诲姞鎶ヨ鐩爣鐨勮彍鍗曡
+            this.AddBottomAlarmTargetMenu();
+ 
+            new System.Threading.Thread(() =>
+            {
+                //璁剧疆涓棿閮ㄥ垎淇℃伅
+                this.SetMiddleInfo(listData);
+            })
+            { IsBackground = true }.Start();
         }
 
         /// <summary>
         /// 璁剧疆涓棿閮ㄥ垎淇℃伅
         /// </summary>
-        public void SetMiddleInfo()
+        public void SetMiddleInfo(List<Safeguard.CatActionResponseObj> listData)
         {
-            this.listView.RemoveAll();
-
-            //鏍规嵁闃插尯ID鑾峰彇鏈湴鐨勬姤璀︾洰鏍囧垪琛�
-            var listData = Common.LocalSafeguard.Current.GetLocalAlarmTargetInfoByZoneId(this.zoonID);
-            if (listData.Count > 0)
+            if (this.Parent == null)
             {
-                btnTitle.Visible = true;
+                return;
             }
 
-            new System.Threading.Thread(() =>
+            //娣诲姞鎶ヨ鐩爣鐨勬槑缁嗚S
+            Application.RunOnMainThread(() =>
             {
-                //娣诲姞鎶ヨ鐩爣鐨勬槑缁嗚
-                this.AddAlarmTargetList(listData);
-            })
-            { IsBackground = true }.Start();
+                foreach (var data in listData)
+                {
+                    //鍦烘櫙
+                    if (data.Type == 1)
+                    {
+                        this.AddSceneRow(data);
+                    }
+                    //璁惧
+                    if (data.Type == 0)
+                    {
+                        CommonDevice device = Common.LocalDevice.Current.GetDevice(data.DeviceAddr, data.Epoint);
+                        if (device != null)
+                        {
+                            this.AddDeviceRow(data, device);
+                        }
+                    }
+                }
+            });
         }
+
+        #endregion
+
+        #region 鈻� 鎶ヨ鐩爣鑿滃崟琛宊____________________
+
+        /// <summary>
+        /// 鏄剧ず鏃犳姤璀︾洰鏍囩壒鏁�
+        /// </summary>
+        private void ShowNotAlarmTargetAppeal()
+        {
+            var frameTemp = new FrameRowControl();
+            frameTemp.Height = Application.GetRealHeight(173);
+            frameTemp.BackgroundColor = UserCenterColor.Current.White;
+            bodyFrameLayout.AddChidren(frameTemp);
+
+            //娣诲姞鐩爣
+            var btnText = frameTemp.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uAddTarget), 400);
+            btnText.TextSize = 15;
+
+            //鍔犲彿
+            var btnAdd = frameTemp.AddMostRightEmptyIcon(58, 58);
+            btnAdd.UnSelectedImagePath = "Item/Add.png";
+
+            frameTemp.ButtonClickEvent += (sender, e) =>
+            {
+                var form = new AddAlarmTargetTypeListForm();
+                form.AddForm(this.zoonID);
+            };
+        }
+
+        /// <summary>
+        /// 娣诲姞搴曢儴 娣诲姞鎶ヨ鐩爣鐨勮彍鍗曡
+        /// </summary>
+        private void AddBottomAlarmTargetMenu()
+        {
+            //娣诲姞鐩爣
+            frameBottomAddRow = new FrameRowControl();
+            frameBottomAddRow.Y = this.listView.Bottom;
+            frameBottomAddRow.Height = ControlCommonResourse.ListViewRowHeight + Application.GetRealHeight(29 + 29);
+            frameBottomAddRow.BackgroundColor = UserCenterColor.Current.White;
+            bodyFrameLayout.AddChidren(frameBottomAddRow);
+
+            var frameTemp = new FrameRowControl();
+            frameTemp.Gravity = Gravity.CenterVertical;
+            frameBottomAddRow.AddChidren(frameTemp);
+            var btnText = frameTemp.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uAddTarget), 400);
+            btnText.TextSize = 15;
+            //鍔犲彿
+            var btnAdd = frameTemp.AddMostRightEmptyIcon(58, 58);
+            btnAdd.UnSelectedImagePath = "Item/Add.png";
+            //搴曠嚎
+            frameTemp.AddBottomLine();
+
+            frameTemp.ButtonClickEvent += (sender, e) =>
+            {
+                var form = new AddAlarmTargetTypeListForm();
+                form.AddForm(this.zoonID);
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 鎶ヨ鐩爣鏄庣粏琛宊____________________
 
         /// <summary>
         /// 娣诲姞鎶ヨ鐩爣鐨勬槑缁嗚
@@ -105,7 +207,10 @@
                 {
                     Application.RunOnMainThread(() =>
                     {
-                        this.AddDeviceRow(data);
+                        if (this.Parent != null)
+                        {
+                            this.AddSceneRow(data);
+                        }
                     });
                 }
                 //璁惧
@@ -120,9 +225,55 @@
 
                     Application.RunOnMainThread(() =>
                     {
-                        this.AddSceneRow(data, device);
+                        if (this.Parent != null)
+                        {
+                            this.AddDeviceRow(data, device);
+                        }
                     });
                 }
+            }
+        }
+
+        /// <summary>
+        /// 娣诲姞璁惧琛�
+        /// </summary>
+        /// <param name="data"></param>
+        /// <param name="device"></param>
+        private void AddDeviceRow(Safeguard.CatActionResponseObj data, CommonDevice device)
+        {
+            //琛屾帶浠�
+            var row = new DeviceRoomControl(device, listView.rowSpace / 2);
+            listView.AddChidren(row);
+            row.InitControl();
+            row.frameTable.UseClickStatu = false;
+            //搴曠嚎
+            row.frameTable.AddBottomLine();
+
+            //鍒犻櫎鍥炬爣
+            var btnDelete = row.frameTable.AddMostRightEmptyIcon(58, 58);
+            btnDelete.UnSelectedImagePath = "Item/DeleteIcon1.png";
+            row.frameTable.ChangedChidrenBindMode(btnDelete, ChidrenBindMode.NotBind);
+            btnDelete.ButtonClickEvent += (sender, e) =>
+            {
+                //鍒犻櫎
+                string msg = Language.StringByID(R.MyInternationalizationString.uShowDoDeleteMsg);
+                this.ShowMassage(ShowMsgType.Confirm, msg, () =>
+                {
+                    //鍒犻櫎鎶ヨ鐩爣
+                    this.DeleteAlarmTarget(row, data);
+                });
+            };
+
+            //鐘舵�佹樉绀�
+            var btnStatu = row.frameTable.AddMostRightView("", 400);
+            if (data.TaskList.Count > 0)
+            {
+                btnStatu.Text = HdlSafeguardLogic.Current.GetLightAlarmStatuText(data.TaskList);
+            }
+            else
+            {
+                //鏃犲姩浣�
+                btnStatu.TextID = R.MyInternationalizationString.uNotAction;
             }
         }
 
@@ -130,60 +281,42 @@
         /// 娣诲姞鍦烘櫙琛�
         /// </summary>
         /// <param name="data"></param>
-        /// <param name="device"></param>
-        private void AddSceneRow(Safeguard.CatActionResponseObj data, CommonDevice device)
+        private void AddSceneRow(Safeguard.CatActionResponseObj data)
         {
             //琛屾帶浠�
-            var row = new DeviceRoomViewRow(this.listView, device);
-            //鐘舵�佹樉绀�
-            var btnStatu = new RowSecondRightTextView();
-            row.AddChidren(btnStatu);
-            if (data.TaskList.Count > 0)
-            {
-                btnStatu.Text = SafeguardLogic.GetLightAlarmStatuText(data.TaskList);
-                btnStatu.TextColor = UserCenterColor.Current.Green;
-            }
-            else
-            {
-                //鏃犲姩浣�
-                btnStatu.TextID = R.MyInternationalizationString.uNotAction;
-            }
+            var row = new SceneRoomControl(data.ScenesId, data.ESName, listView.rowSpace / 2);
+            listView.AddChidren(row);
+            row.InitControl();
+            row.frameTable.UseClickStatu = false;
+            //搴曠嚎
+            row.frameTable.AddBottomLine();
 
-            var btnDelete = new RowDeleteButton();
-            row.AddRightView(btnDelete);
-            btnDelete.MouseUpEventHandler += (sender, e) =>
+            //鍒犻櫎鍥炬爣
+            var btnDelete = row.frameTable.AddMostRightEmptyIcon(58, 58);
+            btnDelete.UnSelectedImagePath = "Item/DeleteIcon1.png";
+            row.frameTable.ChangedChidrenBindMode(btnDelete, ChidrenBindMode.NotBind);
+            btnDelete.ButtonClickEvent += (sender, e) =>
             {
                 //鍒犻櫎
                 string msg = Language.StringByID(R.MyInternationalizationString.uShowDoDeleteMsg);
-                this.ShowConfirmMsg(msg, "DeleteAlarmTarget", row, data);
+                this.ShowMassage(ShowMsgType.Confirm, msg, () =>
+                {
+                    //鍒犻櫎鎶ヨ鐩爣
+                    this.DeleteAlarmTarget(row, data);
+                });
             };
         }
 
-        /// <summary>
-        /// 娣诲姞璁惧琛�
-        /// </summary>
-        /// <param name="data"></param>
-        private void AddDeviceRow(Safeguard.CatActionResponseObj data)
-        {
-            //琛屾帶浠�
-            var row = new SceneRoomViewRow(this.listView, data.ScenesId, data.ESName);
+        #endregion
 
-            var btnDelete = new RowDeleteButton();
-            row.AddRightView(btnDelete);
-            btnDelete.MouseUpEventHandler += (sender, e) =>
-            {
-                //鍒犻櫎
-                string msg = Language.StringByID(R.MyInternationalizationString.uShowDoDeleteMsg);
-                this.ShowConfirmMsg(msg, "DeleteAlarmTarget", row, data);
-            };
-        }
+        #region 鈻� 鍒犻櫎鎸囧畾鎶ヨ鐩爣___________________
 
         /// <summary>
         /// 鍒犻櫎鎸囧畾鎶ヨ鐩爣
         /// </summary>
         /// <param name="row"></param>
         /// <param name="delObj"></param>
-        public async void DeleteAlarmTarget(StatuRowLayout row, Safeguard.CatActionResponseObj delObj)
+        private async void DeleteAlarmTarget(RowLayoutControl row, Safeguard.CatActionResponseObj delObj)
         {
             //鍙傛暟
             var Pra = new List<Safeguard.DelAlarmActionObj>();
@@ -198,7 +331,7 @@
             this.ShowProgressBar();
 
             //鎵ц鍒犻櫎
-            bool result = await Common.LocalSafeguard.Current.DeleteAlarmTaget(this.zoonID, Pra);
+            bool result = await HdlSafeguardLogic.Current.DeleteAlarmTaget(this.zoonID, Pra);
 
             //鍏抽棴杩涘害鏉�
             this.CloseProgressBar();
@@ -211,12 +344,36 @@
             Application.RunOnMainThread(() =>
             {
                 //琛岀Щ闄�
-                row.RemoveFromParent();
-                if (listView.ChildrenCount == 0)
+                row?.RemoveFromParent();
+                if (listView != null && listView.ChildrenCount == 0)
                 {
-                    btnTitle.Visible = false;
+                    //閲嶆柊鍒濆鍖栦腑閮ㄤ俊鎭�
+                    this.InitMiddleFrame();
+                    return;
+                }
+                var realHeight = listView.ChildrenCount * listView.GetChildren(listView.ChildrenCount - 1).Height;
+                if (realHeight < listView.Height)
+                {
+                    //缂╁皬鎺т欢楂樺害
+                    listView.Height = realHeight;
+                    //绉诲姩琛屾帶浠�
+                    frameBottomAddRow.Y = this.listView.Bottom;
                 }
             });
         }
+        #endregion
+
+        #region 鈻� 鐣岄潰閲嶆柊婵�娲讳簨浠禵__________________
+
+        /// <summary>
+        /// 鑷韩鐨勪笂灞傜晫闈㈠叧闂悗,瀹冭嚜韬浜庢渶涓婂眰鏃�,瑙﹀彂鐨勪簨浠�
+        /// </summary>
+        public override void FormActionAgainEvent()
+        {
+            //閲嶆柊鍒锋柊鐣岄潰
+            this.InitMiddleFrame();
+        }
+
+        #endregion
     }
 }

--
Gitblit v1.8.0