mac
2023-11-06 cc57e8d53611813232e8f5761aca452a020e031a
Merge branch 'Dev-Branch' into wjc
2个文件已添加
21个文件已修改
990 ■■■■■ 已修改文件
HDL-ON_Android/Assets/Language.ini 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Properties/AndroidManifest.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Resources/Resource.designer.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Info.plist 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Language.ini 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/ViewController.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Common/R.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/Mqtt/MqttClient.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/Server/HttpServerRequest.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/Server/HttpUtil.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/Function/Scene.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/FunctionList.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/HDL_ON.projitems 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/MainPage.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI0-Public/TopViewDiv.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI1-Login/LoginPage.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Scene/NewSceneMenuListPage.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs 186 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAutomationListChoosePage.cs 239 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs 222 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Scene/SceneFunctionListChoosePage.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Scene/SceneTargetTypeChoosePage.cs 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Language.ini
@@ -683,6 +683,8 @@
696=Monthly data of the past year
697=prompt: The closer the starting color selection is to the edge of the color ring, the more obvious the dazzling effect. The closer to the white center, the less noticeable the dazzling effect.
698=Break
699=Choose automation
700=Add execution action
@@ -2082,6 +2084,8 @@
696=过去一年的每月数据
697=提示:起始颜色选择越靠近色环边缘,炫彩效果越明显。越靠近白色中心,炫彩效果越不明显。
698=断开
699=选择自动化
700=添加执行目标
@@ -3479,6 +3483,8 @@
696=Monthly data of the past year
697=prompt: The closer the starting color selection is to the edge of the color ring, the more obvious the dazzling effect. The closer to the white center, the less noticeable the dazzling effect.
698=Break
699=Choose automation
700=Add execution action
@@ -4871,6 +4877,8 @@
696=Monthly data of the past year
697=prompt: The closer the starting color selection is to the edge of the color ring, the more obvious the dazzling effect. The closer to the white center, the less noticeable the dazzling effect.
698=Break
699=Choose automation
700=Add execution action
@@ -6248,6 +6256,8 @@
696=Monthly data of the past year
697=prompt: The closer the starting color selection is to the edge of the color ring, the more obvious the dazzling effect. The closer to the white center, the less noticeable the dazzling effect.
698=Break
699=Choose automation
700=Add execution action
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="2.3.0" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202310301">
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="2.3.1" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202311021">
    <uses-sdk android:minSdkVersion="26" android:targetSdkVersion="30" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <!--友盟-->
