From 07c91e3b27d10bad17ad2f805aab7b74e24fad2b Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期一, 06 十一月 2023 14:58:48 +0800
Subject: [PATCH] 场景增加配置自动化使能;安防增加干接点触发条件

---
 HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs |  390 ++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 271 insertions(+), 119 deletions(-)

diff --git a/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs b/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs
index 4586b64..c4219e2 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs
+++ b/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,25 +425,6 @@
                 };
                 row.AddChidren(btnFunctionInfo);
 
-                var btnFunctionDelayInfo = new Button()
-                {
-                    Width = Application.GetRealWidth(327),
-                    Y = Application.GetRealWidth(35),
-                    Height = Application.GetRealWidth(32),
-                    TextAlignment = TextAlignment.TopRight,
-                    TextColor = CSS_Color.PromptingColor1,
-                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                };
-                row.AddChidren(btnFunctionDelayInfo);
-
-                if (Convert.ToInt32(scenefunction.delay) > 0)
-                {
-                    btnFunctionDelayInfo.Text = Language.StringByID(StringId.Delay) + " " + new Scene() { delay = scenefunction.delay }.GetDelayText();
-                }
-                else
-                {
-                    btnFunctionDelayInfo.Text = Language.StringByID(StringId.NoDelay);
-                }
 
                 var btnFunctionName = new Button()
                 {
@@ -454,34 +437,74 @@
                 };
                 row.AddChidren(btnFunctionName);
 
-                var btnFunctionFloorAndRoom = new Button()
+                if (scenefunction.type == "7")
                 {
-                    X = Application.GetRealWidth(16),
-                    Y = Application.GetRealWidth(24),
-                    Height = Application.GetRealWidth(41),
-                    TextAlignment = TextAlignment.CenterLeft,
-                    TextColor = CSS_Color.PromptingColor1,
-                    TextSize = CSS_FontSize.TextFontSize,
-                    Text = scenefunction.localFunction.GetRoomListName(),
-                };
-                row.AddChidren(btnFunctionFloorAndRoom);
+                    btnFunctionName.Gravity = Gravity.CenterVertical;
+                    btnFunctionInfo.TextAlignment = TextAlignment.CenterRight;
+                    btnFunctionInfo.Gravity = Gravity.CenterVertical;
 
-                EventHandler<MouseEventArgs> skipEvent= (sender, e) =>
+                    btnFunctionName.MouseUpEventHandler = (sender, e) =>{
+                        try
+                        {
+                            LoadAutomationSettingDialog(scenefunction, btnFunctionInfo);
+                        }
+                        catch (Exception ex)
+                        {
+                            MainPage.Log($"load automation error : {ex.Message}");
+                        }
+                    };
+                }
+                else
                 {
-                    try
+                    var btnFunctionDelayInfo = new Button()
                     {
-                        var ssf = new SceneFunctionInfoEditPage(scene, scenefunction.localFunction.ConvertSceneFunction(), refreshFunctionRowAction);
-                        MainPage.BasePageView.AddChidren(ssf);
-                        ssf.LoadPage();
-                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                    }catch(Exception ex)
+                        Width = Application.GetRealWidth(327),
+                        Y = Application.GetRealWidth(35),
+                        Height = Application.GetRealWidth(32),
+                        TextAlignment = TextAlignment.TopRight,
+                        TextColor = CSS_Color.PromptingColor1,
+                        TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                    };
+                    row.AddChidren(btnFunctionDelayInfo);
+
+                    if (Convert.ToInt32(scenefunction.delay) > 0)
                     {
-                        MainPage.Log($"load SceneFunctionInfoEditPage error : {ex.Message}");
+                        btnFunctionDelayInfo.Text = Language.StringByID(StringId.Delay) + " " + new Scene() { delay = scenefunction.delay }.GetDelayText();
                     }
-                };
+                    else
+                    {
+                        btnFunctionDelayInfo.Text = Language.StringByID(StringId.NoDelay);
+                    }
 
