xm
2020-04-30 2eacb04ca1ec0ad20fda4186b59a9bce67004cb4
请合并小模块
1个文件已添加
1个文件已删除
39个文件已修改
2 文件已重命名
1474 ■■■■ 已修改文件
ZigbeeApp/GateWay.Droid/Assets/Language.ini 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Home.Ios/Resources/Language.ini 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Common/CommonPage.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Common/Device.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Login/AccountLoginForm.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Login/AccountRegisterSuccess.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Login/AccountResetPWDSuccess.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Login/Logic/AccountLogic.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/MainPage/ControlForm/DeviceFreshAirDetailCardForm.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/MainPage/Controls/DeviceCard/DeviceFreshAirCardControl.cs 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/MainPage/DeviceDetailInfoForm.cs 134 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/MainPage/HomeMainPageForm.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/BaseCommonControl/Base/ButtonBase.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/FrameLayoutControls/FrameLayoutStatuControl.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/FrameLayoutControls/FrameListControl.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/RowLayoutControls/DeviceFunctionTypeRowControl.cs 64 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceDoorLockLogic.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDevicePanelLogic.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayReceiveLogic.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/UserCenterLogic.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindInfo.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceMacInfoEditorForm.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Device/Direction/PanelFangyueFreshAirModulDirectionForm.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Device/DoorLock/DoorLockHistoryLogForm.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelBackLighWithSensorForm.cs 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirBackLightSettionForm.cs 98 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirButtonSettionForm.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetForm.cs 323 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFunctionSettionForm.cs 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFunctionSettionForm.cs 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonInfo.cs 74 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSetting.cs 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserView/HomePage.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/ZigBee/Device/DoorLock.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/ZigBee/Device/FreshAir.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/ZigBee/Device/Panel.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/R.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Shared.projitems 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Assets/Language.ini
@@ -1827,6 +1827,7 @@
16112=虚拟账号
16113=灯全开
16114=灯全关
16115=常开自动化手动取消
;★★★★下面这些是接口的返回信息翻译,从18000开始★★★★
18004=指定网关已经被绑定
@@ -1972,6 +1973,7 @@
40015=插座
40016=灯光
40017=干接点
40018=新风
;★★★★下面这些是模块ID的设备默认备注名字,从50000开始.注:它并不需要再R.cs文件中定义★★★★
50000=紧急按钮
ZigbeeApp/Home.Ios/Resources/Language.ini
@@ -238,12 +238,10 @@
232=接近感应功能设置置失败
233=获取接近感应功能失败
235=按住面板模式(Mode)和风速(Fan)按键{0}绿色指示灯亮起。则配网成功
;三按键面板入网操作指示
236=绿色指示灯闪烁
237=指示灯
238=长按5秒(按键)
239=长按图示按键5秒以上,指示灯变绿、闪烁{0}进入配网状态。绿灯熄灭则配网成功
;三按键面板入网操作指示
241=设置常开模式后,您的门锁将始终{0}处于打开状态,确认开启? 
242=电量
243=常开模式已开启
@@ -1828,6 +1826,7 @@
16112=虚拟账号
16113=灯全开
16114=灯全关
16115=常开自动化手动取消
;★★★★下面这些是接口的返回信息翻译,从18000开始★★★★
18004=指定网关已经被绑定
@@ -1973,6 +1972,7 @@
40015=插座
40016=灯光
40017=干接点
40018=新风
;★★★★下面这些是模块ID的设备默认备注名字,从50000开始.注:它并不需要再R.cs文件中定义★★★★
50000=紧急按钮
ZigbeeApp/Shared/Common/CommonPage.cs
@@ -57,7 +57,7 @@
        /// <summary>
        /// 版本号
        /// </summary>
        public static string CodeIDString = "1.0.20042701";
        public static string CodeIDString = "1.0.20042801";
        /// <summary>
        /// 注册来源(0:HDL On 1:Zigbee)
        /// </summary>
@@ -390,7 +390,7 @@
                    Config.Instance.Save();
                    CommonPage.Instance.RemoveAll();
                    CommonPage.Instance.Show();
                    var login = new Phone.Login.AccountLogin();
                    var login = new Phone.Login.AccountLoginForm();
                    CommonPage.Instance.AddChidren(login);
                    login.ShowForm();
                });
ZigbeeApp/Shared/Common/Device.cs
old mode 100755 new mode 100644
@@ -2060,6 +2060,7 @@
            list.Add(DeviceBeloneType.A插座);
            list.Add(DeviceBeloneType.A调光器);
            list.Add(DeviceBeloneType.A窗帘);
            list.Add(DeviceBeloneType.A新风);
            list.Add(DeviceBeloneType.A空调);
            list.Add(DeviceBeloneType.A继电器);
            list.Add(DeviceBeloneType.A干接点);
@@ -2648,7 +2649,9 @@
            this.dicDeviceModelIdEnum["MSS01/M-ZB.10"] = "1302-1300-60000";//烟雾传感器
            this.dicDeviceModelIdEnum["MSPIR01/M-ZB.10"] = "1303-1300-60000";//红外传感器
            this.dicDeviceModelIdEnum["MSW01/M-ZB.10"] = "1304-1300-60000";//水浸传感器
            this.dicDeviceModelIdEnum["MBU01/M-ZB.10"] = "1305-1300-60000";//紧急按键
            this.dicDeviceModelIdEnum["MBU01/M-ZB.10"] = "1305-1300-60000";//紧急按键DZ_PM100-V1.6
            this.dicDeviceModelIdEnum["MSW01/M-ZB.10"] = "1306-1300-60000";//水浸传感器
            //=========★★继电器类(2300-2499)★★=========
            this.dicDeviceModelIdEnum["MPR0310-ZB.10"] = "2300-2300-60001";//3路继电器小模块
@@ -2992,6 +2995,10 @@
        /// </summary>
        A继电器 = 2300,
        /// <summary>
        /// 新风
        /// </summary>
        A新风 = 2310,
        /// <summary>
        /// 调光器(2500-2799)
        /// </summary>
        A调光器 = 2500,
@@ -3047,10 +3054,6 @@
        /// 干接点
        /// </summary>
        A干接点 = 16,
        /// <summary>
        /// 新风
        /// </summary>
        A新风 = 17
    }
    #endregion
ZigbeeApp/Shared/Phone/Login/AccountLoginForm.cs
File was renamed from ZigbeeApp/Shared/Phone/Login/AccountLogin.cs
@@ -9,7 +9,7 @@
    /// <summary>
    /// 登录界面
    /// </summary>
    public class AccountLogin : FrameLayoutBase
    public class AccountLoginForm : FrameLayoutBase
    {
        #region ■ 变量声明___________________________
ZigbeeApp/Shared/Phone/Login/AccountRegisterSuccess.cs
@@ -135,7 +135,7 @@
                            //未登录成功弹出登录界面 同时需要标记为未登录状态
                            Config.Instance.LoginDateTime = new DateTime(1970, 1, 1);
                            Config.Instance.Save();
                            var login = new AccountLogin();
                            var login = new AccountLoginForm();
                            CommonPage.Instance.AddChidren(login);
                            login.ShowForm(account);
                        });
ZigbeeApp/Shared/Phone/Login/AccountResetPWDSuccess.cs
@@ -95,7 +95,7 @@
                }
                finally
                {
                    var login = new AccountLogin();
                    var login = new AccountLoginForm();
                    CommonPage.Instance.AddChidren(login);
                    login.ShowForm();
                }
ZigbeeApp/Shared/Phone/Login/Logic/AccountLogic.cs
File was renamed from ZigbeeApp/Shared/Phone/Login/AccountLogic.cs
@@ -116,10 +116,6 @@
                };
                var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestObj);
                var revertObj = await RequestHttpsZigbeeAsync("ProcessRange/ReceiveAppLatAndLon", System.Text.Encoding.UTF8.GetBytes(requestJson));
                //if (revertObj.StateCode.ToUpper() == "SUCCESS")
                //{
                //    System.Console.WriteLine("上传位置成功" + lat + lon);
                //}
            }
            catch { }
        }
ZigbeeApp/Shared/Phone/MainPage/ControlForm/DeviceFreshAirDetailCardForm.cs
old mode 100755 new mode 100644
@@ -106,7 +106,7 @@
            {
                if (!btnManual.IsSelected)
                {
                    this.SetFanComand(7);
                    this.SetFanComand(15);
                }
            };
@@ -217,7 +217,7 @@
        ///3:High
        ///4:On
        ///5:Auto
        /// 7:Manual
        /// 15:Manual
        /// </summary> 
        private void SetFanComand(int command)
        {
@@ -247,7 +247,7 @@
                case 5:
                    FreshAirDev.SetAuto();
                    break;
                case 7:
                case 15:
                    FreshAirDev.SetManual();
                    break;
            }