HDL-ON_Android/Resources/Resource.designer.cs
@@ -15,7 +15,7 @@
{
    
    
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "13.2.0.99")]
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "13.2.1.111")]
    public partial class Resource
    {
        
HDL-ON_iOS/Info.plist
@@ -11,7 +11,7 @@
    <key>CFBundleName</key>
    <string>On Pro</string>
    <key>CFBundleShortVersionString</key>
    <string>2.3.0</string>
    <string>2.3.1</string>
    <key>CFBundleURLTypes</key>
    <array>
        <dict>
@@ -36,7 +36,7 @@
        </dict>
    </array>
    <key>CFBundleVersion</key>
    <string>2.3.0</string>
    <string>2.3.1</string>
    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>weixinULAPI</string>
HDL-ON_iOS/Resources/Language.ini
@@ -683,6 +683,8 @@
696=Monthly data of the past year
697=prompt: The closer the starting color selection is to the edge of the color ring, the more obvious the dazzling effect. The closer to the white center, the less noticeable the dazzling effect.
698=Break
699=Choose automation
700=Add execution action
@@ -2082,6 +2084,8 @@
696=过去一年的每月数据
697=提示:起始颜色选择越靠近色环边缘,炫彩效果越明显。越靠近白色中心,炫彩效果越不明显。
698=断开
699=选择自动化
700=添加执行目标
@@ -3478,6 +3482,8 @@
696=Monthly data of the past year
697=prompt: The closer the starting color selection is to the edge of the color ring, the more obvious the dazzling effect. The closer to the white center, the less noticeable the dazzling effect.
698=Break
699=Choose automation
700=Add execution action
@@ -4870,6 +4876,8 @@
696=Monthly data of the past year
697=prompt: The closer the starting color selection is to the edge of the color ring, the more obvious the dazzling effect. The closer to the white center, the less noticeable the dazzling effect.
698=Break
699=Choose automation
700=Add execution action
@@ -6247,6 +6255,8 @@
696=Monthly data of the past year
697=prompt: The closer the starting color selection is to the edge of the color ring, the more obvious the dazzling effect. The closer to the white center, the less noticeable the dazzling effect.
698=Break
699=Choose automation
700=Add execution action
HDL-ON_iOS/ViewController.cs
@@ -22,6 +22,13 @@
            }
        }
        // 切换到竖屏模式
        public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations()
        {
            return UIInterfaceOrientationMask.Portrait;
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
HDL_ON/Common/R.cs
@@ -5,6 +5,14 @@
    public static class StringId
    {
        /// <summary>
        /// 添加执行动作
        /// </summary>
        public const int AddExecutionAction = 700;
        /// <summary>
        /// 选择自动化
        /// </summary>
        public const int SelectAutomation = 699;
        /// <summary>
        /// 断开(干接点)
        /// </summary>
        public const int DryBreak = 698;
HDL_ON/DAL/Mqtt/MqttClient.cs
@@ -133,10 +133,6 @@
            new System.Threading.Thread(async () => {
                while (true)
                {
                    if (!UserInfo.Current.IsLogin)
                    {
                        return;
                    }
                    try
                    {
                        System.Threading.Thread.Sleep(2000);
@@ -149,6 +145,7 @@
                        await StartCloudMqtt();
                        await SubscribeTopics();
                    }
                    catch { }
                }
@@ -984,7 +981,7 @@
                MqttInfoConfig.Current.mMqttInfo = mqttInfoRequestResult_Obj;
                await MQTTConnectAsync();
                //await MQTTConnectAsync();
                //1.判断是否绑定了网关,获取网关远程连接的加密KEY
                //if (DB_ResidenceData.Instance.CheckWhetherGatewayIsBound())
                {
HDL_ON/DAL/Server/HttpServerRequest.cs
@@ -192,9 +192,8 @@
            {
                if (canRefresh)
                {
                    MainPage.Log($"UserInfo.Current.RefreshToken 1 : " + UserInfo.Current.RefreshToken);
                    UserInfo.Current.RefreshToken = SiriKit.NSUserDefaultsHelper.DataSuite.StringForKey(SiriKit.NSUserDefaultsHelper.StorageKeys.GLOBAL_GAccessToken);
                    MainPage.Log($"UserInfo.Current.RefreshToken 2 : " + UserInfo.Current.RefreshToken);
                    UserInfo.Current.RefreshToken = SiriKit.NSUserDefaultsHelper.DataSuite.StringForKey(SiriKit.NSUserDefaultsHelper.StorageKeys.GLOBAL_GRefreshToken);
                    //UserInfo.Current.AccessToken = SiriKit.NSUserDefaultsHelper.DataSuite.StringForKey(SiriKit.NSUserDefaultsHelper.StorageKeys.GLOBAL_GAccessToken);
                    RefreshToken(false);
                }
            }
HDL_ON/DAL/Server/HttpUtil.cs
@@ -213,7 +213,7 @@
                if(apiPath == NewAPI.API_POST_Login)
                {
                    var ddd = Newtonsoft.Json.JsonConvert.SerializeObject(response);
                    Console.WriteLine(ddd);
                    //Console.WriteLine(ddd);
                }
                if (response.StatusCode == HttpStatusCode.OK)
                {
HDL_ON/Entity/Function/Scene.cs
@@ -3,6 +3,7 @@
using HDL_ON.Common;
using HDL_ON.DAL.Server;
using HDL_ON.UI;
using HDL_ON.UI.UI2.Intelligence.Automation;
using Shared;
namespace HDL_ON.Entity
@@ -86,6 +87,14 @@
        /// 是否允许删除
        /// </summary>
        public bool can_delete = true;
        /// <summary>
        /// 是否允许编辑
        /// </summary>
        public bool can_edit = true;
        /// <summary>
        /// 是否是网关本地场景
        /// </summary>
        public bool local = false;
        /// <summary>
        /// 创建该场景的用户ID
@@ -561,12 +570,24 @@
        /// <returns></returns>
        private Function ConvertFunctionObject()
        {
            var localFunction = FunctionList.List.GetDeviceFunctionList().Find((obj) => obj.sid == sid);
            if(localFunction == null)
            Function temp = null;
            if (type == "7")
            {
                localFunction = FunctionList.List.groupControls.Find((obj) => obj.sid == sid);
                var logic = Logic.LogicList.Find((obj) => obj.sid == sid);
                if (logic != null) {
                    temp = new Function();
                    temp.name = logic.name;
            }
            return localFunction;
            }
            else
            {
                temp = FunctionList.List.GetDeviceFunctionList().Find((obj) => obj.sid == sid);
                if (temp == null)
                {
                    temp = FunctionList.List.groupControls.Find((obj) => obj.sid == sid);
                }
            }
            return temp;
        }
@@ -577,6 +598,23 @@
        public string GetFunctionScnenInfo()
        {
            var sceneFunctionInfo = "";
            if (type == "7")
            {
                foreach (var sfs in status)
                {
                    if (sfs.key == "enable")
                    {
                        if (sfs.value == "true")
                            return Language.StringByID(StringId.OpenArm);
                        else
                        {
                            return Language.StringByID(StringId.Close);
                        }
                    }
                }
            }
            else
            {
            foreach (var sfs in status)
            {
                if (sfs.key == FunctionAttributeKey.OnOff)
@@ -663,6 +701,7 @@
            {
                sceneFunctionInfo += " " + perSongName.value;
            }
            }
            return sceneFunctionInfo;
        }
@@ -670,6 +709,8 @@
        /// 设备
        /// 场景 =scene
        /// 群控=5
        /// 自动化=7
        ///
        /// </summary>
        public string type = "0";
    }
HDL_ON/Entity/FunctionList.cs
@@ -282,6 +282,8 @@
                SPK.SensorSmoke,
                SPK.SensorWater,
                SPK.SensorGas,
                SPK.SensorDryContact,
                SPK.SensorDryContact2,
            };
            return Functions.FindAll((obj) => spkList.Contains(obj.spk));
HDL_ON/HDL_ON.projitems
@@ -598,6 +598,8 @@
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Electrical\AirSwitchP3EnergyPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Electrical\AirSwitchP3SubloopEnergyPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\Constant.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Scene\SceneTargetTypeChoosePage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Scene\SceneAutomationListChoosePage.cs" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="$(MSBuildThisFileDirectory)Entity\Device\" />
HDL_ON/UI/MainPage.cs
@@ -26,7 +26,7 @@
        /// <summary>
        /// 版本号
        /// </summary>
        public static string VersionString = "2.3.0";
        public static string VersionString = "2.3.1";
        ///// <summary>
        ///// 客户端类型
        ///// </summary>
@@ -632,11 +632,9 @@
        public static void Log(string msg)
        {
#if DEBUG
            if (msg.Contains("收到数据")
                || msg.Contains("发送")
                || msg.Contains("接收到推送")
                   || msg.Contains("api")
                || msg.Contains("读取功能状态")
            if (msg.Contains("收到")
                //|| msg.Contains("发送")
                //|| msg.Contains("接收")
                || true
                )
                Console.WriteLine(msg);
HDL_ON/UI/UI0-Public/TopViewDiv.cs
@@ -42,6 +42,8 @@
        /// </summary>
        Action backAction;
        public int maginY = 0;
        public TopViewDiv(FrameLayout frame, string str)
        {
            baseView = frame;
@@ -84,7 +86,7 @@
        {
            contentView = new FrameLayout()
            {
                Height = Application.GetRealHeight(64),
                Height = Application.GetRealHeight(64+ maginY),
                BackgroundColor = color,
            };
            baseView.AddChidren(contentView);
@@ -92,7 +94,7 @@
            Button btnBackIcon = new Button()
            {
                X = Application.GetRealWidth(10),
                Y = Application.GetRealHeight(29),
                Y = Application.GetRealHeight(29 + maginY),
                Width = Application.GetRealWidth(40),
                Height = Application.GetRealWidth(28),
                UnSelectedImagePath = "Public/BackIcon.png",
@@ -102,7 +104,7 @@
            btnTilte = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(30),
                Y = Application.GetRealHeight(30 + maginY),
                Width = Application.GetRealWidth(270),
                Height = Application.GetRealHeight(25),
                TextAlignment = TextAlignment.Center,
HDL_ON/UI/UI1-Login/LoginPage.cs
@@ -330,7 +330,7 @@
                    etAccount.Text = "13533335801";
                    etAccount.Text = "13682244600";
                    etAccount.Text = "marketing@australindo.co.id";
                    etAccount.Text = "dcai.assist@gmail.com";
                    etAccount.Text = "support7@hdlautomation.com";
                }
                else
HDL_ON/UI/UI2/3-Intelligence/Scene/NewSceneMenuListPage.cs
@@ -24,13 +24,15 @@
        public void LoadPage()
        {
            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
            new TopViewDiv(bodyView, Language.StringByID(StringId.NewScene)).LoadTopView();
            var topView = new TopViewDiv(bodyView, Language.StringByID(StringId.NewScene));
            topView.maginY = 10;
            topView.LoadTopView();
            #region 添加场景
            FrameLayout addSceneView = new FrameLayout()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(67),
                Y = Application.GetRealHeight(67 + 10),
                Width = Application.GetRealWidth(361),
                Height = Application.GetRealWidth(202),
                Radius = (uint)Application.GetRealWidth(12),
HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs
@@ -97,14 +97,16 @@
        public void LoadPage()
        {
            new TopViewDiv(bodyView, Language.StringByID(StringId.NewScene)).LoadTopView();
            var topView = new TopViewDiv(bodyView, Language.StringByID(StringId.NewScene));
            topView.maginY = 10;
            topView.LoadTopView();
     
            bodyView.BackgroundColor = CSS_Color.MainBackgroundColor;
            var contentView = new VerticalScrolViewLayout()
            {
                Y = Application.GetRealHeight(64),
                Height = Application.GetRealHeight(603 - 50),
                Y = Application.GetRealHeight(64+10),
                Height = Application.GetRealHeight(603 - 50 -10),
                //BackgroundColor = CSS_Color.DividingLineColor,
            };
            bodyView.AddChidren(contentView);
@@ -423,6 +425,37 @@
                };
                row.AddChidren(btnFunctionInfo);
                var btnFunctionName = new Button()
                {
                    X = Application.GetRealWidth(16),
                    Height = Application.GetRealWidth(44),
                    TextAlignment = TextAlignment.CenterLeft,
                    TextColor = CSS_Color.FirstLevelTitleColor,
                    TextSize = CSS_FontSize.TextFontSize,
                    Text = scenefunction.localFunction.name,
                };
                row.AddChidren(btnFunctionName);
                if (scenefunction.type == "7")
                {
                    btnFunctionName.Gravity = Gravity.CenterVertical;
                    btnFunctionInfo.TextAlignment = TextAlignment.CenterRight;
                    btnFunctionInfo.Gravity = Gravity.CenterVertical;
                    btnFunctionName.MouseUpEventHandler = (sender, e) =>{
                        try
                        {
                            LoadAutomationSettingDialog(scenefunction, btnFunctionInfo);
                        }
                        catch (Exception ex)
                        {
                            MainPage.Log($"load automation error : {ex.Message}");
                        }
                    };
                }
                else
                {
                var btnFunctionDelayInfo = new Button()
                {
                    Width = Application.GetRealWidth(327),
@@ -443,17 +476,6 @@
                    btnFunctionDelayInfo.Text = Language.StringByID(StringId.NoDelay);
                }
                var btnFunctionName = new Button()
                {
                    X = Application.GetRealWidth(16),
                    Height = Application.GetRealWidth(44),
                    TextAlignment = TextAlignment.CenterLeft,
                    TextColor = CSS_Color.FirstLevelTitleColor,
                    TextSize = CSS_FontSize.TextFontSize,
                    Text = scenefunction.localFunction.name,
                };
                row.AddChidren(btnFunctionName);
                var btnFunctionFloorAndRoom = new Button()
                {
                    X = Application.GetRealWidth(16),
@@ -465,7 +487,6 @@
                    Text = scenefunction.localFunction.GetRoomListName(),
                };
                row.AddChidren(btnFunctionFloorAndRoom);
                EventHandler<MouseEventArgs> skipEvent= (sender, e) =>
                {
                    try
@@ -474,7 +495,8 @@
                        MainPage.BasePageView.AddChidren(ssf);
                        ssf.LoadPage();
                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                    }catch(Exception ex)
                        }
                        catch (Exception ex)
                    {
                        MainPage.Log($"load SceneFunctionInfoEditPage error : {ex.Message}");
                    }
@@ -482,6 +504,7 @@
                btnFunctionName.MouseUpEventHandler = skipEvent;
                btnFunctionFloorAndRoom.MouseUpEventHandler = skipEvent;
                }
                Button btnDelSceneFunction = new Button()
                {
@@ -508,6 +531,23 @@
        string GetFunctionScnenInfo(SceneFunction sceneFunction)
        {
            var sceneFunctionInfo = "";
            if (sceneFunction.type == "7")
            {
                foreach (var sfs in sceneFunction.status)
                {
                    if (sfs.key == "enable")
                    {
                        if (sfs.value == "true")
                            return Language.StringByID(StringId.OpenArm);
                        else
                        {
                            return Language.StringByID(StringId.Close);
                        }
                    }
                }
            }
            else
            {
            foreach (var sfs in sceneFunction.status)
            {
                if (sfs.key == FunctionAttributeKey.OnOff)
@@ -595,6 +635,7 @@
            if (perSongName != null)
            {
                sceneFunctionInfo += " " + perSongName.value;
                }
            }
            return sceneFunctionInfo;
        }
@@ -687,6 +728,116 @@
        }
        /// <summary>
        /// 加载自动化配置弹窗
        /// </summary>
        void LoadAutomationSettingDialog(SceneFunction temp,Button btnTipText)
        {
            Dialog dialog = new Dialog();
            var pView = new FrameLayout()
            {
                BackgroundColor = CSS_Color.DialogTransparentColor1,
            };
            dialog.AddChidren(pView);
            var optionBaseView = new FrameLayout()
            {
                Y = Application.GetRealHeight(500),
                Height = Application.GetRealHeight(160),
                AnimateSpeed = 0.3f,
                Animate = Animate.DownToUp,
            };
            pView.AddChidren(optionBaseView);
            var optionView = new VerticalScrolViewLayout()
            {
                Gravity = Gravity.CenterHorizontal,
                Width = Application.GetRealWidth(343),
                Height = Application.GetRealHeight(100),
                BackgroundColor = CSS_Color.MainBackgroundColor,
                Radius = (uint)Application.GetRealWidth(12),
                ScrollEnabled = false,
            };
            optionBaseView.AddChidren(optionView);
            var btnOn = new Button()
            {
                Height = Application.GetRealHeight(50),
                TextAlignment = TextAlignment.Center,
                TextColor = CSS_Color.TextualColor,
                SelectedTextColor = CSS_Color.MainColor,
                TextSize = CSS_FontSize.SubheadingFontSize,
                TextID = StringId.OpenArm,
            };
            optionView.AddChidren(btnOn);
            optionView.AddChidren(new Button() { Height = Application.GetRealHeight(1), BackgroundColor = CSS_Color.DividingLineColor });
            var btnOff = new Button()
            {
                Height = Application.GetRealHeight(50),
                TextAlignment = TextAlignment.Center,
                TextColor = CSS_Color.TextualColor,
                SelectedTextColor = CSS_Color.MainColor,
                TextSize = CSS_FontSize.SubheadingFontSize,
                TextID = StringId.Close,
            };
            optionView.AddChidren(btnOff);
            var btnCancel = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(8) + optionView.Bottom,
                Width = Application.GetRealWidth(343),
                Height = Application.GetRealHeight(50),
                BackgroundColor = CSS_Color.MainBackgroundColor,
                Radius = (uint)Application.GetRealWidth(12),
                TextID = StringId.Cancel,
                TextColor = CSS_Color.WarningColor,
                TextSize = CSS_FontSize.SubheadingFontSize,
            };
            optionBaseView.AddChidren(btnCancel);
            dialog.Show();
            pView.MouseUpEventHandler = (sender, e) =>
            {
                dialog.Close();
            };
            btnCancel.MouseUpEventHandler = (sender, e) =>
            {
                dialog.Close();
            };
            btnOn.MouseUpEventHandler = (sender, e) =>
            {
                dialog.Close();
                temp = new SceneFunction();
                temp.type = "7";
                temp.status.Add(new SceneFunctionStatus()
                {
                    key = "enable",
                    value = "true"
                });
                btnTipText.TextID = StringId.OpenArm;
            };
            btnOff.MouseUpEventHandler = (sender, e) =>
            {
                dialog.Close();
                temp = new SceneFunction();
                temp.type = "7";
                temp.status.Add(new SceneFunctionStatus()
                {
                    key = "enable",
                    value = "false"
                });
                btnTipText.TextID = StringId.Close;
            };
        }
    }
    //--------------------------------------
    public partial class SceneAddPage
@@ -727,7 +878,8 @@
        void LoadEvent_ChangeFunctionList()
        {
            btnAddFunctionTitle.MouseUpEventHandler = (sender, e) => {
                var sefp = new SceneFunctionListChoosePage(scene, refreshFunctionRowAction);
                //var sefp = new SceneFunctionListChoosePage(scene, refreshFunctionRowAction);
                var sefp = new SceneTargetTypeChoosePage(scene, refreshFunctionRowAction);
                MainPage.BasePageView.AddChidren(sefp);
                sefp.LoadPage();
                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAutomationListChoosePage.cs
New file
@@ -0,0 +1,239 @@
using System;
using System.Collections.Generic;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using HDL_ON.UI.UI2.Intelligence.Automation;
using Shared;
namespace HDL_ON.UI
{
    public class SceneAutomationListChoosePage : FrameLayout
    {
        FrameLayout bodyView;
        Scene scene;
        Action refreshAction;
        List<Logic> addedList = new List<Logic>();
        public SceneAutomationListChoosePage(Scene function, Action action)
        {
            scene = function;
            bodyView = this;
            refreshAction = action;
            refreshAction += () => {
                this.RemoveFromParent();
            };
        }
        public void LoadPage()
        {
            this.bodyView.BackgroundColor = CSS_Color.MainBackgroundColor;
            var topView = new TopViewDiv(bodyView,Language.StringByID( StringId.SelectAutomation));
            topView.maginY = 10;
            topView.LoadTopView();
            var contentView = new VerticalScrolViewLayout()
            {
                Y = Application.GetRealHeight(74),
                Height = Application.GetRealHeight(667-80),
            };
            bodyView.AddChidren(contentView);
            foreach (var logic in Logic.LogicList)
            {
                var funtionView = new FrameLayout()
                {
                    Height = Application.GetRealHeight(50),
                };
                contentView.AddChidren(funtionView);
                Button btnRight = new Button()
                {
                    X = Application.GetRealWidth(339),
                    Gravity = Gravity.CenterVertical,
                    Width = Application.GetMinRealAverage(16),
                    Height = Application.GetMinRealAverage(16),
                    UnSelectedImagePath = "Public/Right.png",
                };
                funtionView.AddChidren(btnRight);
                if (scene.functions.Find((obj) => obj.sid == logic.sid) != null)
                {
                    addedList.Add(logic); var btnTipAdded = new Button()
                    {
                        Width = Application.GetRealWidth(327),
                        TextAlignment = TextAlignment.CenterRight,
                        TextColor = CSS_Color.MainColor,
                        TextSize = CSS_FontSize.TextFontSize,
                        TextID = StringId.Added
                    };
                    funtionView.AddChidren(btnTipAdded);
                    addedList.Add(logic);
                }
                var btnFunctionTitle = new Button()
                {
                    X = Application.GetRealWidth(16),
                    Width = Application.GetRealWidth(220),
                    TextAlignment = TextAlignment.CenterLeft,
                    TextColor = CSS_Color.FirstLevelTitleColor,
                    TextSize = CSS_FontSize.SubheadingFontSize,
                    Text = logic.name
                };
                funtionView.AddChidren(btnFunctionTitle);
                var btnClick = new Button()
                {
                    X = Application.GetRealWidth(300),
                    Width = Application.GetRealWidth(70),
                };
                funtionView.AddChidren(btnClick);
                btnClick.MouseUpEventHandler = (sender, e) =>
                {
                    LoadEditDialog_OnOff(logic.sid);
                };
                contentView.AddChidren(new Button() { Height = 1, BackgroundColor = CSS_Color.DividingLineColor });
            }
        }
        /// <summary>
        /// 加载自动化配置弹窗
        /// </summary>
        void LoadEditDialog_OnOff(string logicSid)
        {
            Dialog dialog = new Dialog();
            var pView = new FrameLayout()
            {
                BackgroundColor = CSS_Color.DialogTransparentColor1,
            };
            dialog.AddChidren(pView);
            var optionBaseView = new FrameLayout()
            {
                Y = Application.GetRealHeight(500),
                Height = Application.GetRealHeight(160),
                AnimateSpeed = 0.3f,
                Animate = Animate.DownToUp,
            };
            pView.AddChidren(optionBaseView);
            var optionView = new VerticalScrolViewLayout()
            {
                Gravity = Gravity.CenterHorizontal,
                Width = Application.GetRealWidth(343),
                Height = Application.GetRealHeight(100),
                BackgroundColor = CSS_Color.MainBackgroundColor,
                Radius = (uint)Application.GetRealWidth(12),
                ScrollEnabled = false,
            };
            optionBaseView.AddChidren(optionView);
            var btnOn = new Button()
            {
                Height = Application.GetRealHeight(50),
                TextAlignment = TextAlignment.Center,
                TextColor = CSS_Color.TextualColor,
                SelectedTextColor = CSS_Color.MainColor,
                TextSize = CSS_FontSize.SubheadingFontSize,
                TextID = StringId.OpenArm,
            };
            optionView.AddChidren(btnOn);
            optionView.AddChidren(new Button() { Height = Application.GetRealHeight(1), BackgroundColor = CSS_Color.DividingLineColor });
            var btnOff = new Button()
            {
                Height = Application.GetRealHeight(50),
                TextAlignment = TextAlignment.Center,
                TextColor = CSS_Color.TextualColor,
                SelectedTextColor = CSS_Color.MainColor,
                TextSize = CSS_FontSize.SubheadingFontSize,
                TextID = StringId.Close,
            };
            optionView.AddChidren(btnOff);
            var btnCancel = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(8) + optionView.Bottom,
                Width = Application.GetRealWidth(343),
                Height = Application.GetRealHeight(50),
                BackgroundColor = CSS_Color.MainBackgroundColor,
                Radius = (uint)Application.GetRealWidth(12),
                TextID = StringId.Cancel,
                TextColor = CSS_Color.WarningColor,
                TextSize = CSS_FontSize.SubheadingFontSize,
            };
            optionBaseView.AddChidren(btnCancel);
            dialog.Show();
            pView.MouseUpEventHandler = (sender, e) =>
            {
                dialog.Close();
            };
            btnCancel.MouseUpEventHandler = (sender, e) =>
            {
                dialog.Close();
            };
            btnOn.MouseUpEventHandler = (sender, e) =>
            {
                dialog.Close();
                var temp = scene.functions.Find((obj) => obj.sid == logicSid);
                if (temp != null)
                {
                    temp.status.Clear();
                }
                else
                {
                    temp = new SceneFunction();
                    temp.type = "7";
                    temp.sid = logicSid;
                    scene.functions.Add(temp);
                }
                temp.status.Add(new SceneFunctionStatus()
                {
                    key = "enable",
                    value = "true"
                });
                refreshAction();
            };
            btnOff.MouseUpEventHandler = (sender, e) =>
            {
                dialog.Close();
                var temp = scene.functions.Find((obj) => obj.sid == logicSid);
                if (temp != null)
                {
                    temp.status.Clear();
                }
                else
                {
                    temp = new SceneFunction();
                    temp.type = "7";
                    temp.sid = logicSid;
                    scene.functions.Add(temp);
                }
                temp.status.Add(new SceneFunctionStatus()
                {
                    key = "enable",
                    value = "false"
                });
                refreshAction();
            };
        }
    }
}
HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs
@@ -98,8 +98,10 @@
        public void LoadPage(Action backRefresh)
        {
             //DB_ResidenceData.Instance.sceneChooseRoomId
            new TopViewDiv(bodyView, Language.StringByID(StringId.EditScene)).LoadTopView(backRefresh);
            var topView = new TopViewDiv(bodyView, Language.StringByID(StringId.EditScene));
            topView.maginY = 10;
            topView.LoadTopView(backRefresh);
            initPage();
        }
@@ -109,8 +111,8 @@
            VerticalScrolViewLayout contentView = new VerticalScrolViewLayout()
            {
                Y = Application.GetRealHeight(64),
                Height = Application.GetRealHeight(603-50),
                Y = Application.GetRealHeight(64 + 10),
                Height = Application.GetRealHeight(603-50-10),
            };
            bodyView.AddChidren(contentView);
            contentView.AddChidren(new Button() { Height = Application.GetRealWidth(12) });
@@ -479,7 +481,6 @@
        void LoadFunctionRow()
        {
            functionListView.RemoveAll();
            functionListView.Height = Application.GetRealWidth(65 * scene.functions.Count);
            for(int i =0;i<scene.functions.Count;)
            {
                var scenefunction = scene.functions[i];
@@ -488,6 +489,7 @@
                    scene.functions.Remove(scenefunction);
                    continue;
                }
                functionListView.Height = Application.GetRealWidth(65 * scene.functions.Count);
                try
                {
                    //将spk实体里面的min max值放入场景功能实体里,要不然数据会丢失 2022-06-21 16:06:45
@@ -552,6 +554,36 @@
                };
                row.AddChidren(btnFunctionInfo);
                var btnFunctionName = new Button()
                {
                    X = Application.GetRealWidth(16),
                    Height = Application.GetRealWidth(44),
                    TextAlignment = TextAlignment.CenterLeft,
                    TextColor = CSS_Color.FirstLevelTitleColor,
                    TextSize = CSS_FontSize.TextFontSize,
                    Text = scenefunction.localFunction.name,
                };
                row.AddChidren(btnFunctionName);
                if (scenefunction.type == "7")
                {
                    btnFunctionName.Gravity = Gravity.CenterVertical;
                    btnFunctionInfo.TextAlignment = TextAlignment.CenterRight;
                    btnFunctionInfo.Gravity = Gravity.CenterVertical;
                    btnFunctionName.MouseUpEventHandler = (sender, e) => {
                        try
                        {
                            LoadAutomationSettingDialog(scenefunction, btnFunctionInfo);
                        }
                        catch (Exception ex)
                        {
                            MainPage.Log($"load automation error : {ex.Message}");
                        }
                    };
                }
                else
                {
                var btnFunctionDelayInfo = new Button()
                {
                    Width = Application.GetRealWidth(327),
@@ -572,16 +604,6 @@
                    btnFunctionDelayInfo.Text = Language.StringByID(StringId.NoDelay);
                }
                var btnFunctionName = new Button()
                {
                    X = Application.GetRealWidth(16),
                    Height = Application.GetRealWidth(44),
                    TextAlignment = TextAlignment.CenterLeft,
                    TextColor = CSS_Color.FirstLevelTitleColor,
                    TextSize = CSS_FontSize.TextFontSize,
                    Text = scenefunction.localFunction.name,
                };
                row.AddChidren(btnFunctionName);
                var btnFunctionFloorAndRoom = new Button()
                {
@@ -608,6 +630,7 @@
                btnFunctionInfo.MouseUpEventHandler = skipEvent;
                btnRight.MouseUpEventHandler = skipEvent;
                row.MouseUpEventHandler = skipEvent;
                }
                Button btnDelSceneFunction = new Button() {
                    BackgroundColor = CSS_Color.WarningColor,
@@ -712,6 +735,172 @@
        }
        /// <summary>
        /// 加载自动化配置弹窗
        /// </summary>
        void LoadAutomationSettingDialog(SceneFunction temp, Button btnTipText)
        {
            Dialog dialog = new Dialog();
            var pView = new FrameLayout()
            {
                BackgroundColor = CSS_Color.DialogTransparentColor1,
            };
            dialog.AddChidren(pView);
            var optionBaseView = new FrameLayout()
            {
                Y = Application.GetRealHeight(500),
                Height = Application.GetRealHeight(160),
                AnimateSpeed = 0.3f,
                Animate = Animate.DownToUp,
            };
            pView.AddChidren(optionBaseView);
            var optionView = new VerticalScrolViewLayout()
            {
                Gravity = Gravity.CenterHorizontal,
                Width = Application.GetRealWidth(343),
                Height = Application.GetRealHeight(100),
                BackgroundColor = CSS_Color.MainBackgroundColor,
                Radius = (uint)Application.GetRealWidth(12),
                ScrollEnabled = false,
            };
            optionBaseView.AddChidren(optionView);
            var btnOn = new Button()
            {
                Height = Application.GetRealHeight(50),
                TextAlignment = TextAlignment.Center,
                TextColor = CSS_Color.TextualColor,
                SelectedTextColor = CSS_Color.MainColor,
                TextSize = CSS_FontSize.SubheadingFontSize,
                TextID = StringId.OpenArm,
            };
            optionView.AddChidren(btnOn);
            optionView.AddChidren(new Button() { Height = Application.GetRealHeight(1), BackgroundColor = CSS_Color.DividingLineColor });
            var btnOff = new Button()
            {
                Height = Application.GetRealHeight(50),
                TextAlignment = TextAlignment.Center,
                TextColor = CSS_Color.TextualColor,
                SelectedTextColor = CSS_Color.MainColor,
                TextSize = CSS_FontSize.SubheadingFontSize,
                TextID = StringId.Close,
            };
            optionView.AddChidren(btnOff);
            var btnCancel = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(8) + optionView.Bottom,
                Width = Application.GetRealWidth(343),
                Height = Application.GetRealHeight(50),
                BackgroundColor = CSS_Color.MainBackgroundColor,
                Radius = (uint)Application.GetRealWidth(12),
                TextID = StringId.Cancel,
                TextColor = CSS_Color.WarningColor,
                TextSize = CSS_FontSize.SubheadingFontSize,
            };
            optionBaseView.AddChidren(btnCancel);
            dialog.Show();
            pView.MouseUpEventHandler = (sender, e) =>
            {
                dialog.Close();
            };
            btnCancel.MouseUpEventHandler = (sender, e) =>
            {
                dialog.Close();
            };
            btnOn.MouseUpEventHandler = (sender, e) =>
            {
                dialog.Close();
                temp = new SceneFunction();
                temp.type = "7";
                temp.status.Add(new SceneFunctionStatus()
                {
                    key = "enable",
                    value = "true"
                });
                var waitPage = new Loading();
                bodyView.AddChidren(waitPage);
                waitPage.Start("");
                new System.Threading.Thread(() => {
                    try
                    {
                        var code = scene.EditScene();
                        Application.RunOnMainThread(() =>
                        {
                            if (code == "0")
                            {
                                btnTipText.TextID = StringId.OpenArm;
                            }
                        });
                    }
                    catch { }
                    finally
                    {
                        Application.RunOnMainThread(() => {
                            if(waitPage!= null)
                            {
                                waitPage.RemoveFromParent();
                                waitPage = null;
                            }
                        });
                    }
                })
                { IsBackground = true }.Start();
            };
            btnOff.MouseUpEventHandler = (sender, e) =>
            {
                dialog.Close();
                temp = new SceneFunction();
                temp.type = "7";
                temp.status.Add(new SceneFunctionStatus()
                {
                    key = "enable",
                    value = "false"
                });
                var waitPage = new Loading();
                bodyView.AddChidren(waitPage);
                waitPage.Start("");
                new System.Threading.Thread(() => {
                    try
                    {
                        var code = scene.EditScene();
                        Application.RunOnMainThread(() =>
                        {
                            if (code == "0")
                            {
                                btnTipText.TextID = StringId.Close;
                            }
                        });
                    }
                    catch { }
                    finally
                    {
                        Application.RunOnMainThread(() => {
                            if (waitPage != null)
                            {
                                waitPage.RemoveFromParent();
                                waitPage = null;
                            }
                        });
                    }
                })
                { IsBackground = true }.Start();
            };
        }
    }
    //--------------------------------------
    public partial class SceneEditPage
@@ -759,7 +948,8 @@
        void LoadEvent_ChangeFunctionList()
        {
            btnAddFunctionTitle.MouseUpEventHandler = (sender, e) => {
                var sefp =new SceneFunctionListChoosePage(scene,refreshFunctionRowAction);
                //var sefp =new SceneFunctionListChoosePage(scene,refreshFunctionRowAction);
                var sefp = new SceneTargetTypeChoosePage(scene, refreshFunctionRowAction);
                MainPage.BasePageView.AddChidren(sefp);
                sefp.LoadPage();
                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
HDL_ON/UI/UI2/3-Intelligence/Scene/SceneFunctionListChoosePage.cs
@@ -57,14 +57,15 @@
        public void LoadPage()
        {
            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
            new TopViewDiv(bodyView, Language.StringByID(StringId.AddFunction)).LoadTopView();
            //new PublicAssmebly().LoadTopView(bodyView, Language.StringByID(StringId.AddFunction));
            var topView = new TopViewDiv(bodyView, Language.StringByID(StringId.AddFunction));
            topView.maginY = 10;
            topView.LoadTopView();
            #region 显示的功能类型切换区域
            showdFunctionTypeRow = new FrameLayout()
            {
                Y = Application.GetRealHeight(64),
                Height = Application.GetRealHeight(62),
                Y = Application.GetRealHeight(64+10),
                Height = Application.GetRealHeight(50),
                BackgroundColor = CSS_Color.MainBackgroundColor,
            };
            bodyView.AddChidren(showdFunctionTypeRow);
@@ -93,30 +94,14 @@
            };
            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);
            //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);
            showdFunctionTypeRow.AddChidren(new Button()
            {
                Y = Application.GetRealHeight(49),
                Gravity = Gravity.CenterHorizontal,
                Width = Application.GetRealWidth(343),
                Height = Application.GetRealWidth(1),
                BackgroundColor = CSS_Color.DividingLineColor,
            });
            #endregion
HDL_ON/UI/UI2/3-Intelligence/Scene/SceneTargetTypeChoosePage.cs
New file
@@ -0,0 +1,158 @@
using System;
using System.Collections.Generic;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using Shared;
namespace HDL_ON.UI
{
    /// <summary>
    /// 场景模板类型选择界面
    /// 功能
    /// 自动化
    /// </summary>
    public class SceneTargetTypeChoosePage : FrameLayout
    {
        FrameLayout bodyView;
        Scene scene;
        /// <summary>
        /// 更新功能row
        /// </summary>
        Action refreshFunctionRowAction;
        public SceneTargetTypeChoosePage(Scene function, Action action)
        {
            bodyView = this;
            scene = function;
            refreshFunctionRowAction = () =>
            {
                this.RemoveFromParent();
                action();
            };
        }
        public void LoadPage()
        {
            bodyView.BackgroundColor = CSS_Color.MainBackgroundColor;
            bodyView.AddChidren(new Button()
            {
                Height = Application.GetRealHeight(20),
                BackgroundColor = CSS_Color.BackgroundColor
            });
            var topView = new TopViewDiv(bodyView,Language.StringByID(StringId.AddExecutionAction));
            topView.maginY = 10;
            topView.LoadTopView();
            var contentView = new VerticalScrolViewLayout()
            {
                Y = Application.GetRealHeight(74),
                Height = Application.GetRealHeight(530),
                ScrollEnabled = false,
            };
            bodyView.AddChidren(contentView);
            var funtionView = new FrameLayout()
            {
                Height = Application.GetRealHeight(50),
            };
            contentView.AddChidren(funtionView);
            var btnFunctionIcon = new Button()
            {
                Gravity = Gravity.CenterVertical,
                X = Application.GetRealWidth(16),
                Width = Application.GetMinRealAverage(22),
                Height = Application.GetMinRealAverage(22),
                UnSelectedImagePath = "Navigation/ClassificationIcon.png",
            };
            funtionView.AddChidren(btnFunctionIcon);
            var btnFunctionRight = new Button()
            {
                X = Application.GetRealWidth(339),
                Gravity = Gravity.CenterVertical,
                Width = Application.GetMinRealAverage(16),
                Height = Application.GetMinRealAverage(16),
                UnSelectedImagePath = "Public/Right.png",
            };
            funtionView.AddChidren(btnFunctionRight);
            var btnFunctionTitle = new Button()
            {
                X = Application.GetRealWidth(50),
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.SubheadingFontSize,
                TextID = StringId.Functions,
            };
            funtionView.AddChidren(btnFunctionTitle);
            btnFunctionTitle.MouseUpEventHandler = (sender, e) => {
                refreshFunctionRowAction += () => {
                    this.RemoveFromParent();
                };
                var sefp = new SceneFunctionListChoosePage(scene, refreshFunctionRowAction);
                MainPage.BasePageView.AddChidren(sefp);
                sefp.LoadPage();
                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
            };
            contentView.AddChidren(new Button() { Height = 1, BackgroundColor = CSS_Color.DividingLineColor });
            var automationView = new FrameLayout()
            {
                Height = Application.GetRealHeight(50),
            };
            contentView.AddChidren(automationView);
            var btnAutomationRight = new Button()
            {
                X = Application.GetRealWidth(339),
                Gravity = Gravity.CenterVertical,
                Width = Application.GetMinRealAverage(16),
                Height = Application.GetMinRealAverage(16),
                UnSelectedImagePath = "Public/Right.png",
            };
            automationView.AddChidren(btnAutomationRight);
            var btnAutomationIcon = new Button()
            {
                Gravity = Gravity.CenterVertical,
                X = Application.GetRealWidth(16),
                Width = Application.GetMinRealAverage(22),
                Height = Application.GetMinRealAverage(22),
                UnSelectedImagePath = "Navigation/IntellectualizationIcon.png",
            };
            automationView.AddChidren(btnAutomationIcon);
            var btnAutomationTitle = new Button()
            {
                X = Application.GetRealWidth(50),
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.SubheadingFontSize,
                TextID = StringId.Automation,
            };
            automationView.AddChidren(btnAutomationTitle);
            btnAutomationTitle.MouseUpEventHandler = (sender, e) => {
                refreshFunctionRowAction += () => {
                    this.RemoveFromParent();
                };
                var sefp = new SceneAutomationListChoosePage(scene, refreshFunctionRowAction);
                MainPage.BasePageView.AddChidren(sefp);
                sefp.LoadPage();
                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
            };
            contentView.AddChidren(new Button() { Height = 1, BackgroundColor = CSS_Color.DividingLineColor });
        }
    }
}
HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs
@@ -53,12 +53,14 @@
        {
            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
            new TopViewDiv(bodyView, sceneFunction.localFunction.name).LoadTopView();
            var topView = new TopViewDiv(bodyView, sceneFunction.localFunction.name);
            topView.maginY = 10;
            topView.LoadTopView();
            contentView = new VerticalScrolViewLayout()
            {
                Y = Application.GetRealHeight(64),
                Height = Application.GetRealHeight(520),
                Y = Application.GetRealHeight(64 + 10),
                Height = Application.GetRealHeight(510),
                ScrollEnabled = false,
            };
            bodyView.AddChidren(contentView);