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 |  358 +++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 319 insertions(+), 39 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs
index b5ade0c..891aeeb 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs
@@ -27,7 +27,7 @@
         /// <summary>
         /// 璁惧澶囨敞鐨勬帶浠�
         /// </summary>
-        private FrameCaptionInputControl btnDeviceName = null;
+        private FrameCaptionInputControl frameDeviceName = null;
         /// <summary>
         /// 璁惧鐨勬煇涓�鍥炶矾
         /// </summary>
@@ -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);
             }
@@ -100,10 +117,10 @@
             var btnFinish = new BottomClickButton();
             btnFinish.TextID = R.MyInternationalizationString.uSave;
             bodyFrameLayout.AddChidren(btnFinish);
-            btnFinish.ButtonClickEvent += async (sender, e) =>
+            btnFinish.ButtonClickEvent += (sender, e) =>
             {
                 //璁板綍璧峰綋鍓嶆鍦ㄦ搷浣滅殑鍥炶矾鍚嶅瓧
-                dicDeviceSaveName[nowSelectDevice.DeviceEpoint] = btnDeviceName.Text.Trim();
+                dicDeviceSaveName[nowSelectDevice.DeviceEpoint] = frameDeviceName.Text.Trim();
                 foreach (var epoint in dicDeviceSaveName.Keys)
                 {
                     var device = Common.LocalDevice.Current.GetDevice(deviceObj.DeviceAddr, epoint);
@@ -117,16 +134,32 @@
                     if (oldName != newName)
                     {
                         //璁惧鍚嶇О淇敼
-                        var result = await Common.LocalDevice.Current.ReName(device, newName);
+                        var result = Common.LocalDevice.Current.ReName(device, newName);
                         if (result == false)
                         {
                             return;
                         }
                     }
                 }
+
+                //濡傛灉鏄櫨琛f灦銆屾椂闂村厛涓嶅鐞嗐��
+                //if (deviceObj.Type == DeviceType.Airer)
+                //{
+                //  var airer = deviceObj as Airer;
+                //  SetAirerFunTimeDevice(airer);
+                //}
+                //else
+                //{
                 //鍏抽棴鑷韩
                 this.CloseForm();
+                //}
+
             };
+            //濡傛灉褰撳墠鏄睍绀烘ā鏉�,鍒欎笉鑳界紪杈�
+            if (Common.Config.Instance.Home.IsShowTemplate == true)
+            {
+                btnFinish.CanClick = false;
+            }
         }
 
         /// <summary>
@@ -139,36 +172,42 @@
             //鍥炶矾澶囨敞
             string caption = Language.StringByID(R.MyInternationalizationString.uDeviceEpointNote);
             string nameValue = Common.LocalDevice.Current.GetDeviceEpointName(nowSelectDevice);
+
             if (dicDeviceSaveName.ContainsKey(nowSelectDevice.DeviceEpoint) == true)
             {
                 nameValue = dicDeviceSaveName[nowSelectDevice.DeviceEpoint];
             }
 
