From ddb46a700775aacfb6cc82d9586302a38c8fa0a7 Mon Sep 17 00:00:00 2001
From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local>
Date: 星期一, 23 十二月 2019 09:13:37 +0800
Subject: [PATCH] 2019.12.23

---
 ZigbeeApp/Shared/Phone/Device/Category/SelectDevice.cs |  269 ++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 174 insertions(+), 95 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/Device/Category/SelectDevice.cs b/ZigbeeApp/Shared/Phone/Device/Category/SelectDevice.cs
index da0dedc..19d08f7 100644
--- a/ZigbeeApp/Shared/Phone/Device/Category/SelectDevice.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Category/SelectDevice.cs
@@ -3,6 +3,7 @@
 using Shared.Common;
 using Shared.Phone.Device.CommonForm;
 using Shared.Phone.UserView;
+using ZigBee.Device;
 
 namespace Shared.Phone.Device.Category
 {
@@ -56,11 +57,11 @@
         /// <summary>
         /// 璁惧绫诲瀷RowLayout
         /// </summary>
-        private FrameLayout typeRowLayout;
+        //private FrameLayout typeRowLayout;
         /// <summary>
         /// 鍔熻兘绫诲瀷鎸夐挳
         /// </summary>
-        private FunctionButton functionTypeIMG;
+        //private FunctionButton functionTypeIMG;
         /// <summary>
         /// 娓╁害
         /// </summary>
@@ -74,9 +75,28 @@
         /// </summary>
         private int fanid;
 
+        /// <summary>
+        /// dList
+        /// </summary>
+        private List<DeviceUI> devList;
+        /// <summary>
+        /// 鐩稿悓绫诲瀷鐨勮澶囧垪琛�
+        /// </summary>
+        private Dictionary<int, List<DeviceUI>> typeDeviceDic;
+        /// <summary>
+        /// 璁惧绫诲瀷鐨勫浘id
+        /// </summary>
+        private Dictionary<int, DeviceConcreteType> typeIdDic;
+        /// <summary>
+        /// 褰撳墠閫変腑鎴块棿
+        /// </summary>
+        private Common.Room curRoom;
 
         #endregion
 
+        /// <summary>
+        /// RemoveFromParent
+        /// </summary>
         public override void RemoveFromParent()
         {
             HomePage.Instance.ScrollEnabled = true;
@@ -96,6 +116,8 @@
         /// </summary>
         public void Show()
         {
+            InitData();
+
             if (sceneTargetDevice == null)
             {
                 sceneTargetDevice = new SceneTargetDeviceUI { Type = 0 };
@@ -107,6 +129,45 @@
             RefreshBodyView(Config.Instance.Home.CurrentFloorId);
         }
 
+        /// <summary>
+        /// InitData
+        /// </summary>
+        private void InitData()
+        {
+            typeDeviceDic = new Dictionary<int, List<DeviceUI>> { };
+            typeIdDic = new Dictionary<int, DeviceConcreteType> { };
+        }
+
+        /// <summary>
+        /// RefreshData
+        /// </summary>
+        private void RefreshData(Common.Room room)
+        {
+            devList = room.DeviceUIList;
+            typeDeviceDic.Clear();
+            typeIdDic.Clear();
+            foreach (var device in devList)
+            {
+                var info = Common.LocalDevice.Current.GetNotHdlMyDeviceEnumInfo(new List<CommonDevice> { device.CommonDevice });
+                if (info.BeloneType == DeviceBeloneType.A寮�鍏� || info.BeloneType == DeviceBeloneType.A褰╃伅
+                    || info.BeloneType == DeviceBeloneType.A鎻掑骇 || info.BeloneType == DeviceBeloneType.A鏅鸿兘绌哄紑
+                    || info.BeloneType == DeviceBeloneType.A鐏厜 || info.BeloneType == DeviceBeloneType.A绌鸿皟
+                    || info.BeloneType == DeviceBeloneType.A绐楀笜 || info.BeloneType == DeviceBeloneType.A缁х數鍣�)
+                {
+                    if (typeDeviceDic.ContainsKey(info.BeloneTextId) == false)
+                    {
+                        var sameDevList = new List<DeviceUI> { };
+                        sameDevList.Add(device);
+                        typeDeviceDic[info.BeloneTextId] = sameDevList;
+                    }
+                    else
+                    {
+                        typeDeviceDic[info.BeloneTextId].Add(device);
+                    }
+                    typeIdDic[info.BeloneTextId] = info.ConcreteType;
+                }
+            }
+        }
 
         #region Add____________________________________
         /// <summary>
@@ -117,7 +178,7 @@
             var top = new TopFrameLayout();
             AddChidren(top);
             top.InitTopview();
-            top.SetTopTitle(R.MyInternationalizationString.AddScence);
+            top.SetTopTitle(R.MyInternationalizationString.AddFunction);
             top.backButton.MouseUpEventHandler += (sender, e) =>
             {
                 RemoveFromParent();
@@ -131,6 +192,8 @@
                 Gravity = Gravity.CenterVertical,
                 TextAlignment = TextAlignment.CenterRight,
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
+                TextSize=14,
+                IsBold=true
             };
 
             selectFloorBtn = new Button()
@@ -210,7 +273,7 @@
             functionSceneBodyView = new FrameLayout()
             {
                 Y = roomFL.Bottom,
-                Height = Application.GetRealHeight(910 + 622),
+                Height = Application.GetRealHeight(279+35+1218),
                 BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
             };
             bodyFrameLayout.AddChidren(functionSceneBodyView);
@@ -245,7 +308,7 @@
                 {
                     roomBtn.IsSelected = true;
                     curBtn = roomBtn;
-
+                    this.curRoom = room;
                     RefreshFunction(room);
                 }
                 roomBtn.MouseUpEventHandler += (sender, e) =>
@@ -257,7 +320,7 @@
                     (sender as Button).IsSelected = true;
                     curBtn.IsSelected = false;
                     curBtn = sender as Button;
-
+                    this.curRoom = room;
                     RefreshFunction(room);
                 };
             }
@@ -275,112 +338,130 @@
         /// <param name="room"></param>
         private void RefreshFunction(Common.Room room)
         {
+            RefreshData(room);
             functionSceneBodyView.RemoveAll();
 
-            if (room.DeviceUIList.Count == 0)
+            if (typeDeviceDic.Count == 0)
             {
                 ShowNoFunctionTip();
             }
             else
             {
+                var functionTypeView1 = new FrameLayout
+                {
+                    X = Application.GetRealWidth(CommonFormResouce.X_Left),
+                    Height = Application.GetRealHeight(160),
+                    Width = Application.GetRealWidth(1028),
+                    BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
+                };
+                functionSceneBodyView.AddChidren(functionTypeView1);
+                functionTypeView1.SetCornerWithSameRadius(Application.GetRealHeight(17), HDLUtils.RectCornerTopLeft);
+
+                var functionTypeView2 = new FrameLayout
+                {
+                    X = Application.GetRealWidth(CommonFormResouce.X_Left),
+                    Y = Application.GetRealHeight(150),
+                    Height = Application.GetRealHeight(279 - 150),
+                    Width = Application.GetRealWidth(1028),
+                    BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
+                };
+                functionSceneBodyView.AddChidren(functionTypeView2);
+                functionTypeView2.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerBottomLeft);
+
                 functionTypeScrowView = new HorizontalScrolViewLayout
                 {
                     X = Application.GetRealWidth(CommonFormResouce.X_Left),
                     Height = Application.GetRealHeight(279),
-                    Width = Application.GetRealWidth(1028),
-                    BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
+                    Width = Application.GetRealWidth(1028)
                 };
                 functionSceneBodyView.AddChidren(functionTypeScrowView);
 
                 deviceListScrolView = new VerticalScrolViewLayout
                 {
                     X = Application.GetRealWidth(CommonFormResouce.X_Left),
-                    Y = functionTypeScrowView.Bottom + Application.GetRealHeight(50),
+                    Y = Application.GetRealHeight(35 + 275),
                     Width = Application.GetRealWidth(1028),
-                    Height = functionSceneBodyView.Height - Application.GetRealHeight(279 + 50) - 1,
+                    Height = Application.GetRealHeight(1218),
                     BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
                 };
                 functionSceneBodyView.AddChidren(deviceListScrolView);
+                deviceListScrolView.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft);
+
                 tempFunctionTypeBtn = new FunctionButton();
                 tempFunctionTypeBtn.Init("","");
 
-                EventHandler<MouseEventArgs> ShowSameTypeFunction = (object typeSender, MouseEventArgs mouseEventArgs) =>
+                foreach (var deviceType in typeIdDic)
                 {
-                    tempFunctionTypeBtn.IsSelected = false;
-                    tempFunctionTypeBtn = (typeSender as Button).Parent as FunctionButton;
-                    ((typeSender as Button).Parent as FunctionButton).IsSelected = true;
-
-                    deviceListScrolView.RemoveAll();
-
-                    var sameTypeList = new List<DeviceUI> { };
-                    foreach (var devieceUI in room.DeviceUIList)
+                    var typeRowLayout = new FrameLayout()
                     {
-                        if (devieceUI == null || devieceUI.CommonDevice == null)
-                        {
-                            continue;
-                        }
-                        if (devieceUI.CommonDevice.Type.ToString() == (typeSender as Button).Tag.ToString())
-                        {
-                            if (!sameTypeList.Contains(devieceUI))
-                            {
-                                sameTypeList.Add(devieceUI);
-                            }
-                        }
-                    }
-                    foreach (var device in sameTypeList)
-                    {
-                        if (beforeSceneTargetDeviceUIs.Find((obj) => obj.DeviceUI.DeviceEpoint == device.DeviceEpoint && obj.DeviceUI.DeviceAddr == device.DeviceAddr) != null)
-                        {
-                            continue;
-                        }
-                        var deviceTypeRowLayout = new FrameLayout()
-                        {
-                            Height = Application.GetRealHeight(127 + 35),
-                            Tag = device
-                        };
-                        deviceListScrolView.AddChidren(deviceTypeRowLayout);
-
-                        var deviceRow = new FunctionRow(0, 35);
-                        deviceTypeRowLayout.AddChidren(deviceRow);
-                        deviceRow.Init(device.IconPath, device.OnlineIconPath,true);
-                        deviceRow.SetTitle(device.CommonDevice.DeviceEpointName);
-                        deviceRow.SetStatu(device.CommonDevice.IsOnline == 1);
-                        deviceRow.HideSwitchBtn(false);
-
-                        deviceRow.ClickBtn.MouseUpEventHandler += (sender, e) =>
-                        {
-                            ShowSelectAction(device, sceneTargetDevice);
-                        };
-                    }
-                };
-
-                foreach (var deviceType in Common.Room.GetdeviceTypes(room))
-                {
-                    typeRowLayout = new FrameLayout()
-                    {
-                        Width = Application.GetRealWidth(CommonPage.AppRealWidth / 5),
-                        Tag = deviceType
+                        Width = Application.GetRealWidth(220),
                     };
                     functionTypeScrowView.AddChidren(typeRowLayout);
 
-                    functionTypeIMG = new FunctionButton()
+                    var functionTypeIMG = new FunctionButton()
                     {
-                        Tag = deviceType
+                        Tag = deviceType.Key
                     };
-                    functionTypeIMG.Init(DeviceUI.GetDeviceTypeUnSelectedImagePath(deviceType), DeviceUI.GetDeviceTypeUnSelectedImagePath(deviceType));
-                    functionTypeIMG.SetTitle(DeviceUI.GetDeviceTypeName(deviceType));
+                    string imgPath = string.Empty;
+                    string imgSeletedPath = string.Empty;
+                    Common.LocalDevice.Current.GetDeviceBeloneIcon(deviceType.Value, ref imgPath, ref imgSeletedPath);
+                    functionTypeIMG.Init(imgPath, imgSeletedPath);
+                    functionTypeIMG.SetTitle(deviceType.Key);
                     typeRowLayout.AddChidren(functionTypeIMG);
 
                     functionTypeIMG.ClickBtn.MouseUpEventHandler += ShowSameTypeFunction;
 
-
-                    if (deviceType == room.DeviceUIList[0].CommonDevice.Type)
+                    if (functionTypeScrowView.ChildrenCount == 1)
                     {
-                        ShowSameTypeFunction(functionTypeIMG.ClickBtn, null);
+                        ShowSameTypeFunction(functionTypeIMG.ImageBtn, null);
                     }
                 }
             }
         }
