陈嘉乐
2020-07-10 48ba446936b51fffafa7c3600c0dadc6ac0e8c20
ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceMacInfoEditorForm.cs
@@ -248,6 +248,20 @@
                //添加【室内机设置】行(空调专用)
                this.AddIndoorUnitSettionRow();
            }
            else if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_SimpleMultifunction)
            {
                //简约多功能面板
                this.AddIBindRow();
                this.AddFunctionSettionRow();
                this.AddHumiditySourceRow();
                this.AddTemperatureSensorRow();
            }
            else if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_SimpleEnvironment)
            {
                //添加【绑定目标】行(简约环境面板用)
                this.AddSimplePanelSettionRow();
            }
            else
            {
                //添加【工作模式】行(pir传感器专用)
@@ -264,11 +278,20 @@
                    //添加【按键设置】行(面板专用)
                    this.AddPanelSettionRow();
                }
                //方悦新风面板没有功能设置
                if (deviceEnumInfo.ConcreteType != DeviceConcreteType.ButtonPanel_FangyueFreshAir)
                //检测能否显示功能设置的菜单
                if (this.CheckCanShowFunctionSettionRow() == true)
                {
                    //添加【功能设置】行
                    this.AddFunctionSettionRow();
                    if (deviceEnumInfo.ConcreteType == DeviceConcreteType.Sensor_PMTwoPointFive)
                    {
                        //PM传感器
                        this.AddFunctionSettionRowPM();
                    }
                    else
                    {
                        this.AddFunctionSettionRow();
                    }
                }
                //添加【干接点设置】行
@@ -522,6 +545,31 @@
            };
        }
        #region ■ 简约环境(面板)_____________________
        /// <summary>
        /// 添加【按键设置】行简约环境(面板)
        /// </summary>
        private void AddSimplePanelSettionRow()
        {
            //按键设置
            string caption = Language.StringByID(R.MyInternationalizationString.uPanelSettion);
            var btnFunction = new FrameRowControl(listview.rowSpace / 2);
            listview.AddChidren(btnFunction);
            btnFunction.AddLeftCaption(caption, 600);
            //向右图标
            btnFunction.AddRightArrow();
            //底线
            btnFunction.AddBottomLine();
            btnFunction.ButtonClickEvent += (sender, e) =>
            {
                var form = new DeviceBind.PanelSimpleEnvironmentTargetsForm();
            };
        }
        #endregion
        #endregion
        #region ■ 按键设置(方悦)_____________________
@@ -682,7 +730,11 @@
            //只有回路数大于1才能有这个菜单
            if (Common.LocalDevice.Current.GetDevicesCountByMac(listNewDevice[0].DeviceAddr) == 1)
            {
                return;
                //新风小模块只有一个回路,但要求新风小模块的新风有功能设置
                if (deviceEnumInfo.ConcreteType != DeviceConcreteType.Relay_FangyueFreshAirModul)
                {
                    return;
                }
            }
            if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueEnvironment
                || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFreshAir)
@@ -723,7 +775,7 @@
                    || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueEight)
                {
                    var form = new DevicePanel.PanelFangyueFunctionSettionForm();
                    form.AddForm(listNewDevice[0]);
                    form.AddForm(listNewDevice[0], deviceEnumInfo);
                }
                //河东的面板设备
                else if (deviceEnumInfo.BeloneType == DeviceBeloneType.A按键面板 && deviceEnumInfo.IsHdlDevice == true)
@@ -736,6 +788,27 @@
                    var form = new DeviceFunctionSettionForm();
                    form.AddForm(listNewDevice[0], false);
                }
            };
        }
        /// <summary>
        /// 添加传感器【功能设置】行
        /// </summary>
        private void AddFunctionSettionRowPM()
        {
            //功能设置
            string caption = Language.StringByID(R.MyInternationalizationString.uFunctionSettingUp);
            var btnFunction = new FrameRowControl(listview.rowSpace / 2);
            listview.AddChidren(btnFunction);
            btnFunction.AddLeftCaption(caption, 600);
            //向右图标
            btnFunction.AddRightArrow();
            //底线
            btnFunction.AddBottomLine();
            btnFunction.ButtonClickEvent += (sender, e) =>
            {
                var form = new DeviceFunctionSettionForm();
                form.AddForm(listNewDevice[0], false);
            };
        }