-                btnFunctionName.MouseUpEventHandler = skipEvent;
-                btnFunctionFloorAndRoom.MouseUpEventHandler = skipEvent;
+                    var btnFunctionFloorAndRoom = new Button()
+                    {
+                        X = Application.GetRealWidth(16),
+                        Y = Application.GetRealWidth(24),
+                        Height = Application.GetRealWidth(41),
+                        TextAlignment = TextAlignment.CenterLeft,
+                        TextColor = CSS_Color.PromptingColor1,
+                        TextSize = CSS_FontSize.TextFontSize,
+                        Text = scenefunction.localFunction.GetRoomListName(),
+                    };
+                    row.AddChidren(btnFunctionFloorAndRoom);
+                    EventHandler<MouseEventArgs> skipEvent = (sender, e) =>
+                    {
+                        try
+                        {
+                            var ssf = new SceneFunctionInfoEditPage(scene, scenefunction.localFunction.ConvertSceneFunction(), refreshFunctionRowAction);
+                            MainPage.BasePageView.AddChidren(ssf);
+                            ssf.LoadPage();
+                            MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                        }
+                        catch (Exception ex)
+                        {
+                            MainPage.Log($"load SceneFunctionInfoEditPage error : {ex.Message}");
+                        }
+                    };
+
+                    btnFunctionName.MouseUpEventHandler = skipEvent;
+                    btnFunctionFloorAndRoom.MouseUpEventHandler = skipEvent;
+                }
 
                 Button btnDelSceneFunction = new Button()
                 {
@@ -508,93 +531,111 @@
         string GetFunctionScnenInfo(SceneFunction sceneFunction)
         {
             var sceneFunctionInfo = "";
-            foreach (var sfs in sceneFunction.status)
+            if (sceneFunction.type == "7")
             {
-                if (sfs.key == FunctionAttributeKey.OnOff)
+                foreach (var sfs in sceneFunction.status)
                 {
-                    if (sfs.value == "off")
-                        return Language.StringByID(StringId.Close);
-                }
-            }
-
-            sceneFunctionInfo += Language.StringByID(StringId.Open);
-
-            var modeState = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Mode);
-            var tempState = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.SetTemp);
-            var fanState = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.FanSpeed);
-            if (modeState != null)
-            {
-                sceneFunctionInfo += modeState.GetValueText();
-            }
-            if (tempState != null)
-            {
-                sceneFunctionInfo += tempState.GetValueText();
-                sceneFunctionInfo += tempState.GetUintString();
-            }
-            if (fanState != null)
-            {
-                sceneFunctionInfo += fanState.GetValueText();
-            }
-            var briState = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Brightness);
-            if (briState != null)
-            {
-                sceneFunctionInfo += " " + briState.value + "%";
-            }
-            var perState = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Percent);
-            if (perState != null)
-            {
-                sceneFunctionInfo += " " + perState.value + "%";
-            }
-            var perAngle = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Angle);
-            if (perAngle != null)
-            {
-                sceneFunctionInfo += " "+ perAngle.value + "掳";
-            }
-
-            var perColorful = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Colorful);
-            if(perColorful != null)
-            {
-                if (perColorful.value == "on")
-                {
-                    sceneFunctionInfo += " " + Language.StringByID(StringId.HorseRaceLamp);
-                }
-                else
-                {
-                    if (sceneFunction.localFunction.spk == SPK.GroupControl)
+                    if (sfs.key == "enable")
                     {
-                        sceneFunctionInfo += " " + Language.StringByID(StringId.Close) + " " + Language.StringByID(StringId.HorseRaceLamp);
+                        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)
+                    {
+                        if (sfs.value == "off")
+                            return Language.StringByID(StringId.Close);
+                    }
+                }
+
+                sceneFunctionInfo += Language.StringByID(StringId.Open);
+
+                var modeState = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Mode);
+                var tempState = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.SetTemp);
+                var fanState = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.FanSpeed);
+                if (modeState != null)
+                {
+                    sceneFunctionInfo += modeState.GetValueText();
+                }
+                if (tempState != null)
+                {
+                    sceneFunctionInfo += tempState.GetValueText();
+                    sceneFunctionInfo += tempState.GetUintString();
+                }
+                if (fanState != null)
+                {
+                    sceneFunctionInfo += fanState.GetValueText();
+                }
+                var briState = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Brightness);
+                if (briState != null)
+                {
+                    sceneFunctionInfo += " " + briState.value + "%";
+                }
+                var perState = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Percent);
+                if (perState != null)
+                {
+                    sceneFunctionInfo += " " + perState.value + "%";
+                }
+                var perAngle = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Angle);
+                if (perAngle != null)
+                {
+                    sceneFunctionInfo += " " + perAngle.value + "掳";
+                }
+
+                var perColorful = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Colorful);
+                if (perColorful != null)
+                {
+                    if (perColorful.value == "on")
+                    {
+                        sceneFunctionInfo += " " + Language.StringByID(StringId.HorseRaceLamp);
                     }
                     else
                     {
-                        sceneFunctionInfo = Language.StringByID(StringId.Close) + " " + Language.StringByID(StringId.HorseRaceLamp);
+                        if (sceneFunction.localFunction.spk == SPK.GroupControl)
+                        {
+                            sceneFunctionInfo += " " + Language.StringByID(StringId.Close) + " " + Language.StringByID(StringId.HorseRaceLamp);
+                        }
+                        else
+                        {
+                            sceneFunctionInfo = Language.StringByID(StringId.Close) + " " + Language.StringByID(StringId.HorseRaceLamp);
+                        }
                     }
                 }
-            }
 
-            var perSetVolume = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.SetVolume);
-            if (perSetVolume != null)
-            {
-                sceneFunctionInfo += " " + perSetVolume.value ;
-            }
+                var perSetVolume = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.SetVolume);
+                if (perSetVolume != null)
+                {
+                    sceneFunctionInfo += " " + perSetVolume.value;
+                }
 
-            var perSignal = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Signal);
-            if (perSignal != null)
-            {
-                var p = new HDL_ON.UI.UI2.Intelligence.Automation.PublicInterface();
-                string key = p.GetKey(p.GetHisenseSignalSourceDic(), perSignal.value);
-                sceneFunctionInfo += " " + key;
-            }
+                var perSignal = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Signal);
+                if (perSignal != null)
+                {
+                    var p = new HDL_ON.UI.UI2.Intelligence.Automation.PublicInterface();
+                    string key = p.GetKey(p.GetHisenseSignalSourceDic(), perSignal.value);
+                    sceneFunctionInfo += " " + key;
+                }
 
-            var perVolume = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Volume);
-            if (perVolume != null)
-            {
-                sceneFunctionInfo += " " + perVolume.value;
-            }
+                var perVolume = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Volume);
+                if (perVolume != null)
+                {
+                    sceneFunctionInfo += " " + perVolume.value;
+                }
 
-            var perSongName = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.SongName);
-            if (perSongName != null)
-            {
-                sceneFunctionInfo += " " + perSongName.value;
+                var perSongName = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.SongName);
+                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;

--
Gitblit v1.8.0