From f4c86f68b900bd506ef7214b2ae9bd23a9d2ffa8 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期六, 19 十二月 2020 17:48:11 +0800
Subject: [PATCH] 完成筛选房间的功能

---
 HDL-ON_Android/HDL-ON_Android.csproj                              |    1 
 HDL_ON/Common/Utlis/FloorSelectPopupDialog.cs                     |   78 +++
 HDL-ON_iOS/Resources/Phone/Public/PopupDialog.png                 |    0 
 HDL_ON/UI/UI2/3-Intelligence/Scene/SceneFunctionListChoosePage.cs |  231 ++-------
 HDL_ON/UI/UI2/2-Classification/FunctionPage.cs                    |  150 -----
 HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs                  |   59 +
 HDL-ON_iOS/HDL-ON_iOS.csproj                                      |    1 
 HDL-ON_Android/Assets/Phone/Public/PopupDialog.png                |    0 
 HDL_ON/Common/Utlis/FloorRoomSelectPopupView.cs                   |  305 ++++++++++++
 HDL_ON/HDL_ON.projitems                                           |    3 
 HDL_ON/UI/UI0-Public/Widget/DiySelectPopupDialog.cs               |  630 +++++++++++++++++++++++++
 11 files changed, 1,128 insertions(+), 330 deletions(-)

diff --git a/HDL-ON_Android/Assets/Phone/Public/PopupDialog.png b/HDL-ON_Android/Assets/Phone/Public/PopupDialog.png
new file mode 100755
index 0000000..6c95d58
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/Public/PopupDialog.png
Binary files differ
diff --git a/HDL-ON_Android/HDL-ON_Android.csproj b/HDL-ON_Android/HDL-ON_Android.csproj
index 998d684..5fe7cda 100644
--- a/HDL-ON_Android/HDL-ON_Android.csproj
+++ b/HDL-ON_Android/HDL-ON_Android.csproj
@@ -662,6 +662,7 @@
     <AndroidAsset Include="Assets\Phone\FunctionIcon\Light\CozyIcon.png" />
     <AndroidAsset Include="Assets\Phone\FunctionIcon\Light\MeetingGuestsIcon.png" />
     <AndroidAsset Include="Assets\Phone\FunctionIcon\Light\ReadIcon.png" />
+    <AndroidAsset Include="Assets\Phone\Public\PopupDialog.png" />
   </ItemGroup>
   <ItemGroup>
     <AndroidNativeLibrary Include="libs\armeabi-v7a\libelianjni.so" />
diff --git a/HDL-ON_iOS/HDL-ON_iOS.csproj b/HDL-ON_iOS/HDL-ON_iOS.csproj
index c6d98cf..2660c79 100644
--- a/HDL-ON_iOS/HDL-ON_iOS.csproj
+++ b/HDL-ON_iOS/HDL-ON_iOS.csproj
@@ -635,6 +635,7 @@
       <BundleResource Include="Resources\Phone\FunctionIcon\Light\CozyIcon.png" />
       <BundleResource Include="Resources\Phone\FunctionIcon\Light\MeetingGuestsIcon.png" />
       <BundleResource Include="Resources\Phone\FunctionIcon\Light\ReadIcon.png" />
+      <BundleResource Include="Resources\Phone\Public\PopupDialog.png" />
     </ItemGroup>
     <ItemGroup>
       <ITunesArtwork Include="iTunesArtwork" />
