From 25429f085093d89d543a0b90e30d0d62d1b7dac9 Mon Sep 17 00:00:00 2001
From: hxb <hxb@hdlchina.com.cn>
Date: 星期二, 30 八月 2022 09:37:38 +0800
Subject: [PATCH] 合并了IOS的代码

---
 ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs |  280 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 269 insertions(+), 11 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs
index 3b352d4..891aeeb 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs
@@ -88,7 +88,24 @@
             {
                 this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uDeviceEditor), 1028);
             }
-            else
+            else if (this.deviceObj.Type == DeviceType.Airer)
+            {
+                //鏅捐。鏋惰澶囧彧瀛樺彇鍥炶矾1锛屽鏋滄槸鏅捐。鏋讹紝榛樿绔偣閮芥槸1锛�
+                this.deviceObj.DeviceEpoint = 1;
+                this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uDeviceEditor), 1342);
+            }
+            else if (this.deviceObj.Type == DeviceType.TemperatureSensor)
+            {
+                //绌烘皵璐ㄩ噺浼犳劅鍣� 
+                //鑾峰彇璁惧绫诲瀷
+                var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { this.deviceObj });
+                //绌烘皵璐ㄩ噺浼犳劅鍣�
+                if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.AirQualitySensor)
+                {
+                    this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uDeviceEditor), 1368);
+                }
+            }
+            if (this.listview == null)
             {
                 this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uDeviceEditor), 1128);
             }
@@ -124,8 +141,19 @@
                         }
                     }
                 }
+
+                //濡傛灉鏄櫨琛f灦銆屾椂闂村厛涓嶅鐞嗐��
+                //if (deviceObj.Type == DeviceType.Airer)
+                //{
+                //  var airer = deviceObj as Airer;
+                //  SetAirerFunTimeDevice(airer);
+                //}
+                //else
+                //{
                 //鍏抽棴鑷韩
                 this.CloseForm();
+                //}
+
             };
             //濡傛灉褰撳墠鏄睍绀烘ā鏉�,鍒欎笉鑳界紪杈�
             if (Common.Config.Instance.Home.IsShowTemplate == true)
@@ -144,6 +172,7 @@
             //鍥炶矾澶囨敞
             string caption = Language.StringByID(R.MyInternationalizationString.uDeviceEpointNote);
             string nameValue = Common.LocalDevice.Current.GetDeviceEpointName(nowSelectDevice);
+
             if (dicDeviceSaveName.ContainsKey(nowSelectDevice.DeviceEpoint) == true)
             {
                 nameValue = dicDeviceSaveName[nowSelectDevice.DeviceEpoint];
@@ -192,8 +221,32 @@
                 HdlRoomLogic.Current.ChangedRoom(nowSelectDevice, roomKeys);
             };
 
+            if (this.deviceObj.Type == DeviceType.TemperatureSensor)
+            {
+                //鑾峰彇璁惧绫诲瀷
+                var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { this.deviceObj });
+                //绌烘皵璐ㄩ噺浼犳劅鍣�
+                if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.AirQualitySensor)
+                {
+                    //璁惧绫诲瀷
+                    this.AddDeviceTypeRow();
+                }
+            }
+
             //娣诲姞鍔熻兘绫诲瀷琛�
             this.AddFunctionTypeRow();
+
+            if (this.deviceObj.Type == DeviceType.Airer)
+            {
+                var airer = this.deviceObj as Airer;
+                //娣诲姞鐑樺共鏃堕棿琛�
+                this.AddAirerDryTimeRow(airer);
+                //娣诲姞椋庡共鏃堕棿琛�
+                this.AddAirerWindTimeRow(airer);
+                //娣诲姞娑堟瘨鏃堕棿琛�
+                this.AddAirerDisinfectTimeRow(airer);
+            }
+
             //鍒濆鍖栨甯冨畬鎴�
             tableContr.FinishInitControl();
         }
@@ -276,7 +329,171 @@
             //搴曠嚎
             rowFunction.AddBottomLine();
         }
+        #endregion
 