+
+        /// <summary>
+        /// 鏄剧ず鐩稿悓绫诲瀷鐨勫姛鑳�
+        /// </summary>
+        /// <param name="typeSender">typeSender.</param>
+        /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
+        private void ShowSameTypeFunction(object typeSender, MouseEventArgs mouseEventArgs)
+        {
+            tempFunctionTypeBtn.IsSelected = false;
+            tempFunctionTypeBtn = (typeSender as Button).Parent as FunctionButton;
+            ((typeSender as Button).Parent as FunctionButton).IsSelected = true;
+
+            deviceListScrolView.RemoveAll();
+
+            var sameTypeList = new List<DeviceUI> { };
+            sameTypeList = typeDeviceDic[int.Parse((typeSender as Button).Tag.ToString())];
+            
+            foreach (var device in sameTypeList)
+            {
+                if (beforeSceneTargetDeviceUIs.Find((obj) => obj.DeviceUI.DeviceEpoint == device.DeviceEpoint && obj.DeviceUI.DeviceAddr == device.DeviceAddr) != null)
+                {
+                    continue;
+                }
+                var deviceTypeRowLayout = new FrameLayout()
+                {
+                    Height = Application.GetRealHeight(127 + 35),
+                    Tag = device
+                };
+                deviceListScrolView.AddChidren(deviceTypeRowLayout);
+
+                var deviceRow = new FunctionRow(0, 35);
+                deviceTypeRowLayout.AddChidren(deviceRow);
+                deviceRow.Init(device.IconPath, device.OnlineIconPath, true);
+                deviceRow.SetTitle(device.CommonDevice.DeviceEpointName);
+                deviceRow.IsSelected = true;
+                deviceRow.HideSwitchBtn(false);
+
+                deviceRow.ClickBtn.MouseUpEventHandler += (sender, e) =>
+                {
+                    ShowSelectAction(device, sceneTargetDevice);
+                };
+            }
+        }
+
 
         /// <summary>
         /// 鎻愮ず娌℃湁鍔熻兘
