From d6fb0646531172f23648441c224cdcccd721b894 Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期一, 14 十二月 2020 09:59:01 +0800
Subject: [PATCH] 请合并代码,完成晾衣架最终功能。

---
 ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelSimpleEnvironmentButtonSettionForm.cs |  522 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 522 insertions(+), 0 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelSimpleEnvironmentButtonSettionForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelSimpleEnvironmentButtonSettionForm.cs
new file mode 100755
index 0000000..d175f2e
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelSimpleEnvironmentButtonSettionForm.cs
@@ -0,0 +1,522 @@
+锘縰sing System;
+using System.Collections.Generic;
+using Shared.Common;
+using Shared.Phone.UserCenter.Device.Bind;
+using ZigBee.Common;
+using ZigBee.Device;
+
+namespace Shared.Phone.UserCenter.DevicePanel
+{
+    /// <summary>
+    /// 闈㈡澘鐨勬寜閿厤缃晫闈€�愯绫绘殏鏃惰垗寮冦��
+    /// </summary>
+    public class PanelSimpleEnvironmentButtonSettionForm : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 鍒楄〃鎺т欢
+        /// </summary>
+        private FrameListControl listview = null;
+        /// <summary>
+        /// 璁惧鐨勬煇涓�鍥炶矾
+        /// </summary>
+        private CommonDevice deviceObj = null;
+        /// <summary>
+        /// 鏂伴鐩爣鍚嶅瓧
+        /// </summary>
+        private string bindFreshAirName = string.Empty;
+        /// <summary>
+        /// 娓╁害鐩爣鍚嶅瓧
+        /// </summary>
+        private string bindTemperatureName = string.Empty;
+        /// <summary>
+        /// 婀垮害鐩爣鍚嶅瓧
+        /// </summary>
+        private string bindHumidityName = string.Empty;
+        /// <summary>
+        /// PM鐩爣鍚嶅瓧
+        /// </summary>
+        private string bindAcName = string.Empty;
+        /// <summary>
+        /// 琚粦鐩爣鏄柊椋�
+        /// </summary>
+        private CommonDevice bindFreshAirDev;
+        /// <summary>
+        /// 琚粦鐩爣鏄俯搴�
+        /// </summary>
+        private CommonDevice bindTemperatureDev;
+        /// <summary>
+        /// 琚粦鐩爣鏄箍搴�
+        /// </summary>
+        private CommonDevice bindHumidityDev;
+        /// <summary>
+        /// 琚粦鐩爣鏄┖璋�
+        /// </summary>
+        private CommonDevice bindAcDev;
+        // <summary>
+        /// 鎸夐敭涓缁戝畾鐨勭洰鏍囧垪琛�
+        /// </summary>
+        public List<BindObj.BindListResponseObj> bindList = new List<BindObj.BindListResponseObj>();
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        /// <param name="i_device">璁惧鐨勬煇涓�鍥炶矾</param>
+        public void ShowForm(CommonDevice i_device)
+        {
+            this.deviceObj = i_device;
+            //鑾峰彇鏁版嵁
+            InitInfo(deviceObj);
+
+            //璁剧疆澶撮儴淇℃伅
+            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uPanelSettion));
+
+            //鍒濆鍖栦腑閮ㄤ俊鎭�
+            this.InitMiddleFrame();
+
+            //鍒濆鍖栧彸涓婅鑿滃崟
+            this.InitTopRightMenu();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+        /// </summary>
+        private void InitMiddleFrame()
+        {
+            //娓呯┖bodyFrame
+            this.ClearBodyFrame();
+
+            var listBackControl = new VerticalFrameControl();
+            listBackControl.Height = bodyFrameLayout.Height;
+            bodyFrameLayout.AddChidren(listBackControl);
+
+            //鍥剧墖
+            var btnPic = new PicViewControl(426, 426);
+            btnPic.Y = Application.GetRealHeight(150);
+            btnPic.UnSelectedImagePath = "RealDevice/ButtonPanelSimpleEnvironment.png";
+            btnPic.Gravity = Gravity.CenterHorizontal;
+            listBackControl.frameTable.AddChidren(btnPic);
+
+            //鍒濆鍖栨甯�
+            var tableContr = new InformationEditorControl();
+            this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uDeviceEditor), 1028);
+
+            //鍒濆鍖栬彍鍗曡
+            this.InitMenuRow();
+
+            //鍒濆鍖栨甯冨畬鎴�
+            tableContr.FinishInitControl();
+            tableContr = null;
+
+            //淇濆瓨
+            var btnFinish = new BottomClickButton();
+            btnFinish.TextID = R.MyInternationalizationString.uSave;
+            bodyFrameLayout.AddChidren(btnFinish);
+            btnFinish.ButtonClickEvent += (sender, e) =>
+            {
+                //鍏抽棴鑷韩
+                this.CloseForm();
+            };
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栬彍鍗曡
+        /// </summary>
+        private void InitMenuRow()
+        {
+            this.listview.RemoveAll();
+            //Ac鏉ユ簮
+            this.AddAcRow();
+            //娣诲姞鏂伴鐩爣
+            this.AddFreshAirRow();
+            //娣诲姞娓╁害鏉ユ簮
+            this.AddTemperatureSensorRow();
+            //娣诲姞婀垮害鏉ユ簮
+            this.AddHumiditySourceRow();
+            //浜害璋冭妭
+            this.AddLevelRow();
+        }
+        #endregion
+
+        #region 鈻� 鏁版嵁澶勭悊_________________________  
+        /// <summary>
+        /// 鍒濆鍖栨暟鎹�
+        /// </summary>
+        void InitInfo(CommonDevice curControlDev)
+        {
+            System.Threading.Tasks.Task.Run(async () =>
+            {
+                try
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        CommonPage.Loading.Start("");
+                    });
+
+                    var result = await GetBindName(curControlDev);
+                    if (!result)
+                    {
+
+                        Application.RunOnMainThread(() =>
+                        {
+                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime) + "(" + "5007" + ")", Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                        });
+                    }
+                }
+                catch (Exception ex)
+                {
+                    var mess = ex.Message;
+                }
+                finally
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        this.InitMenuRow();
+                        CommonPage.Loading.Hide();
+                    });
+                }
+            });
+        }
+
+        /// <summary>
+        /// 鑾峰彇缁戝畾鐩爣
+        /// </summary>
+        /// <param name="curControlDev"></param>
+        /// <returns></returns>
+        private async System.Threading.Tasks.Task<bool> GetBindName(CommonDevice curDev)
+        {
+            bool result = false;
+            //鑾峰彇闈㈡澘涓瓨鍦ㄧ殑缁戝畾鐩爣 
+            var curControlDev = new CommonDevice();
+            curControlDev.DeviceAddr = curDev.DeviceAddr;
+            curControlDev.CurrentGateWayId = curDev.CurrentGateWayId;
+            curControlDev.Type = curDev.Type;
+            int count = 0;
+            for (int i = 1; i < 3; i++)
+            {
+                curControlDev.DeviceEpoint = i;
+
+                var panelBindListRes = HdlDeviceBindLogic.Current.GetDeviceBindAsync(curControlDev);
+                if (panelBindListRes != null && panelBindListRes.getAllBindResponseData != null)
+                {
+                    bindList = panelBindListRes.getAllBindResponseData.BindList;
+                    foreach (var bDev in bindList)
+                    {
+                        var device = Common.LocalDevice.Current.GetDevice(bDev.BindMacAddr, bDev.BindEpoint);
+                        if (device == null)
+                        {
+                            continue;
+                        }
+                        if (device.Type == DeviceType.FreshAir)
+                        {
+                            //鑾峰彇璁惧绫诲瀷鐨�
+                            var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { device });
+                            //鏂伴闈㈡澘鐨勬柊椋庤澶囷紝鍒欎笉鏄剧ず
+                            if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.ButtonPanel_FangyueFreshAir)
+                            {
+                                continue;
+                            }
+                            bindFreshAirName = Common.LocalDevice.Current.GetDeviceEpointName(device);
+                            bindFreshAirDev = device;
+                        }
+                        else if (device.Type == DeviceType.TemperatureSensor)
+                        {
+                            var bD = device as TemperatureSensor;
+                            if (bD.SensorDiv == 1)
+                            {
+                                bindTemperatureName = Common.LocalDevice.Current.GetDeviceEpointName(device);
+                                bindTemperatureDev = device;
+                            }
+                            if (bD.SensorDiv == 2)
+                            {
+                                bindHumidityName = Common.LocalDevice.Current.GetDeviceEpointName(device);
+                                bindHumidityDev = device;
+                            }
+                        }
+                        else if (device.Type == DeviceType.FreshAirHumiditySensor)
+                        {
+                            bindHumidityName = Common.LocalDevice.Current.GetDeviceEpointName(device);
+                            bindHumidityDev = device;
+                        }
+                        else if (device.Type == DeviceType.Thermostat)
+                        {
+                            bindAcName = Common.LocalDevice.Current.GetDeviceEpointName(device);
+                            bindAcDev = device;
+                        }
+                        else if (device.Type == DeviceType.PMSensor)
+                        {
+                            if (bDev.BindCluster == 1026)
+                            {
+                                bindTemperatureName = Common.LocalDevice.Current.GetDeviceEpointName(device) + "-" + Language.StringByID(R.MyInternationalizationString.TemperatureSensor);
+                                bindTemperatureDev = device;
+                            }
+                            if (bDev.BindCluster == 1029)
+                            {
+                                bindHumidityName = Common.LocalDevice.Current.GetDeviceEpointName(device) + "-" + Language.StringByID(R.MyInternationalizationString.HumiditySensor);
+                                bindHumidityDev = device;
+                            }
+                        }
+                    }
+                    count++;
+                    if (count == 2)
+                    {
+                        result = true;
+                    }
+                }
+            }
+
+            return result;
+        }
+        #endregion
+
+        #region 鈻� Ac鏉ユ簮_________________________ 
+        /// <summary>
+        ///  Ac鏉ユ簮琛�
+        /// </summary>
+        private void AddAcRow()
+        {
+            //Ac
+            var rowAc = new FrameRowControl(listview.rowSpace / 2);
+            listview.AddChidren(rowAc);
+            rowAc.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.AcTargets), 600);
+            //搴曠嚎
+            rowAc.AddBottomLine();
+            //鍙崇澶�
+            rowAc.AddRightArrow();
+            var msg = Language.StringByID(R.MyInternationalizationString.nothing);
+            if (!string.IsNullOrEmpty(bindAcName))
+            {
+                msg = bindAcName;
+            }
+            var btnAcStatu = rowAc.AddMostRightView(msg, 700);
+            rowAc.ButtonClickEvent += (sender, e) =>
+            {
+                this.deviceObj.DeviceEpoint = 1;
+                var paneTargetsBaseFormp = new PaneTargetsBaseForm(this.deviceObj, bindAcDev, DeviceBind.BindInfo.BindType.AC);
+                Shared.Phone.UserView.HomePage.Instance.AddChidren(paneTargetsBaseFormp);
+                Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+                paneTargetsBaseFormp.Show();
+
+                paneTargetsBaseFormp.actionAcTarget += (bindName) =>
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        if (string.IsNullOrEmpty(bindName))
+                        {
+                            btnAcStatu.Text = Language.StringByID(R.MyInternationalizationString.nothing);
+                        }
+                        else
+                        {
+                            btnAcStatu.Text = bindName;
+                        }
+                    });
+                };
+            };
+        }
+        #endregion
+
+        #region 鈻� 鏂伴鐩爣_________________________ 
+        /// <summary>
+        ///  鏂伴鐩爣琛�
+        /// </summary>
+        private void AddFreshAirRow()
+        {
+            //鏂伴鐩爣
+            var rowNewWind = new FrameRowControl(listview.rowSpace / 2);
+            listview.AddChidren(rowNewWind);
+            rowNewWind.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uNewWindTarget), 600);
+            //搴曠嚎
+            rowNewWind.AddBottomLine();
+            //鍙崇澶�
+            rowNewWind.AddRightArrow();
+
+            var msg = Language.StringByID(R.MyInternationalizationString.nothing);
+            if (!string.IsNullOrEmpty(bindFreshAirName))
+            {
+                msg = bindFreshAirName;
+            }
+            var btnNewWindStatu = rowNewWind.AddMostRightView(msg, 700);
+
+            rowNewWind.ButtonClickEvent += (sender, e) =>
+            {
+                this.deviceObj.DeviceEpoint = 2;
+                var paneTargetsBaseFormp = new PaneTargetsBaseForm(this.deviceObj, bindAcDev, DeviceBind.BindInfo.BindType.FreshAir);
+                Shared.Phone.UserView.HomePage.Instance.AddChidren(paneTargetsBaseFormp);
+                Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+                paneTargetsBaseFormp.Show();
+                paneTargetsBaseFormp.actionFreshAirTarget += (bindName) =>
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        if (string.IsNullOrEmpty(bindName))
+                        {
+                            btnNewWindStatu.Text = Language.StringByID(R.MyInternationalizationString.nothing);
+                        }
+                        else
+                        {
+                            btnNewWindStatu.Text = bindName;
+                        }
+                    });
+                };
+
+            };
+        }
+        #endregion
+
+        #region 鈻� 娓╁害鏉ユ簮_________________________ 
+        /// <summary>
+        ///  娓╁害鏉ユ簮琛�
+        /// </summary>
+        private void AddTemperatureSensorRow()
+        {
+            //娓╁害鏉ユ簮
+            var rowTemPerature = new FrameRowControl(listview.rowSpace / 2);
+            listview.AddChidren(rowTemPerature);
+            rowTemPerature.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.TemperatureSource), 600);
+            //搴曠嚎
+            rowTemPerature.AddBottomLine();
+            //鍙崇澶�
+            rowTemPerature.AddRightArrow();
+            var msg = Language.StringByID(R.MyInternationalizationString.nothing);
+            if (!string.IsNullOrEmpty(bindTemperatureName))
+            {
+                msg = bindTemperatureName;
+            }
+            var btnTemperatureStatu = rowTemPerature.AddMostRightView(msg, 700);
+            rowTemPerature.ButtonClickEvent += (sender, e) =>
+            {
+                this.deviceObj.DeviceEpoint = 1;
+                var paneTargetsBaseFormp = new PaneTargetsBaseForm(this.deviceObj, bindAcDev, DeviceBind.BindInfo.BindType.Temperature);
+                Shared.Phone.UserView.HomePage.Instance.AddChidren(paneTargetsBaseFormp);
+                Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+                paneTargetsBaseFormp.Show();
+                paneTargetsBaseFormp.actionTemperatureTarget += (bindName) =>
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        if (string.IsNullOrEmpty(bindName))
+                        {
+                            btnTemperatureStatu.Text = Language.StringByID(R.MyInternationalizationString.nothing);
+                        }
+                        else
+                        {
+                            btnTemperatureStatu.Text = bindName;
+                        }
+                    });
+                };
+            };
+        }
+        #endregion
+
+        #region 鈻� 婀垮害鏉ユ簮_________________________ 
+        /// <summary>
+        ///  婀垮害鏉ユ簮琛�
+        /// </summary>
+        private void AddHumiditySourceRow()
+        {
+            //婀垮害
+            var rowHumidity = new FrameRowControl(listview.rowSpace / 2);
+            listview.AddChidren(rowHumidity);
+            rowHumidity.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.HumiditySource), 600);
+            //搴曠嚎
+            rowHumidity.AddBottomLine();
+            //鍙崇澶�
+            rowHumidity.AddRightArrow();
+            var msg = Language.StringByID(R.MyInternationalizationString.nothing);
+            if (!string.IsNullOrEmpty(bindHumidityName))
+            {
+                msg = bindHumidityName;
+            }
+            var btnHumidityStatu = rowHumidity.AddMostRightView(msg, 700);
+            rowHumidity.ButtonClickEvent += (sender, e) =>
+            {
+                this.deviceObj.DeviceEpoint = 1;
+                var paneTargetsBaseFormp = new PaneTargetsBaseForm(this.deviceObj, bindAcDev, DeviceBind.BindInfo.BindType.Humidity);
+                Shared.Phone.UserView.HomePage.Instance.AddChidren(paneTargetsBaseFormp);
+                Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+                paneTargetsBaseFormp.Show();
+                paneTargetsBaseFormp.actionHumidityTarget += (bindName) =>
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        if (string.IsNullOrEmpty(bindName))
+                        {
+                            btnHumidityStatu.Text = Language.StringByID(R.MyInternationalizationString.nothing);
+                        }
+                        else
+                        {
+                            btnHumidityStatu.Text = bindName;
+                        }
+                    });
+                };
+            };
+        }
+        #endregion
+
+        #region 鈻� 浜害璋冭妭_________________________ 
+        /// <summary>
+        ///  浜害璋冭妭琛�
+        /// </summary>
+        private void AddLevelRow()
+        {
+            //浜害璋冭妭
+            var rowLight = new FrameRowControl(listview.rowSpace / 2);
+            listview.AddChidren(rowLight);
+            rowLight.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uLightRegulation), 600);
+            //搴曠嚎
+            rowLight.AddBottomLine();
+            //鍙崇澶�
+            rowLight.AddRightArrow();
+            rowLight.ButtonClickEvent += (sender, e) =>
+            {
+                var form = new PanelBrightnessAdjustForm();
+                form.AddForm(this.deviceObj);
+            };
+        }
+        #endregion
+
+        #region 鈻� 鍙充笂瑙掕彍鍗昣________________________ 
+        /// <summary>
+        /// 鍒濆鍖栧彸涓婅鑿滃崟
+        /// </summary>
+        private void InitTopRightMenu()
+        {
+            //妫�娴嬫鍥炶矾鏄惁鎷ユ湁瀹氫綅鍔熻兘
+            if (Common.LocalDevice.Current.DeviceIsCanFixedPosition(deviceObj) == false)
+            {
+                return;
+            }
+            var btnIcon = new MostRightIconControl(69, 69);
+            btnIcon.UnSelectedImagePath = "Item/More.png";
+            topFrameLayout.AddChidren(btnIcon);
+            btnIcon.InitControl();
+            btnIcon.ButtonClickEvent += ((sender, e) =>
+            {
+                //鏄剧ず鍙充笂瑙掕彍鍗曠晫闈�
+                this.ShowTopRightMenu();
+            });
+        }
+
+        /// <summary>
+        /// 鏄剧ず鍙充笂瑙掕彍鍗曠晫闈�
+        /// </summary>
+        private void ShowTopRightMenu()
+        {
+            var frame = new TopRightMenuControl(1, 1);
+            //瀹氫綅
+            string deviceMenu = Language.StringByID(R.MyInternationalizationString.uFixedPosition);
+            frame.AddRowMenu(deviceMenu, "Item/FixedPosition.png", "Item/FixedPositionSelected.png", () =>
+            {
+                //鍙戦�佸畾浣嶅姛鑳�
+                Common.LocalDevice.Current.SetFixedPositionCommand(deviceObj);
+            });
+        }
+
+        #endregion
+    }
+}
\ No newline at end of file

--
Gitblit v1.8.0