From f7063b6fb7b46e3612afb1c6bb426c94fb92593d Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期二, 10 一月 2023 14:44:32 +0800
Subject: [PATCH] 设备加载优化

---
 HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs |  176 ++++++++++++++++++++----
 HDL-ON_Android/Properties/AndroidManifest.xml                      |    2 
 HDL-ON_iOS/Info.plist                                              |    4 
 HDL_ON/UI/UI2/2-Classification/FunctionPage.cs                     |  178 +++++++++++++++++--------
 HDL_ON/Common/ApiUtlis.cs                                          |    2 
 HDL_ON/Entity/DB_ResidenceData.cs                                  |   21 ++
 HDL_ON/UI/UI1-Login/LoginPage.cs                                   |    8 
 HDL_ON/Entity/FunctionList.cs                                      |   20 ++
 8 files changed, 306 insertions(+), 105 deletions(-)

diff --git a/HDL-ON_Android/Properties/AndroidManifest.xml b/HDL-ON_Android/Properties/AndroidManifest.xml
index 07451ac..0fafe5b 100644
--- a/HDL-ON_Android/Properties/AndroidManifest.xml
+++ b/HDL-ON_Android/Properties/AndroidManifest.xml
@@ -1,5 +1,5 @@
 锘�<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.6.3" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202301091">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.6.3" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202301102">
 	<uses-sdk android:minSdkVersion="26" android:targetSdkVersion="29" />
 	<!--鍙嬬洘-->
 	<!--<uses-sdk android:minSdkVersion="8"></uses-sdk>-->
diff --git a/HDL-ON_iOS/Info.plist b/HDL-ON_iOS/Info.plist
index 7d3e421..f3407e6 100644
--- a/HDL-ON_iOS/Info.plist
+++ b/HDL-ON_iOS/Info.plist
@@ -100,9 +100,9 @@
 	<key>UIStatusBarStyle</key>
 	<string>UIStatusBarStyleLightContent</string>
 	<key>CFBundleShortVersionString</key>
-	<string>1.6.302301091</string>
+	<string>1.6.302301102</string>
 	<key>CFBundleVersion</key>
-	<string>1.6.301091</string>
+	<string>1.6.301102</string>
 	<key>NSLocationWhenInUseUsageDescription</key>
 	<string>Use geographic location to provide services such as weather</string>
 	<key>NSAppleMusicUsageDescription</key>
diff --git a/HDL_ON/Common/ApiUtlis.cs b/HDL_ON/Common/ApiUtlis.cs
index 7da5e6f..5ef13fc 100644
--- a/HDL_ON/Common/ApiUtlis.cs
+++ b/HDL_ON/Common/ApiUtlis.cs
@@ -229,7 +229,7 @@
                                 {
                                     newFunction.AssembleStatus();
                                     newFunction.SaveFunctionFile();
-                                    FunctionList.List.IniFunctionList(newFunction.savePath);
+                                    FunctionList.List.IniFunctionList(newFunction.savePath,true);
                                     MainPage.Log($"============璁惧============{iiii++}");
                                 }
 
diff --git a/HDL_ON/Entity/DB_ResidenceData.cs b/HDL_ON/Entity/DB_ResidenceData.cs
index 5030525..b41e1dc 100644
--- a/HDL_ON/Entity/DB_ResidenceData.cs
+++ b/HDL_ON/Entity/DB_ResidenceData.cs
@@ -298,16 +298,27 @@
             var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this));
             WirteResidenceInfo(ssd);
         }
-        /// <summary>
-        /// 褰撳墠閫夋嫨鐨勬ゼ灞�
-        /// </summary>
-        public string CurFoor = Language.StringByID(StringId.All);
 
+
+        SpatialInfo _CurFloor;
         /// <summary>
         /// 褰撳墠閫夋嫨鐨勬ゼ灞�
         /// </summary>
         [Newtonsoft.Json.JsonIgnore]
-        public SpatialInfo CurFloor = new SpatialInfo() { roomId = "", roomName = Language.StringByID(StringId.All)};
+        public SpatialInfo CurFloor {
+            get
+            {
+                if(_CurFloor == null || _CurFloor.roomName == "")
+                {
+                    _CurFloor = new SpatialInfo() { roomId = "", roomName = Language.StringByID(StringId.All) };
+                }
+                return _CurFloor;
+            }
+            set
+            {
+                _CurFloor = value;
+            }
+        } 
         /// <summary>
         /// 鍒嗙被鐣岄潰鏄剧ず鐨勬ゼ灞�
         /// </summary>