@@ -403,7 +484,7 @@
                 Height = Application.GetRealHeight(200),
                 Width = Application.GetRealWidth(700),
                 Gravity = Gravity.CenterHorizontal,
-                Text = Language.StringByID(R.MyInternationalizationString.NoFunction).Replace("{\\r\\n}", "\r\n"),
+                Text = Language.StringByID(R.MyInternationalizationString.NoFunction_Tip).Replace("{\\r\\n}", "\r\n"),
                 TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
                 TextAlignment = TextAlignment.Center,
                 IsMoreLines = true
@@ -464,12 +545,12 @@
                 Height = Application.GetRealHeight(530),
             };
             dialog.AddChidren(selectFL);
-            selectFL.Animate = Animate.DownToUp;
+            //selectFL.Animate = Animate.DownToUp;
 
             var titleBG = new FrameLayout
             {
                 Height = Application.GetRealHeight(138 * 2),
-                Radius = (uint)Application.GetRealHeight(20),
+                Radius = (uint)Application.GetRealHeight(58),
                 BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
             };
             selectFL.AddChidren(titleBG);
@@ -493,7 +574,7 @@
                 X = Application.GetRealWidth(80),
                 Width = Application.GetRealWidth(200),
                 TextColor = ZigbeeColor.Current.GXCTextGrayColor,