diff --git a/HDL-ON_iOS/Resources/Phone/Public/PopupDialog.png b/HDL-ON_iOS/Resources/Phone/Public/PopupDialog.png
new file mode 100755
index 0000000..6c95d58
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/Public/PopupDialog.png
Binary files differ
diff --git a/HDL_ON/Common/Utlis/FloorRoomSelectPopupView.cs b/HDL_ON/Common/Utlis/FloorRoomSelectPopupView.cs
new file mode 100755
index 0000000..e0f3720
--- /dev/null
+++ b/HDL_ON/Common/Utlis/FloorRoomSelectPopupView.cs
@@ -0,0 +1,305 @@
+锘縰sing HDL_ON.Entity;
+using Shared;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HDL_ON
+{
+    /// <summary>
+    /// 妤煎眰鍙婃埧闂寸殑閫夋嫨鐣岄潰
+    /// </summary>
+    public class FloorRoomSelectPopupView
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 褰撳墠閫夋嫨鏄剧ず鐨刄ID(妤煎眰,鎴栬�呮埧闂�,鎴栬�呭叏閮�)
+        /// </summary>
+        private string nowShowSelectId = DiySelectPopupDialog.ALLSELECT;
+        /// <summary>
+        /// 鍏ㄩ儴鐨勫姛鑳�(璁惧鏄剧ず鍒嗘敮浣跨敤)
+        /// </summary>
+        private List<Function> listAllFun = null;
+
+        #endregion
+
+        #region 鈻� 鍦烘櫙鏄剧ず___________________________
+
+        /// <summary>
+        /// 鏄剧ず閫夋嫨鍦烘櫙鐨勭晫闈�
+        /// </summary>
+        /// <param name="btnFloor">妤煎眰鍚嶅瓧鏄剧ず鐨勬帶浠�,閫夋嫨鍚�,鍐呴儴浼氳嚜鍔ㄥ彉鏇存樉绀烘枃瀛�,鍙互璁剧疆涓簄ull</param>
+        /// <param name="SelectEvent">鏍规嵁閫夋嫨鐨勬潯浠�,绛涢�変箣鍚庣殑鍦烘櫙鍒楄〃(绗竴涓弬鏁版槸閫夋嫨鐨刄ID,涓嶇鏈夋病鏈夌敤,鎬讳箣鍏堣繑鍥�)</param>
+        /// <param name="i_defultSelectId">榛樿鍝釜涓洪�夋嫨鐘舵��</param>
+        public void ShowSceneView(Button btnFloor, Action<string, List<Scene>> SelectEvent, string i_defultSelectId = null)
+        {
+            //娓呯紦瀛�
+            this.ClearMemory();
+
+            if (string.IsNullOrEmpty(i_defultSelectId) == true)
+            {
+                i_defultSelectId = DiySelectPopupDialog.ALLSELECT;
+            }
+
+            //杩斿洖鐨刬d鏄疷ID
+            new FloorSelectPopupDialog().ShowView((selectValue) =>
+            {
+                this.nowShowSelectId = selectValue;
+                //鍒锋柊妤煎眰鐨勬樉绀哄悕瀛�
+                this.RefreshFloorShowName(btnFloor);
+
+                //鑾峰彇鍙互鏄剧ず鐨勫満鏅垪琛�
+                var listScene = this.GetCanShowListScene();
+                SelectEvent?.Invoke(this.nowShowSelectId, listScene);
+                SelectEvent = null;
+
+            }, i_defultSelectId);
+        }
+
+        /// <summary>
+        /// 鑾峰彇鑳藉鏄剧ず鐨勫満鏅�
+        /// </summary>
+        /// <returns></returns>
+        public List<Scene> GetCanShowListScene()
+        {
+            var listScene = new List<Scene>();
+
+            //鍏堢湅鐪嬪綋鍓嶉�夋嫨鐨勬樉绀虹被鍨� 1:鍏ㄩ儴 2:妤煎眰 3:鎴块棿
+            var selectType = this.CheckSelectFloorIdType();
+            if (selectType == 1)
+            {
+                return FunctionList.List.scenes;
+            }
+
+            //鎴块棿鐨刄ID (key:uid value:roomId)
+            var dicRoomUid = new Dictionary<string, string>();
+            foreach (var roomInfo in SpatialInfo.CurrentSpatial.RoomList)
+            {
+                dicRoomUid[roomInfo.uid] = roomInfo.roomId;
+            }
+            //鎴块棿
+            if (selectType == 3)
+            {
+                //鐢║ID杞崲涓簉oomId
+                string roomId = dicRoomUid.ContainsKey(this.nowShowSelectId) == true ? dicRoomUid[this.nowShowSelectId] : string.Empty;
+                foreach (var scene in FunctionList.List.scenes)
+                {
+                    //鍒ゆ柇杩欎釜鍦烘櫙鏄惁鏄繖涓埧闂寸殑
+                    if (scene.roomIds.Contains(roomId) == true)
+                    {
+                        listScene.Add(scene);
+                    }
+                }
+            }
+            //妤煎眰
+            else if (selectType == 2)
+            {
+                //鑾峰彇杩欎釜妤煎眰涓嬮潰鐨勫叏閮ㄦ埧闂碔D
+                var listRoomId = new List<string>();
+                foreach (var roomInfo in SpatialInfo.CurrentSpatial.RoomList)
+                {
+                    //鍒ゆ柇鏄笉鏄繖涓ゼ灞傜殑
+                    if (roomInfo.parentId == this.nowShowSelectId)
+                    {
+                        listRoomId.Add(roomInfo.roomId);
+                    }
+                }
+                foreach (var scene in FunctionList.List.scenes)
+                {
+                    //鍒ゆ柇杩欎釜鍦烘櫙鏄惁鏄繖涓埧闂寸殑
+                    foreach (var roomid in listRoomId)
+                    {
+                        if (scene.roomIds.Contains(roomid) == true)
+                        {
+                            listScene.Add(scene);
+                        }
+                    }
+                }
+            }
+            return listScene;
+        }
+
+        #endregion
+
+        #region 鈻� 璁惧鏄剧ず___________________________
+
+        /// <summary>
+        /// 鏄剧ず閫夋嫨鍦烘櫙鐨勭晫闈�
+        /// </summary>
+        /// <param name="btnFloor">妤煎眰鍚嶅瓧鏄剧ず鐨勬帶浠�,閫夋嫨鍚�,鍐呴儴浼氳嚜鍔ㄥ彉鏇存樉绀烘枃瀛�,鍙互璁剧疆涓簄ull</param>
+        /// <param name="i_listAllFun">鍏ㄩ儴鐨勮澶囧垪琛�,闇�瑕佹墜鍔ㄦ寚瀹�</param>
+        /// <param name="SelectEvent">鏍规嵁閫夋嫨鐨勬潯浠�,绛涢�変箣鍚庣殑璁惧鍒楄〃(绗竴涓弬鏁版槸閫夋嫨鐨刄ID,涓嶇鏈夋病鏈夌敤,鎬讳箣鍏堣繑鍥�)</param>
+        /// <param name="i_defultSelectId">榛樿鍝釜涓洪�夋嫨鐘舵��</param>
+        public void ShowDeviceFunctionView(Button btnFloor, List<Function> i_listAllFun, Action<string, List<Function>> SelectEvent, string i_defultSelectId = null)
+        {
+            //娓呯紦瀛�
+            this.ClearMemory();
+            this.listAllFun = new List<Function>();
+            this.listAllFun.AddRange(i_listAllFun);
+
+            if (string.IsNullOrEmpty(i_defultSelectId) == true)
+            {
+                i_defultSelectId = DiySelectPopupDialog.ALLSELECT;
+            }
+
+            //杩斿洖鐨刬d鏄疷ID
+            new FloorSelectPopupDialog().ShowView((selectValue) =>
+            {
+                this.nowShowSelectId = selectValue;
+                //鍒锋柊妤煎眰鐨勬樉绀哄悕瀛�
+                this.RefreshFloorShowName(btnFloor);
+
+                //鑾峰彇鍙互鏄剧ず鐨勮澶囧垪琛�
+                var listDevice = this.GetCanShowListDevice();
+                SelectEvent?.Invoke(this.nowShowSelectId, listDevice);
+                SelectEvent = null;
+
+            }, i_defultSelectId);
+        }
+
+        /// <summary>
+        /// 鑾峰彇鑳藉鏄剧ず鐨勮澶�
+        /// </summary>
+        /// <returns></returns>
+        public List<Function> GetCanShowListDevice()
+        {
+            var listFunction = new List<Function>();
+
+            //鍏堢湅鐪嬪綋鍓嶉�夋嫨鐨勬樉绀虹被鍨� 1:鍏ㄩ儴 2:妤煎眰 3:鎴块棿
+            var selectType = this.CheckSelectFloorIdType();
+            if (selectType == 1)
+            {
+                return this.listAllFun;
+            }
+
+            //鎴块棿鐨刄ID (key:uid value:roomId)
+            var dicRoomUid = new Dictionary<string, string>();
+            foreach (var roomInfo in SpatialInfo.CurrentSpatial.RoomList)
+            {
+                dicRoomUid[roomInfo.uid] = roomInfo.roomId;
+            }
+            //鎴块棿
+            if (selectType == 3)
+            {
+                //鐢║ID杞崲涓簉oomId
+                string roomId = dicRoomUid.ContainsKey(this.nowShowSelectId) == true ? dicRoomUid[this.nowShowSelectId] : string.Empty;
+                foreach (var func in this.listAllFun)
+                {
+                    //鍒ゆ柇杩欎釜鍦烘櫙鏄惁鏄繖涓埧闂寸殑
+                    if (func.roomIds.Contains(roomId) == true)
+                    {
+                        listFunction.Add(func);
+                    }
+                }
+            }
+            //妤煎眰
+            else if (selectType == 2)
+            {
+                //鑾峰彇杩欎釜妤煎眰涓嬮潰鐨勫叏閮ㄦ埧闂碔D
+                var listRoomId = new List<string>();
+                foreach (var roomInfo in SpatialInfo.CurrentSpatial.RoomList)
+                {
+                    //鍒ゆ柇鏄笉鏄繖涓ゼ灞傜殑
+                    if (roomInfo.parentId == this.nowShowSelectId)
+                    {
+                        listRoomId.Add(roomInfo.roomId);
+                    }
+                }
+                foreach (var func in this.listAllFun)
+                {
+                    //鍒ゆ柇杩欎釜鍦烘櫙鏄惁鏄繖涓埧闂寸殑
+                    foreach (var roomid in listRoomId)
+                    {
+                        if (func.roomIds.Contains(roomid) == true)
+                        {
+                            listFunction.Add(func);
+                        }
+                    }
+                }
+            }
+            return listFunction;
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 鍒锋柊妤煎眰鐨勬樉绀哄悕瀛�
+        /// </summary>
+        /// <param name="btnFloorName"></param>
+        private void RefreshFloorShowName(Button btnFloorName)
+        {
+            if (btnFloorName == null)
+            {
+                return;
+            }
+            //鍏堢湅鐪嬪綋鍓嶉�夋嫨鐨勬樉绀虹被鍨� 1:鍏ㄩ儴 2:妤煎眰 3:鎴块棿
+            var selectType = this.CheckSelectFloorIdType();
+            if (selectType == 1)
+            {
+                //鍏ㄩ儴
+                btnFloorName.Text = Language.StringByID(StringId.All);
+            }
+            //鎴块棿
+            else if (selectType == 3)
+            {
+                foreach (var roomInfo in SpatialInfo.CurrentSpatial.RoomList)
+                {
+                    if (roomInfo.uid == this.nowShowSelectId)
+                    {
+                        btnFloorName.Text = roomInfo.floorName + roomInfo.roomName;
+                        return;
+                    }
+                }
+            }
+            //妤煎眰
+            else if (selectType == 2)
+            {
+                foreach (var floorInfo in SpatialInfo.CurrentSpatial.FloorList)
+                {
+                    if (floorInfo.uid == this.nowShowSelectId)
+                    {
+                        btnFloorName.Text = floorInfo.roomName;
+                    }
+                }
+            }
+        }
+
+        /// <summary>
+        /// 鍒ゆ柇褰撳墠鎵�閫夌殑ID鐨勭被鍨� 1:鍏ㄩ儴 2:妤煎眰 3:鎴块棿
+        /// </summary>
+        /// <returns></returns>
+        private int CheckSelectFloorIdType()
+        {
+            if (this.nowShowSelectId == DiySelectPopupDialog.ALLSELECT)
+            {
+                //鍏ㄩ儴
+                return 1;
+            }
+            foreach (var floorInfo in SpatialInfo.CurrentSpatial.FloorList)
+            {
+                if (floorInfo.uid == this.nowShowSelectId)
+                {
+                    //褰撳墠閫夋嫨鐨勬槸妤煎眰ID
+                    return 2;
+                }
+            }
+            //涓嶅嚭鎰忓,搴旇鏄埧闂翠簡
+            return 3;
+        }
+
+        /// <summary>
+        /// 娓呴櫎缂撳瓨
+        /// </summary>
+        public void ClearMemory()
+        {
+            //鍒濆鍊�
+            this.nowShowSelectId = DiySelectPopupDialog.ALLSELECT;
+            this.listAllFun = null;
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/Common/Utlis/FloorSelectPopupDialog.cs b/HDL_ON/Common/Utlis/FloorSelectPopupDialog.cs
new file mode 100755
index 0000000..58130ee
--- /dev/null
+++ b/HDL_ON/Common/Utlis/FloorSelectPopupDialog.cs
@@ -0,0 +1,78 @@
+锘縰sing System;
+using System.Collections.Generic;
+using HDL_ON.Entity;
+
+namespace HDL_ON
+{
+    public class FloorSelectPopupDialog
+    {
+        public FloorSelectPopupDialog()
+        {
+        }
+
+        /// <summary>
+        /// 涓�绾ist
+        /// </summary>
+        List<RoomCellInfo> mFirstList = new List<RoomCellInfo>();
+        /// <summary>
+        /// 浜岀骇鑱斿姩List
+        /// </summary>
+        List<List<RoomCellInfo>> mSecondList = new List<List<RoomCellInfo>>();
+     
+        /// <summary>
+        /// 
+        /// </summary>
+        public void ShowView(Action<string> selectAction, string selectTag = DiySelectPopupDialog.ALLSELECT)
+        {
+
+            var floorList = SpatialInfo.CurrentSpatial.FloorList;
+            var roomList = SpatialInfo.CurrentSpatial.RoomList;
+
+            if (floorList == null || floorList.Count == 0)
+            {
+                //娌℃湁妤煎眰鍙姞杞芥埧闂�
+                if (roomList == null)
+                {
+                    Utlis.WriteLine("roomList null");
+                    return;
+                }
+
+                mFirstList.Clear();
+                foreach (var room in roomList)
+                {
+                    mFirstList.Add(new RoomCellInfo() { Title = room.roomName, TagId = room.uid });
+                }
+                var roomSelectPopupDialog = new DiySelectPopupDialog();
+                roomSelectPopupDialog.ShowView(mFirstList, null, selectAction, selectTag);
+            }
+            else
+            {
+                mFirstList.Clear();
+                mSecondList.Clear();
+                //涓�绾ф暟缁勪负妤煎眰
+                foreach (var floor in floorList)
+                {
+                    mFirstList.Add(new RoomCellInfo() { Title = floor.roomName, TagId = floor.uid });
+                    var mList = new List<RoomCellInfo>();
+                    var allRoom = roomList.FindAll((room) => room.parentId == floor.uid);
+                    foreach (var mRoom in allRoom)
+                    {
+                        mList.Add(new RoomCellInfo() { Title = mRoom.roomName, TagId = mRoom.uid });
+                    }
+
+                    if(mList == null)
+                    {
+                        mList = new List<RoomCellInfo>();
+                    }
+                    mSecondList.Add(mList);
+                }
+
+                var roomSelectPopupDialog = new DiySelectPopupDialog();
+                roomSelectPopupDialog.ShowView(mFirstList, mSecondList, selectAction, selectTag);
+
+            }
+ 
+        }
+       
+    }
+}
diff --git a/HDL_ON/HDL_ON.projitems b/HDL_ON/HDL_ON.projitems
index ccdf966..e3319b5 100644
--- a/HDL_ON/HDL_ON.projitems
+++ b/HDL_ON/HDL_ON.projitems
@@ -262,6 +262,9 @@
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Scene\SceneAddPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Light\ColorTureLampPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Light\ColorTureLampPageBLL.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Common\Utlis\FloorRoomSelectPopupView.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Common\Utlis\FloorSelectPopupDialog.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Public\Widget\DiySelectPopupDialog.cs" />
   </ItemGroup>
   <ItemGroup>
     <Folder Include="$(MSBuildThisFileDirectory)UI\" />
diff --git a/HDL_ON/UI/UI0-Public/Widget/DiySelectPopupDialog.cs b/HDL_ON/UI/UI0-Public/Widget/DiySelectPopupDialog.cs
new file mode 100755
index 0000000..2d885b4
--- /dev/null
+++ b/HDL_ON/UI/UI0-Public/Widget/DiySelectPopupDialog.cs
@@ -0,0 +1,630 @@
+锘縰sing System;
+using System.Collections.Generic;
+using HDL_ON.UI.CSS;
+using Shared;
+
+namespace HDL_ON
+{
+    /// <summary>
+    /// 妤煎眰DiySelectPopupDialog
+    /// </summary>
+    public class DiySelectPopupDialog : Dialog
+    {
+        /// <summary>
+        /// ALLSELECT
+        /// </summary>
+        public const string ALLSELECT = "ALLSELECT";
+
+        /// bodyView
+        /// </summary>
+        FrameLayout bodyView;
+        /// <summary>
+        /// 搴曢儴View
+        /// 鑷繁鏍规嵁闇�瑕佽皟鏁碭銆乊鍧愭爣
+        /// </summary>
+        public FrameLayout BackView;
+        /// <summary>
+        /// 
+        /// </summary>
+        Button leftAllButton;
+        /// <summary>
+        /// 涓�绾ф粦鍔╒iew
+        /// </summary>
+        VerticalScrolViewLayout leftScrolView;
+        /// <summary>
+        /// 浜岀骇婊戝姩View
+        /// </summary>
+        VerticalScrolViewLayout rightScrolView;
+        /// <summary>
+        /// 閫変腑鍥炶皟浜嬩欢
+        /// </summary>
+        Action<string> SelectAction;
+        /// <summary>
+        /// 涓�绾ist
+        /// </summary>
+        List<RoomCellInfo> mFirstList = new List<RoomCellInfo>();
+        /// <summary>
+        /// 浜岀骇鑱斿姩List
+        /// </summary>
+        List<List<RoomCellInfo>> mSecondList = new List<List<RoomCellInfo>>();
+        /// <summary>
+        /// 浜岀骇鎵�鏈塋ist
+        /// </summary>
+        List<RoomCellInfo> mSecondAllList = new List<RoomCellInfo>();
+
+        /// <summary>
+        /// RoomSelectPopupDialog
+        /// </summary>
+        /// <param name="SelectAction"></param>
+        public DiySelectPopupDialog()
+        {
+            bodyView = new FrameLayout();
+           
+        }
+
+        /// <summary>
+        /// 鏄剧ずView
+        /// mFirstList銆乵SecondList涓嶅悎娉曢兘涓嶄細鏄剧ずView
+        /// mSecondList 涓嶄紶涓洪粯璁や竴绾�
+        /// </summary>
+        /// <param name="mFirstList"></param>
+        /// <param name="mSecondList"></param>
+        public void ShowView(List<RoomCellInfo> mFirstList, List<List<RoomCellInfo>> mSecondList, Action<string> SelectAction, string selectTagId = ALLSELECT)
+        {
+            if (mFirstList == null)
+            {
+                Utlis.WriteLine("mFirstList null");
+                return;
+            }
+            //娉ㄥ唽鍥炶皟浜嬩欢
+            this.SelectAction = SelectAction;
+            //浜屾槸鍚﹂渶瑕佷簩绾у垽鏂�
+            if (mSecondList == null || mSecondList.Count == 0)
+            {
+                //涓�绾�
+                this.mFirstList = mFirstList;
+                //View鏄剧ず
+                ShowOneBaseView();
+                //鏁版嵁鍐呭濉厖
+                RefreshOneBaseView(selectTagId);
+            }
+            else
+            {
+                if (mFirstList.Count != mSecondList.Count)
+                {
+                    Utlis.WriteLine("鏁版嵁 涓嶈仈鍔ㄥ紓甯�");
+                    return;
+                }
+                //浜岀骇鑱斿姩
+                this.mFirstList = mFirstList;
+                this.mSecondList = mSecondList;
+                this.mSecondAllList.Clear();
+                foreach(var list in mSecondList)
+                {
+                    foreach (var data in list)
+                    {
+                        this.mSecondAllList.Add(data);
+                    }
+                }
+                
+                //View鏄剧ず
+                ShowDoubleBaseView();
+                //鏁版嵁鍐呭濉厖
+                RefreshDoubleBaseView();
+                //
+                SetSelectTagId(selectTagId);
+
+            }
+            this.Show();
+        }
+
+
+        /// <summary>
+        /// 
+        /// </summary>
+        void SelectAll()
+        {
+            RefreshSelectButton(leftScrolView, ALLSELECT);
+            var all = new RoomCellInfo()
+            {
+                TagId = ALLSELECT,
+                Title = "ALL",
+            };
+            LoadRightScrolView(all, this.mSecondAllList);
+        }
+
+        /// <summary>
+        /// 鏍规嵁tagID閫変腑
+        /// </summary>
+        void SetSelectTagId(string tagId)
+        {
+            if (string.IsNullOrEmpty(tagId) || tagId == ALLSELECT)
+            {
+                SelectAll();
+            }
+            else
+            {
+                
+                var tagInfo = mFirstList.Find((m) => m.TagId == tagId);
+                if (tagInfo != null)
+                {
+                    var index = mFirstList.IndexOf(tagInfo);
+                    if (index < mSecondList.Count)
+                    {
+                        RefreshSelectButton(leftScrolView, tagId);
+                        LoadRightScrolView(tagInfo, mSecondList[index]);
+                        return;
+                    }
+                    else
+                    {
+                        SelectAll();
+                    }
+                }
+                else
+                {
+                    SelectAll();
+                }
+            }
+        }
+
+        #region 浜岀骇鑱斿姩閫夋嫨鏁堟灉
+        /// <summary>
+        /// 鏄剧ず浜岀骇view
+        /// </summary>
+        void ShowDoubleBaseView()
+        {
+            bodyView.BackgroundColor = CSS_Color.DialogTransparentColor1;
+            this.AddChidren(bodyView);
+            bodyView.MouseUpEventHandler = (sender, e) =>
+            {
+                this.Close();
+            };
+
+            BackView = new FrameLayout()
+            {
+                X = Application.GetRealWidth(10),
+                Y = Application.GetRealHeight(104),
+                Width = Application.GetRealWidth(283),
+                Height = Application.GetRealWidth(242),
+            };
+            bodyView.AddChidren(BackView);
+
+            var backImageView = new ImageView(){
+                Width = BackView.Width,
+                Height = BackView.Height,
+                ImagePath = "Public/PopupDialog.png"
+            };
+            BackView.AddChidren(backImageView);
+
+            leftAllButton = new Button()
+            {
+                Y = Application.GetRealWidth(14),
+                X = Application.GetRealWidth(24),
+                Height = Application.GetRealWidth(44),
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                SelectedTextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextAlignment = TextAlignment.CenterLeft,
+                TextID = StringId.All,
+                IsSelected = true,
+                //IsBold = true,
+            };
+            BackView.AddChidren(leftAllButton);
+            //鍒嗗壊绾�
+            var lineView1 = new FrameLayout()
+            {
+                Width = Application.GetRealWidth(112),
+                Height = Application.GetRealHeight(1),
+                Y = leftAllButton.Bottom,
+                X = leftAllButton.X,
+                BackgroundColor = CSS_Color.DividingLineColor,
+            };
+            BackView.AddChidren(lineView1);
+
+            leftScrolView = new VerticalScrolViewLayout()
+            {
+                X = Application.GetRealWidth(8),
+                Y = leftAllButton.Bottom,
+                Height = Application.GetRealWidth(176),
+                Width = Application.GetRealWidth(128),
+                VerticalScrollBarEnabled = false,
+            };
+            BackView.AddChidren(leftScrolView);
+
+            rightScrolView = new VerticalScrolViewLayout()
+            {
+                X = leftScrolView.Right + Application.GetRealWidth(12),
+                Y = Application.GetRealWidth(58),
+                Height = Application.GetRealWidth(176),
+                Width = Application.GetRealWidth(128),
+                VerticalScrollBarEnabled = false,
+            };
+            BackView.AddChidren(rightScrolView);
+
+            leftAllButton.MouseUpEventHandler = (sender, e) =>
+            {
+                leftAllButton.IsSelected = true;
+
+                //鍔犺浇鍏ㄩ儴
+                SelectAll();
+            };
+        }
+
+        /// <summary>
+        /// 鍒锋柊浜岀骇鑱斿姩鐨刅IEW
+        /// </summary>
+        void RefreshDoubleBaseView()
+        {
+            leftScrolView.RemoveAll();
+            for (var i = 0; i < mFirstList.Count; i++)
+            {
+                AddSelectButton(leftScrolView, mFirstList[i], mSecondList[i]);
+            }
+        }
+
+        /// <summary>
+        /// scrolView閲岄潰Button 閫変腑鏁堟灉浜掓枼
+        /// </summary>
+        /// <param name="scrolView"></param>
+        /// <param name="selectBtnTag"></param>
+        void RefreshSelectButton(VerticalScrolViewLayout scrolView, string selectBtnTag)
+        {
+            try
+            {
+                if (leftAllButton != null)
+                {
+                    leftAllButton.IsSelected = selectBtnTag == ALLSELECT;
+                }
+
+                if (scrolView != null)
+                {
+                    for (int i = 0; i < scrolView.ChildrenCount; i++)
+                    {
+                        if (scrolView.GetChildren(i).GetType() == typeof(FrameLayout))
+                        {
+                            var cellView = (FrameLayout)scrolView.GetChildren(i);
+                            for (int j = 0; j < cellView.ChildrenCount; j++)
+                            {
+                                if (cellView.GetChildren(j).GetType() == typeof(Button))
+                                {
+                                    var titleButton = (Button)cellView.GetChildren(j);
+                                    var o = titleButton.GetTagByKey("BtnKey");
+                                    if (o != null && o.ToString() == selectBtnTag)
+                                    {
+                                        titleButton.IsSelected = true;
+                                    }
+                                    else
+                                    {
+                                        titleButton.IsSelected = false;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            catch
+            {
+
+            }
+        }
+
+        /// <summary>
+        /// 娣诲姞涓�绾фゼ灞傞�夋嫨CellView
+        /// </summary>
+        /// <param name="scrolView"></param>
+        /// <param name="firstData"></param>
+        /// <param name="rightList"></param>
+        void AddSelectButton(VerticalScrolViewLayout scrolView, RoomCellInfo firstData, List<RoomCellInfo> rightList)
+        {
+            var cellView = new FrameLayout()
+            {
+                Height = Application.GetRealWidth(44),
+                Tag = "cell"
+            };
+            scrolView.AddChidren(cellView);
+
+            var titleButton = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Height = Application.GetRealWidth(44),
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                SelectedTextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.TextFontSize,
+                TextAlignment = TextAlignment.CenterLeft,
+                Text = firstData.Title,
+            };
+            cellView.AddChidren(titleButton);
+            titleButton.AddTag("BtnKey", firstData.TagId);
+
+            //椤堕儴鍒嗗壊绾�
+            var lineView = new FrameLayout()
+            {
+                X = Application.GetRealWidth(16),
+                Height = Application.GetRealHeight(1),
+                Width = Application.GetRealWidth(112),
+                BackgroundColor = CSS_Color.DividingLineColor,
+                Y = cellView.Height - Application.GetRealHeight(1),
+            };
+            cellView.AddChidren(lineView);
+
+            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+            {
+                //cellView.BackgroundColor = CSS_Color.viewTranslucence;
+                RefreshSelectButton(scrolView, firstData.TagId);
+                LoadRightScrolView(firstData, rightList);
+            };
+
+            titleButton.MouseUpEventHandler = eventHandler;
+            cellView.MouseUpEventHandler = eventHandler;
+
+            //EventHandler<MouseEventArgs> mousDownEventHandler = (sender, e) =>
+            //{
+            //    cellView.BackgroundColor = CSS_Color.TopViewColor;
+            //};
+
+            //titleButton.MouseDownEventHandler = mousDownEventHandler;
+            //cellView.MouseDownEventHandler = mousDownEventHandler;
+        }
+
+
+
+        /// <summary>
+        /// 鍔犺浇浜岀骇婊戝姩View
+        /// </summary>
+        /// <param name="firstData"></param>
+        /// <param name="rightList"></param>
+        void LoadRightScrolView(RoomCellInfo firstData, List<RoomCellInfo> rightList)
+        {
+            rightScrolView.RemoveAll();
+
+            //娣诲姞椤堕儴鍒嗗壊绾�
+            var lineView2 = new FrameLayout()
+            {
+                Width = Application.GetRealWidth(112),
+                Height = Application.GetRealHeight(1),
+                BackgroundColor = CSS_Color.DividingLineColor,
+            };
+            rightScrolView.AddChidren(lineView2);
+            //娣诲姞鍏ㄩ儴鎸夐挳
+            var allInfo = new RoomCellInfo()
+            {
+                Title = Language.StringByID(StringId.All),
+                TagId = firstData.TagId,//涓婁竴绾фゼ灞侷D
+            };
+            AddRightSelectButton(rightScrolView, allInfo, true);
+
+            for (var i = 0; i < rightList.Count; i++)
+            {
+                AddRightSelectButton(rightScrolView, rightList[i]);
+            }
+
+        }
+
+        /// <summary>
+        ///  娣诲姞浜岀骇閫夋嫨CellView
+        /// </summary>
+        /// <param name="scrolView"></param>
+        /// <param name="secondData"></param>
+        /// <param name="isSelected"></param>
+        void AddRightSelectButton(VerticalScrolViewLayout scrolView, RoomCellInfo secondData, bool isSelected = false)
+        {
+            var cellView = new FrameLayout()
+            {
+                Height = Application.GetRealWidth(44),
+            };
+            scrolView.AddChidren(cellView);
+
+            var titleButton = new Button()
+            {
+                //X = Application.GetRealWidth(16),
+                Height = Application.GetRealWidth(44),
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                SelectedTextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.TextFontSize,
+                TextAlignment = TextAlignment.CenterLeft,
+                Text = secondData.Title,
+                IsSelected = isSelected
+            };
+            cellView.AddChidren(titleButton);
+
+            var lineView = new FrameLayout()
+            {
+                Width = Application.GetRealWidth(112),
+                Height = Application.GetRealHeight(1),
+                Y = cellView.Height - Application.GetRealHeight(1),
+                BackgroundColor = CSS_Color.DividingLineColor,
+            };
+            cellView.AddChidren(lineView);
+
+            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+            {
+                this.Close();
+                //鍥炶皟閫変腑绱㈠紩
+                SelectAction?.Invoke(secondData.TagId);
+            };
+
+            titleButton.MouseUpEventHandler = eventHandler;
+            cellView.MouseUpEventHandler = eventHandler;
+
+           
+        }
+
+        #endregion
+
+
+        #region 鍙湁涓�绾х殑鑱斿姩
+        /// <summary>
+        /// 閮芥樉绀轰竴绾х殑
+        /// </summary>
+        void ShowOneBaseView()
+        {
+            bodyView.BackgroundColor = CSS_Color.DialogTransparentColor1;
+            this.AddChidren(bodyView);
+            bodyView.MouseUpEventHandler = (sender, e) =>
+            {
+                this.Close();
+            };
+
+            BackView = new FrameLayout()
+            {
+                X = Application.GetRealWidth(10),
+                Y = Application.GetRealHeight(104),
+                Width = Application.GetRealWidth(160),
+                Height = Application.GetRealWidth(198),
+            };
+            bodyView.AddChidren(BackView);
+
+            var backImageView = new ImageView()
+            {
+                Width = BackView.Width,
+                Height = BackView.Height,
+                ImagePath = "PersonalCenter/HomeList3bg.png"
+            };
+            BackView.AddChidren(backImageView);
+
+            leftAllButton = new Button()
+            {
+                Y = Application.GetRealWidth(14),
+                X = Application.GetRealWidth(24),
+                Height = Application.GetRealWidth(44),
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                SelectedTextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextAlignment = TextAlignment.CenterLeft,
+                TextID = StringId.All,
+                //IsBold = true,
+            };
+            BackView.AddChidren(leftAllButton);
+            //鍒嗗壊绾�
+            var lineView1 = new FrameLayout()
+            {
+                Width = Application.GetRealWidth(112),
+                Height = Application.GetRealHeight(1),
+                Y = leftAllButton.Bottom,
+                X = leftAllButton.X,
+                BackgroundColor = CSS_Color.DividingLineColor,
+            };
+            BackView.AddChidren(lineView1);
+
+            leftScrolView = new VerticalScrolViewLayout()
+            {
+                X = Application.GetRealWidth(8),
+                Y = leftAllButton.Bottom,
+                Height = Application.GetRealWidth(132),
+                Width = Application.GetRealWidth(144),
+                VerticalScrollBarEnabled = false,
+            };
+            BackView.AddChidren(leftScrolView);
+
+            leftAllButton.MouseUpEventHandler = (sender, e) =>
+            {
+                this.Close();
+                SelectAction?.Invoke(ALLSELECT);
+            };
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="tagId"></param>
+        void RefreshOneBaseView(string tagId)
+        {
+            if (leftAllButton != null)
+            {
+                leftAllButton.IsSelected = tagId == ALLSELECT;
+            }
+            leftScrolView.RemoveAll();
+            for (var i = 0; i < mFirstList.Count; i++)
+            {
+                AddOneSelectButton(leftScrolView, mFirstList[i], tagId);
+            }
+        }
+
+        /// <summary>
+        /// 娣诲姞涓�绾фゼ灞傞�夋嫨CellView
+        /// </summary>
+        /// <param name="scrolView"></param>
+        /// <param name="firstIndex"></param>
+        /// <param name="firstText"></param>
+        void AddOneSelectButton(VerticalScrolViewLayout scrolView, RoomCellInfo firstData, string tagId)
+        {
+            var cellView = new FrameLayout()
+            {
+                Height = Application.GetRealWidth(44),
+                Tag = "cell"
+            };
+            scrolView.AddChidren(cellView);
+
+            var titleButton = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Height = Application.GetRealWidth(44),
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                SelectedTextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.TextFontSize,
+                TextAlignment = TextAlignment.CenterLeft,
+                Text = firstData.Title,
+            };
+            cellView.AddChidren(titleButton);
+            titleButton.IsSelected = firstData.TagId == tagId;
+            titleButton.AddTag("BtnKey", firstData.TagId);
+
+            //椤堕儴鍒嗗壊绾�
+            var lineView = new FrameLayout()
+            {
+                X = Application.GetRealWidth(16),
+                Height = Application.GetRealHeight(1),
+                Width = Application.GetRealWidth(112),
+                BackgroundColor = CSS_Color.DividingLineColor,
+                Y = cellView.Height - Application.GetRealHeight(1),
+            };
+            cellView.AddChidren(lineView);
+
+            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+            {
+                this.Close();
+                //鍥炶皟閫変腑绱㈠紩
+                SelectAction?.Invoke(firstData.TagId);
+            };
+
+            titleButton.MouseUpEventHandler = eventHandler;
+            cellView.MouseUpEventHandler = eventHandler;
+
+            //EventHandler<MouseEventArgs> mousDownEventHandler = (sender, e) =>
+            //{
+            //    cellView.BackgroundColor = CSS_Color.TopViewColor;
+            //};
+
+            //titleButton.MouseDownEventHandler = mousDownEventHandler;
+            //cellView.MouseDownEventHandler = mousDownEventHandler;
+        }
+
+        
+
+        #endregion
+
+
+        #region 閫夋嫨妤煎眰鍜屾埧闂翠笓鐢�
+
+
+        #endregion
+
+
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class RoomCellInfo
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Title;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string TagId;
+    }
+}
diff --git a/HDL_ON/UI/UI2/2-Classification/FunctionPage.cs b/HDL_ON/UI/UI2/2-Classification/FunctionPage.cs
index cac5d2c..c140558 100755
--- a/HDL_ON/UI/UI2/2-Classification/FunctionPage.cs
+++ b/HDL_ON/UI/UI2/2-Classification/FunctionPage.cs
@@ -163,146 +163,18 @@
         /// </summary>
         void LoadDialog_ChangeFloor()
         {
-            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
-            {
-                var dialog = new Dialog();
-                var dialogBody = new FrameLayout();
-                dialog.AddChidren(dialogBody);
-                dialogBody.MouseUpEventHandler += (sender1, e1) =>
-                {
-                    dialog.Close();
-                };
-
-                var dispalyView = new FrameLayout()
-                {
-                    X = Application.GetRealWidth(10),
-                    Y = Application.GetRealHeight(100),
-                    Width = Application.GetRealWidth(160),
-                    Height = Application.GetRealHeight(110),
-                    BackgroundImagePath = "PersonalCenter/HomeList1bg.png",
-                };
-                dialogBody.AddChidren(dispalyView);
-
-                var contentView = new VerticalScrolViewLayout()
-                {
-                    X = Application.GetRealWidth(8),
-                    Y = Application.GetRealHeight(15),
-                    Width = Application.GetRealWidth(150),
-                    Height = Application.GetRealHeight(45 * 2),
-                    ScrollEnabled = false
-                };
-                dispalyView.AddChidren(contentView);
-
-                if (SpatialInfo.CurrentSpatial.RoomList.Count < 2)
-                {
-                }
-                else if (SpatialInfo.CurrentSpatial.RoomList.Count < 3)
-                {
-                    dispalyView = new FrameLayout()
-                    {
-                        X = Application.GetRealWidth(10),
-                        Y = Application.GetRealHeight(100),
-                        Width = Application.GetRealWidth(160),
-                        Height = Application.GetRealHeight(155),
-                        BackgroundImagePath = "PersonalCenter/HomeList2bg.png",
-                    };
-                    dialogBody.AddChidren(dispalyView);
-
-                    contentView.Height = Application.GetRealHeight(45 * 3);
-                    dispalyView.AddChidren(contentView);
-                }
-                else if (SpatialInfo.CurrentSpatial.RoomList.Count < 4)
-                {
-                    dispalyView = new FrameLayout()
-                    {
-                        X = Application.GetRealWidth(10),
-                        Y = Application.GetRealHeight(100),
-                        Width = Application.GetRealWidth(160),
-                        Height = Application.GetRealHeight(200),
-                        BackgroundImagePath = "PersonalCenter/HomeList3bg.png",
-                    };
-                    dialogBody.AddChidren(dispalyView);
-
-                    contentView.Height = Application.GetRealHeight(45 * 4);
-                    dispalyView.AddChidren(contentView);
-                }
-                else
-                {
-                    dispalyView = new FrameLayout()
-                    {
-                        X = Application.GetRealWidth(10),
-                        Y = Application.GetRealHeight(100),
-                        Width = Application.GetRealWidth(160),
-                        Height = Application.GetRealHeight(245),
-                        BackgroundImagePath = "PersonalCenter/HomeList4bg.png",
-                    };
-                    dialogBody.AddChidren(dispalyView);
-
-                    contentView.Height = Application.GetRealHeight(45 * 5);
-                    contentView.ScrollEnabled = true;
-                    dispalyView.AddChidren(contentView);
-                }
-
-
-                List<Room> roomList = new List<Room>();
-                roomList.Add(new Room() { roomName = Language.StringByID(StringId.All) });
-                roomList.AddRange(SpatialInfo.CurrentSpatial.RoomList);
-                foreach (var tempRoom in roomList)
-                {
-                    var roomName = tempRoom.roomName;
-                    if (roomName != Language.StringByID(StringId.All))
-                    {
-                        contentView.AddChidren(new Button()
-                        {
-                            Gravity = Gravity.CenterHorizontal,
-                            Width = Application.GetRealWidth(112),
-                            Height = Application.GetRealHeight(1),
-                            BackgroundColor = CSS_Color.BackgroundColor
-                        });
-                    }
-                    var btnHomeName = new Button()
-                    {
-                        Gravity = Gravity.CenterHorizontal,
-                        Width = Application.GetRealWidth(112),
-                        Height = Application.GetRealHeight(44),
-                        TextAlignment = TextAlignment.CenterLeft,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        SelectedTextColor = CSS_Color.MainColor,
-                        Text = roomName,
-                        TextSize = CSS_FontSize.SubheadingFontSize,
-                        IsSelected = btnFloor.Text == roomName,
-                        IsMoreLines = true,
-                    };
-                    contentView.AddChidren(btnHomeName);
-
-                    btnHomeName.MouseUpEventHandler += (senderH, en) =>
-                    {
-                        dialog.Close();
-                        btnFloor.Text = roomName;
-                        if (roomName == Language.StringByID(StringId.All))
-                        {
-                            ShowFunctionRow(functionList);
-                        }
-                        else
-                        {
-                            var showList = new List<Function>();
-                            foreach (var sf in functionList)
-                            {
-                                if(sf.roomIds.Contains(tempRoom.roomId))
-                                {
-                                    showList.Add(sf);
-                                }
-                            }
-                            ShowFunctionRow(showList);
-                        }
-                    };
-                }
-
-                dialog.Show();
+            string nowSelectId = null;
+            btnFloor.MouseUpEventHandler += (sender, e) =>
+            {
+                //鏄剧ず涓嬫媺鍒楄〃
+                var form = new FloorRoomSelectPopupView();
+                form.ShowDeviceFunctionView(btnFloor, this.functionList, (selectId, listFunc) =>
+                {
+                    nowSelectId = selectId;
+                    //閲嶆柊鍔犺浇鐣岄潰
+                    ShowFunctionRow(listFunc);
+                }, nowSelectId);
             };
-
-            btnFloor.MouseUpEventHandler = eventHandler;
-            btnFloorDownIcon.MouseUpEventHandler = eventHandler;
         }
     }
 }
\ No newline at end of file
diff --git a/HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs b/HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs
index 6f1aa84..efac389 100755
--- a/HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs
@@ -1,4 +1,5 @@
 锘縰sing System;
+using System.Collections.Generic;
 using HDL_ON.DriverLayer;
 using HDL_ON.Entity;
 using HDL_ON.UI.CSS;
@@ -20,6 +21,10 @@
         /// 鍦烘櫙鍐呭鏄剧ず鍖哄煙
         /// </summary>
         FrameLayout floorChangeView;
+        /// <summary>
+        /// 妤煎眰鎴块棿閫夋嫨鐨勪笅鎷夊璞�
+        /// </summary>
+        FloorRoomSelectPopupView floorRoomSelectView = null;
         Button btnSceneTilte;
 
         #region 鍦烘櫙搴曢儴鍒囨崲鏄剧ず鍖哄煙
@@ -70,7 +75,9 @@
             bodyView.AddChidren(topView);
 
             //涓嶆槸A缃戝叧鎴栬�呮槸鎴愬憳 鍙厑璁告坊鍔犲満鏅殣钘忚嚜鍔ㄥ寲
-            if (DB_ResidenceData.Instance.GatewayType != 1 || DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
+            var HideAutoPage = DB_ResidenceData.Instance.GatewayType != 1 || DB_ResidenceData.Instance.CurrentRegion.IsOthreShare;
+            //鍒ゆ柇鏄惁闇�瑕侀殣钘忚嚜鍔ㄥ寲
+            if (HideAutoPage)
             {
                 btnSceneTilte = new Button()
                 {
@@ -147,7 +154,11 @@
             bodyView.AddChidren(contentPageView);
 
             LoadScenePageView();
-            LoadAutomationPageView();
+            //鍒ゆ柇鏄惁闇�瑕侀殣钘忚嚜鍔ㄥ寲
+            if (!HideAutoPage)
+            {
+                LoadAutomationPageView();
+            }
             LoadEventList();
 
         }
@@ -202,23 +213,40 @@
                 TextAlignment = TextAlignment.CenterLeft,
                 Text = DB_ResidenceData.Instance.CurFloor.roomName,
             };
-            floorChangeView.AddChidren(btnFloor);
+            floorChangeView.AddChidren(btnFloor);
+
+            string nowSelectId = null;
+            btnFloor.MouseUpEventHandler += (sender, e) =>
+            {
+                if (this.floorRoomSelectView == null)
+                {
+                    //鍏堝垵濮嬪寲
+                    this.floorRoomSelectView = new FloorRoomSelectPopupView();
+                }
+                //鏄剧ず涓嬫媺鍒楄〃
+                this.floorRoomSelectView.ShowSceneView(btnFloor, (selectId, listScene) =>
+                {
+                    nowSelectId = selectId;
+                    //閲嶆柊鍒锋柊鍦烘櫙鍒楄〃
+                    this.LoadSceneFunctionControlZone(listScene);
+                }, nowSelectId);
+            };
 
             #endregion
-
+
             sceneFunctionView = new VerticalScrolViewLayout()
             {
                 Y = floorChangeView.Bottom,
                 Height = Application.GetRealHeight(667 - 64 - 49 - 52 + 30),
             };
             scenePageView.AddChidren(sceneFunctionView);
-            LoadSceneFunctionControlZone();
+            LoadSceneFunctionControlZone(null);
         }
 
         /// <summary>
         /// 鍔犺浇鍦烘櫙鍔熻兘鏄剧ず鍖哄煙
         /// </summary>
-        void LoadSceneFunctionControlZone()
+        void LoadSceneFunctionControlZone(List<Scene> listScene)
         {
             //topView.AddChidren(btnAddIcon);
 
@@ -227,7 +255,18 @@
             try
             {
                 int index = 0;
-                foreach (var scene in FunctionList.List.scenes)
+                //鑾峰彇鑳藉鏄剧ず鐨勫満鏅�
+                if (listScene == null)
+                {
+                    //鍒濆鍊�
+                    if (this.floorRoomSelectView == null)
+                    {
+                        //鍏堝垵濮嬪寲
+                        this.floorRoomSelectView = new FloorRoomSelectPopupView();
+                    }
+                    listScene = this.floorRoomSelectView.GetCanShowListScene();
+                }
+                foreach (var scene in listScene)
                 {
                     //if (scene.roomIds.Count == 0)//濡備綍鍦ㄦ埧闂村凡缁忕Щ闄や簡杩欎釜鍔熻兘锛屽垯鏀惰棌鐣岄潰涔熶笉浼氬啀鏄剧ず
                     //{
@@ -374,7 +413,7 @@
                 LoadEvent_ControlScene(btnCoverd,btnName,btnZone, scene);
                 btnSettingIcon.MouseUpEventHandler = (sender, e) => {
                     Action backAction = () => {
-                        LoadSceneFunctionControlZone();
+                        LoadSceneFunctionControlZone(null);
                     };
                     Action refreshAction = () => {
                         btnName.Text = scene.name;
@@ -406,7 +445,7 @@
             contentPageView.AddChidren(automationPage);
             UI2.Intelligence.Automation.MainView.automationPage = automationPage;
             UI2.Intelligence.Automation.MainView.MainShow();
-        }
+        }
         #endregion
     }
 
@@ -499,7 +538,7 @@
 
                     Action action = () =>
                     {
-                        LoadSceneFunctionControlZone();
+                        LoadSceneFunctionControlZone(null);
                     };
                     var aep = new NewSceneMenuListPage(action);
                     MainPage.BasePageView.AddChidren(aep);
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneFunctionListChoosePage.cs b/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneFunctionListChoosePage.cs
index 3b77f9e..0ad5aaf 100755
--- a/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneFunctionListChoosePage.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneFunctionListChoosePage.cs
@@ -21,22 +21,14 @@
         /// </summary>
         Button btnFloor;
 
-        /// <summary>
-        /// 绛涢�夐�夋嫨涓嬫媺鍥炬爣
-        /// </summary>
-        Button btnScreenIcon;
+        ///// <summary>
+        ///// 绛涢�夐�夋嫨涓嬫媺鍥炬爣
+        ///// </summary>
+        //Button btnScreenIcon;
         /// <summary>
         /// 绛涢�夋枃鏈樉绀�
         /// </summary>
         Button btnScreenText;
-        /// <summary>
-        /// 绛涢�夋潯浠�1
-        /// </summary>
-        string screen1;
-        /// <summary>
-        /// 绛涢�夋潯浠�2
-        /// </summary>
-        string screen2;
 
         VerticalScrolViewLayout functionListView;
 
@@ -102,28 +94,28 @@
             showdFunctionTypeRow.AddChidren(btnFloor);
 
 
-            btnScreenIcon = new Button()
-            {
-                Width = Application.GetMinRealAverage(16),
-                Height = Application.GetMinRealAverage(16),
-                X = Application.GetRealWidth(122),
-                Y = Application.GetRealHeight(18),
-                UnSelectedImagePath = "Public/DownIcon.png",
-            };
-            showdFunctionTypeRow.AddChidren(btnScreenIcon);
+            //btnScreenIcon = new Button()
+            //{
+            //    Width = Application.GetMinRealAverage(16),
+            //    Height = Application.GetMinRealAverage(16),
+            //    X = Application.GetRealWidth(122),
+            //    Y = Application.GetRealHeight(18),
+            //    UnSelectedImagePath = "Public/DownIcon.png",
+            //};
+            //showdFunctionTypeRow.AddChidren(btnScreenIcon);
 
-            btnScreenText = new Button()
-            {
-                X = btnScreenIcon.Right,
-                Y = Application.GetRealHeight(18),
-                Width = Application.GetRealWidth(200),
-                Height = Application.GetMinRealAverage(16),
-                TextColor = CSS_Color.FirstLevelTitleColor,
-                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                TextAlignment = TextAlignment.CenterLeft,
-                TextID = StringId.Screen
-            };
-            showdFunctionTypeRow.AddChidren(btnScreenText);
+            //btnScreenText = new Button()
+            //{
+            //    X = btnScreenIcon.Right,
+            //    Y = Application.GetRealHeight(18),
+            //    Width = Application.GetRealWidth(200),
+            //    Height = Application.GetMinRealAverage(16),
+            //    TextColor = CSS_Color.FirstLevelTitleColor,
+            //    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+            //    TextAlignment = TextAlignment.CenterLeft,
+            //    TextID = StringId.Screen
+            //};
+            //showdFunctionTypeRow.AddChidren(btnScreenText);
 
 
             #endregion
@@ -153,7 +145,7 @@
                 }
             }
 
-            LoadFunctionListRow();
+            LoadFunctionListRow(null);
 
             LoadEventList();
         }
@@ -162,12 +154,16 @@
         /// 鏄剧ず鍔熻兘Row
         /// </summary>
         /// <param name="showUnallocated">鏄惁鏄樉绀烘湭鍒嗛厤</param>
-        void LoadFunctionListRow()
+        void LoadFunctionListRow(List<Function> functions)
         {
             functionListView.RemoveAll();
-            List<Function> functions = new List<Function>();
-            functions.AddRange(unallocatedList);
-            functions.AddRange(allocatedList);
+            if (functions == null)
+            {
+                //鍒濆鍊�
+                functions = new List<Function>();
+                functions.AddRange(unallocatedList);
+                functions.AddRange(allocatedList);
+            }
             foreach (var function in functions)
             {
                 if (function.functionCategory != FunctionCategory.Light &&
@@ -176,22 +172,6 @@
                     )
                 {
                     continue;
-                }
-                //鎸夋ゼ灞傜瓫閫�
-                if (!string.IsNullOrEmpty(screen1))
-                {
-                    if (!function.roomIds.Contains(screen1))
-                    {
-                        continue;
-                    }
-                }
-                //鎸夌被鍨嬬瓫閫�
-                if (!string.IsNullOrEmpty(screen2))
-                {
-                    //if (!function.functionType!= screen2)
-                    //{
-                    //    continue;
-                    //}
                 }
                 functionListView.AddChidren(new Button()
                 {
@@ -319,135 +299,24 @@
         /// 浣忓畢鍒楄〃鐐瑰嚮浜嬩欢
         /// </summary>
         void LoadDialog_ChangeFloor()
-        {
-            EventHandler<MouseEventArgs> eventHandler = (sender, e) => {
-                var dialog = new Dialog();
-                var dialogBody = new FrameLayout();
-                dialog.AddChidren(dialogBody);
-                dialogBody.MouseUpEventHandler += (sender1, e1) => {
-                    dialog.Close();
-                };
-
-                var dispalyView = new FrameLayout()
-                {
-                    X = Application.GetRealWidth(10),
-                    Y = Application.GetRealHeight(100),
-                    Width = Application.GetRealWidth(160),
-                    Height = Application.GetRealHeight(110),
-                    BackgroundImagePath = "PersonalCenter/HomeList1bg.png",
-                };
-                dialogBody.AddChidren(dispalyView);
-
-                var contentView = new VerticalScrolViewLayout()
-                {
-                    X = Application.GetRealWidth(8),
-                    Y = Application.GetRealHeight(15),
-                    Width = Application.GetRealWidth(150),
-                    Height = Application.GetRealHeight(45 * 2),
-                    ScrollEnabled = false
-                };
-                dispalyView.AddChidren(contentView);
-
-                if (SpatialInfo.CurrentSpatial.FloorList.Count < 2)
-                {
-                }
-                else if (SpatialInfo.CurrentSpatial.FloorList.Count < 3)
-                {
-                    dispalyView = new FrameLayout()
-                    {
-                        X = Application.GetRealWidth(10),
-                        Y = Application.GetRealHeight(100),
-                        Width = Application.GetRealWidth(160),
-                        Height = Application.GetRealHeight(155),
-                        BackgroundImagePath = "PersonalCenter/HomeList2bg.png",
-                    };
-                    dialogBody.AddChidren(dispalyView);
-
-                    contentView.Height = Application.GetRealHeight(45 * 3);
-                    dispalyView.AddChidren(contentView);
-                }
-                else if (SpatialInfo.CurrentSpatial.FloorList.Count < 4)
-                {
-                    dispalyView = new FrameLayout()
-                    {
-                        X = Application.GetRealWidth(10),
-                        Y = Application.GetRealHeight(100),
-                        Width = Application.GetRealWidth(160),
-                        Height = Application.GetRealHeight(200),
-                        BackgroundImagePath = "PersonalCenter/HomeList3bg.png",
-                    };
-                    dialogBody.AddChidren(dispalyView);
-
-                    contentView.Height = Application.GetRealHeight(45 * 4);
-                    dispalyView.AddChidren(contentView);
-                }
-                else
-                {
-                    dispalyView = new FrameLayout()
-                    {
-                        X = Application.GetRealWidth(10),
-                        Y = Application.GetRealHeight(100),
-                        Width = Application.GetRealWidth(160),
-                        Height = Application.GetRealHeight(245),
-                        BackgroundImagePath = "PersonalCenter/HomeList4bg.png",
-                    };
-                    dialogBody.AddChidren(dispalyView);
-
-                    contentView.Height = Application.GetRealHeight(45 * 5);
-                    contentView.ScrollEnabled = true;
-                    dispalyView.AddChidren(contentView);
-                }
-
-
-                List<string> chooseList = new List<string>();
-                chooseList.Add(Language.StringByID(StringId.All));
-                foreach (var f in SpatialInfo.CurrentSpatial.FloorList)
-                {
-                    chooseList.Add(f.roomName);
-                }
-
-                foreach (var floor in chooseList)
-                {
-                    if (floor != Language.StringByID(StringId.All))
-                    {
-                        contentView.AddChidren(new Button()
-                        {
-                            Gravity = Gravity.CenterHorizontal,
-                            Width = Application.GetRealWidth(112),
-                            Height = Application.GetRealHeight(1),
-                            BackgroundColor = CSS.CSS_Color.BackgroundColor
-                        });
-                    }
-                    var btnHomeName = new Button()
-                    {
-                        Gravity = Gravity.CenterHorizontal,
-                        Width = Application.GetRealWidth(112),
-                        Height = Application.GetRealHeight(44),
-                        TextAlignment = TextAlignment.CenterLeft,
-                        TextColor = CSS.CSS_Color.FirstLevelTitleColor,
-                        SelectedTextColor = CSS.CSS_Color.MainColor,
-                        Text = floor,
-                        TextSize = CSS.CSS_FontSize.SubheadingFontSize,
-                        IsSelected = btnFloor.Text == floor,
-                        IsMoreLines = true,
-                        Tag = floor
-                    };
-                    contentView.AddChidren(btnHomeName);
-
-                    btnHomeName.MouseUpEventHandler += (senderH, en) =>
-                    {
-                        dialog.Close();
-                        btnFloor.Text = floor;
-                    };
-                }
-
-                dialog.Show();
+        {
+            string nowSelectId = null;
+            btnFloor.MouseUpEventHandler += (sender, e) =>
+            {
+                var listAllFun = new List<Function>();
+                listAllFun.AddRange(unallocatedList);
+                listAllFun.AddRange(allocatedList);
+
+                //鏄剧ず涓嬫媺鐣岄潰
+                var form = new FloorRoomSelectPopupView();
+                form.ShowDeviceFunctionView(btnFloor, listAllFun, (selectId, listFun) =>
+                {
+                    nowSelectId = selectId;
+                    //閲嶆柊鍒锋柊璁惧鍒楄〃
+                    this.LoadFunctionListRow(listFun);
+                }, nowSelectId);
             };
-
-            btnFloor.MouseUpEventHandler = eventHandler;
-            btnFloorDownIcon.MouseUpEventHandler = eventHandler;
         }
-
     }
 
     //---------------------------------------

--
Gitblit v1.8.0