diff --git a/HDL_ON/Entity/FunctionList.cs b/HDL_ON/Entity/FunctionList.cs
index 450ef57..2999288 100644
--- a/HDL_ON/Entity/FunctionList.cs
+++ b/HDL_ON/Entity/FunctionList.cs
@@ -331,16 +331,24 @@
                     if (checkRepeat == true)
                     {
                         //妫�娴嬮噸澶�
-                        for (int i = 0; i < Functions.Count; i++)
+                        var same = Functions.FindAll((obj) => obj.deviceId == tempFunction.deviceId);
+                        if(same!= null)
                         {
-                            if (Functions[i].deviceId == tempFunction.deviceId)
+                            foreach(var sameTemp in same)
                             {
-                                //鍏堢Щ闄ゆ帀鍐嶅姞
-                                Functions.RemoveAt(i);
-                                Functions.Add(tempFunction);
-                                return;
+                                Functions.Remove(sameTemp);
                             }
                         }
+                        //for (int i = 0; i < Functions.Count; i++)
+                        //{
+                        //    if (Functions[i].deviceId == tempFunction.deviceId)
+                        //    {
+                        //        //鍏堢Щ闄ゆ帀鍐嶅姞
+                        //        Functions.RemoveAt(i);
+                        //        Functions.Add(tempFunction);
+                        //        return;
+                        //    }
+                        //}
                     }
                     Functions.Add(tempFunction);
                 }
diff --git a/HDL_ON/UI/UI1-Login/LoginPage.cs b/HDL_ON/UI/UI1-Login/LoginPage.cs
index e960ea7..bec7b5e 100644
--- a/HDL_ON/UI/UI1-Login/LoginPage.cs
+++ b/HDL_ON/UI/UI1-Login/LoginPage.cs
@@ -221,13 +221,13 @@
                     //etAccount.Text = "support7@hdlautomation.com";
                     //etAccount.Text = "18570064522";
                     //etAccount.Text = "18718417827";
-                    etAccount.Text = "ablis-nn@yandex.ru";
+                    etAccount.Text = "18188019284";
                     //etAccount.Text = "13143792049";
                     //etAccount.Text = "13288623489";//缃楁檽涓�
                     //etAccount.Text = "18244942707";
                     //etAccount.Text = "13143792049";
                     //etAccount.Text = "18688414428";
-                    etAccount.Text = "18244942707";
+                    //etAccount.Text = "18244942707";
                 }
                 else
                 {
@@ -261,9 +261,9 @@
                 }
                 b = !b;
                 etPassword.Text = "123456";
-                if(etAccount.Text == "ablis-nn@yandex.ru")
+                if(etAccount.Text == "18188019284")
                 {
-                    etPassword.Text = "07112001Ulyna";
+                    etPassword.Text = "CEZUJHSZ";
                 }
                 else if(etAccount.Text == "13143792049")
                 {
diff --git a/HDL_ON/UI/UI2/2-Classification/FunctionPage.cs b/HDL_ON/UI/UI2/2-Classification/FunctionPage.cs
index 87341e4..5ba2bed 100644
--- a/HDL_ON/UI/UI2/2-Classification/FunctionPage.cs
+++ b/HDL_ON/UI/UI2/2-Classification/FunctionPage.cs
@@ -215,70 +215,136 @@
             #endregion
 
         }
-
+        /// <summary>
+        /// 鏄剧ず鐨勮澶囩殑鎬绘暟
+        /// </summary>
+        int showCount = 0;
         /// <summary>
         /// 鍔犺浇鍔熻兘row
         /// </summary>