+        #region 鈻� 璁惧绫诲瀷___________________________
+
+        /// <summary>
+        /// 娣诲姞鍔熻兘绫诲瀷琛�
+        /// </summary>
+        private void AddDeviceTypeRow()
+        {
+            var caption = Language.StringByID(R.MyInternationalizationString.uDeviceType);
+            var listNewDevice = new List<CommonDevice>();
+            listNewDevice.Add(deviceObj);
+            var deviceName = Common.LocalDevice.Current.GetDeviceObjectText(listNewDevice);
+            var btnType = new FrameCaptionViewControl(caption, deviceName, listview.rowSpace / 2);
+            btnType.UseClickStatu = false;
+            listview.AddChidren(btnType);
+            btnType.InitControl();
+            //鍒掔嚎
+            btnType.AddBottomLine();
+        }
+        #endregion
+
+        #region 鈻� 鏅捐。鏋朵笓鐢╛________________________ 
+        #region 鈻� 鐑樺共鏃堕棿_________________________ 
+        /// <summary>
+        ///  鐑樺共鏃堕棿琛�
+        /// </summary>
+        private void AddAirerDryTimeRow(Airer airer)
+        {
+            var rowAirer = new AiererTimeControl(listview.rowSpace / 2);
+            listview.AddChidren(rowAirer);
+            var text = Language.StringByID(R.MyInternationalizationString.AirerDefault) + 3 + Language.StringByID(R.MyInternationalizationString.AirerHour);
+            if (airer.DryTime != 0)
+            {
+                double result = airer.DryTime / 60.0;
+                var hour = Math.Round(result, 2);
+                text = hour + Language.StringByID(R.MyInternationalizationString.AirerHour);
+            }
+            rowAirer.InitControl(airer, bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.AirerDryTime), text, 1);
+            //搴曠嚎
+            rowAirer.AddBottomLine();
+            rowAirer.SelectTimeEvent += (v1, v2) =>
+            {
+                //double result = second / 3600.0;
+                //var hour = Math.Round(result, 1);
+                //text = hour + Language.StringByID(R.MyInternationalizationString.AirerHour);
+                //rowAirer.InitControl(airer, bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.AirerDryTime), text, 1);
+            };
+
+        }
+        #endregion
+
+        #region 鈻� 椋庡共鏃堕棿_________________________ 
+        /// <summary>
+        ///  椋庡共鏃堕棿琛�
+        /// </summary>
+        private void AddAirerWindTimeRow(Airer airer)
+        {
+            var rowAirer = new AiererTimeControl(listview.rowSpace / 2);
+            listview.AddChidren(rowAirer);
+            var text = Language.StringByID(R.MyInternationalizationString.AirerDefault) + 3 + Language.StringByID(R.MyInternationalizationString.AirerHour);
+            if (airer.WindTime != 0)
+            {
+                double result = airer.WindTime / 60.0;
+                var hour = Math.Round(result, 1);
+                text = hour + Language.StringByID(R.MyInternationalizationString.AirerHour);
+            }
+            rowAirer.InitControl(airer, bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.AirerWindTime), text, 2);
+            //搴曠嚎
+            rowAirer.AddBottomLine();
+            rowAirer.SelectTimeEvent += (v1, v2) =>
+            {
+                //double result = second / 3600.0;
+                //var hour = Math.Round(result, 1);
+                //text = hour + Language.StringByID(R.MyInternationalizationString.AirerHour);
+                //rowAirer.InitControl(airer, bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.AirerDryTime), text, 1);
+            };
+        }
+        #endregion
+
+        #region 鈻� 娑堟瘨鏃堕棿_________________________ 
+        /// <summary>
+        ///  娑堟瘨鏃堕棿琛�
+        /// </summary>
+        private void AddAirerDisinfectTimeRow(Airer airer)
+        {
+            var rowAirer = new AiererTimeControl(listview.rowSpace / 2);
+            listview.AddChidren(rowAirer);
+            var text = Language.StringByID(R.MyInternationalizationString.AirerDefault) + 30 + Language.StringByID(R.MyInternationalizationString.AirerMin);
+            if (airer.DisinfectTime != 0)
+            {
+                text = airer.DisinfectTime + Language.StringByID(R.MyInternationalizationString.AirerMin);
+            }
+            rowAirer.InitControl(airer, bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.AirerDisinfectTime), text, 3);
+            //搴曠嚎
+            rowAirer.AddBottomLine();
+            rowAirer.SelectTimeEvent += (v1, v2) =>
+            {
+
+            };
+        }
+        #endregion
+
+        #region 鈻�  璇诲彇鏃堕棿鍛戒护___________________
+
+        /// <summary>
+        /// 璇诲彇鏃堕棿鍛戒护
+        /// </summary>
+        public void ReadAirerFunTimeDevice()
+        {
+
+        }
+
+        #endregion
+
+        /// <summary>
+        /// 璁惧鏃堕棿璁剧疆
+        /// </summary>
+        private void SetAirerFunTimeDevice(Airer airer)
+        {
+            HdlThreadLogic.Current.RunThread(async () =>
+            {
+                //鎵撳紑杩涘害鏉�
+                this.ShowProgressBar();
+
+                //鍒欒璁剧疆瀵瑰簲鐨勫姛鑳芥椂闂�
+                List<CommonDevice> listdevice = new List<CommonDevice>();
+
+                for (int i = 3; i < 6; i++)
+                {
+                    int time = 0;
+                    listdevice.Add(deviceObj);
+                    switch (i)
+                    {
+                        case 3:
+                            time = airer.WindTime;
+                            break;
+                        case 4:
+                            time = airer.DryTime;
+                            break;
+                        case 5:
+                            time = airer.DisinfectTime;
+                            break;
+                    }
+                    bool result = await Common.LocalDevice.Current.SetAirerTimeDevice(listdevice, airer, time, i);
+                    if (result == false)
+                    {
+                        airer.WindTime = airer.WindRemainTime = 0;
+                        airer.DryTime = airer.DryRemainTime = 0;
+                        airer.DisinfectTime = airer.DisinfectTime = 0;
+                        HdlThreadLogic.Current.RunMainInThread(() =>
+                  {
+                      this.InitMiddleFrame();
+                  });
+                        //鍏抽棴杩涘害鏉�
+                        this.CloseProgressBar();
+                        return;
+                    }
+                }
+                //鍏抽棴杩涘害鏉�
+                this.CloseProgressBar();
+                //鍏抽棴鑷韩
+                this.CloseForm();
+            });
+        }
         #endregion
 
         #region 鈻� 鍒濆鍖栬澶囧洖璺浘鏍嘷________________