-                TextSize = 15,
+                TextSize = 14,
                 TextAlignment = TextAlignment.CenterLeft,
                 TextID = R.MyInternationalizationString.Cancel
             };
@@ -504,8 +585,7 @@
                 Width = Application.GetRealWidth(400),
                 Gravity = Gravity.CenterHorizontal,
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
-                TextSize = 15,
-                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = 16,
                 Text = device.CommonDevice.DeviceEpointName
             };
             titleFL.AddChidren(deviceName);
@@ -515,7 +595,7 @@
                 X = Application.GetRealWidth(800),
                 Width = Application.GetRealWidth(200),
                 TextColor = ZigbeeColor.Current.GXCTextSelectedColor2,
-                TextSize = 15,
+                TextSize = 14,
                 TextAlignment = TextAlignment.CenterRight,
                 TextID = R.MyInternationalizationString.Complete
             };
@@ -621,12 +701,12 @@
                 Height = Application.GetRealHeight(752),
             };
             dialog.AddChidren(selectFL);
-            selectFL.Animate = Animate.DownToUp;
+            //selectFL.Animate = Animate.DownToUp;
 
             var titleBG = new FrameLayout
             {
                 Height = Application.GetRealHeight(138 * 2),
-                Radius = (uint)Application.GetRealHeight(20),
+                Radius = (uint)Application.GetRealHeight(58),
                 BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
             };
             selectFL.AddChidren(titleBG);