-        void ShowFunctionRow(List<Function> showList)
+        void ShowFunctionRow(List<Function> showList, bool isAppend = false)
         {
-            functionListView.RemoveAll();
-            foreach (var function in showList)
-            {
-                if(function.spk == SPK.SensorDryContact|| function.spk == SPK.SensorDryContact2)
-                {
-                    continue;
-                }
-                if (function.spk == SPK.LightRGBW || function.spk == SPK.LightRGB || function.spk == SPK.LightDimming)
-                {
-                    var functionDiv = new FunctionControlZone(function)
-                    {
-                        Gravity = Gravity.CenterHorizontal,
-                        Width = Application.GetRealWidth(343),
-                        Height = Application.GetRealHeight(116),
-                        Radius = (uint)Application.GetMinRealAverage(12),
-                        BorderColor = 0x00FFFFFF,
-                        BorderWidth = 1,
-                        BackgroundColor = CSS_Color.MainBackgroundColor,
-                        Tag = function.spk + function.sid
-                    };
-                    functionDiv.LoadFunctionDiv();
-                    functionListView.AddChidren(functionDiv);
-                }
-                else if(function.spk == SPK.IpCam_Imou)
-                {
-                    var functionDiv = new FunctionControlZone(function)
-                    {
-                        Gravity = Gravity.CenterHorizontal,
-                        Width = Application.GetRealWidth(343),
-                        Height = Application.GetRealHeight(96),
-                        Radius = (uint)Application.GetMinRealAverage(12),
-                        BorderColor = 0x00FFFFFF,
-                        BorderWidth = 1,
-                        BackgroundColor = CSS_Color.MainBackgroundColor,
-                        Tag = function.spk + function.sid
-                    };
-                    functionDiv.LoadFunctionDiv();
-                    functionListView.AddChidren(functionDiv);
+            var waitPage = new Loading();
+            bodyView.AddChidren(waitPage);
+            waitPage.Start("");
 
-                }
-                else
+            new System.Threading.Thread(() =>
+            {
+                try
                 {
-                    var functionDiv = new FunctionControlZone(function)
+                    Application.RunOnMainThread(() =>
                     {
-                        Gravity = Gravity.CenterHorizontal,
-                        Width = Application.GetRealWidth(343),
-                        Height = Application.GetRealHeight(96),
-                        Radius = (uint)Application.GetMinRealAverage(12),
-                        BorderColor = 0x00FFFFFF,
-                        BorderWidth = 1,
-                        BackgroundColor = CSS_Color.MainBackgroundColor,
-                        Tag = function.spk + function.sid
-                    };
-                    functionDiv.LoadFunctionDiv();
-                    functionListView.AddChidren(functionDiv);
+                        if (!isAppend)
+                        {
+                            showCount = 0;
+                            functionListView.RemoveAll();
+                        }
+                        int i = 0;
+                        foreach (var function in showList)
+                        {
+                            i++;
+                            if (i > 50)
+                            {
+                                break;
+                            }
+                            showCount++;
+
+                            if (function.spk == SPK.SensorDryContact || function.spk == SPK.SensorDryContact2)
+                            {
+                                continue;
+                            }
+                            if (function.spk == SPK.LightRGBW || function.spk == SPK.LightRGB || function.spk == SPK.LightDimming)
+                            {
+                                var functionDiv = new FunctionControlZone(function)
+                                {
+                                    Gravity = Gravity.CenterHorizontal,
+                                    Width = Application.GetRealWidth(343),
+                                    Height = Application.GetRealHeight(116),
+                                    Radius = (uint)Application.GetMinRealAverage(12),
+                                    BorderColor = 0x00FFFFFF,
+                                    BorderWidth = 1,
+                                    BackgroundColor = CSS_Color.MainBackgroundColor,
+                                    Tag = function.spk + function.sid
+                                };
+                                functionDiv.LoadFunctionDiv();
+                                functionListView.AddChidren(functionDiv);
+                            }
+                            else if (function.spk == SPK.IpCam_Imou)
+                            {
+                                var functionDiv = new FunctionControlZone(function)
+                                {
+                                    Gravity = Gravity.CenterHorizontal,
+                                    Width = Application.GetRealWidth(343),
+                                    Height = Application.GetRealHeight(96),
+                                    Radius = (uint)Application.GetMinRealAverage(12),
+                                    BorderColor = 0x00FFFFFF,
+                                    BorderWidth = 1,
+                                    BackgroundColor = CSS_Color.MainBackgroundColor,
+                                    Tag = function.spk + function.sid
+                                };
+                                functionDiv.LoadFunctionDiv();
+                                functionListView.AddChidren(functionDiv);
+
+                            }
+                            else
+                            {
+                                var functionDiv = new FunctionControlZone(function)
+                                {
+                                    Gravity = Gravity.CenterHorizontal,
+                                    Width = Application.GetRealWidth(343),
+                                    Height = Application.GetRealHeight(96),
+                                    Radius = (uint)Application.GetMinRealAverage(12),
+                                    BorderColor = 0x00FFFFFF,
+                                    BorderWidth = 1,
+                                    BackgroundColor = CSS_Color.MainBackgroundColor,
+                                    Tag = function.spk + function.sid
+                                };
+                                functionDiv.LoadFunctionDiv();
+                                functionListView.AddChidren(functionDiv);
+                            }
+                            functionListView.AddChidren(new Button() { Height = Application.GetRealHeight(10) });
+                        }
+                        if (showList.Count > showCount)
+                        {
+                            var btnAppend = new Button()
+                            {
+                                Height = Application.GetRealHeight(60),
+                                TextAlignment = TextAlignment.Center,
+                                TextSize = CSS_FontSize.SubheadingFontSize,
+                                TextColor = CSS_Color.FirstLevelTitleColor,
+                                Text = "鍔犺浇鏇村",
+                            };
+                            if (Language.CurrentLanguage != "Chinese")
+                            {
+                                btnAppend.Text = "Load more";
+                            }
+                            functionListView.AddChidren(btnAppend);
+                            btnAppend.MouseUpEventHandler = (sender, e) =>
+                            {
+                                btnAppend.RemoveFromParent();
+                                ShowFunctionRow(showList, true);
+                            };
+                        }
+
+                    });
                 }
-                functionListView.AddChidren(new Button() { Height = Application.GetRealHeight(10) });
-            }
+                catch (Exception ex)
+                {
+                    MainPage.Log("ShowFunctionRowError : " + ex.Message);
+                }
+                finally
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        if (waitPage != null)
+                        {
+                            waitPage.RemoveFromParent();
+                            waitPage = null;
+                        }
+                    });
+                }
+            })
+            { IsBackground = true }.Start();
         }
 
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs
index c462573..c58d221 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs
@@ -25,6 +25,10 @@
         /// </summary>
         Button btnFloor;
         /// <summary>
