mac
2023-11-06 cc57e8d53611813232e8f5761aca452a020e031a
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();
            };
        }
    }
}