@@ -295,7 +295,7 @@
                this.listControl[2].IsBold = false;
                this.listControl[3].Visible = false;
            }
            else if (FreshAirDev.currentFanMode == 7)
            else if (FreshAirDev.currentFanMode == 15)
            {
                this.listControl[0].TextColor = ZigbeeColor.Current.XMGray3;
                this.listControl[0].IsBold = false;
ZigbeeApp/Shared/Phone/MainPage/Controls/DeviceCard/DeviceFreshAirCardControl.cs
New file
@@ -0,0 +1,116 @@
using System;
using Shared.Phone.UserCenter;
using ZigBee.Device;
namespace Shared.Phone.MainPage.Controls
{
    /// <summary>
    /// 新风卡片的控件
    /// </summary>
    public class DeviceFreshAirCardControl : DeviceCardCommon
    {
        #region ■ 初始化_____________________________
        /// <summary>
        /// 初始化控件
        /// </summary>
        /// <param name="i_device"></param>
        public override void InitControl(CommonDevice i_device)
        {
            base.InitControl(i_device);
            //添加跳转深度卡片信息事件
            this.AddDetailInfoEvent(i_device);
            //添加开关控件
            var btnSwitch = this.AddSwitchControl();
            btnSwitch.ButtonClickEvent += (sender, e) =>
            {
                //如果住宅为虚拟住宅
                if (Common.Config.Instance.Home.IsVirtually == true)
                {
                    //直接变更缓存
                    ((FreshAir)i_device).currentFanStatus = btnSwitch.IsSelected == true ? 4 : 0;
                    this.RefreshControlInfo(this.device);
                    return;
                }
                bool setStatu = !btnSwitch.IsSelected;
                //变更卡片状态
                this.SetCardOpenStatu(setStatu);
                //检测是否获取网关反馈的结果,如果网关没有回复,则会弹出消息
                this.StartCheckResponeResult(!setStatu);
                if (setStatu == true)
                {
                    //打开
                    this.SetDeviceStatuText(Language.StringByID(R.MyInternationalizationString.uOpen1));
                    (i_device as FreshAir).Open();
                }
                else
                {
                    //关闭
                    this.SetDeviceStatuText(Language.StringByID(R.MyInternationalizationString.Close));
                    (i_device as FreshAir).Close();
                }
            };
        }
        #endregion
        #region ■ 深度卡片信息_______________________
        /// <summary>
        /// 添加跳转深度卡片信息事件
        /// </summary>
        private void AddDetailInfoEvent(CommonDevice i_device)
        {
            //深度卡片信息
            this.ButtonClickEvent += (sender, e) =>
            {
                Common.CommonPage.Instance.IsDrawerLockMode = true;
                //新风类型的深度卡片界面
                var form = new MainPage.ControlForm.DeviceFreshAirDetailCardForm();
                form.AddForm(i_device, HdlRoomLogic.Current.CurrentRoom, 965, 1374);
                form.FormCloseEvent += this.CardDetailInfoBackEvent;
            };
        }
        #endregion
        #region ■ 检测设备打开状态___________________
        /// <summary>
        /// 检测设备打开状态
        /// </summary>
        /// <param name="i_device"></param>
        /// <returns></returns>
        public override bool CheckIsOpenStatu(CommonDevice i_device)
        {
            return ((FreshAir)i_device).currentFanStatus != 0;
        }
        #endregion
        #region ■ 发送获取状态命令___________________
        /// <summary>
        /// 发送获取状态命令
        /// </summary>
        public override void SendStatuComand()
        {
            if (Common.Config.Instance.Home.IsVirtually == true)
            {
                //如果住宅为虚拟住宅,则此功能无效
                return;
            }
            //检测能否发送获取状态命令
            if (this.CheckCanSendStatuComand() == true)
            {
                HdlDeviceAttributeLogic.Current.SendACStatuComand(this.device);
            }
        }
        #endregion
    }
}
ZigbeeApp/Shared/Phone/MainPage/DeviceDetailInfoForm.cs
@@ -272,105 +272,19 @@
        /// </summary>
        private void AddFunctionTypeRowByAdmin(NormalViewControl btnBelongType)
        {
            //如果是继电器,空气开关,调光器的话
            if (device.Type == DeviceType.OnOffOutput || device.Type == DeviceType.DimmableLight
                || device.Type == DeviceType.ColorDimmableLight || device.Type == DeviceType.AirSwitch)
            //自定义功能类型控件
            var rowFunction = new DeviceFunctionTypeRowControl(device, listview.rowSpace / 2);
            if (rowFunction.CanShowRow == true)
            {
                //功能类型的翻译名字
                int nowSelectNo = 1;
                string strType = string.Empty;
                if (this.device.DfunctionType == DeviceFunctionType.A灯光)
                {
                    strType = Language.StringByID(R.MyInternationalizationString.uLight);
                    nowSelectNo = 1;
                }
                else if (this.device.DfunctionType == DeviceFunctionType.A开关)
                {
                    strType = Language.StringByID(R.MyInternationalizationString.uSwitch);
                    nowSelectNo = 0;
                }
                else if (this.device.DfunctionType == DeviceFunctionType.A插座)
                {
                    strType = Language.StringByID(R.MyInternationalizationString.uSocket1);
                    nowSelectNo = 2;
                }
                //功能类型
                var btnFunction = new FrameCaptionViewControl(Language.StringByID(R.MyInternationalizationString.uFunctionType), strType, listview.rowSpace / 2);
                btnFunction.UseClickStatu = false;
                listview.AddChidren(btnFunction);
                btnFunction.InitControl();
                listview.AddChidren(rowFunction);
                rowFunction.InitControl();
                //底线
                btnFunction.AddBottomLine();
                //如果是空气开关和继电器,才能修改
                if (device.Type == DeviceType.OnOffOutput || device.Type == DeviceType.AirSwitch)
                rowFunction.AddBottomLine();
                rowFunction.FinishSelectEvent += (index) =>
                {
                    //右箭头
                    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.SelectRowCanCancel = false;//选择的不能取消
                        form.AddForm(title, listText, nowSelectNo);
                        form.FinishSelectEvent += (selectNo) =>
                        {
                            btnFunction.Text = listText[selectNo];
                            //当类型变更时,头上的类型也一起变更
                            btnBelongType.Text = listText[selectNo];
                            nowSelectNo = selectNo;
                            //记录起当前选择的功能类型
                            if (selectNo == 0)
                            {
                                this.device.DfunctionType = DeviceFunctionType.A开关;
                                if (this.device.IsCustomizeImage == false)
                                {
                                    //重新设置图片
                                    this.device.IconPath = "Device/Switch.png";
                                }
                            }
                            else if (selectNo == 1)
                            {
                                this.device.DfunctionType = DeviceFunctionType.A灯光;
                                if (this.device.IsCustomizeImage == false)
                                {
                                    //重新设置图片
                                    this.device.IconPath = "Device/Light.png";
                                }
                            }
                            else
                            {
                                this.device.DfunctionType = DeviceFunctionType.A插座;
                                if (this.device.IsCustomizeImage == false)
                                {
                                    //重新设置图片
                                    this.device.IconPath = "Device/Socket1.png";
                                }
                            }
                            this.device.ReSave();
                    btnBelongType.Text = rowFunction.Text;
                        };
                    };
                }
            }
            //如果是新风
            if (device.Type == DeviceType.FreshAir)
            {
                //功能类型
                string caption = Language.StringByID(R.MyInternationalizationString.uFunctionType);
                string strType = Language.StringByID(R.MyInternationalizationString.FreshAir);
                var btnFunction = new FrameCaptionViewControl(caption, strType, listview.rowSpace / 2);
                btnFunction.UseClickStatu = false;
                listview.AddChidren(btnFunction);
                btnFunction.InitControl();
                //底线
                btnFunction.AddBottomLine();
            }
        }
@@ -379,32 +293,16 @@
        /// </summary>
        private void AddFunctionTypeRowByMember()
        {
            //如果是继电器,空气开关,调光器的话
            if (device.Type == DeviceType.OnOffOutput || device.Type == DeviceType.DimmableLight
                || device.Type == DeviceType.ColorDimmableLight || device.Type == DeviceType.AirSwitch)
            //自定义功能类型控件
            var rowFunction = new DeviceFunctionTypeRowControl(device, listview.rowSpace / 2);
            if (rowFunction.CanShowRow == true)
            {
                //功能类型的翻译名字
                string strType = string.Empty;
                if (this.device.DfunctionType == DeviceFunctionType.A灯光)
                {
                    strType = Language.StringByID(R.MyInternationalizationString.uLight);
                }
                else if (this.device.DfunctionType == DeviceFunctionType.A开关)
                {
                    strType = Language.StringByID(R.MyInternationalizationString.uSwitch);
                }
                else if (this.device.DfunctionType == DeviceFunctionType.A插座)
                {
                    strType = Language.StringByID(R.MyInternationalizationString.uSocket1);
                }
                //功能类型
                var btnFunction = new FrameCaptionViewControl(Language.StringByID(R.MyInternationalizationString.uFunctionType), strType, listview.rowSpace / 2);
                btnFunction.UseClickStatu = false;
                listview.AddChidren(btnFunction);
                btnFunction.InitControl();
                //强制干涉不能选择
                rowFunction.SetCanSelect = false;
                listview.AddChidren(rowFunction);
                rowFunction.InitControl();
                //底线
                btnFunction.AddBottomLine();
                rowFunction.AddBottomLine();
            }
        }