@@ -811,23 +884,24 @@
            btnFunction.AddLeftCaption(caption, 600);
            //开关图标
            var btnSwitch = btnFunction.AddMostRightSwitchIcon();
            //如果当前住宅是虚拟住宅的话,让所有菜单都不能点击
            if (Common.Config.Instance.Home.IsVirtually == true)
            {
                btnSwitch.CanClick = false;
            }
            //底线
            btnFunction.AddBottomLine();
            btnSwitch.ButtonClickEvent += async (sender, e) =>
            btnSwitch.ButtonClickEvent += (sender, e) =>
            {
                //切换模式
                bool statu = !btnSwitch.IsSelected;
                var result = await HdlDeviceCurtainLogic.Current.SetHandPullControl(deviceCurtain, statu);
                var result = HdlDeviceCurtainLogic.Current.SetHandPullControl(deviceCurtain, statu);
                if (result == true)
                {
                    btnSwitch.IsSelected = statu;
                }
            };
            //如果是虚拟住宅
            if (Common.Config.Instance.Home.IsVirtually == true)
            {
                btnSwitch.IsSelected = ModelData.DeviceModelDataLogic.Current.GetCurtainHandPullControl(deviceCurtain);
                return;
            }
            //添加属性上报监听
            string mainkeys = LocalDevice.Current.GetDeviceMainKeys(this.listNewDevice[0]);
@@ -887,7 +961,115 @@
                form.AddForm(listNewDevice[0].DeviceAddr);
            };
        }
        #endregion
        #region ■  简约多功能面板用___________________
        /// <summary>
        /// 添加【绑定目标】行
        /// </summary>
        private void AddIBindRow()
        {
            string bindTargets = Language.StringByID(R.MyInternationalizationString.uBindTargets);
            var btnBindTargets = new FrameRowControl(listview.rowSpace / 2);
            listview.AddChidren(btnBindTargets);
            btnBindTargets.AddLeftCaption(bindTargets, 600);
            //向右图标
            btnBindTargets.AddRightArrow();
            //底线
            btnBindTargets.AddBottomLine();
            btnBindTargets.ButtonClickEvent += (sender, e) =>
            {
                var form = new DeviceBind.PanelSimpleMutilfunctionTargetsForm();
            };
        }
        /// <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) =>
            {
                //var key = new Panel();
                //var bindHumiditySensorPage = new Shared.Phone.UserCenter.DeviceBind.PanelSimpleMutilfunctionBindSensorForm(key, bindHumidityDev, 3);
                //Shared.Phone.UserView.HomePage.Instance.AddChidren(bindHumiditySensorPage);
                //Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
                //bindHumiditySensorPage.Show();
                //bindHumiditySensorPage.actionHumidityTarget += (bindName) =>
                //{
                //    Application.RunOnMainThread(() =>
                //    {
                //        if (string.IsNullOrEmpty(bindName))
                //        {
                //            btnHumidityStatu.Text = Language.StringByID(R.MyInternationalizationString.nothing);
                //        }
                //        else
                //        {
                //            btnHumidityStatu.Text = bindName;
                //        }
                //    });
                //};
            };
        }
        /// <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) =>
            {
                //var key = new Panel();
                //var bindTemperatureSensorPage = new Shared.Phone.UserCenter.DeviceBind.PanelFangyueFreshAirTargetsForm(key, bindTemperatureDev, 2);
                //Shared.Phone.UserView.HomePage.Instance.AddChidren(bindTemperatureSensorPage);
                //Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
                //bindTemperatureSensorPage.Show();
                //bindTemperatureSensorPage.actionTemperatureTarget += (bindName) =>
                //{
                //    Application.RunOnMainThread(() =>
                //    {
                //        if (string.IsNullOrEmpty(bindName))
                //        {
                //            btnTemperatureStatu.Text = Language.StringByID(R.MyInternationalizationString.nothing);
                //        }
                //        else
                //        {
                //            btnTemperatureStatu.Text = bindName;
                //        }
                //    });
                //};
            };
        }
        #endregion
        #region ■ 功能类型(空气开关专用)_____________
