From efad979b6fae76fb37a4de7e94e6bac0a85cb72c Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期二, 30 十一月 2021 13:14:28 +0800
Subject: [PATCH] 2021-11-30 1.修复乐橙Android,没调用拒接接口问题。

---
 HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerPage.cs |  352 ++++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 289 insertions(+), 63 deletions(-)

diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerPage.cs
index 945a64c..190b378 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerPage.cs
@@ -3,6 +3,8 @@
 using HDL_ON.UI.CSS;
 using HDL_ON.Entity;
 using System.Collections.Generic;
+using System;
+using HDL_ON.DriverLayer;
 
 namespace HDL_ON.UI
 {
@@ -30,9 +32,22 @@
         /// </summary>
         Button btnDown;
         /// <summary>
-        /// 鏂囨湰鎺т欢
+        /// 鐑樺共鎺т欢
         /// </summary>
-        private NormalViewControl btnSuctionView = null;
+        ClothesHangerControl hotDryView;
+        /// <summary>
+        /// 椋庡共鎺т欢
+        /// </summary>
+        ClothesHangerControl windDryView;
+        /// <summary>
+        /// 娑堟瘨鎺т欢
+        /// </summary>
+        ClothesHangerControl disinfectView;
+        /// <summary>
+        /// 鐓ф槑鎺т欢
+        /// </summary>
+        ClothesHangerControl lightingView;
+
 
         #endregion
 
@@ -49,14 +64,12 @@
             //鍒濆鍖栫涓�涓储寮曢〉鐨勫唴瀹�
             this.InitFrameWhiteContent1();
 
-            //鍒锋柊褰撳墠璁惧鐨勭姸鎬佺紦瀛�
-            this.RefreshNowDeviceStatuMemory(this.device);
             //鍒锋柊鐣岄潰鐘舵��
             this.RefreshFormStatu();
             //璇诲彇鐘舵��
             new System.Threading.Thread(() =>
             {
-                DriverLayer.Control.Ins.SendReadCommand(device);
+                Control.Ins.SendReadCommand(device);
             })
             { IsBackground = true }.Start();
         }
@@ -111,6 +124,62 @@
             };
             FrameWhiteCentet1.AddChidren(btnDown);
 
+            #region 鎺у埗
+            btnUp.MouseDownEventHandler = (sender, e) => {
+                btnUp.IsSelected = true;
+            };
+            btnUp.MouseUpEventHandler = (sender, e) => {
+                new System.Threading.Thread(() =>
+                {
+                    System.Threading.Thread.Sleep(2000);
+                    Application.RunOnMainThread(() =>
+                    {
+                        btnUp.IsSelected = false;
+                    });
+                })
+                { IsBackground = true }.Start();
+                Dictionary<string, string> d = new Dictionary<string, string>();
+                d.Add(FunctionAttributeKey.Position, "up");
+                Control.Ins.SendWriteCommand(device, d);
+            };
+            //----
+            btnStop.MouseDownEventHandler = (sender, e) => {
+                btnStop.IsSelected = true;
+            };
+            btnStop.MouseUpEventHandler = (sender, e) => {
+                new System.Threading.Thread(() =>
+                {
+                    System.Threading.Thread.Sleep(2000);
+                    Application.RunOnMainThread(() =>
+                    {
+                        btnStop.IsSelected = false;
+                    });
+                })
+                { IsBackground = true }.Start();
+                Dictionary<string, string> d = new Dictionary<string, string>();
+                d.Add(FunctionAttributeKey.Position, "stop");
+                Control.Ins.SendWriteCommand(device, d);
+            };
+            //-----
+            btnDown.MouseDownEventHandler = (sender, e) => {
+                btnDown.IsSelected = true;
+            };
+            btnDown.MouseUpEventHandler = (sender, e) => {
+                new System.Threading.Thread(() =>
+                {
+                    System.Threading.Thread.Sleep(2000);
+                    Application.RunOnMainThread(() =>
+                    {
+                        btnDown.IsSelected = false;
+                    });
+                })
+                { IsBackground = true }.Start();
+                Dictionary<string, string> d = new Dictionary<string, string>();
+                d.Add(FunctionAttributeKey.Position, "down");
+                Control.Ins.SendWriteCommand(device, d);
+            };
+            #endregion
+
             #endregion
 
             #region 鑿滃崟