ZigbeeApp/Shared/Phone/MainPage/HomeMainPageForm.cs
old mode 100755 new mode 100644
@@ -607,6 +607,11 @@
                    {
                        cardContr = new Controls.DeviceAcCardControl();
                    }
                    //新风
                    else if (device.Type == DeviceType.FreshAir)
                    {
                        cardContr = new Controls.DeviceFreshAirCardControl();
                    }
                    //彩灯(调光器)
                    else if (device.Type == DeviceType.DimmableLight)
                    {
@@ -1139,6 +1144,11 @@
                            //空调是特殊的,它的开关是属性上报来着.已经接收到网关的反馈
                            this.dicDeviceCardControl[mainKeys].SetHadGetResponeResultStatu();
                        }
                        if (report.DeviceStatusReport.CluterID == 514 && report.DeviceStatusReport.AttriBute[0].AttributeId == 0)
                        {
                            //新风是特殊的,它的开关是属性上报来着.已经接收到网关的反馈
                            this.dicDeviceCardControl[mainKeys].SetHadGetResponeResultStatu();
                        }
                        this.dicDeviceCardControl[mainKeys].RefreshControlInfo(locadevice);
                    }
                }, ShowErrorMode.NO);
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/BaseCommonControl/Base/ButtonBase.cs
@@ -58,6 +58,23 @@
        #endregion
        #region ■ 重写彪哥的属性_____________________
        /// <summary>
        /// 重写Text属性
        /// </summary>
        public new string Text
        {
            //先这么弄先吧
            get { return base.Text == null ? string.Empty : base.Text; }
            set
            {
                base.Text = value == null ? string.Empty : value;
            }
        }
        #endregion
        #region ■ 初始化_____________________________
        /// <summary>
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/FrameLayoutControls/FrameLayoutStatuControl.cs
@@ -196,6 +196,15 @@
            this.BindChidrenEvent(view, chidrenBindMode);
        }
        /// <summary>
        /// 添加子控件
        /// </summary>
        /// <param name="view"></param>
        public override void AddChidren(View view)
        {
            this.AddChidren(view, ChidrenBindMode.NotBind);
        }
        #endregion
        #region ■ 控件事件___________________________
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/FrameLayoutControls/FrameListControl.cs
@@ -7,7 +7,7 @@
    /// <summary>
    /// 做成一个列表型的FrameLayout(它与VerticalListControl同一性质,但是它是FrameLayout,它会改变高度)
    /// </summary>
    public class FrameListControl : FrameLayout
    public class FrameListControl : FrameLayoutBase
    {
        /// <summary>
        /// 行之间的间距
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/RowLayoutControls/DeviceFunctionTypeRowControl.cs
old mode 100755 new mode 100644
@@ -13,11 +13,27 @@
        #region ■ 变量声明___________________________
        /// <summary>
        /// 判断该控件能否显示(最好确保设备对象不为null)
        /// 结束选择的事件 value:索引(从0开始)  文本信息请用Text获取
        /// </summary>
        public Action<int> FinishSelectEvent = null;
        /// <summary>
        /// 判断该控件能否显示
        /// </summary>
        public bool CanShowRow
        {
            get { return this.CheckCanShowRow(); }
        }
        private bool m_SetCanSelect = true;
        /// <summary>
        /// 强制设置能否进行选择(只对继电器和空气开关有效,个别界面需要这种操作)
        /// </summary>
        public bool SetCanSelect
        {
            set
            {
                m_SetCanSelect = value;
            }
        }
        /// <summary>
        /// 设备对象
@@ -33,7 +49,7 @@
        #region ■ 初始化_____________________________
        /// <summary>
        /// 设备功能类型的自定义行控件(此方法选择之后,无条件直接变更类型)
        /// 设备功能类型的自定义行控件(选择功能之后,无条件直接变更类型)
        /// </summary>
        /// <param name="i_device">设备的对象</param>
        /// <param name="i_ChidrenYaxis">子控件Y轴偏移量(真实值,有些界面需要这种特殊操作)</param>
@@ -53,15 +69,12 @@
            //初始化底层数据
            base.InitControl();
            if (this.device == null)
            {
                //此控件采用的是另外一种初始化方式
                return;
            }
            //空气开关和继电器可以选择功能类型
            if (this.device.Type == DeviceType.AirSwitch
                || this.device.Type == DeviceType.OnOffOutput)
            {
                //没被强制干涉的话
                if (m_SetCanSelect == true)
            {
                this.UseClickStatu = true;
                //右箭头
@@ -72,6 +85,7 @@
                    //显示选择设备功能类型的界面
                    this.ShowSelectDeviceFunctionListForm();
                };
                }
            }
        }
@@ -103,6 +117,9 @@
                //记录起当前选择的功能类型
                this.RefreshDfunctionType();
                //调用回调函数
                this.FinishSelectEvent?.Invoke(nowSelectNo);
            };
        }
        #endregion
@@ -117,12 +134,7 @@
            //标题:功能类型
            this.btnCaption.Text = Language.StringByID(R.MyInternationalizationString.uFunctionType);
            var myFunType = DeviceFunctionType.A未定义;
            if (this.device != null)
            {
                myFunType = this.device.DfunctionType;
            }
            var myFunType = this.device.DfunctionType;
            //功能类型的翻译名字
            string strType = string.Empty;
            if (myFunType == DeviceFunctionType.A灯光)
@@ -141,9 +153,6 @@
                nowSelectNo = 2;
            }
            //如果设备不为null
            if (this.device != null)
            {
                if (this.device.Type == DeviceType.ColorDimmableLight
                    || this.device.Type == DeviceType.DimmableLight)
                {
@@ -169,7 +178,13 @@
                    strType = Language.StringByID(R.MyInternationalizationString.uDeviceBelongId2800);
                    nowSelectNo = -1;
                }
            else if (this.device.Type == DeviceType.FreshAir)
            {
                //新风固定为 新风
                strType = Language.StringByID(R.MyInternationalizationString.FreshAir);
                nowSelectNo = -1;
            }
            //显示文本
            this.txtView.Text = strType;
        }
@@ -192,6 +207,7 @@
                || this.device.Type == DeviceType.DoorLock//门锁
                || this.device.Type == DeviceType.OnOffOutput//继电器
                || this.device.Type == DeviceType.Thermostat//空调
                || this.device.Type == DeviceType.FreshAir//新风
                || this.device.Type == DeviceType.WindowCoveringDevice)//窗帘
            {
                return true;
@@ -201,6 +217,20 @@
        #endregion
        #region ■ 控件摧毁___________________________
        /// <summary>
        /// 控件摧毁
        /// </summary>
        public override void RemoveFromParent()
        {
            this.FinishSelectEvent = null;
            base.RemoveFromParent();
        }
        #endregion
        #region ■ 一般方法___________________________
        /// <summary>
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceDoorLockLogic.cs
@@ -38,7 +38,7 @@
        /// 添加历史记录
        /// </summary>
        /// <param name="i_doorLock">门锁对象</param>
        /// <param name="OtherOpenLockMode">其他开锁方式 9001:常开打开 9002:常开取消 9003:常开持续</param>
        /// <param name="OtherOpenLockMode">其他开锁方式 9001:常开打开 9002:常开取消 9003:常开持续 9004:常开自动化手动取消</param>
        /// <param name="NormallyOpenContinuedTime">常开持续时间(1~72小时 OtherOpenLockMode=9003的时候有效)</param>
        public void AddDoorHistoryLog(ZigBee.Device.DoorLock i_doorLock, int OtherOpenLockMode, string NormallyOpenContinuedTime)
        {
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDevicePanelLogic.cs
old mode 100755 new mode 100644
@@ -113,6 +113,37 @@
            return true;
        }
        /// <summary>
        /// 设置面板颜色
        /// </summary>
        /// <param name="panel">按键面板的</param>
        /// <param name="colorData">只设置开的颜色</param>
        /// <returns></returns>
        public async Task<bool> SetPanelColorInfo(Panel panel, Panel.KeyColorData colorData)
        {
            var keyNum = new Panel.KeyNumStatus();
            //默认第一个用面板第一个按键颜色作为整个面板的颜色
            keyNum.Key1 = true;
            var result = await panel.SetPanelColorInfoAsync(colorData, keyNum);
            if (result == null || result.responseData == null)
            {
                //设置按键面板指示灯颜色失败
                string msg = Language.StringByID(R.MyInternationalizationString.uSetPanelPilolightSettionFail);
                this.ShowErrorMsg(msg);
                return false;
            }
            if (result.responseData.status != 0)
            {
                //设置按键面板指示灯颜色失败
                string msg = Language.StringByID(R.MyInternationalizationString.uSetPanelPilolightSettionFail);
                this.ShowErrorMsg(msg);
                return false;
            }
            //备份设备
            await HdlGatewayLogic.Current.UpLoadDeviceBackupDataToGateway(panel, GatewayBackupEnum.A干接点颜色调节, colorData);
            return true;
        }
        #endregion
        #region ■ 亮度调节___________________________
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayReceiveLogic.cs
old mode 100755 new mode 100644
@@ -362,7 +362,7 @@
                                        ((FreshAir)locadevice).currentFanSpeed = attData.AttriButeData;
                                        break;
                                    case 5:
                                    case 7:
                                    case 15:
                                        ((FreshAir)locadevice).currentFanMode = attData.AttriButeData;
                                        break;
                                }
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/UserCenterLogic.cs
@@ -642,7 +642,7 @@
                    CloseAllOpenForm();
                    //显示登陆画面
                    var formLogin = new Login.AccountLogin();
                    var formLogin = new Login.AccountLoginForm();
                    Shared.Common.CommonPage.Instance.AddChidren(formLogin);
                    formLogin.ShowForm(account);
                });