@@ -897,108 +1079,23 @@
        /// </summary>
        private void AddAirSwitchFunctionTypeRow()
        {
            if (this.deviceEnumInfo.BeloneType != DeviceBeloneType.A智能空开)
            //2020.04.28变更:有个别设备它除了继电器回路,什么都没有了,
            //这个时候也要现实出来
            if (this.listNewDevice.Count != 1)
            {
                //不是空气开关
                return;
            }
            //功能类型
            string caption = Language.StringByID(R.MyInternationalizationString.uFunctionType);
            var DfunctionType = this.listNewDevice[0].DfunctionType;
            //功能类型的翻译名字
            int nowSelectNo = 1;
            string strType = string.Empty;
            if (DfunctionType == DeviceFunctionType.A灯光)
            if (this.listNewDevice[0].Type != DeviceType.OnOffOutput
                && this.listNewDevice[0].Type != DeviceType.AirSwitch)
            {
                strType = Language.StringByID(R.MyInternationalizationString.uLight);
                nowSelectNo = 1;
                return;
            }
            else if (DfunctionType == DeviceFunctionType.A开关)
            {
                strType = Language.StringByID(R.MyInternationalizationString.uSwitch);
                nowSelectNo = 0;
            }
            else if (DfunctionType == DeviceFunctionType.A插座)
            {
                strType = Language.StringByID(R.MyInternationalizationString.uSocket1);
                nowSelectNo = 2;
            }
            var btnFunction = new FrameCaptionViewControl(caption, strType, listview.rowSpace / 2);
            btnFunction.UseClickStatu = true;
            listview.AddChidren(btnFunction);
            btnFunction.InitControl();
            //自定义功能类型控件
            var rowFunction = new DeviceFunctionTypeRowControl(this.listNewDevice[0], listview.rowSpace / 2);
            listview.AddChidren(rowFunction);
            rowFunction.InitControl();
            //底线
            btnFunction.AddBottomLine();
            //右箭头
            btnFunction.AddRightArrow();
            btnFunction.ButtonClickEvent += (sender, e) =>
            {
                //显示列表
                var listText = new List<string>();
                listText.Add(Language.StringByID(R.MyInternationalizationString.uSwitch));//开关
                listText.Add(Language.StringByID(R.MyInternationalizationString.uLight));//灯光
                listText.Add(Language.StringByID(R.MyInternationalizationString.uSocket1));//插座
                //标题:选择功能类型
                var title = Language.StringByID(R.MyInternationalizationString.uSelectFunctionType);
                var form = new BottomItemSelectForm();
                form.CancelCallEvent = true;//允许取消
                form.AddForm(title, listText, nowSelectNo);
                form.FinishSelectEvent += (selectNo) =>
                {
                    if (selectNo == -1)
                    {
                        //选择取消
                        btnFunction.Text = string.Empty;
                    }
                    else
                    {
                        btnFunction.Text = listText[selectNo];
                    }
                    nowSelectNo = selectNo;
                    //记录起当前选择的功能类型
                    if (selectNo == 0)
                    {
                        this.listNewDevice[0].DfunctionType = DeviceFunctionType.A开关;
                        if (this.listNewDevice[0].IsCustomizeImage == false)
                        {
                            //重新设置图片
                            this.listNewDevice[0].IconPath = "Device/Switch.png";
                        }
                    }
                    else if (selectNo == 1)
                    {
                        this.listNewDevice[0].DfunctionType = DeviceFunctionType.A灯光;
                        if (this.listNewDevice[0].IsCustomizeImage == false)
                        {
                            //重新设置图片
                            this.listNewDevice[0].IconPath = "Device/Light.png";
                        }
                    }
                    else if (selectNo == 2)
                    {
                        this.listNewDevice[0].DfunctionType = DeviceFunctionType.A插座;
                        if (this.listNewDevice[0].IsCustomizeImage == false)
                        {
                            //重新设置图片
                            this.listNewDevice[0].IconPath = "Device/Socket1.png";
                        }
                    }
                    else
                    {
                        this.listNewDevice[0].DfunctionType = DeviceFunctionType.A未定义;
                        if (this.listNewDevice[0].IsCustomizeImage == false)
                        {
                            //重新设置图片
                            this.listNewDevice[0].IconPath = "Device/Switch.png";
                        }
                    }
                    this.listNewDevice[0].ReSave();
                };
            };
            rowFunction.AddBottomLine();
        }
        #endregion
@@ -1085,7 +1182,7 @@
            btnNewVersion.Visible = false;
            btnNewVersion.X = Application.GetRealWidth(242);
            btnNewVersion.Y = Application.GetRealHeight(23);
            rowUpDate.AddChidren(btnNewVersion, ChidrenBindMode.BindEventOnly);
            rowUpDate.AddChidren(btnNewVersion, ChidrenBindMode.BindEvent);
            rowUpDate.ButtonClickEvent += (sender, e) =>
            {
@@ -1168,11 +1265,11 @@
        /// 设备重命名
        /// </summary>
        /// <param name="i_deviceName">deviceName.</param>
        private async void DeviceReName(string i_deviceName, bool closeForm)
        private void DeviceReName(string i_deviceName, bool closeForm)
        {
            //修改MAC名
            string deviceName = i_deviceName.Trim();
            var result = await Common.LocalDevice.Current.ReMacName(this.listNewDevice, deviceName);
            var result = Common.LocalDevice.Current.ReMacName(this.listNewDevice, deviceName);
            if (result == false)
            {
                return;
@@ -1289,6 +1386,12 @@
            //移除获取设备硬件信息的监听线程
            HdlDeviceHardInfoLogic.Current.RemoveDeviceHardInfoThread(listNewDevice[0]);
            //设备新入网
            if (UserCenterResourse.DicActionForm.ContainsKey("AddDeviceTypeListForm") == true)
            {
                this.LoadFormMethodByName("DeviceListMainForm", "RefreshDeviceRow", new object[] { listNewDevice[0].DeviceAddr });
            }
            base.CloseFormBefore();
        }
@@ -1370,6 +1473,22 @@
            });
        }
        /// <summary>
        /// 检测能否显示功能设置的菜单
        /// </summary>
        /// <returns></returns>
        private bool CheckCanShowFunctionSettionRow()
        {
            //方悦新风面板没有功能设置
            if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFreshAir
                || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FourButtonScene
                || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_TwoButtonCurtain)
            {
                return false;
            }
            return true;
        }
        #endregion
    }
}