From 17fd00c16951b025952001c0d815203bb57bd4d9 Mon Sep 17 00:00:00 2001
From: Davin <591807572@qq.com>
Date: 星期一, 31 七月 2023 18:41:38 +0800
Subject: [PATCH] Merge branch 'Dev-Branch' of http://59.41.255.150:6688/r/~wxr/OnPro into Dev-Branch

---
 HDL_ON/UI/UI2/FuntionControlView/Electrical/AirSwitchP3Page.cs |  468 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 468 insertions(+), 0 deletions(-)

diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/AirSwitchP3Page.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/AirSwitchP3Page.cs
new file mode 100644
index 0000000..4bbffd9
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/AirSwitchP3Page.cs
@@ -0,0 +1,468 @@
+锘縰sing System;
+using HDL_ON.Entity;
+using HDL_ON.UI.CSS;
+using Shared;
+
+namespace HDL_ON.UI
+{
+    public class AirSwitchP3Page : FrameLayout
+    {
+
+        #region 鎺т欢闆嗗悎
+        static AirSwitchP3Page bodyView;
+        /// <summary>
+        /// 鎺у埗鐣岄潰鍔犺浇鍖哄煙
+        /// </summary>
+        FrameLayout controlView;
+        /// <summary>
+        /// 鍔熻兘澶囨敞
+        /// </summary>
+        Button btnFunctionName;
+        /// <summary>
+        /// 鍔熻兘鎵�灞炴ゼ灞傘�佹埧闂�
+        /// </summary>
+        Button btnFromFoorAndRoom;
+        /// <summary>
+        /// 鏀惰棌鎸夐挳
+        /// </summary>
+        Button btnCollection;
+        /// <summary>
+        /// 缁х數鍣ㄧ姸鎬佸浘鏍�
+        /// </summary>
+        Button btnSwitchIcon;
+        /// <summary>
+        /// 寮�鍏虫寜閽�
+        /// </summary>
+        Button btnSwitch;
+
+
+        /// <summary>
+        /// 杩愯鐘舵��-鍔ㄦ�佸姞杞�
+        /// </summary>
+        Button btnRunStatus;
+
+        #endregion
+
+        #region 鍖哄煙鍙橀噺
+        Function function;
+        Button btnCollection_Out;
+        Button btnFunctionName_Out;
+        Button btnFromFloor_Out;
+        /// <summary>
+        /// 鍒锋柊鏄剧ず淇℃伅
+        /// </summary>
+        Action actionRefresh;
+        #endregion
+
+        public AirSwitchP3Page(Function func)
+        {
+            bodyView = this;
+            function = func;
+
+        }
+        /// <summary>
+        /// 鍔犺浇鐣岄潰
+        /// </summary>
+        /// <param name="btnCollectionIcon">鏀惰棌鎸夐挳</param>
+        /// <param name="btnFunctionName">鍔熻兘鍚嶇О淇℃伅鎸夐挳</param>
+        /// <param name="btnFromFloor">鍔熻兘妤煎眰淇℃伅鎸夐挳</param>
+        public void LoadPage(Button btnCollectionIcon, Button btnFunctionNameOut, Button btnFromFloorOut)
+        {
+            if (btnCollectionIcon == null)
+            {
+                btnCollection_Out = new Button();
+                btnFunctionName_Out = new Button();
+                btnFromFloor_Out = new Button();
+            }
+            else
+            {
+                btnCollection_Out = btnCollectionIcon;
+                btnFunctionName_Out = btnFunctionNameOut;
+                btnFromFloor_Out = btnFromFloorOut;
+            }
+            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
+
+            controlView = new FrameLayout()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(88),
+                Width = Application.GetRealWidth(327),
+                Height = Application.GetRealHeight(526),
+                BackgroundImagePath = "Public/Fragmentbg.png",
+            };
+            bodyView.AddChidren(controlView);
+
+            btnFunctionName = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = Application.GetRealHeight(14),
+                Width = Application.GetRealWidth(270),
+                Height = Application.GetRealHeight(37),
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = CSS_FontSize.EmphasisFontSize_FirstLevel,
+                Text = function.name,
+            };
+            controlView.AddChidren(btnFunctionName);
+
+            btnFromFoorAndRoom = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = btnFunctionName.Bottom,
+                Width = Application.GetRealWidth(270),
+                Height = Application.GetRealHeight(21),
+                TextColor = CSS_Color.PromptingColor1,
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                Text = function.GetRoomListName()
+            };
+            controlView.AddChidren(btnFromFoorAndRoom);
+
+            btnCollection = new Button()
+            {
+                X = Application.GetRealWidth(273),
+                Y = Application.GetRealHeight(14),
+                Width = Application.GetMinRealAverage(40),
+                Height = Application.GetMinRealAverage(40),
+                SelectedImagePath = "Collection/CollectionIcon.png",
+                UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
+                IsSelected = function.collect
+            };
+            controlView.AddChidren(btnCollection);
+
+            btnSwitchIcon = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(102),
+                Width = Application.GetRealWidth(148),
+                Height = Application.GetRealWidth(198),
+                UnSelectedImagePath = "FunctionIcon/Electrical/AirSwitch/AirSwitchBgIcon.png",
+                SelectedImagePath = "FunctionIcon/Electrical/AirSwitch/AirSwitchBgOnIcon.png",
+                IsSelected = function.trait_on_off.curValue.ToString() == "on"
+            };
+            controlView.AddChidren(btnSwitchIcon);
+
+            //杩愯鐘舵��
+            if (function.GetAttribute("run_status") != null)
+            {
+
+                btnRunStatus = new Button()
+                {
+                    Y = Application.GetRealHeight(300),
+                    Height = Application.GetRealHeight(58),
+                    TextAlignment = TextAlignment.Center,
+                    TextSize = CSS_FontSize.TextFontSize,
+                };
+                controlView.AddChidren(btnRunStatus); 
+                UpdataRunStatus();
+            }
+
+            //if (function.GetAttribute("power") != null)
+            {
+                Button btnEnergyIcon = new Button()
+                {
+                    Y = Application.GetRealHeight(377),
+                    Gravity = Gravity.CenterHorizontal,
+                    Width = Application.GetRealWidth(32),
+                    Height = Application.GetRealWidth(32),
+                    UnSelectedImagePath = "FunctionIcon/Electrical/AirSwitch/EnergyIcon.png"
+                };
+                controlView.AddChidren(btnEnergyIcon);
+
+
+                Button btnEnergyText = new Button()
+                {
+                    Y = Application.GetRealHeight(400),
+                    Gravity = Gravity.CenterHorizontal,
+                    Height = Application.GetRealWidth(47),
+                    TextAlignment = TextAlignment.Center,
+                    TextID = StringId.EnergyMonitoring,
+                    TextColor = CSS_Color.TextualColor,
+                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                };
+                controlView.AddChidren(btnEnergyText);
+
+                EventHandler<MouseEventArgs> eventHandler = (sender, e) => {
+                    var skipView = new AirSwitchP3EnergyPage(function);
+                    MainPage.BasePageView.AddChidren(skipView);
+                    skipView.LoadPage();
+                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                };
+                btnEnergyIcon.MouseUpEventHandler = eventHandler;
+                btnEnergyText.MouseUpEventHandler = eventHandler;
+
+
+
+            }
+
+
+
+
+            btnSwitch = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(466),// + btnSwitchIcon.Bottom,
+                Width = Application.GetMinRealAverage(32),
+                Height = Application.GetMinRealAverage(32),
+                UnSelectedImagePath = "Public/PowerClose.png",
+                SelectedImagePath = "Public/PowerOpen.png",
+                IsSelected = function.trait_on_off.curValue.ToString() == "on"
+            };
+            controlView.AddChidren(btnSwitch);
+
+            new TopViewDiv(bodyView, Language.StringByID(StringId.Electric)).LoadTopView_FunctionTop(function, actionRefresh, false);
+            new System.Threading.Thread(() =>
+            {
+                DriverLayer.Control.Ins.SendReadCommand(function);
+            })
+            { IsBackground = true }.Start();
+
+
+            LoadEventList();
+        }
+
+
+
+
+        /// <summary>
+        /// 鏇存柊鐘舵��
+        /// </summary>
+        public static void UpdataState(Function updataTemp)
+        {
+            Application.RunOnMainThread(() =>
+            {
+                try
+                {
+                    if (bodyView == null)
+                        return;
+                    if (updataTemp.spk == bodyView.function.spk && updataTemp.sid == bodyView.function.sid)
+                    {
+                        bodyView.btnSwitch.IsSelected = bodyView.btnSwitchIcon.IsSelected = updataTemp.trait_on_off.curValue.ToString() == "on";
+
+                        if (updataTemp.GetAttribute("run_status") != null)
+                        {
+                            bodyView.UpdataRunStatus();
+                        }
+                    }
+                }
+                catch (Exception ex)
+                {
+                    MainPage.Log($"AirSwitch error {ex.Message}");
+                }
+            });
+        }
+        /// <summary>
+        /// 鏇存柊杩愯鐘舵��
+        /// </summary>
+        void UpdataRunStatus()
+        {
+            if (btnRunStatus == null)
+                return;
+            var runStatus = function.GetAttrState("run_status");
+            if (Language.CurrentLanguage == "Chinese")
+            {
+                switch (runStatus)
+                {
+                    //* RUN:姝e父宸ヤ綔涓�
+                    case "RUN":
+                        btnRunStatus.Text = "宸ヤ綔涓�";
+                        btnRunStatus.TextColor = CSS_Color.MainColor;
+                        break;
+                    //* HV:杩囧帇棰勮
+                    case "HV":
+                        btnRunStatus.Text = "杩囧帇棰勮";
+                        btnRunStatus.TextColor = 0xFFFC9C04;
+                        break;
+                    //* LV:娆犲帇棰勮
+                    case "LV":
+                        btnRunStatus.Text = "娆犲帇棰勮";
+                        btnRunStatus.TextColor = 0xFFFC9C04;
+                        break;
+                    //* HC:杩囨祦棰勮
+                    case "HC":
+                        btnRunStatus.Text = "杩囨祦棰勮";
+                        btnRunStatus.TextColor = 0xFFFC9C04;
+                        break;
+                    //* HT:杩囨俯棰勮
+                    case "HT":
+                        btnRunStatus.Text = "杩囨俯棰勮";
+                        btnRunStatus.TextColor = 0xFFFC9C04;
+                        break;
+                    //* LEAK:婕忕數棰勮
+                    case "LEAK":
+                        btnRunStatus.Text = "婕忕數棰勮";
+                        btnRunStatus.TextColor = 0xFFFC9C04;
+                        break;
+                    //* ERR_HV:杩囧帇鎶ヨ
+                    case "ERR_HV":
+                        btnRunStatus.Text = "杩囧帇鎶ヨ";
+                        btnRunStatus.TextColor = 0xFFFF8080;
+                        break;
+                    //* ERR_LV:娆犲帇鎶ヨ
+                    case "ERR_LV":
+                        btnRunStatus.Text = "娆犲帇鎶ヨ";
+                        btnRunStatus.TextColor = 0xFFFF8080;
+                        break;
+                    //* ERR_HC:杩囨祦鎶ヨ
+                    case "ERR_HC":
+                        btnRunStatus.Text = "杩囨祦鎶ヨ";
+                        btnRunStatus.TextColor = 0xFFFF8080;
+                        break;
+                    //* ERR_HT:杩囨俯鎶ヨ
+                    case "ERR_HT":
+                        btnRunStatus.Text = "杩囨俯鎶ヨ";
+                        btnRunStatus.TextColor = 0xFFFF8080;
+                        break;
+                    //* ERR_LEAK:婕忕數鎶ヨ
+                    case "ERR_LEAK":
+                        btnRunStatus.Text = "婕忕數鎶ヨ";
+                        btnRunStatus.TextColor = 0xFFFF8080;
+                        break;
+                }
+            }
+            else
+            {
+                switch (runStatus)
+                {
+                    //* RUN:姝e父宸ヤ綔涓�
+                    case "RUN":
+                        btnRunStatus.Text = "At work";
+                        btnRunStatus.TextColor = CSS_Color.MainColor;
+                        break;
+                    //* HV:杩囧帇棰勮
+                    case "HV":
+                        btnRunStatus.Text = "Overvoltage warning";
+                        btnRunStatus.TextColor = 0xFFFC9C04;
+                        break;
+                    //* LV:娆犲帇棰勮
+                    case "LV":
+                        btnRunStatus.Text = "Undervoltage warning";
+                        btnRunStatus.TextColor = 0xFFFC9C04;
+                        break;
+                    //* HC:杩囨祦棰勮
+                    case "HC":
+                        btnRunStatus.Text = "Overcurrent warning";
+                        btnRunStatus.TextColor = 0xFFFC9C04;
+                        break;
+                    //* HT:杩囨俯棰勮
+                    case "HT":
+                        btnRunStatus.Text = "Overtemperature warning";
+                        btnRunStatus.TextColor = 0xFFFC9C04;
+                        break;
+                    //* LEAK:婕忕數棰勮
+                    case "LEAK":
+                        btnRunStatus.Text = "Leakage warning";
+                        btnRunStatus.TextColor = 0xFFFC9C04;
+                        break;
+                    //* ERR_HV:杩囧帇鎶ヨ
+                    case "ERR_HV":
+                        btnRunStatus.Text = "Overvoltage alarm";
+                        btnRunStatus.TextColor = 0xFFFF8080;
+                        break;
+                    //* ERR_LV:娆犲帇鎶ヨ
+                    case "ERR_LV":
+                        btnRunStatus.Text = "Undervoltage alarm";
+                        btnRunStatus.TextColor = 0xFFFF8080;
+                        break;
+                    //* ERR_HC:杩囨祦鎶ヨ
+                    case "ERR_HC":
+                        btnRunStatus.Text = "Overcurrent alarm";
+                        btnRunStatus.TextColor = 0xFFFF8080;
+                        break;
+                    //* ERR_HT:杩囨俯鎶ヨ
+                    case "ERR_HT":
+                        btnRunStatus.Text = "Overtemperature alarm";
+                        btnRunStatus.TextColor = 0xFFFF8080;
+                        break;
+                    //* ERR_LEAK:婕忕數鎶ヨ
+                    case "ERR_LEAK":
+                        btnRunStatus.Text = "Leakage alarm";
+                        btnRunStatus.TextColor = 0xFFFF8080;
+                        break;
+                }
+            }
+        }
+
+        /// <summary>
+        /// 鍔犺浇浜嬩欢鍒楄〃
+        /// </summary>
+        void LoadEventList()
+        {
+            LoadSwitchEvent();
+            LoadCollectionEvent();
+
+            //鍥為��鍒锋柊淇℃伅浜嬩欢
+            actionRefresh = () => {
+                btnFunctionName.Text = btnFunctionName_Out.Text = function.name;
+                btnFromFloor_Out.Text = btnFromFoorAndRoom.Text = function.GetRoomListName();
+                //function.SaveFunctionData(true);
+            };
+        }
+
+        /// <summary>
+        /// 鏀惰棌鍔熻兘鎸夐挳浜嬩欢
+        /// </summary>
+        void LoadCollectionEvent()
+        {
+            btnCollection.MouseUpEventHandler += (sender, e) => {
+                btnCollection.IsSelected = function.collect = btnCollection_Out.IsSelected = !btnCollection.IsSelected;
+                function.CollectFunction();
+            };
+        }
+
+        /// <summary>
+        /// 鍔犺浇寮�鍏充簨浠�
+        /// </summary>
+        void LoadSwitchEvent()
+        {
+            btnSwitchIcon.MouseUpEventHandler = (sender, e) =>
+            {
+                if (!function.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
+                btnSwitch.IsSelected = btnSwitchIcon.IsSelected = !btnSwitchIcon.IsSelected;
+                new System.Threading.Thread(() =>
+                {
+                    function.trait_on_off.curValue = btnSwitchIcon.IsSelected ? "on" : "off";
+                    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                    d.Add("on_off", function.trait_on_off.curValue.ToString());
+                    DriverLayer.Control.Ins.SendWriteCommand(function, d);
+                })
+                { IsBackground = true }.Start();
+            };
+            btnSwitch.MouseUpEventHandler = (sender, e) =>
+            {
+                if (!function.online)
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(MainPage.BaseView);
+                    return;
+                }
+                btnSwitchIcon.IsSelected = btnSwitch.IsSelected = !btnSwitch.IsSelected;
+                new System.Threading.Thread(() =>
+                {
+                    function.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
+                    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                    d.Add("on_off", function.trait_on_off.curValue.ToString());
+                    DriverLayer.Control.Ins.SendWriteCommand(function, d);
+                })
+                { IsBackground = true }.Start();
+
+            };
+
+        }
+
+
+    }
+}
\ No newline at end of file

--
Gitblit v1.8.0