@@ -683,7 +683,7 @@
                    CloseAllOpenForm();
                    //显示登陆画面
                    var formLogin = new Login.AccountLogin();
                    var formLogin = new Login.AccountLoginForm();
                    Shared.Common.CommonPage.Instance.AddChidren(formLogin);
                    formLogin.ShowForm(account);
                });
ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindInfo.cs
old mode 100755 new mode 100644
@@ -170,6 +170,26 @@
        }
        /// <summary>
        /// 获取当前楼层名称
        /// fllodID:楼层ID
        /// </summary>
        /// <returns></returns>
        public static string GetBindTargetsFloorIdName(string curFllodID)
        {
            var dicFloor = HdlRoomLogic.Current.GetFloorSortList();
            foreach (var floorId in dicFloor.Keys)
            {
                //当前楼层
                if (curFllodID == floorId)
                {
                    return dicFloor[floorId];
                    break;
                }
            }
            return null;
        }
        /// <summary>
        ///  检测控制面板(按键类)所拥有的功能,现支持的有以下几种(必定存在键值,出错会返回null)
        /// </summary>
        /// <returns>The panel key function level2.</returns>
ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs
old mode 100755 new mode 100644
@@ -89,10 +89,7 @@
                    localDeviceList.Clear();
                    scList.Clear();
                    //获取本地设备列表
                    foreach (var dev in Shared.Common.LocalDevice.Current.listAllDevice)
                    {
                        localDeviceList.Add(dev);
                    }
                    localDeviceList = Shared.Common.LocalDevice.Current.listAllDevice;
                    //获取本地场景列表
                    scList = HdlSceneLogic.Current.GetAllRoomSceneList();
                    //获取网关场景表
ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs
@@ -41,10 +41,6 @@
        /// </summary>
        private Dictionary<int, string> dicDeviceSaveName = new Dictionary<int, string>();
        /// <summary>
        /// 设备需要保存的设备功能
        /// </summary>
        private Dictionary<int, DeviceFunctionType> dicDeviceFuncType = new Dictionary<int, DeviceFunctionType>();
        /// <summary>
        /// 信息编辑控件
        /// </summary>
        private InformationEditorControl tableContr = null;
@@ -108,8 +104,6 @@
            {
                //记录起当前正在操作的回路名字
                dicDeviceSaveName[nowSelectDevice.DeviceEpoint] = btnDeviceName.Text.Trim();
                //开启进度条
                this.ShowProgressBar();
                foreach (var epoint in dicDeviceSaveName.Keys)
                {
                    var device = Common.LocalDevice.Current.GetDevice(deviceObj.DeviceAddr, epoint);
@@ -126,45 +120,10 @@
                        var result = await Common.LocalDevice.Current.ReName(device, newName);
                        if (result == false)
                        {
                            //关闭
                            this.CloseProgressBar();
                            return;
                        }
                    }
                }
                foreach (var epoint in dicDeviceFuncType.Keys)
                {
                    var device = Common.LocalDevice.Current.GetDevice(deviceObj.DeviceAddr, epoint);
                    if (device == null)
                    {
                        continue;
                    }
                    //设置功能类型
                    device.DfunctionType = dicDeviceFuncType[epoint];
                    if (device.IsCustomizeImage == true)
                    {
                        continue;
                    }
                    //重新设置图片
                    if (device.DfunctionType == DeviceFunctionType.A开关)
                    {
                        device.IconPath = "Device/Switch.png";
                    }
                    else if (device.DfunctionType == DeviceFunctionType.A插座)
                    {
                        device.IconPath = "Device/Socket1.png";
                    }
                    else if (device.DfunctionType == DeviceFunctionType.A灯光)
                    {
                        device.IconPath = "Device/Light.png";
                    }
                    else
                    {
                        device.IconPath = "Device/RelayEpoint.png";
                    }
                    device.ReSave();
                }
                this.CloseProgressBar();
                //关闭自身
                this.CloseForm();
            };