@@ -650,7 +730,7 @@
                 X = Application.GetRealWidth(80),
                 Width = Application.GetRealWidth(200),
                 TextColor = ZigbeeColor.Current.GXCTextGrayColor,
-                TextSize = 15,
+                TextSize = 14,
                 TextAlignment = TextAlignment.CenterLeft,
                 TextID = R.MyInternationalizationString.Cancel
             };
@@ -661,8 +741,7 @@
                 Width = Application.GetRealWidth(400),
                 Gravity = Gravity.CenterHorizontal,
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
-                TextSize = 15,
-                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = 16,
                 Text = device.CommonDevice.DeviceEpointName
             };
             titleFL.AddChidren(deviceName);
@@ -672,7 +751,7 @@
                 X = Application.GetRealWidth(800),
                 Width = Application.GetRealWidth(200),
                 TextColor = ZigbeeColor.Current.GXCTextSelectedColor2,
-                TextSize = 15,
+                TextSize = 14,
                 TextAlignment = TextAlignment.CenterRight,
                 TextID = R.MyInternationalizationString.Complete
             };
@@ -787,12 +866,12 @@
                 Height = Application.GetRealHeight(752),
             };
             dialog.AddChidren(selectFL);
-            selectFL.Animate = Animate.DownToUp;
+            //selectFL.Animate = Animate.DownToUp;
 
             var titleBG = new FrameLayout
             {
                 Height = Application.GetRealHeight(138 * 2),
-                Radius = (uint)Application.GetRealHeight(20),
+                Radius = (uint)Application.GetRealHeight(58),
                 BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
             };
             selectFL.AddChidren(titleBG);
@@ -816,7 +895,7 @@
                 X = Application.GetRealWidth(80),
                 Width = Application.GetRealWidth(200),
                 TextColor = ZigbeeColor.Current.GXCTextGrayColor,
-                TextSize = 15,
+                TextSize = 14,
                 TextAlignment = TextAlignment.CenterLeft,
                 TextID = R.MyInternationalizationString.Cancel
             };
@@ -827,7 +906,7 @@
                 Width = Application.GetRealWidth(400),
                 Gravity = Gravity.CenterHorizontal,
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
-                TextSize = 15,
+                TextSize = 16,
                 TextAlignment = TextAlignment.CenterLeft,
                 Text = device.CommonDevice.DeviceEpointName
             };
@@ -838,7 +917,7 @@
                 X = Application.GetRealWidth(800),
                 Width = Application.GetRealWidth(200),
                 TextColor = ZigbeeColor.Current.GXCTextSelectedColor2,
-                TextSize = 15,
+                TextSize = 14,
                 TextAlignment = TextAlignment.CenterRight,
                 TextID = R.MyInternationalizationString.Complete
             };
@@ -953,12 +1032,12 @@
                 Height = Application.GetRealHeight(1106),
             };
             dialog.AddChidren(selectFL);
-            selectFL.Animate = Animate.DownToUp;
+            //selectFL.Animate = Animate.DownToUp;
 
             var titleBG = new FrameLayout
             {
                 Height = Application.GetRealHeight(138 * 2),
-                Radius = (uint)Application.GetRealHeight(20),
+                Radius = (uint)Application.GetRealHeight(58),
                 BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
             };
             selectFL.AddChidren(titleBG);
@@ -982,7 +1061,7 @@
                 X = Application.GetRealWidth(80),
                 Width = Application.GetRealWidth(200),
                 TextColor = ZigbeeColor.Current.GXCTextGrayColor,
-                TextSize = 15,
+                TextSize = 14,
                 TextAlignment = TextAlignment.CenterLeft,
                 TextID = R.MyInternationalizationString.Cancel
             };
@@ -993,7 +1072,7 @@
                 Width = Application.GetRealWidth(400),
                 Gravity = Gravity.CenterHorizontal,
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
-                TextSize = 15,
+                TextSize = 16,
                 TextAlignment = TextAlignment.CenterLeft,
                 Text = device.CommonDevice.DeviceEpointName
             };
@@ -1004,7 +1083,7 @@
                 X = Application.GetRealWidth(800),
                 Width = Application.GetRealWidth(200),
                 TextColor = ZigbeeColor.Current.GXCTextSelectedColor2,
-                TextSize = 15,
+                TextSize = 14,
                 TextAlignment = TextAlignment.CenterRight,
                 TextID = R.MyInternationalizationString.Complete
             };

--
Gitblit v1.8.0