@@ -354,6 +571,39 @@
                         frameBack.Y = Application.GetRealHeight(153);
                         frameBack.Gravity = Gravity.Center;
                     }
+
+                    //濡傛灉鏄櫨琛f灦
+                    if (deviceObj.Type == DeviceType.Airer)
+                    {
+                        frame.RemoveFromParent();
+                        frameBorder.Y = Application.GetRealHeight(0);
+                        frameBorder.Height = Application.GetRealHeight(299);
+                        frameBack.BackgroundImagePath = "Airer/Airer216.png";
+                        frameBack.Width = this.GetPictrueRealSize(207);
+                        frameBack.Height = this.GetPictrueRealSize(207);
+                        frameBack.Y = Application.GetRealHeight(92);
+                        frameBack.Gravity = Gravity.CenterHorizontal;
+                    }
+
+                    //濡傛灉鏄┖姘旇川閲忎紶鎰熷櫒
+                    if (this.deviceObj.Type == DeviceType.TemperatureSensor)
+                    {//绌烘皵璐ㄩ噺浼犳劅鍣� 
+                     //鑾峰彇璁惧绫诲瀷
+                        var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { this.deviceObj });
+                        //绌烘皵璐ㄩ噺浼犳劅鍣�
+                        if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.AirQualitySensor)
+                        {
+                            frame.RemoveFromParent();
+                            frameBorder.Y = Application.GetRealHeight(0);
+                            frameBorder.Height = Application.GetRealHeight(299);
+                            //鍔犺浇鍥炬爣鎺т欢
+                            var btnPic = new DeviceInfoIconControl();
+                            btnPic.Y = Application.GetRealHeight(104);
+                            btnPic.Gravity = Gravity.CenterHorizontal;
+                            listBackControl.frameTable.AddChidren(btnPic);
+                            btnPic.InitControl(deviceObj);
+                        }
+                    }
                 }
                 else
                 {
@@ -361,16 +611,20 @@
                 }
             }
 
-            if (listIcon.Count > 2)
+            //濡傛灉鏄櫨琛f灦,鏈�5涓洖璺紝浣嗘槸5涓洖璺彧鏄唬琛ㄤ笉鍚屽姛鑳戒娇鐢紝涓嶆槸鐪熷疄鐨勫搴旇澶囷紝鎵�浠ラ粯璁ゅ彧鏄剧ず绗竴鍥炶矾
+            if (deviceObj.Type != DeviceType.Airer)
             {
-                //璁$畻鐪熷疄楂樺害
-                int realHeight = this.GetPictrueRealSize(58 + 58);//涓婁笅闂磋窛
-                realHeight += frameBack.ChildrenCount * this.GetPictrueRealSize(124);//鍦嗗湀楂樺害
-                realHeight += (frameBack.ChildrenCount - 1) * this.GetPictrueRealSize(60);//鍦嗗湀闂磋窛
-                if (realHeight > frameBack.Height)
+                if (listIcon.Count > 2)
                 {
-                    //鍙樻洿楂樺害
-                    frameBack.Height = realHeight;
+                    //璁$畻鐪熷疄楂樺害
+                    int realHeight = this.GetPictrueRealSize(58 + 58);//涓婁笅闂磋窛
+                    realHeight += frameBack.ChildrenCount * this.GetPictrueRealSize(124);//鍦嗗湀楂樺害
+                    realHeight += (frameBack.ChildrenCount - 1) * this.GetPictrueRealSize(60);//鍦嗗湀闂磋窛
+                    if (realHeight > frameBack.Height)
+                    {
+                        //鍙樻洿楂樺害
+                        frameBack.Height = realHeight;
+                    }
                 }
             }
         }
@@ -505,10 +759,14 @@
             if (nowSelectControl != null)
             {
                 //鍚屼竴涓笢瑗�,涓嶉笩浠�
-                if (nowSelectControl.Name == nowContr.Name)
+                if (this.deviceObj.Type != DeviceType.Airer)
                 {
-                    return;
+                    if (nowSelectControl.Name == nowContr.Name)
+                    {
+                        return;
+                    }
                 }
+
                 //涓嶉�夋嫨鐘舵��
                 nowSelectControl.BorderColor = 0xff979797;
                 nowSelectControl.TextSize = 13;

--
Gitblit v1.8.0