@@ -295,110 +254,16 @@
        /// </summary>
        private void AddFunctionTypeRow()
        {
            //如果是继电器和调光器的话
            if (nowSelectDevice.Type == DeviceType.OnOffOutput || nowSelectDevice.Type == DeviceType.DimmableLight
                || nowSelectDevice.Type == DeviceType.ColorDimmableLight)
            //自定义功能类型控件
            var rowFunction = new DeviceFunctionTypeRowControl(nowSelectDevice, listview.rowSpace / 2);
            if (rowFunction.CanShowRow == false)
            {
                //功能类型
                string caption = Language.StringByID(R.MyInternationalizationString.uFunctionType);
                var DfunctionType = nowSelectDevice.DfunctionType;
                if (this.dicDeviceFuncType.ContainsKey(nowSelectDevice.DeviceEpoint) == true)
                {
                    DfunctionType = this.dicDeviceFuncType[nowSelectDevice.DeviceEpoint];
                return;
                }
                //功能类型的翻译名字
                int nowSelectNo = 1;
                string strType = string.Empty;
                if (DfunctionType == DeviceFunctionType.A灯光)
                {
                    strType = Language.StringByID(R.MyInternationalizationString.uLight);
                    nowSelectNo = 1;
                }
                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 = false;
                listview.AddChidren(btnFunction);
                btnFunction.InitControl();
            listview.AddChidren(rowFunction);
            rowFunction.InitControl();
                //底线
                btnFunction.AddBottomLine();
                //如果是继电器才能够更改这个功能类型
                if (nowSelectDevice.Type == DeviceType.OnOffOutput)
                {
                    btnFunction.UseClickStatu = true;
                    //右箭头
                    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)
                            {
                                dicDeviceFuncType[nowSelectDevice.DeviceEpoint] = DeviceFunctionType.A开关;
                            }
                            else if (selectNo == 1)
                            {
                                dicDeviceFuncType[nowSelectDevice.DeviceEpoint] = DeviceFunctionType.A灯光;
                            }
                            else if (selectNo == 2)
                            {
                                dicDeviceFuncType[nowSelectDevice.DeviceEpoint] = DeviceFunctionType.A插座;
                            }
                            else
                            {
                                dicDeviceFuncType[nowSelectDevice.DeviceEpoint] = DeviceFunctionType.A未定义;
                            }
                        };
                    };
                }
            }
            //如果是新风
            if (nowSelectDevice.Type == DeviceType.FreshAir)
            {
                //功能类型
                string caption = Language.StringByID(R.MyInternationalizationString.uFunctionType);
                string strType = Language.StringByID(R.MyInternationalizationString.FreshAir);
                var btnFunction = new FrameCaptionViewControl(caption, strType, listview.rowSpace / 2);
                btnFunction.UseClickStatu = false;
                listview.AddChidren(btnFunction);
                btnFunction.InitControl();
                //底线
                btnFunction.AddBottomLine();
            }
            rowFunction.AddBottomLine();
        }
        #endregion
ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceMacInfoEditorForm.cs
@@ -901,9 +901,15 @@
        /// </summary>
        private void AddAirSwitchFunctionTypeRow()
        {
            if (this.deviceEnumInfo.BeloneType != DeviceBeloneType.A智能空开)
            //2020.04.28变更:有个别设备它除了继电器回路,什么都没有了,
            //这个时候也要现实出来
            if (this.listNewDevice.Count != 1)
            {
                //不是空气开关
                return;
            }
            if (this.listNewDevice[0].Type != DeviceType.OnOffOutput
                && this.listNewDevice[0].Type != DeviceType.AirSwitch)
            {
                return;
            }
            //自定义功能类型控件
ZigbeeApp/Shared/Phone/UserCenter/Device/Direction/PanelFangyueFreshAirModulDirectionForm.cs
old mode 100755 new mode 100644
@@ -70,7 +70,7 @@
            //长按图示按键5秒以上,指示灯变绿、闪烁
            //进入配网状态。绿灯快闪3秒则配网成功
            string[] msgArry = Language.StringByID(R.MyInternationalizationString.uAddTwoButtonPanelMsg).Split(new string[] { "{0}" }, StringSplitOptions.RemoveEmptyEntries);
            string[] msgArry = Language.StringByID(R.MyInternationalizationString.AddFreshAirModulPanelMsg).Split(new string[] { "{0}" }, StringSplitOptions.RemoveEmptyEntries);
            var msg1 = new NormalViewControl(bodyFrameLayout.Width, Application.GetRealHeight(60), false);
            msg1.Y = Application.GetRealHeight(1037);
ZigbeeApp/Shared/Phone/UserCenter/Device/DoorLock/DoorLockHistoryLogForm.cs
@@ -395,6 +395,11 @@
                    //常开模式启用{0}小时
                    btnMsg.Text = Language.StringByID(R.MyInternationalizationString.uNormallyOpenModeOpenSomeTime).Replace("{0}", historyInfo.NormallyOpenContinuedTime);
                }
                else if (historyInfo.OtherOpenLockMode == 9004)
                {
                    //常开自动化手动取消
                    btnMsg.Text = Language.StringByID(R.MyInternationalizationString.uNormallyOpenLogicManualClose);
                }
                else
                {
                    //上面是App手动推送,这里是网关或者门锁自己推送
@@ -1104,7 +1109,7 @@
            /// </summary>
            public string CloudAccountId = string.Empty;
            /// <summary>
            /// 其他开锁方式(OpenLockMode=9000时有效) 9001:常开打开 9002:常开取消 9003:常开持续
            /// 其他开锁方式(OpenLockMode=9000时有效) 9001:常开打开 9002:常开取消 9003:常开持续 9004:常开自动化手动取消
            /// </summary>
            public int? OtherOpenLockMode = -1;
            /// <summary>
ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelBackLighWithSensorForm.cs
old mode 100755 new mode 100644
ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirBackLightSettionForm.cs
@@ -260,7 +260,7 @@
        #region ■ 背光颜色_________________________
        /// <summary>
        /// 添加背光灯亮度控件
        /// 添加背光颜色控件
        /// </summary>
        private void AddBackLightControl()
        {
@@ -271,7 +271,7 @@
            //背景
            var frameBack = new FrameLayout();
            frameBack.Y = Application.GetRealHeight(490);
            frameBack.Height = Application.GetRealHeight(429);
            frameBack.Height = Application.GetRealHeight(170);
            frameBack.BackgroundColor = UserCenterColor.Current.White;
            listview.AddChidren(frameBack);
@@ -279,61 +279,20 @@
            var btnLevelView = new NormalViewControl(400, 60, true);
            btnLevelView.X = ControlCommonResourse.XXLeft;
            btnLevelView.Y = Application.GetRealHeight(54);
            btnLevelView.Gravity = Gravity.CenterVertical;
            btnLevelView.TextID = R.MyInternationalizationString.BackgroundLightColor;
            frameBack.AddChidren(btnLevelView);
            //当前亮度
            var btnProgressView1 = new NormalViewControl(200, 50, true);
            btnProgressView1.X = ControlCommonResourse.XXLeft;
            btnProgressView1.Y = Application.GetRealHeight(157);
            btnProgressView1.TextSize = 12;
            btnProgressView1.TextColor = UserCenterColor.Current.TextGrayColor1;
            btnProgressView1.TextID = R.MyInternationalizationString.uNowLuminance;
            frameBack.AddChidren(btnProgressView1);
            var btnProgress1 = new NormalViewControl(200, 50, true);
            btnProgress1.X = Application.GetRealWidth(222);
            btnProgress1.Y = Application.GetRealHeight(157);
            btnProgress1.TextSize = 12;
            btnProgress1.TextColor = UserCenterColor.Current.TextGrayColor1;
            btnProgress1.Text = "70%";
            frameBack.AddChidren(btnProgress1);
            //进度条
            var seekBar1 = new SeekBarControl();
            seekBar1.Y = Application.GetRealHeight(253);
            frameBack.AddChidren(seekBar1);
            seekBar1.ProgressChangedEvent += (div, value) =>
            {
                btnProgress1.Text = value + "%";
            };
            //seekBar1.Progress = linghtLevelInfo.panelBacklightLevel;
            var btnTemp1 = new NormalViewControl(200, 50, true);
            btnTemp1.X = ControlCommonResourse.XXLeft;
            btnTemp1.Y = Application.GetRealHeight(322);
            btnTemp1.TextSize = 12;
            btnTemp1.TextColor = UserCenterColor.Current.TextGrayColor3;
            btnTemp1.Text = "0%";
            frameBack.AddChidren(btnTemp1);
            var btnTemp2 = new NormalViewControl(200, 50, true);
            btnTemp2.X = frameBack.Width - ControlCommonResourse.XXLeft - Application.GetRealWidth(200);
            btnTemp2.Y = Application.GetRealHeight(322);
            btnTemp2.TextAlignment = TextAlignment.CenterRight;
            btnTemp2.TextSize = 12;
            btnTemp2.TextColor = UserCenterColor.Current.TextGrayColor3;
            btnTemp2.Text = "100%";
            frameBack.AddChidren(btnTemp2);
            var frameColor = new FrameLayoutStatuControl();
            frameColor.UseClickStatu = false;
            frameColor.Width = Application.GetRealHeight(262);
            frameColor.Height = this.GetPictrueRealSize(79);
            frameColor.Y = Application.GetRealHeight(26);
            frameColor.Gravity = Gravity.CenterVertical;
            frameColor.X = frameBack.Width - ControlCommonResourse.XXLeft - Application.GetRealHeight(262);
            frameBack.AddChidren(frameColor);
            //颜色
            var btnColorView = new NormalViewControl(Application.GetRealHeight(110), this.GetPictrueRealSize(50), false);
            var btnColorView = new NormalViewControl(Application.GetRealHeight(110), this.GetPictrueRealSize(49), false);
            btnColorView.Gravity = Gravity.CenterVertical;
            btnColorView.TextAlignment = TextAlignment.CenterRight;
            btnColorView.TextSize = 12;
@@ -342,28 +301,26 @@
            btnColorView.TextID = R.MyInternationalizationString.uColor;
            frameColor.AddChidren(btnColorView, ChidrenBindMode.BindEventOnly);
            int R1 = Convert.ToInt32("d8", 16);
            int G1 = Convert.ToInt32("95", 16);
            int B1 = Convert.ToInt32("e3", 16);
            int R1 = Convert.ToInt32(this.keyColorData.OpenColorR, 16);
            int G1 = Convert.ToInt32(this.keyColorData.OpenColorG, 16);
            int B1 = Convert.ToInt32(this.keyColorData.OpenColorB, 16);
            uint backColor = this.GetColorByRGB((byte)R1, (byte)G1, (byte)B1);
            //颜色外框
            var btnColorLine = new NormalViewControl(this.GetPictrueRealSize(79), this.GetPictrueRealSize(79), false);
            var btnColorLine = new FrameLayoutStatuControl();
            btnColorLine.Width = Application.GetRealHeight(79);
            btnColorLine.Height = this.GetPictrueRealSize(79);
            btnColorLine.X = btnColorView.Right + Application.GetRealHeight(18);
            btnColorLine.Radius = (uint)this.GetPictrueRealSize(79) / 2;
            btnColorLine.BorderWidth = 1;
            btnColorLine.BorderColor = 0xff666666;
            btnColorLine.BorderColor = 0xffcccccc;
            frameColor.AddChidren(btnColorLine, ChidrenBindMode.BindEventOnly);
            var btnColor = new NormalViewControl(this.GetPictrueRealSize(69), this.GetPictrueRealSize(69), false);
            btnColor.Y = Application.GetRealHeight(5);
            btnColor.X = btnColorView.Right + Application.GetRealHeight(23);
            btnColor.Gravity = Gravity.Center;
            btnColor.Radius = (uint)this.GetPictrueRealSize(69) / 2;
            btnColor.BackgroundColor = UserCenterColor.Current.ErrorColor;
            frameColor.AddChidren(btnColor, ChidrenBindMode.BindEventOnly);
            //变更滑动条的颜色
            seekBar1.ProgressBarColor = backColor;
            btnColor.BackgroundColor = backColor;
            btnColorLine.AddChidren(btnColor, ChidrenBindMode.BindEventOnly);
            var btnRight = new NormalViewControl(this.GetPictrueRealSize(58), this.GetPictrueRealSize(58), false);
            btnRight.UnSelectedImagePath = "Item/RightNext.png";
@@ -382,13 +339,11 @@
                    G1 = Gcolor;
                    B1 = Bcolor;
                    //this.keyColorData.CloseColorR = Convert.ToString(Rcolor, 16);
                    //this.keyColorData.CloseColorG = Convert.ToString(Gcolor, 16);
                    //this.keyColorData.CloseColorB = Convert.ToString(Bcolor, 16);
                    this.keyColorData.OpenColorR = Convert.ToString(Rcolor, 16);
                    this.keyColorData.OpenColorG = Convert.ToString(Gcolor, 16);
                    this.keyColorData.OpenColorB = Convert.ToString(Bcolor, 16);
                    btnColor.BackgroundColor = this.GetColorByRGB((byte)Rcolor, (byte)Gcolor, (byte)Bcolor);
                    //变更滑动条的颜色
                    seekBar1.ProgressBarColor = btnColor.BackgroundColor;
                };
            };
        }