-            this.btnDeviceName = new FrameCaptionInputControl(caption, nameValue, listview.rowSpace / 2);
-            listview.AddChidren(btnDeviceName);
-            btnDeviceName.InitControl();
-            btnDeviceName.AddBottomLine();
-            btnDeviceName.txtInput.FinishInputEvent += async () =>
+            this.frameDeviceName = new FrameCaptionInputControl(caption, nameValue, listview.rowSpace / 2);
+            this.frameDeviceName.txtInput.MaxByte = 48;//闄愬埗鍙兘杈撳叆48涓瓧鑺�
+            listview.AddChidren(frameDeviceName);
+            frameDeviceName.InitControl();
+            frameDeviceName.AddBottomLine();
+            //濡傛灉褰撳墠鏄睍绀烘ā鏉�,鍒欓渶瑕佸鐞�
+            if (Common.Config.Instance.Home.IsShowTemplate == false)
             {
-                string oldName = Common.LocalDevice.Current.GetDeviceEpointName(nowSelectDevice);
-                if (btnDeviceName.Text.Trim() == string.Empty)
+                frameDeviceName.txtInput.FinishInputEvent += () =>
                 {
-                    //灏嗗悕瀛楄繕鍘�
-                    btnDeviceName.Text = oldName;
-                }
-                if (oldName != btnDeviceName.Text.Trim())
-                {
-                    //璁惧鍚嶇О淇敼
-                    var result = await Common.LocalDevice.Current.ReName(nowSelectDevice, btnDeviceName.Text.Trim());
-                    if (result == false)
+                    string oldName = Common.LocalDevice.Current.GetDeviceEpointName(nowSelectDevice);
+                    if (frameDeviceName.Text.Trim() == string.Empty)
                     {
-                        return;
+                        //灏嗗悕瀛楄繕鍘�
+                        frameDeviceName.Text = oldName;
                     }
-                    //鍥炶矾澶囨敞淇敼鎴愬姛!
-                    string msg = Language.StringByID(R.MyInternationalizationString.uDeviceEpointReNoteSuccess);
-                    this.ShowMassage(ShowMsgType.Tip, msg);
-                }
-            };
+                    if (oldName != frameDeviceName.Text.Trim())
+                    {
+                        //璁惧鍚嶇О淇敼
+                        var result = Common.LocalDevice.Current.ReName(nowSelectDevice, frameDeviceName.Text.Trim());
+                        if (result == false)
+                        {
+                            return;
+                        }
+                        //鍥炶矾澶囨敞淇敼鎴愬姛!
+                        string msg = Language.StringByID(R.MyInternationalizationString.uDeviceEpointReNoteSuccess);
+                        this.ShowMassage(ShowMsgType.Tip, msg);
+                    }
+                };
+            }
 
             //鎵�灞炲尯鍩�
             var rowBeloneArea = new BelongAreaControl(listview.rowSpace / 2);
@@ -182,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();
         }
@@ -198,7 +261,8 @@
         private void InitTopRightMenu()
         {
             //妫�娴嬫鍥炶矾鏄惁鎷ユ湁瀹氫綅鍔熻兘
-            if (Common.LocalDevice.Current.DeviceIsCanFixedPosition(nowSelectDevice) == false)
+            if (Common.LocalDevice.Current.DeviceIsCanFixedPosition(nowSelectDevice) == false
+                || Common.Config.Instance.Home.IsShowTemplate == true)
             {
                 return;
             }
@@ -265,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 鈻� 鍒濆鍖栬澶囧洖璺浘鏍嘷________________
@@ -343,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
                 {
@@ -350,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;
+                    }
                 }
             }
         }
@@ -427,6 +692,18 @@
                     //鍙鍚屼竴绉嶇被鍨嬬殑
                     continue;
                 }
+
+                //鑾峰彇璁惧灞炰簬銆愮畝绾﹀鍔熻兘闈㈡澘銆�
+                var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(listDevice);
+                if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.ButtonPanel_SimpleMultifunction)
+                {
+                    if (device.Type == DeviceType.TemperatureSensor && device.DeviceEpoint == 1)
+                    {
+                        //绠�绾﹀鍔熻兘闈㈡澘绗�1鍥炶矾鏄竴涓粦瀹氭俯婀垮害浼犳劅鍣ㄧ绫诲瀷锛屼笉鏄湡鐨勬俯婀垮害鐨勪紶鎰熷櫒锛岄渶瑕佸睆钄芥帀
+                        continue;
+                    }
+                }
+
                 listRelay.Add(device);
                 if (device.DeviceEpoint == deviceObj.DeviceEpoint)
                 {
@@ -467,7 +744,6 @@
             }
             return listIcon;
         }
-
         #endregion
 
         #region 鈻� 鍥炶矾閫夋嫨___________________________
@@ -483,16 +759,20 @@
             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;
                 nowSelectControl.TextColor = UserCenterColor.Current.TextGrayColor3;
                 //璁板綍瀹冪殑鍚嶅瓧
-                dicDeviceSaveName[nowSelectDevice.DeviceEpoint] = btnDeviceName.Text.Trim();
+                dicDeviceSaveName[nowSelectDevice.DeviceEpoint] = frameDeviceName.Text.Trim();
             }
             //閫夋嫨鐘舵��
             nowContr.BorderColor = 0xfffb744a;

--
Gitblit v1.8.0