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/Category/AdjustTargetAddSceneForm.cs |  369 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 369 insertions(+), 0 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/Category/AdjustTargetAddSceneForm.cs b/ZigbeeApp/Shared/Phone/Category/AdjustTargetAddSceneForm.cs
new file mode 100755
index 0000000..211ea4e
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/Category/AdjustTargetAddSceneForm.cs
@@ -0,0 +1,369 @@
+锘縰sing Shared.Common;
+using Shared.Phone.UserCenter;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using ZigBee.Device;
+
+namespace Shared.Phone.Category
+{
+    /// <summary>
+    /// 鍦烘櫙鎵ц鐩爣娣诲姞璁惧鐨勭晫闈�
+    /// </summary>
+    public class AdjustTargetAddSceneForm : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 瀹屾垚閫夋嫨鐨勪簨浠�(鍦烘櫙ID)
+        /// </summary>
+        public Action<List<int>> FinishSelectEvent = null; 
+        /// <summary>
+        /// 褰撳墠宸茬粡娣诲姞鐨勬墽琛岀洰鏍�
+        /// </summary>
+        private List<Scene.DeviceListData> listAdjustTarget = null;
+        /// <summary>
+        /// 褰撳墠宸茬粡娣诲姞鐨勫満鏅疘D锛堝瓨鍦ㄦ娴嬬敤锛�
+        /// </summary>
+        private List<int> listOldSceneId = null;
+        /// <summary>
+        /// 褰撳墠鐣岄潰涓婇�夋嫨鐨勫満鏅紙瀛樺湪妫�娴嬬敤锛�
+        /// </summary>
+        private List<int> listNewScene = null;
+        /// <summary>
+        /// 瀹屾垚鎸夐挳
+        /// </summary>
+        private BottomClickButton btnFinishControl = null;
+        /// <summary>
+        /// 鍦烘櫙鍒楄〃鎺т欢
+        /// </summary>
+        private VerticalListControl listSceneView = null;
+        /// <summary>
+        /// 褰撳墠閫夋嫨鐨勬ゼ灞�
+        /// </summary>
+        private string nowSelectFloorId = string.Empty;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        /// <param name="i_listAdjustTarget">褰撳墠鎵ц鐩爣鍒楄〃</param>
+        public void ShowForm(List<Scene.DeviceListData> i_listAdjustTarget)
+        {
+            this.listAdjustTarget = i_listAdjustTarget;
+
+            //璁剧疆澶撮儴淇℃伅
+            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.AddScence));
+
+            //鍒濆鍖栧彸涓婅鐨勬帶浠�
+            this.InitTopRightMenuControl();
+            //鍒濆鍖栦腑閮ㄤ俊鎭�
+            this.InitMiddleFrame();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+        /// </summary>
+        private void InitMiddleFrame()
+        {
+            //娓呯┖body
+            this.ClearBodyFrame();
+
+            //鑾峰彇鑳藉鏄剧ず鐨勬埧闂村垪琛�
+            var listRoom = this.GetCanShowRoomList();
+            if (listRoom.Count == 0)
+            {
+                //娌℃湁鍙互娣诲姞鐨勫満鏅�
+                this.ShowNotDataImage(bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.uNotHadAddScene));
+                return;
+            }
+
+            //鎴块棿鑿滃崟鎺т欢
+            var roomSwitchContr = new RoomDeviceGroupMenuControl(listRoom);
+            this.bodyFrameLayout.AddChidren(roomSwitchContr);
+            //閫夋嫨浜嬩欢
+            roomSwitchContr.SelectRoomEvent += (selectRoom) =>
+            {
+                //鍦ㄥ闈㈡竻绌�(鐗规晥鐨勯棶棰�)
+                this.listSceneView?.RemoveAll();
+                HdlThreadLogic.Current.RunMainInThread(() =>
+                {
+                    //鍒锋柊璁惧鍒嗘敮鎺т欢
+                    this.RefreshFunctionView(selectRoom);
+                });
+            };
+
+            this.listSceneView = new VerticalListControl(35);
+            listSceneView.BackgroundColor = UserCenterColor.Current.White;
+            listSceneView.Y = roomSwitchContr.Bottom;
+            listSceneView.Height = bodyFrameLayout.Height - roomSwitchContr.Bottom;
+            bodyFrameLayout.AddChidren(listSceneView);
+
+            //瀹屾垚鎸夐挳
+            this.btnFinishControl = new BottomClickButton();
+            btnFinishControl.TextID = R.MyInternationalizationString.uFinish;
+            bodyFrameLayout.AddChidren(btnFinishControl);
+            if (this.listNewScene == null || this.listNewScene.Count == 0)
+            {
+                btnFinishControl.Visible = false;
+            }
+            btnFinishControl.ButtonClickEvent += (sender, e) =>
+            {
+                //鍥炶皟鍑芥暟
+                this.FinishSelectEvent?.Invoke(listNewScene);
+                this.CloseForm();
+            };
+
+            //鎵ц鍒濆鍖�(浼氳嚜鍔ㄨЕ鍙慡electRoomEvent浜嬩欢)
+            roomSwitchContr.InitControl();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栧彸涓婅鐨勬帶浠�
+        /// </summary>
+        private void InitTopRightMenuControl()
+        {
+            //鑾峰彇妤煎眰
+            var dicFloor = HdlRoomLogic.Current.GetFloorSortList();
+            if (dicFloor.Count == 0)
+            {
+                return;
+            }
+            var btnIconContr = new MostRightIconControl(69, 69);
+            btnIconContr.UnSelectedImagePath = "Item/Drop_Down.png";
+            topFrameLayout.AddChidren(btnIconContr);
+            btnIconContr.InitControl();
+
+            var btnFloor = new NormalViewControl(300, 69, true);
+            btnFloor.Gravity = Gravity.CenterVertical;
+            btnFloor.X = btnIconContr.X + btnIconContr.btnIcon.X - Application.GetRealWidth(300);
+            btnFloor.TextAlignment = TextAlignment.CenterRight;
+            topFrameLayout.AddChidren(btnFloor);
+
+            foreach (var floorId in dicFloor.Keys)
+            {
+                //绗竴涓ゼ灞�
+                this.nowSelectFloorId = floorId;
+                btnFloor.Text = dicFloor[floorId];
+                break;
+            }
+
+            btnIconContr.ButtonClickEvent += (sender, e) =>
+            {
+                //妤煎眰鑿滃崟
+                var contr = new TopRightFloorMenuControl(dicFloor.Count, 2, this.nowSelectFloorId, Language.StringByID(R.MyInternationalizationString.SelectFloor));
+                foreach (var floorId in dicFloor.Keys)
+                {
+                    contr.AddRowMenu(floorId, () =>
+                    {
+                        //璁板綍璧烽�夋嫨鐨処D
+                        this.nowSelectFloorId = floorId;
+                        btnFloor.Text = dicFloor[this.nowSelectFloorId];
+                        //鍒濆鍖栦腑閮ㄤ俊鎭�
+                        this.InitMiddleFrame();
+                    });
+                }
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 鍒锋柊鍦烘櫙鍒楄〃_______________________
+
+        /// <summary>
+        /// 鍒锋柊鍔熻兘鍒嗘敮鎺т欢
+        /// </summary>
+        /// <param name="room"></param>
+        private void RefreshFunctionView(Room room)
+        {
+            //鑾峰彇鎴块棿鍦烘櫙鍒楄〃
+            var listScene = this.GetListSceneFromRoom(room);
+            for (int i = 0; i < listScene.Count; i++)
+            {
+                var scene = listScene[i];
+                //鍦烘櫙琛屾帶浠�
+                var rowContr = new FrameRowControl(listSceneView.rowSpace / 2);
+                listSceneView.AddChidren(rowContr);
+                //鍥炬爣
+                var btnIcon = rowContr.AddLeftIcon(81);
+                btnIcon.UnSelectedImagePath = "Scene/SceneIcon.png";
+                //鍦烘櫙鍚�
+                var btnName = rowContr.AddLeftCaption(scene.Name, 700);
+                btnName.TextSize = 15;
+                //閫夋嫨
+                var btnSelect = rowContr.AddMostRightEmptyIcon(58, 58);
+                btnSelect.Visible = false;
+                btnSelect.UnSelectedImagePath = "Item/ItemSelected.png";
+                if (i != listScene.Count - 1)
+                {
+                    //搴曠嚎
+                    rowContr.AddBottomLine();
+                }
+                if (listNewScene.Contains(scene.Id) == true)
+                {
+                    btnSelect.Visible = true;
+                }
+
+                //鐐瑰嚮浜嬩欢
+                rowContr.ButtonClickEvent += (sender, e) =>
+                {
+                    btnSelect.Visible = !btnSelect.Visible;
+                    if (btnSelect.Visible == true)
+                    {
+                        //娣诲姞缂撳瓨
+                        listNewScene.Add(scene.Id);
+                        if (btnFinishControl.Visible == false)
+                        {
+                            btnFinishControl.Visible = true;
+                        }
+                    }
+                    else
+                    {
+                        //绉婚櫎缂撳瓨
+                        listNewScene.Remove(scene.Id);
+                        if (listNewScene.Count == 0)
+                        {
+                            btnFinishControl.Visible = false;
+                        }
+                    }
+                };
+            }
+            //璋冩暣鎺т欢妗屽竷楂樺害
+            this.listSceneView.AdjustRealHeightByBottomButton(Application.GetRealHeight(23));
+        }
+
+        #endregion
+
+        #region 鈻� 鑾峰彇鎴块棿鍦烘櫙鍒楄〃___________________
+
+        /// <summary>
+        /// 鑾峰彇鎴块棿鍦烘櫙鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        private List<SceneUI> GetListSceneFromRoom(Common.Room room)
+        {
+            //鑾峰彇鍏ㄩ儴鐨勫満鏅�
+            var listAllScene = HdlSceneLogic.Current.GetRoomSceneList(room);
+            var listShowScene = new List<SceneUI>();
+            foreach (var scene in listAllScene)
+            {
+                //鍒ゆ柇璇ュ満鏅兘鍚︽樉绀�
+                if (this.CheckSceneCanShow(scene) == true)
+                {
+                    listShowScene.Add(scene);
+                }
+            }
+            return listShowScene;
+        }
+
+        #endregion
+
+        #region 鈻� 鑾峰彇鎴块棿鍒楄〃_______________________
+
+        /// <summary>
+        /// 鑾峰彇鑳藉鏄剧ず鐨勬埧闂村垪琛�
+        /// </summary>
+        /// <param name="listRomm"></param>
+        /// <returns></returns>
+        private List<Room> GetCanShowRoomList()
+        {
+            if (this.listNewScene == null)
+            {
+                //鍏堝垪琛ㄥ寲
+                this.listOldSceneId = new List<int>();
+                this.listNewScene = new List<int>();
+                foreach (var data in this.listAdjustTarget)
+                {
+                    if (data.Type == 1)
+                    {
+                        //鍙鍦烘櫙
+                        listOldSceneId.Add(data.ElseScenesId);
+                    }
+                }
+            }
+
+            //褰撳墠妤煎眰鐨勫叏閮ㄦ埧闂�
+            var lisrRoom = HdlRoomLogic.Current.GetRoomsByFloorIdAppendLoveRoom(this.nowSelectFloorId);
+            var listShowRoom = new List<Room>();
+            foreach (var room in lisrRoom)
+            {
+                foreach (var sceneId in room.ListSceneId)
+                {
+                    var scene = HdlSceneLogic.Current.GetSceneUIBySceneId(sceneId);
+                    if (this.CheckSceneCanShow(scene) == true)
+                    {
+                        //杩欎釜鍦烘櫙鏈湴瀛樺湪,骞朵笖瀹冭繕娌℃湁鍔犲叆鍒版墽琛岀洰鏍囧垪琛�,鍒欒繖涓埧闂村彲浠ユ樉绀�
+                        listShowRoom.Add(room);
+                        break;
+                    }
+                }
+            }
+            return listShowRoom;
+        }
+
+        #endregion
+
+        #region 鈻� 鐣岄潰鍏抽棴___________________________
+
+        /// <summary>
+        /// 鐣岄潰鍏抽棴
+        /// </summary>
+        public override void CloseFormBefore()
+        {
+            this.FinishSelectEvent = null;
+
+            base.CloseFormBefore();
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 妫�娴嬪満鏅兘鍚︽樉绀�
+        /// </summary>
+        /// <param name="i_scene"></param>
+        private bool CheckSceneCanShow(SceneUI i_scene)
+        {
+            //鏈湴涓嶅瓨鍦�
+            if (i_scene == null) { return false; }
+            if (this.listOldSceneId.Contains(i_scene.Id) == true)
+            {
+                return false;
+            }
+            return true;
+        }
+
+        #endregion
+
+        #region 鈻� 缁撴瀯浣揰____________________________
+
+        /// <summary>
+        /// 璁惧琛屼俊鎭�
+        /// </summary>
+        private class DeviceRowInfo
+        {
+            /// <summary>
+            /// 鏂囨湰ID,鐩墠鐢ㄦ潵鍋氫富閿�
+            /// </summary>
+            public int TextId = 0;
+            /// <summary>
+            /// 鍥炬爣
+            /// </summary>
+            public string IconPath = string.Empty;
+            /// <summary>
+            /// 鍥炬爣
+            /// </summary>
+            public string IconPathSelected = string.Empty;
+            /// <summary>
+            /// 璁惧鍥炶矾涓婚敭
+            /// </summary>
+            public List<string> listDeviceKeys = new List<string>();
+        }
+
+        #endregion
+    }
+}

--
Gitblit v1.8.0