@@ -608,17 +563,16 @@
                return;
            }
            //设置按键面板指定端点的【指示灯开关颜色】的信息
            //result = await HdlDevicePanelLogic.Current.SetPanelEpointColorInfo(panelDevice, this.keyColorData);
            //this.CloseProgressBar();
            //if (result == false)
            //{
            //    return;
            //}
            //设置按键面板颜色的信息
            result = await HdlDevicePanelLogic.Current.SetPanelColorInfo(panelDevice, this.keyColorData);
            this.CloseProgressBar();
            if (result == false)
            {
                return;
            }
            //关闭自身
            this.CloseForm();
        }
        #endregion
        #region ■ 补充容器___________________________ 
ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirButtonSettionForm.cs
old mode 100755 new mode 100644
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using Org.BouncyCastle.Bcpg.OpenPgp;
using Shared.Common;
using ZigBee.Common;
using ZigBee.Device;
ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetForm.cs
File was deleted
ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs
old mode 100755 new mode 100644
ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFunctionSettionForm.cs
@@ -37,10 +37,6 @@
        /// </summary>
        private Dictionary<int, string> dicDeviceSaveName = new Dictionary<int, string>();
        /// <summary>
        /// 设备需要保存的设备功能
        /// </summary>
        private Dictionary<int, DeviceFunctionType> dicDeviceFuncType = new Dictionary<int, DeviceFunctionType>();
        /// <summary>
        /// 信息编辑控件
        /// </summary>
        private InformationEditorControl tableContr = null;
@@ -94,8 +90,6 @@
            {
                //记录起当前正在操作的回路名字
                dicDeviceSaveName[nowSelectDevice.DeviceEpoint] = btnDeviceName.Text.Trim();
                //开启进度条
                this.ShowProgressBar();
                foreach (var epoint in dicDeviceSaveName.Keys)
                {
                    var device = Common.LocalDevice.Current.GetDevice(deviceObj.DeviceAddr, epoint);
@@ -112,45 +106,10 @@
                        var result = await Common.LocalDevice.Current.ReName(device, newName);
                        if (result == false)
                        {
                            //关闭
                            this.CloseProgressBar();
                            return;
                        }
                    }
                }
                foreach (var epoint in dicDeviceFuncType.Keys)
                {
                    var device = Common.LocalDevice.Current.GetDevice(deviceObj.DeviceAddr, epoint);
                    if (device == null)
                    {
                        continue;
                    }
                    //设置功能类型
                    device.DfunctionType = dicDeviceFuncType[epoint];
                    if (device.IsCustomizeImage == true)
                    {
                        continue;
                    }
                    //重新设置图片
                    if (device.DfunctionType == DeviceFunctionType.A开关)
                    {
                        device.IconPath = "Device/Switch.png";
                    }
                    else if (device.DfunctionType == DeviceFunctionType.A插座)
                    {
                        device.IconPath = "Device/Socket1.png";
                    }
                    else if (device.DfunctionType == DeviceFunctionType.A灯光)
                    {
                        device.IconPath = "Device/Light.png";
                    }
                    else
                    {
                        device.IconPath = "Device/RelayEpoint.png";
                    }
                    device.ReSave();
                }
                this.CloseProgressBar();
                //关闭自身
                this.CloseForm();
            };
@@ -281,95 +240,14 @@
        /// </summary>
        private void AddFunctionTypeRow()
        {
            //如果是继电器和调光器的话
            if (nowSelectDevice.Type == DeviceType.OnOffOutput || nowSelectDevice.Type == DeviceType.DimmableLight
                || nowSelectDevice.Type == DeviceType.ColorDimmableLight)
            //自定义功能类型控件
            var rowFunction = new DeviceFunctionTypeRowControl(nowSelectDevice, listview.rowSpace / 2);
            if (rowFunction.CanShowRow == true)
            {
                //功能类型
                string caption = Language.StringByID(R.MyInternationalizationString.uFunctionType);
                var DfunctionType = nowSelectDevice.DfunctionType;
                if (this.dicDeviceFuncType.ContainsKey(nowSelectDevice.DeviceEpoint) == true)
                {
                    DfunctionType = this.dicDeviceFuncType[nowSelectDevice.DeviceEpoint];
                }
                //功能类型的翻译名字
                int nowSelectNo = 1;
                string strType = string.Empty;
                if (DfunctionType == DeviceFunctionType.A灯光)
                {
                    strType = Language.StringByID(R.MyInternationalizationString.uLight);
                    nowSelectNo = 1;
                }
                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 = false;
                listview.AddChidren(btnFunction);
                btnFunction.InitControl();
                listview.AddChidren(rowFunction);
                rowFunction.InitControl();
                //底线
                btnFunction.AddBottomLine();
                //如果是继电器才能够更改这个功能类型
                if (nowSelectDevice.Type == DeviceType.OnOffOutput)
                {
                    btnFunction.UseClickStatu = true;
                    //右箭头
                    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)
                            {
                                dicDeviceFuncType[nowSelectDevice.DeviceEpoint] = DeviceFunctionType.A开关;
                            }
                            else if (selectNo == 1)
                            {
                                dicDeviceFuncType[nowSelectDevice.DeviceEpoint] = DeviceFunctionType.A灯光;
                            }
                            else if (selectNo == 2)
                            {
                                dicDeviceFuncType[nowSelectDevice.DeviceEpoint] = DeviceFunctionType.A插座;
                            }
                            else
                            {
                                dicDeviceFuncType[nowSelectDevice.DeviceEpoint] = DeviceFunctionType.A未定义;
                            }
                        };
                    };
                }
                rowFunction.AddBottomLine();
            }
        }
ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFunctionSettionForm.cs
@@ -37,10 +37,6 @@
        /// </summary>
        private Dictionary<int, string> dicDeviceSaveName = new Dictionary<int, string>();
        /// <summary>
        /// 设备需要保存的设备功能
        /// </summary>
        private Dictionary<int, DeviceFunctionType> dicDeviceFuncType = new Dictionary<int, DeviceFunctionType>();
        /// <summary>
        /// 信息编辑控件
        /// </summary>
        private InformationEditorControl tableContr = null;
@@ -94,8 +90,6 @@
            {
                //记录起当前正在操作的回路名字
                dicDeviceSaveName[nowSelectDevice.DeviceEpoint] = btnDeviceName.Text.Trim();
                //开启进度条
                this.ShowProgressBar();
                foreach (var epoint in dicDeviceSaveName.Keys)
                {
                    var device = Common.LocalDevice.Current.GetDevice(deviceObj.DeviceAddr, epoint);
@@ -112,45 +106,10 @@
                        var result = await Common.LocalDevice.Current.ReName(device, newName);
                        if (result == false)
                        {
                            //关闭
                            this.CloseProgressBar();
                            return;
                        }
                    }
                }
                foreach (var epoint in dicDeviceFuncType.Keys)
                {
                    var device = Common.LocalDevice.Current.GetDevice(deviceObj.DeviceAddr, epoint);
                    if (device == null)
                    {
                        continue;
                    }
                    //设置功能类型
                    device.DfunctionType = dicDeviceFuncType[epoint];
                    if (device.IsCustomizeImage == true)
                    {
                        continue;
                    }
                    //重新设置图片
                    if (device.DfunctionType == DeviceFunctionType.A开关)
                    {
                        device.IconPath = "Device/Switch.png";
                    }
                    else if (device.DfunctionType == DeviceFunctionType.A插座)
                    {
                        device.IconPath = "Device/Socket1.png";
                    }
                    else if (device.DfunctionType == DeviceFunctionType.A灯光)
                    {
                        device.IconPath = "Device/Light.png";
                    }
                    else
                    {
                        device.IconPath = "Device/RelayEpoint.png";
                    }
                    device.ReSave();
                }
                this.CloseProgressBar();
                //关闭自身
                this.CloseForm();
            };