+        /// 鍏ㄩ�夋寜閽�
+        /// </summary>
+        Button btnChooseAll;
+        /// <summary>
         /// 鍔熻兘鍒楄〃闆嗗悎鏄剧ず鍖哄煙
         /// </summary>
         static VerticalScrolViewLayout functionListView;
@@ -89,15 +93,46 @@
             btnFloor = new Button()
             {
                 X = btnFloorDownIcon.Right,
-                Y = Application.GetRealHeight(18),
+                //Y = Application.GetRealHeight(18),
                 Width = Application.GetRealWidth(200),
-                Height = Application.GetMinRealAverage(16),
+                //Height = Application.GetMinRealAverage(16+18*2),
                 TextColor = CSS_Color.FirstLevelTitleColor,
                 TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                 TextAlignment = TextAlignment.CenterLeft,
                 Text = DB_ResidenceData.Instance.CurFloor.roomName,
             };
             roomFloorChangeView.AddChidren(btnFloor);
+
+            btnChooseAll = new Button()
+            {
+                X = Application.GetRealWidth(245),
+                Width = Application.GetRealWidth(109),
+                TextAlignment = TextAlignment.CenterRight,
+                TextSize = CSS_FontSize.TextFontSize,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextID = StringId.SelectedAll,
+            };
+            if(sceneLishtList.Count>0)
+            {
+                btnChooseAll.TextID = StringId.Cancel;
+            }
+            roomFloorChangeView.AddChidren(btnChooseAll);
+            btnChooseAll.MouseUpEventHandler = (sender, e) => {
+                if (sceneLishtList.Count > 0)
+                {
+                    sceneLishtList.Clear();
+                    btnChooseAll.TextID = StringId.SelectAll;
+                    btnConfrim.IsSelected = false;
+                }
+                else
+                {
+                    sceneLishtList.AddRange(lightList);
+                    btnChooseAll.TextID = StringId.Cancel;
+                    btnConfrim.IsSelected = true;
+                }
+                LoadLightRow(lightList);
+            };
+
             #endregion
 
             functionListView = new VerticalScrolViewLayout()
@@ -157,44 +192,110 @@
         }
 
         /// <summary>
+        /// 鏄剧ず鐨勮澶囩殑鎬绘暟
+        /// </summary>
+        int showCount = 0;
+
+        /// <summary>
         /// 鍔犺浇鍔熻兘row
         /// </summary>
         /// <param name="lightList"></param>