@@ -123,77 +192,113 @@
 
             int index = 0;
             List<string> attrs = device.GetAttributes();
-            ClothesHangerControl hotDryView = new ClothesHangerControl(
+
+            hotDryView = new ClothesHangerControl(
                             "FunctionIcon/Electrical/ClothesHanger/ClothesHangerHotDryIcon.png",
                             "FunctionIcon/Electrical/ClothesHanger/ClothesHangerHotDryIconOn.png",
                             Language.StringByID(StringId.HotDry),
                             device.GetAttrState(FunctionAttributeKey.HotDryTimeLeft));
             hotDryView.X = 0;
-            hotDryView.Y = Application.GetRealHeight(288);
+            hotDryView.Y = Application.GetRealHeight(304);
             hotDryView.Width = Application.GetRealWidth(96);
             hotDryView.Height = Application.GetRealHeight(74);//28 29 14 3
-            if (attrs.Contains(menu[0]) || true)
+            if (attrs.Contains(menu[0]))
             {
                 FrameWhiteCentet1.AddChidren(hotDryView);
+
+                EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+                {
+                    string onoff = hotDryView.Lighting ? "false" : "true";
+                    device.SetAttrState(FunctionAttributeKey.HotDry, onoff);
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add(FunctionAttributeKey.HotDry, onoff);
+                    Control.Ins.SendWriteCommand(device, d);
+                };
+                hotDryView.SetThouchEvent(eventHandler);
+
                 index++;
             }
 
-            ClothesHangerControl windDryView = new ClothesHangerControl(
+            windDryView = new ClothesHangerControl(
                                 "FunctionIcon/Electrical/ClothesHanger/ClothesHangerWindDryIcon.png",
                                 "FunctionIcon/Electrical/ClothesHanger/ClothesHangerWindDryIconOn.png",
                                 Language.StringByID(StringId.WindDry),
                                 device.GetAttrState(FunctionAttributeKey.WindDryTimeLeft));
-            windDryView.Y = Application.GetRealHeight(288);
+            windDryView.Y = Application.GetRealHeight(304);
             windDryView.Width = Application.GetRealWidth(96);
             windDryView.Height = Application.GetRealHeight(74);
-            if (attrs.Contains(menu[1]) || true)
+            if (attrs.Contains(menu[1]))
             {
-                if(index == 1)
+                if (index == 1)
                 {
                     windDryView.Gravity = Gravity.CenterHorizontal;
                 }
                 FrameWhiteCentet1.AddChidren(windDryView);
+
+                EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+                {
+                    string onoff = windDryView.Lighting ? "false" : "true";
+                    device.SetAttrState(FunctionAttributeKey.WindDry, onoff);
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add(FunctionAttributeKey.WindDry, onoff);
+                    Control.Ins.SendWriteCommand(device, d);
+                };
+                windDryView.SetThouchEvent(eventHandler);
+
                 index++;
             }
 
-            
 
-            ClothesHangerControl disinfectDryView = new ClothesHangerControl(
+
+            disinfectView = new ClothesHangerControl(
                                 "FunctionIcon/Electrical/ClothesHanger/ClothesHangerDisinfectIcon.png",
                                 "FunctionIcon/Electrical/ClothesHanger/ClothesHangerDisinfectIconOn.png",
                                 Language.StringByID(StringId.Disinfect),
                                 device.GetAttrState(FunctionAttributeKey.DisinfectTimeLeft));
-            disinfectDryView.Y = Application.GetRealHeight(288);
-            disinfectDryView.Width = Application.GetRealWidth(96);
-            disinfectDryView.Height = Application.GetRealHeight(74);
-            if (attrs.Contains(menu[2]) || true)
+            disinfectView.Y = Application.GetRealHeight(304);
+            disinfectView.Width = Application.GetRealWidth(96);
+            disinfectView.Height = Application.GetRealHeight(74);
+            if (attrs.Contains(menu[2]))
             {
-                if(index == 1)
+                if (index == 1)
                 {
-                    disinfectDryView.Gravity = Gravity.CenterHorizontal;
+                    disinfectView.Gravity = Gravity.CenterHorizontal;
                 }
                 else if (index == 2)
                 {
-                    disinfectDryView.X = Application.GetRealWidth(266 - 33);
+                    disinfectView.X = Application.GetRealWidth(266 - 33);
                 }
-                FrameWhiteCentet1.AddChidren(disinfectDryView);
+                FrameWhiteCentet1.AddChidren(disinfectView);
+
+                EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+                {
+                    string onoff = disinfectView.Lighting ? "false" : "true";
+                    device.SetAttrState(FunctionAttributeKey.Disinfect, onoff);
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add(FunctionAttributeKey.Disinfect, onoff);
+                    Control.Ins.SendWriteCommand(device, d);
+                };
+                disinfectView.SetThouchEvent(eventHandler);
+
                 index++;
             }
 
-            ClothesHangerControl lightingView = new ClothesHangerControl(
+            lightingView = new ClothesHangerControl(
                                 "FunctionIcon/Electrical/ClothesHanger/ClothesHangerLightIcon.png",
                                 "FunctionIcon/Electrical/ClothesHanger/ClothesHangerLightIconOn.png",
                                 Language.StringByID(StringId.Lighting),
                                 "");
             lightingView.Width = Application.GetRealWidth(96);
             lightingView.Height = Application.GetRealHeight(74);
-            if (attrs.Contains(menu[3]) || true)
+            if (attrs.Contains(menu[3]))
             {
-                if(index >2)
+                if (index > 2)
                 {
-                    lightingView.Y = Application.GetRealHeight(375);
-                }else
+                    lightingView.Y = Application.GetRealHeight(409);
+                }
+                else
                 {
+                    lightingView.Y = Application.GetRealHeight(304);
                     if (index == 1)
                     {
                         lightingView.Gravity = Gravity.CenterHorizontal;
@@ -204,8 +309,45 @@
                     }
                 }
                 FrameWhiteCentet1.AddChidren(lightingView);
+
+                EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+                {
+                    string onoff = lightingView.Lighting ? "off" : "on";
+                    device.SetAttrState(FunctionAttributeKey.OnOff, onoff);
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add(FunctionAttributeKey.OnOff, onoff);
+                    Control.Ins.SendWriteCommand(device, d);
+                };
+                lightingView.SetThouchEvent(eventHandler);
+
                 index++;
             }
+
+            #endregion
+
+
+            #region 鏃堕棿璁剧疆
+            var timeSetView = new ClothesHangerControl(
+                                "FunctionIcon/Electrical/ClothesHanger/ClothesHangerTimeIcon.png",
+                                "FunctionIcon/Electrical/ClothesHanger/ClothesHangerTimeIconOn.png",
+                                Language.StringByID(StringId.Time),
+                                "");
+            timeSetView.Width = Application.GetRealWidth(96);
+            timeSetView.Height = Application.GetRealHeight(74);
+            timeSetView.Y = Application.GetRealHeight(409);
+            timeSetView.X = Application.GetRealWidth(266 - 33);
+
+
+            EventHandler<MouseEventArgs> eventHandler_timeSetView = (sender, e) =>
+            {
+                var setTimePage = new ClothesHangerSetTimePage(device);
+                MainPage.BasePageView.AddChidren(setTimePage);
+                setTimePage.LoadPage();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            };
+            timeSetView.SetThouchEvent(eventHandler_timeSetView);
+
+            FrameWhiteCentet1.AddChidren(timeSetView);
 
             #endregion
         }
@@ -222,8 +364,6 @@
             //涓嶆槸鍚屼竴涓笢瑗�
             if (this.device.sid != i_LocalDevice.sid) { return; }
 
-            //鍒锋柊褰撳墠璁惧鐨勭姸鎬佺紦瀛�
-            this.RefreshNowDeviceStatuMemory(i_LocalDevice);
             //鍒锋柊鐣岄潰鐘舵��
             this.RefreshFormStatu();
         }
@@ -241,35 +381,58 @@
         /// </summary>
         private void RefreshFormStatu()
         {
-            Application.RunOnMainThread(() => {
-                var temp = device.status.Find((sta) => sta.key == FunctionAttributeKey.Status);
-                if (temp != null)
+            Application.RunOnMainThread(() =>
+            {
+                btnIcon.IsSelected = true;
+                #region 鐐逛寒鏂囨湰
+                var hotDryTemp = device.attributes.Find((sta) => sta.key == FunctionAttributeKey.HotDry);
+                if (hotDryTemp != null)
                 {
-                    if (temp.value == "true")
-                    {
-                    }
-                    else
-                    {
-                    }
+                    hotDryView.SetViewStatus(hotDryTemp.state == "true");
                 }
+                var windDryTemp = device.attributes.Find((sta) => sta.key == FunctionAttributeKey.WindDry);
+                if (windDryTemp != null)
+                {
+                    windDryView.SetViewStatus(windDryTemp.state == "true");
+                }
+                var disinfectTemp = device.attributes.Find((sta) => sta.key == FunctionAttributeKey.Disinfect);
+                if (disinfectTemp != null)
+                {
+                    disinfectView.SetViewStatus(disinfectTemp.state == "true");
+                }
+                var lightTemp = device.attributes.Find((sta) => sta.key == FunctionAttributeKey.OnOff);
+                if (lightTemp != null)
+                {
+                    lightingView.SetViewStatus(lightTemp.state == "on");
+                }
+                //MainPage.Log($"鏃堕棿鎴筹細{device.time_stamp}  鏃堕棿锛歿device.GeteTime()} 鐑樺共:{hotDryTemp.state} 椋庡共:{windDryTemp.state} 娑堟瘨:{disinfectTemp.state} 鐏厜鐘舵�侊細{lightTemp.state}");
+                #endregion
+
+                #region 淇敼鏃堕棿
+                var hotDryTimeLeftTemp = device.attributes.Find((sta) => sta.key == FunctionAttributeKey.HotDryTimeLeft);
+                if (hotDryTimeLeftTemp != null)
+                {
+                    hotDryView.ChangeTime(hotDryTimeLeftTemp.state);
+                }
+                var windDryTimeLeftTemp = device.attributes.Find((sta) => sta.key == FunctionAttributeKey.WindDryTimeLeft);
+                if (windDryTimeLeftTemp != null)
+                {
+                    windDryView.ChangeTime(windDryTimeLeftTemp.state);
+                }
+                var disinfectTimeLeftTemp = device.attributes.Find((sta) => sta.key == FunctionAttributeKey.DisinfectTimeLeft);
+                if (disinfectTimeLeftTemp != null)
+                {
+                    disinfectView.ChangeTime(disinfectTimeLeftTemp.state);
+                }
+                #endregion
+
+
             });
         }
 
         #endregion
 
         #region 鈻� 涓�鑸柟娉昣__________________________
-
-        /// <summary>
-        /// 鍒锋柊褰撳墠璁惧鐨勭姸鎬佺紦瀛�
-        /// </summary>
-        private void RefreshNowDeviceStatuMemory(Function i_LocalDevice)
-        {
-            foreach (var data in i_LocalDevice.status)
-            {
-                //寮�鍏�
-                //if (data.key == "on_off") { this.weepRobotData.Cleaning = data.value.ToLower() == "on"; }
-            }
-        }
 
         #endregion
     }
@@ -279,18 +442,25 @@
         private Button btnIcon;
         private Button btnTitle;
         private Button btnTime;
+        /// <summary>
+        /// 鍊掕鏃舵椂闂�
+        /// </summary>
+        private int leftTime = 0;
+        /// <summary>
+        /// 鎺т欢鏄惁鐐逛寒
+        /// </summary>
+        public bool Lighting = false;
 
-        public ClothesHangerControl(string iconPath1, string iconPath2,string title,string time)
+
+        public ClothesHangerControl(string unSelectedIconPath, string selectedIconPath, string title, string time)
         {
-       
-
             btnIcon = new Button()
             {
                 Gravity = Gravity.CenterHorizontal,
                 Width = Application.GetRealWidth(28),
                 Height = Application.GetRealWidth(28),
-                UnSelectedImagePath = iconPath1,
-                SelectedImagePath = iconPath2,
+                UnSelectedImagePath = unSelectedIconPath,
+                SelectedImagePath = selectedIconPath,
             };
             this.AddChidren(btnIcon);
 
@@ -298,6 +468,7 @@
             {
                 Gravity = Gravity.Center,
                 Text = title,
+                Height = Application.GetRealHeight(42),
                 TextColor = CSS_Color.TextualColor,
                 SelectedTextColor = CSS_Color.MainColor,
                 TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
@@ -307,8 +478,10 @@
             btnTime = new Button()
             {
                 Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(74-32),
+                Height = Application.GetRealHeight(32),
                 Text = time,
-                TextColor = CSS_Color.TextualColor,
+                TextColor = 0x00000000,
                 SelectedTextColor = CSS_Color.MainColor,
                 TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
             };
@@ -318,19 +491,72 @@
         /// 淇敼鏄剧ず鏃堕棿
         /// </summary>
         /// <param name="newTime"></param>
-        public void ChangeTime (string newTime)
+        public void ChangeTime(string newTime)
         {
-            btnTime.Text = newTime;
+            int.TryParse(newTime, out leftTime);
+            if (leftTime > 0)
+            {
+                Application.RunOnMainThread(() =>
+                {
+                    btnTime.Text = new TimeSpan(0, leftTime, 0).ToString().Remove(5, 3);
+                });
+                leftTime--;
+            }
+            else if (leftTime == 0)
+            {
+                Application.RunOnMainThread(() =>
+                {
+                    btnTime.Text = "";
+                });
+            }
+            if (countdownThread == null)
+            {
+                countdownThread = new System.Threading.Thread(() =>
+                {
+
+                    while (true)
+                    {
+                        if (leftTime > 0)
+                        {
+                            Application.RunOnMainThread(() =>
+                            {
+                                btnTime.Text = new TimeSpan(0, leftTime, 0).ToString().Remove(5,3) ;
+                            });
+                            leftTime--;
+                        }
+                        else if(leftTime == 0)
+                        {
+                            Application.RunOnMainThread(() =>
+                            {
+                                btnTime.Text = "";
+                            });
+                        }
+                        System.Threading.Thread.Sleep(60000);
+                    }
+                })
+                { IsBackground = true };
+                countdownThread.Start();
+            }
         }
 
-        public void ChangeViewStatus(bool state)
+        public void SetViewStatus(bool state)
         {
-            btnIcon.IsSelected = btnTitle.IsSelected = btnTime.IsSelected = state;
+            btnIcon.IsSelected = btnTitle.IsSelected = btnTime.IsSelected = Lighting = state;
         }
 
-        public bool GetViewState()
+        /// <summary>
+        /// 璁剧疆鐐瑰嚮浜嬩欢
+        /// </summary>
+        public void SetThouchEvent(EventHandler<MouseEventArgs> eventHandler)
         {
-            return btnIcon.IsSelected;
+            btnIcon.MouseUpEventHandler = eventHandler;
+            btnTime.MouseUpEventHandler = eventHandler;
+            btnTitle.MouseUpEventHandler = eventHandler;
         }
+
+        /// <summary>
+        /// 鍊掕鏃剁嚎绋�
+        /// </summary>
+        System.Threading.Thread countdownThread;
     }
-}
+}
\ No newline at end of file

--
Gitblit v1.8.0