@@ -281,95 +240,14 @@
        /// </summary>
        private void AddFunctionTypeRow()
        {
            //如果是继电器和调光器的话
            if (nowSelectDevice.Type == DeviceType.OnOffOutput || nowSelectDevice.Type == DeviceType.DimmableLight
                || nowSelectDevice.Type == DeviceType.ColorDimmableLight)
            //自定义功能类型控件
            var rowFunction = new DeviceFunctionTypeRowControl(nowSelectDevice, listview.rowSpace / 2);
            if (rowFunction.CanShowRow == true)
            {
                //功能类型
                string caption = Language.StringByID(R.MyInternationalizationString.uFunctionType);
                var DfunctionType = nowSelectDevice.DfunctionType;
                if (this.dicDeviceFuncType.ContainsKey(nowSelectDevice.DeviceEpoint) == true)
                {
                    DfunctionType = this.dicDeviceFuncType[nowSelectDevice.DeviceEpoint];
                }
                //功能类型的翻译名字
                int nowSelectNo = 1;
                string strType = string.Empty;
                if (DfunctionType == DeviceFunctionType.A灯光)
                {
                    strType = Language.StringByID(R.MyInternationalizationString.uLight);
                    nowSelectNo = 1;
                }
                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 = false;
                listview.AddChidren(btnFunction);
                btnFunction.InitControl();
                listview.AddChidren(rowFunction);
                rowFunction.InitControl();
                //底线
                btnFunction.AddBottomLine();
                //如果是继电器才能够更改这个功能类型
                if (nowSelectDevice.Type == DeviceType.OnOffOutput)
                {
                    btnFunction.UseClickStatu = true;
                    //右箭头
                    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)
                            {
                                dicDeviceFuncType[nowSelectDevice.DeviceEpoint] = DeviceFunctionType.A开关;
                            }
                            else if (selectNo == 1)
                            {
                                dicDeviceFuncType[nowSelectDevice.DeviceEpoint] = DeviceFunctionType.A灯光;
                            }
                            else if (selectNo == 2)
                            {
                                dicDeviceFuncType[nowSelectDevice.DeviceEpoint] = DeviceFunctionType.A插座;
                            }
                            else
                            {
                                dicDeviceFuncType[nowSelectDevice.DeviceEpoint] = DeviceFunctionType.A未定义;
                            }
                        };
                    };
                }
                rowFunction.AddBottomLine();
            }
        }
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonInfo.cs
@@ -11,7 +11,7 @@
    {
        #region  本地变量
        /// <summary>
        ///
        /// 更新“逻辑常开”界面的回调
        /// </summary>
        public static Action<bool> LogicAction = null;
        /// <summary>
@@ -150,15 +150,7 @@
        /// </summary>
        public static void NormallyOpenModeValue(ZigBee.Device.DoorLock doorLock, bool value)
        {
            string key = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
            if (doorLock.IsDoorLockNormallyMode.ContainsKey(key))
            {
                doorLock.IsDoorLockNormallyMode[key] = value;
            }
            else
            {
                doorLock.IsDoorLockNormallyMode.Add(key, value);
            }
            doorLock.IsDoorLockNormallyMode = value;
            if (LogicAction != null)
            {
@@ -219,17 +211,9 @@
                {
                    //上报“常开模式”已被取消
                    Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); });
                    //先删除已失效的“常开模式”的逻辑
                    //if (resTemp == 1)
                    //{
                    //    var restulTemp = await Shared.Phone.Device.Logic.SkipView.Exist(3);
                    //    //if (restulTemp == 3)
                    //    //{
                    //    //    string msg0 = Language.StringByID(R.MyInternationalizationString.CancelLogicNormallyModeFailed2);
                    //    //    this.ShowTipMsg(msg0);
                    //    //    return;
                    //    //}
                    //}
                    //温居城方法???
                    //此处是否要删除温居城的特殊逻辑
                    //app重新开启“常开模式”
                    var result = await doorLock.SetNormallyOpenModeFuncAsync(true);
@@ -241,7 +225,6 @@
                            ShowTipMsg(msg0);
                            NormallyOpenModeValue(doorLock, false);
                            CommonPage.Loading.Hide();
                            //new Tip() { MaxWidth = 150, Text = msg0, Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(CommonPage.Instance);
                        });
                        action?.Invoke();
                        return;
@@ -254,7 +237,6 @@
                            ShowTipMsg(msg1);
                            NormallyOpenModeValue(doorLock, false);
                            CommonPage.Loading.Hide();
                            //new Tip() { MaxWidth = 150, Text = msg1, Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(CommonPage.Instance);
                        });
                        action?.Invoke();
                        return;
@@ -269,7 +251,6 @@
                            ShowTipMsg(msg0);
                            NormallyOpenModeValue(doorLock, true);
                            CommonPage.Loading.Hide();
                            //new Tip() { MaxWidth = 150, Text = msg0, Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(CommonPage.Instance);
                        });
                    }
                }
@@ -288,12 +269,8 @@
                    NormallyOpenModeValue(doorLock, false);
                    if (haveLogic)
                    {
                        var resTemp2 = await Shared.Phone.Device.Logic.SkipView.Exist(3);
                        //if (resTemp2 == 3)
                        //{
                        //    string msg0 = Language.StringByID(R.MyInternationalizationString.CancelLogicNormallyModeFailed);
                        //    this.ShowTipMsg(msg0);
                        //}
                        //温居城方法???
                        //此处是否要删除温居城的特殊逻辑
                    }
                }
                else
@@ -307,7 +284,6 @@
                        {
                            ShowTipMsg(Language.StringByID(R.MyInternationalizationString.GwResponseOvertime));
                            CommonPage.Loading.Hide();
                            //new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(CommonPage.Instance);
                        });
                        action?.Invoke();
                        return;
@@ -319,7 +295,6 @@
                            string msg1 = Language.StringByID(R.MyInternationalizationString.CloseNormallyOpenModeFailed);
                            ShowTipMsg(msg1);
                            CommonPage.Loading.Hide();
                            //new Tip() { MaxWidth = 150, Text = msg1, Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(CommonPage.Instance);
                        });
                        action?.Invoke();
                        return;
@@ -334,22 +309,8 @@
                        if (haveLogic)
                        {
                            var resTemp1 = await Shared.Phone.Device.Logic.SkipView.Exist(3);
                            //因为目前机制问题,逻辑经常失败,所以不提示,后期机制要改,重新做一个这个界面
                            //if (resTemp1 == 3)
                            //{
                            //Application.RunOnMainThread(() =>
                            //{
                            //        string msg0 = Language.StringByID(R.MyInternationalizationString.CancelLogicNormallyModeFailed);
                            //        ShowTipMsg(msg0);
                            //});
                            //}
                            //else if (resTemp1 == 2)
                            //{
                            //Application.RunOnMainThread(() =>
                            //{
                            //    string msg0 = Language.StringByID(R.MyInternationalizationString.CloseNormallyOpenModeSuccess);
                            //    ShowTipMsg(msg0);
                            //});
                            //温居城方法???
                            //此处是否要删除温居城的特殊逻辑
                        }
                        Application.RunOnMainThread(() =>
                        {
@@ -470,20 +431,8 @@
                    });
                }
                //默认创建常开模式的特殊逻辑
                var res = await Shared.Phone.Device.Logic.SkipView.LockAddModifyLogic(DoorLockCommonInfo.NormallyOpenModeInvalidTime, doorLock);
                //if (!res)
                //{
                //    Application.RunOnMainThread(() =>
                //    {
                //        //默认创建常开模式失败
                //        string msg0 = Language.StringByID(R.MyInternationalizationString.AddLogicNormallyModeFailed);
                //        var alert = new UserCenter.ShowMsgControl(UserCenter.ShowMsgType.Normal, msg0, Language.StringByID(R.MyInternationalizationString.confrim));
                //        alert.Show();
                //        //二次加载弹窗 常开模式开启提示
                //        NomallyOpenModeInvalidTimeDialog(doorLock, action);
                //    });
                //}
                //温居城方法???
                //此处是否要创建常开模式的特殊逻辑
            };
        }
        #endregion
@@ -1249,6 +1198,5 @@
        }
        #endregion
    }
}
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSetting.cs
old mode 100644 new mode 100755
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs
@@ -605,15 +605,11 @@
                        {
                            return;
                        }
                        string key = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
                        if (doorLock.IsDoorLockNormallyMode.ContainsKey(key))
                        {
                            if (doorLock.IsDoorLockNormallyMode[key] == true)
                        if (doorLock.IsDoorLockNormallyMode)
                            {
                                if (canOpenNormallyMode)
                                {
                                    Application.RunOnMainThread(() => { NomallyOpenModeInvalidDialog(true); });
                                }
                            }
                        }
                    }