-        void LoadLightRow(List<Function> functions)
+        void LoadLightRow(List<Function> functions, bool isAppend = false)
         {
-            functionListView.RemoveAll();
+            var waitPage = new Loading();
+            bodyView.AddChidren(waitPage);
+            waitPage.Start("");
 
-            foreach (var function in functions)
+            new System.Threading.Thread(() =>
             {
-                var functionDiv = new LightRow(function)
+                try
                 {
-                    Gravity = Gravity.CenterHorizontal,
-                    Width = Application.GetRealWidth(343),
-                    Height = Application.GetRealHeight(62),
-                    Radius = (uint)Application.GetMinRealAverage(12),
-                    BorderColor = 0x00FFFFFF,
-                    BorderWidth = 1,
-                    BackgroundColor = CSS_Color.MainBackgroundColor,
-                    Tag = function.spk + function.sid
-                };
+                    Application.RunOnMainThread(() =>
+                    {
+                        if (!isAppend)
+                        {
+                            showCount = 0;
+                            functionListView.RemoveAll();
+                        }
+                        int i = 0;
+                        foreach (var function in functions)
+                        {
+                            i++;
+                            if (i > 100)
+                            {
+                                break;
+                            }
+                            showCount++;
+                            var functionDiv = new LightRow(function)
+                            {
+                                Gravity = Gravity.CenterHorizontal,
+                                Width = Application.GetRealWidth(343),
+                                Height = Application.GetRealHeight(62),
+                                Radius = (uint)Application.GetMinRealAverage(12),
+                                BorderColor = 0x00FFFFFF,
+                                BorderWidth = 1,
+                                BackgroundColor = CSS_Color.MainBackgroundColor,
+                                Tag = function.spk + function.sid
+                            };
 
-                Action setAction = () =>
+                            Action setAction = () =>
+                            {
+                                if (sceneLishtList.Count > 0)
+                                {
+                                    btnConfrim.IsSelected = true;
+                                }
+                                else
+                                {
+                                    btnConfrim.IsSelected = false;
+                                }
+                            };
+
+                            functionDiv.LoadDiv(sceneLishtList, setAction);
+                            functionListView.AddChidren(functionDiv);
+
+                            functionListView.AddChidren(new Button() { Height = Application.GetRealHeight(12) });
+                        }
+
+                        if (functions.Count > showCount)
+                        {
+                            var btnAppend = new Button()
+                            {
+                                Height = Application.GetRealHeight(60),
+                                TextAlignment = TextAlignment.Center,
+                                TextSize = CSS_FontSize.SubheadingFontSize,
+                                TextColor = CSS_Color.FirstLevelTitleColor,
+                                Text = "鍔犺浇鏇村",
+                            };
+                            if (Language.CurrentLanguage != "Chinese")
+                            {
+                                btnAppend.Text = "Load more";
+                            }
+                            functionListView.AddChidren(btnAppend);
+                            btnAppend.MouseUpEventHandler = (sender, e) =>
+                            {
+                                btnAppend.RemoveFromParent();
+                                LoadLightRow(functions, true);
+                            };
+                        }
+                    });
+                }
+                catch (Exception ex)
                 {
-                    if (sceneLishtList.Count > 0)
+                    MainPage.Log("ShowFunctionRowError : " + ex.Message);
+                }
+                finally
+                {
+                    Application.RunOnMainThread(() =>
                     {
-                        btnConfrim.IsSelected = true;
-                    }
-                    else
-                    {
-                        btnConfrim.IsSelected = false;
-                    }
-                };
-
-                functionDiv.LoadDiv(sceneLishtList,setAction);
-                functionListView.AddChidren(functionDiv);
-
-                functionListView.AddChidren(new Button() { Height = Application.GetRealHeight(12) });
-            }
+                        if (waitPage != null)
+                        {
+                            waitPage.RemoveFromParent();
+                            waitPage = null;
+                        }
+                    });
+                }
+            })
+            { IsBackground = true }.Start();
 
         }
 
@@ -211,6 +312,21 @@
                 var form = new FloorRoomSelectPopupView();
                 form.ShowDeviceFunctionView(btnFloor, this.lightList, (selectId, listFunc) =>
                 {
+                    btnChooseAll.MouseUpEventHandler = (sender2, e2) => {
+                        if (sceneLishtList.Count > 0)
+                        {
+                            sceneLishtList.Clear();
+                            btnChooseAll.TextID = StringId.SelectAll;
+                            btnConfrim.IsSelected = false;
+                        }
+                        else
+                        {
+                            sceneLishtList.AddRange(listFunc);
+                            btnChooseAll.TextID = StringId.Cancel;
+                            btnConfrim.IsSelected = true;
+                        }
+                        LoadLightRow(listFunc);
+                    };
                     nowSelectId = selectId;
                     //閲嶆柊鍔犺浇鐣岄潰
                     LoadLightRow(listFunc);

--
Gitblit v1.8.0