@@ -849,20 +845,11 @@
            //开锁事件
            EventHandler<MouseEventArgs> hander1 = async (sender, e) =>
            {
                string key = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
                if (doorLock.IsDoorLockNormallyMode.ContainsKey(key))
                {
                    if (doorLock.IsDoorLockNormallyMode[key] == true)
                if (doorLock.IsDoorLockNormallyMode)
                    {
                        if (canOpenNormallyMode)
                        {
                            NomallyOpenModeInvalidDialog(false);
                        }
                        else
                        {
                            OpenDoorLockHandle(progressButton, btnDoorLockPic, btnStatus);
                        }
                    }
                    else
                    {
@@ -886,13 +873,9 @@
            {
                if (canOpenNormallyMode)
                {
                    var key = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
                    if (doorLock.IsDoorLockNormallyMode.ContainsKey(key))
                    {
                        if (doorLock.IsDoorLockNormallyMode[key] == true)
                    if (doorLock.IsDoorLockNormallyMode)
                        {
                            NomallyOpenModeInvalidDialog();
                        }
                    }
                }
                else
@@ -1086,12 +1069,6 @@
                action = () =>
                {
                    //系统密码支持操作门锁后,调用问温居城的界面【常开自动化】
                    //Action nomallyOpenModeStartAction = () =>
                    //{
                    //    UpdateNomallyOpenStatus();
                    //};
                    string msg = Language.StringByID(R.MyInternationalizationString.SetDoorLockNomallyOpen).Replace("{0}", "\r\n");
                    var confirm = Language.StringByID(R.MyInternationalizationString.Confrim);
                    var alert = new ShowDoorLockMsgControl(ShowDoorLockMsgControl.DoorLockMsgType.Confirm, msg, confirm);
@@ -1415,12 +1392,7 @@
                btnNormallyOpenFrameLayout.Width = Application.GetRealWidth(0);
                return;
            }
            string key = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
            if (!doorLock.IsDoorLockNormallyMode.ContainsKey(key))
            {
                return;
            }
            if (doorLock.IsDoorLockNormallyMode[key] == true)
            if (doorLock.IsDoorLockNormallyMode)
            {
                btnNormallyOpen.IsSelected = true;
                btnDoorLockPic.IsSelected = true;
@@ -1428,7 +1400,7 @@
                btnStatus.Text = Language.StringByID(R.MyInternationalizationString.Current) + Language.StringByID(R.MyInternationalizationString.DoorLockOpen);
            }
            else if (doorLock.IsDoorLockNormallyMode[key] == false)
            else if (!doorLock.IsDoorLockNormallyMode)
            {
                btnStatus.Text = Language.StringByID(R.MyInternationalizationString.Current) + Language.StringByID(R.MyInternationalizationString.CLose);
                btnDoorLockPic.IsSelected = false;
ZigbeeApp/Shared/Phone/UserView/HomePage.cs
@@ -81,7 +81,7 @@
            else
            {
                //未登录弹出登录界面
                var accountLogin = new Login.AccountLogin { };
                var accountLogin = new Login.AccountLoginForm { };
                Shared.Common.CommonPage.Instance.AddChidren(accountLogin);
                accountLogin.ShowForm();
            }
ZigbeeApp/Shared/Phone/ZigBee/Device/DoorLock.cs
old mode 100755 new mode 100644
@@ -35,11 +35,12 @@
        public string currentUserDisplayMethod = string.Empty;//当前用户显示方式
        //本地所有账户列表
        public List<Shared.Phone.UserCenter.MemberInfoRes> localAllAccountList = new List<Shared.Phone.UserCenter.MemberInfoRes> { };
        /// <summary>
        /// 是否常开模式【key = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint】
        /// 是否常开模式
        /// ture:常开; false:关闭
        /// </summary>
        public Dictionary<string, bool> IsDoorLockNormallyMode = new Dictionary<string, bool> { };//是否冻结子账户
        public bool IsDoorLockNormallyMode = false;
        public string LocalTempPassword = string.Empty;//本地生成的临时密码
        public Dictionary<string, bool> IsFreezeAccount = new Dictionary<string, bool> { };//是否冻结子账户
        public Dictionary<string, bool> HasRemoteUnlockAccess = new Dictionary<string, bool> { };//是否给子账户拥有远程开锁的条件
ZigbeeApp/Shared/Phone/ZigBee/Device/FreshAir.cs
old mode 100755 new mode 100644
@@ -18,7 +18,7 @@
        /// 风速模式 
        /// <para>5:自动</para>
        /// <para>6:Smart</para>
        /// <para>7:手动</para>
        /// <para>15:手动</para>
        /// </summary>
        public int currentFanMode = 0;
        /// <summary>
@@ -224,7 +224,7 @@
            /// <summary>
            /// 手动
            /// </summary>
            Manual = 7,
            Manual = 15,
        }
    }
}
ZigbeeApp/Shared/Phone/ZigBee/Device/Panel.cs
old mode 100755 new mode 100644
@@ -37,6 +37,10 @@
        /// </summary>
        public string currentSelectFloorId = string.Empty;
        /// <summary>
        /// 当前选择的房间ID【新风面板】
        /// </summary>
        public string currentSelectRoomId = string.Empty;
        /// <summary>
        /// 当前开关模式
        /// </summary>
        public string CurrentSwitchMode = "";
ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs
old mode 100755 new mode 100644
@@ -3527,7 +3527,8 @@
                    await RemoteMqttClient.DisconnectAsync();
                }
            }
            catch(Exception e) {
            catch (Exception e)
            {
                DebugPrintLog($"Remote断开通讯连接出异常:{e.Message}");
            }
        }
@@ -3752,7 +3753,8 @@
                {
                    return;
                }
                if (topics[2]== "NotifyGateWayInfoChange") {
                if (topics[2] == "NotifyGateWayInfoChange")
                {
                    initGateWayBaseInfomation();
                    return;
                }
ZigbeeApp/Shared/R.cs
@@ -5730,6 +5730,11 @@
        /// 灯全关
        /// </summary>
        public const int uAllLightClose = 16114;
        /// <summary>
        /// 常开自动化手动取消
        /// </summary>
        public const int uNormallyOpenLogicManualClose = 16115;
        //★★★★下面这些是接口的返回信息翻译,从18000开始★★★★
        /// <summary>
@@ -6193,6 +6198,10 @@
        /// 自定义设备所属ID为16的翻译名字:干接点
        /// </summary>
        public const int uDeviceBelongId16 = 40017;
        /// <summary>
        /// 自定义设备所属ID为2310的翻译名字:新风
        /// </summary>
        public const int uDeviceBelongId2310 = 40018;
        //★★★★模块ID的设备默认备注名字,从50000开始,这里不需要定义,只写在Language.ini文件里面★★★★
        //★★★★模块ID的设备类型名字,从60000开始,这里不需要定义,只写在Language.ini文件里面★★★★
ZigbeeApp/Shared/Shared.projitems
old mode 100755 new mode 100644
@@ -51,7 +51,7 @@
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\Logic\SkipView.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\Logic\SoneLogicList.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Login\AccountForgetPWD.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Login\AccountLogic.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Login\Logic\AccountLogic.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Login\AccountRegister.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Login\AccountRegisterSuccess.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Login\AccountResetPWDSuccess.cs" />
@@ -196,9 +196,7 @@
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Device\Panel\PanelFangyueEnvironmentButtonSettionForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Device\Panel\PanelFangyueEnvironmentLightSettionForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Device\Panel\PanelFangyueEnvironmentTargetForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Device\Panel\PanelFangyueFreshAirBackLightSettionForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Device\Panel\PanelFangyueFreshAirButtonSettionForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Device\Panel\PanelFangyueFreshAirTargetForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Device\Panel\PanelFangyueFreshAirTargetsForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Device\Panel\PanelFangyueFunctionSettionForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Device\PirSensor\PirSensorDimmingModeForm.cs" />
@@ -206,19 +204,16 @@
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Device\PirSensor\PirSensorWorkModeMenuForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\DoorLock\AddUnLockMethod.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\DoorLock\AddUnLockMethodTip.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\DoorLock\DoorLockCommonInfo.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\DoorLock\DoorLockCommonLayout.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\DoorLock\DoorlockDialog.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\DoorLock\EntryStatusPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\DoorLock\FunctionSetting.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\DoorLock\MasterManagementPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\DoorLock\MemberFrozenPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\DoorLock\ShowDoorLockMsgControl.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\DoorLock\TemporaryPassword.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\DoorLock\TimeSettignPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\DoorLock\UndistributeDoorlockUserPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\DoorLock\UnLockMethod.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\DoorLock\UserDoorLockPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\DoorLock\UserManagement.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Gateway\Add\AddGatewayHelpForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Gateway\Add\WirelessApDirection1Form.cs" />
@@ -396,7 +391,6 @@
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserView\LoginLoading.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\ZigBee\Device\AC.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\ZigBee\Device\DimmableLight.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\ZigBee\Device\DoorLock.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\ZigBee\Device\FreshAir.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\ZigBee\Device\HumiditySensor.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\ZigBee\Device\Repeater.cs" />
@@ -417,7 +411,7 @@
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Gateway\Add\WiredGatewayDirectionForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Gateway\Add\WiredGatewaySearchForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Gateway\Manage\GatewayInfoEditorForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Login\AccountLogin.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Login\AccountLoginForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Common\CommonPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Common\ResponseEntity\GetAreaCode.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Common\ResponseEntity\ResidenceRes.cs" />
@@ -474,9 +468,16 @@
    <Compile Include="$(MSBuildThisFileDirectory)Phone\ZigBee\IO\LocalFileUtils.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\CommonBase\Logic\HdlSafeguardLogic.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\CommonBase\Logic\HdlAlarmsLogic.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Device\Panel\PanelFangyueFreshAirBackLightSettionForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\DoorLock\UserDoorLockPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\DoorLock\DoorLockCommonInfo.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\DoorLock\ShowDoorLockMsgControl.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\ZigBee\Device\DoorLock.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\MainPage\Controls\DeviceCard\DeviceFreshAirCardControl.cs" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="$(MSBuildThisFileDirectory)Phone\CommonForm\" />
    <Folder Include="$(MSBuildThisFileDirectory)Phone\Login\Logic\" />
    <Folder Include="$(MSBuildThisFileDirectory)Phone\MainPage\Controls\DeviceCard\Base\" />
  </ItemGroup>
  <ItemGroup>