黄学彪
2019-12-05 b3e96fce4cc01113128ddf8e0a18fc19594a9e56
一个新的版本
22个文件已添加
2个文件已删除
110个文件已修改
13288 ■■■■■ 已修改文件
ZigbeeApp/GateWay.Droid/Assets/Language.ini 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Assets/Phone/Item/MinusSign2.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Assets/Phone/Item/MinusSign2Selected.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Assets/Phone/Item/PlusSign2.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Assets/Phone/Item/PlusSign2Selected.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Assets/Phone/Room/Humidity.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Assets/Phone/Room/List.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Assets/Phone/Room/Temperature.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Assets/Phone/Scene/Background.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/GateWay.Droid.csproj 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Properties/AndroidManifest.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Resources/Resource.designer.cs 8550 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Home.Ios/AppDelegate.cs 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Home.Ios/Home.IOS.csproj 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Home.Ios/Resources/Language.ini 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Home.Ios/Resources/LaunchScreen.xib 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Home.Ios/Resources/Phone/Item/BottomShadow.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Home.Ios/Resources/Phone/Item/MinusSign2.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Home.Ios/Resources/Phone/Item/MinusSign2Selected.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Home.Ios/Resources/Phone/Item/PlusSign2.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Home.Ios/Resources/Phone/Item/PlusSign2Selected.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Home.Ios/Resources/Phone/Room/Humidity.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Home.Ios/Resources/Phone/Room/List.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Home.Ios/Resources/Phone/Room/Temperature.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Home.Ios/Resources/Phone/Scene/Background.png 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Home.Ios/mono_crash.115869ea88.0.json 775 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Common/CommonPage.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Common/Device.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Common/House.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Common/SceneTargetDeviceUI.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Common/ZigbeeColor.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/DLL/Android/Shared.Droid.HDLWidget.dll 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/DLL/Android/Shared.Droid.Smartrefresh.dll 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/DLL/Android/Shared.Droid.dll 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/DLL/IOS/Shared.IOS.TBL.dll 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/DLL/IOS/Shared.IOS.dll 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/AC/ACControl.cs 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Account/AccountForgetPWD.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Account/AccountLogic.cs 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Account/AccountLogin.cs 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Account/AccountLoginByCode.cs 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Account/AccountRegister.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Account/PhoneEmailForm.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Category/Category.cs 152 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Category/CategoryAddScene.cs 91 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Category/CategorySceneSelectImgByLocal.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Category/SelectDevice.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/CommonForm/ButtonLineForm.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/CommonForm/CategoryFunctionForWinRow.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/CommonForm/CommonFormResouce.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/CommonForm/FunctionMainView.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/CommonForm/RoomMainView.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs 246 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/CommonForm/SceneCategoryView.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/CommonForm/SceneMainView.cs 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/CommonForm/SelectDeviceWithSeekBarRow.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Curtain/RollerShadeControl.cs 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/DeviceLogic/ReadDeviceAttributeLogic.cs 225 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Light/AirSwitchControl.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Light/DimmableLightControl.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Light/LightControl.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Light/OnOffControl.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Light/PlugControl.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Logic/AddLogicPage.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Logic/CustomText.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Logic/DelayTime.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Logic/DeviceStateCondition.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/AddCondition.cs 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/LockAddDevice.cs 72 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/LockLogicCommunalPage.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/LockLogicList.cs 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Logic/LogicCommunalPage.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Logic/LogicDevicePage.cs 82 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Logic/LogicIfon.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Logic/MemberList.cs 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Logic/TemplateDeviceAction.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Logic/TemplateDeviceCondition.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Logic/TimePoint.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Room/AddRoomSelectPicByLocal.cs 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Room/EditRoom.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Room/RoomManagement.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Room/RoomTemperatureSetting.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Common/UserCenterCommon.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/BaseCommonControl/Base/ButtonBase.cs 130 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/BaseCommonControl/Common/ClickButtonCommon.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/BaseCommonControl/Common/IconControlCommon.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/SafetyMasterControl.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlBackupLogic.cs 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlLogLogic.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/UserCenterLogic.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Resourse/DirectoryFileNameResourse.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Resourse/UserCenterResourse.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddDevicePage.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs 137 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceDryContactSettionForm.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceMacInfoEditorForm.cs 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelButtonSettionForm.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFunctionSettionForm.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonLayout.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorlockDialog.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/EntryStatusPage.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSetting.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSettingSub.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberFrozenPage.cs 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TimeSettignPage.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UnLockMethod.cs 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UndistributeDoorlockUserPage.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WiredGatewaySearchForm.cs 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WirelessApSearchForm.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WirelessUdpSearchForm.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayInfoEditorForm.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayProductInfoForm.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewaySearchListForm.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/HdlBackup/HdlAutoBackupForm.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/HideOption/HideOptionGatewayListForm.cs 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/HideOption/HideOptionMainForm.cs 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceListForm.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceManagementForm.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Safety/CoercePswAddContactForm.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Safety/CoercePswEditorForm.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Safety/SafetyManagementMainForm.cs 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Suggestion/FeedbackForm.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/UserMain/SecondAuthenticationForm.cs 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/UserMain/UserMainForm.cs 88 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs 145 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/ZigBee/Device/BindObj.cs 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/R.cs 392 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Shared.projitems 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Assets/Language.ini
old mode 100755 new mode 100644
@@ -71,7 +71,7 @@
66=请将IC卡放在感应区域上
67=录入状态
68=密码录入成功
69=密码备注:
69=密码备注:
70=配对客户
71=无
72=成员管理
@@ -642,9 +642,33 @@
10129=该用户属于调试账号,并未启用
10130=数据并不在此HDL区域服务器
10131=账号或密码错误
10132=账号不存在,请先注册
10132=账号不存在,请注册用户
10133=请输入验证码
10134=即将通过微信授权登录
10135=登录中...
10136=当前住宅为空,请先建立住宅
10137=住宅名称为空
10138=邮箱错误,请重新输入
10139=手机号错误,请重新输入
10141=你已被强制下线!
10150=改房间名称已存在
10151=场景名不能为空
10152=控制场景失败
10153=场景为空
10154=该场景中没有执行目标
10155=操作失败
10156=发送验证码失败
10157=网关不在线
10160=已是最新版本
10161=更新
10162=更新内容
10163=更新失败
10164=更新中...
10165=取消更新
11000=功能
11001=场景
ZigbeeApp/GateWay.Droid/Assets/Phone/Item/MinusSign2.png
ZigbeeApp/GateWay.Droid/Assets/Phone/Item/MinusSign2Selected.png
ZigbeeApp/GateWay.Droid/Assets/Phone/Item/PlusSign2.png
ZigbeeApp/GateWay.Droid/Assets/Phone/Item/PlusSign2Selected.png
ZigbeeApp/GateWay.Droid/Assets/Phone/Room/Humidity.png
ZigbeeApp/GateWay.Droid/Assets/Phone/Room/List.png
ZigbeeApp/GateWay.Droid/Assets/Phone/Room/Temperature.png
ZigbeeApp/GateWay.Droid/Assets/Phone/Scene/Background.png
ZigbeeApp/GateWay.Droid/GateWay.Droid.csproj
@@ -1266,6 +1266,30 @@
  <ItemGroup>
    <AndroidAsset Include="Assets\Phone\SceneIcon\9.jpg" />
  </ItemGroup>
  <ItemGroup>
    <AndroidAsset Include="Assets\Phone\Item\MinusSign2.png" />
  </ItemGroup>
  <ItemGroup>
    <AndroidAsset Include="Assets\Phone\Item\MinusSign2Selected.png" />
  </ItemGroup>
  <ItemGroup>
    <AndroidAsset Include="Assets\Phone\Item\PlusSign2.png" />
  </ItemGroup>
  <ItemGroup>
    <AndroidAsset Include="Assets\Phone\Item\PlusSign2Selected.png" />
  </ItemGroup>
  <ItemGroup>
    <AndroidAsset Include="Assets\Phone\Room\Humidity.png" />
  </ItemGroup>
  <ItemGroup>
    <AndroidAsset Include="Assets\Phone\Room\List.png" />
  </ItemGroup>
  <ItemGroup>
    <AndroidAsset Include="Assets\Phone\Room\Temperature.png" />
  </ItemGroup>
  <ItemGroup>
    <AndroidAsset Include="Assets\Phone\Scene\Background.png" />
  </ItemGroup>
  <Import Project="..\Shared\Shared.projitems" Label="Shared" Condition="Exists('..\Shared\Shared.projitems')" />
  <Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
  <Import Project="..\packages\Xamarin.Android.Support.Annotations.26.0.2\build\MonoAndroid80\Xamarin.Android.Support.Annotations.targets" Condition="Exists('..\packages\Xamarin.Android.Support.Annotations.26.0.2\build\MonoAndroid80\Xamarin.Android.Support.Annotations.targets')" />
ZigbeeApp/GateWay.Droid/Properties/AndroidManifest.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.hdl.home" android:versionCode="2019112901" android:installLocation="auto" android:versionName="1.0.19112901">
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.hdl.home" android:versionCode="2019120501" android:installLocation="auto" android:versionName="1.0.19120501">
    <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="26" />
    <permission android:name="com.hdl.home.permission.JPUSH_MESSAGE" android:protectionLevel="signature" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
ZigbeeApp/GateWay.Droid/Resources/Resource.designer.cs
Diff too large
ZigbeeApp/Home.Ios/AppDelegate.cs
old mode 100755 new mode 100644
ZigbeeApp/Home.Ios/Home.IOS.csproj
@@ -177,9 +177,12 @@
      <BundleResource Include="Resources\Phone\Room\ItemUnSelected.png" />
      <BundleResource Include="Resources\Phone\Room\ItemUnSelected_Black.png" />
      <BundleResource Include="Resources\Phone\Room\FavoriteRoom.png" />
      <BundleResource Include="Resources\Phone\Room\Temperature.png" />
      <BundleResource Include="Resources\Phone\Room\List.png" />
      <BundleResource Include="Resources\Phone\Room\NoNameRoom.png" />
      <BundleResource Include="Resources\Phone\Room\Room_Rectangle.png" />
      <BundleResource Include="Resources\Phone\Room\RoomCardView_Name.png" />
      <BundleResource Include="Resources\Phone\Room\Humidity.png" />
      <BundleResource Include="Resources\Phone\Instruct\CurtainSiphonate.png" />
      <BundleResource Include="Resources\Phone\Instruct\RelayThreeLoad.png" />
      <BundleResource Include="Resources\Phone\Instruct\CurtainAutoOpen.png" />
@@ -383,6 +386,7 @@
      <BundleResource Include="Resources\Phone\Item\PersentIcon.png" />
      <BundleResource Include="Resources\Phone\Item\WrongIcon.png" />
      <BundleResource Include="Resources\Phone\Item\RoomIconBackground.png" />
      <BundleResource Include="Resources\Phone\Item\PlusSign2.png" />
      <BundleResource Include="Resources\Phone\Item\DateSearchIcon.png" />
      <BundleResource Include="Resources\Phone\Item\Time.png" />
      <BundleResource Include="Resources\Phone\Item\DownLoad.png" />
@@ -411,7 +415,6 @@
      <BundleResource Include="Resources\Phone\Item\Category_FunctionBG.png" />
      <BundleResource Include="Resources\Phone\Item\Remote.png" />
      <BundleResource Include="Resources\Phone\Item\ScreeningType.png" />
      <BundleResource Include="Resources\Phone\Item\BottomShadow.png" />
      <BundleResource Include="Resources\Phone\Item\Safety.png" />
      <BundleResource Include="Resources\Phone\Item\UpTriangle.png" />
      <BundleResource Include="Resources\Phone\Item\CreatFloor.png" />
@@ -431,6 +434,7 @@
      <BundleResource Include="Resources\Phone\Item\SwitchSelected.png" />
      <BundleResource Include="Resources\Phone\Item\NextSelected.png" />
      <BundleResource Include="Resources\Phone\Item\Timer.png" />
      <BundleResource Include="Resources\Phone\Item\PlusSign2Selected.png" />
      <BundleResource Include="Resources\Phone\Item\ShardMenu.png" />
      <BundleResource Include="Resources\Phone\Item\UnLockFail.png" />
      <BundleResource Include="Resources\Phone\Item\ProgressMsg.png" />
@@ -452,6 +456,7 @@
      <BundleResource Include="Resources\Phone\Item\DeleteIcon1.png" />
      <BundleResource Include="Resources\Phone\Item\HouseSelected.png" />
      <BundleResource Include="Resources\Phone\Item\Floor.png" />
      <BundleResource Include="Resources\Phone\Item\MinusSign2.png" />
      <BundleResource Include="Resources\Phone\Item\NotAuthority.png" />
      <BundleResource Include="Resources\Phone\Item\IndoorUnitGround.png" />
      <BundleResource Include="Resources\Phone\Item\FixedPositionSelected.png" />
@@ -467,6 +472,7 @@
      <BundleResource Include="Resources\Phone\Item\FunctionCardViewSelected.png" />
      <BundleResource Include="Resources\Phone\Item\More.png" />
      <BundleResource Include="Resources\Phone\Item\PswSettion.png" />
      <BundleResource Include="Resources\Phone\Item\MinusSign2Selected.png" />
      <BundleResource Include="Resources\Phone\Item\CollectionSelected1.png" />
      <BundleResource Include="Resources\Phone\Item\FailIcon.png" />
      <BundleResource Include="Resources\Phone\Item\Message.png" />
@@ -646,6 +652,7 @@
      <BundleResource Include="Resources\Phone\Account\UnhidePwd.png" />
      <BundleResource Include="Resources\Phone\Scene\Delaying.png" />
      <BundleResource Include="Resources\Phone\Scene\Selected.png" />
      <BundleResource Include="Resources\Phone\Scene\Background.png" />
      <BundleResource Include="Resources\Phone\Scene\SceneIcon.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\17Icon.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\4Icon.png" />
ZigbeeApp/Home.Ios/Resources/Language.ini
old mode 100755 new mode 100644
@@ -71,7 +71,7 @@
66=请将IC卡放在感应区域上
67=录入状态
68=密码录入成功
69=密码备注:
69=密码备注:
70=配对客户
71=无
72=成员管理
@@ -642,9 +642,33 @@
10129=该用户属于调试账号,并未启用
10130=数据并不在此HDL区域服务器
10131=账号或密码错误
10132=账号不存在,请先注册
10132=账号不存在,请注册用户
10133=请输入验证码
10134=即将通过微信授权登录
10135=登录中...
10136=当前住宅为空,请先建立住宅
10137=住宅名称为空
10138=邮箱错误,请重新输入
10139=手机号错误,请重新输入
10141=你已被强制下线!
10150=改房间名称已存在
10151=场景名不能为空
10152=控制场景失败
10153=场景为空
10154=该场景中没有执行目标
10155=操作失败
10156=发送验证码失败
10157=网关不在线
10160=已是最新版本
10161=更新
10162=更新内容
10163=更新失败
10164=更新中...
10165=取消更新
11000=功能
11001=场景
@@ -1666,6 +1690,12 @@
15975=正在上传备份文件
15976=确认删除全部消息?
15977=确认标记全部消息为已读?
15978=通信链接失败
15979=获取网络SSID失败
15980=密码发送失败
15981=选择hdlZigbeeGW-xxxx网络
15982=请连接家庭WiFi
15983=正在获取分享数据
;★★★★下面这些是接口的返回信息翻译,从18000开始★★★★
18004=指定网关已经被绑定
ZigbeeApp/Home.Ios/Resources/LaunchScreen.xib
File was deleted
ZigbeeApp/Home.Ios/Resources/Phone/Item/BottomShadow.png
Binary files differ
ZigbeeApp/Home.Ios/Resources/Phone/Item/MinusSign2.png
ZigbeeApp/Home.Ios/Resources/Phone/Item/MinusSign2Selected.png
ZigbeeApp/Home.Ios/Resources/Phone/Item/PlusSign2.png
ZigbeeApp/Home.Ios/Resources/Phone/Item/PlusSign2Selected.png
ZigbeeApp/Home.Ios/Resources/Phone/Room/Humidity.png
ZigbeeApp/Home.Ios/Resources/Phone/Room/List.png
ZigbeeApp/Home.Ios/Resources/Phone/Room/Temperature.png
ZigbeeApp/Home.Ios/Resources/Phone/Scene/Background.png
ZigbeeApp/Home.Ios/mono_crash.115869ea88.0.json
New file
@@ -0,0 +1,775 @@
{
  "protocol_version" : "0.0.5",
  "configuration" : {
    "version" : "(6.6.0.155) (2019-08/296a9afdb24)",
    "tlc" : "normal",
    "sigsgev" : "altstack",
    "notifications" : "kqueue",
    "architecture" : "amd64",
    "disabled_features" : "none",
    "smallconfig" : "disabled",
    "bigarrays" : "disabled",
    "softdebug" : "enabled",
    "interpreter" : "enabled",
    "llvm_support" : "0",
    "suspend" : "hybrid"
  },
  "memory" : {
    "Resident Size" : "328982528",
    "Virtual Size" : "5121175552",
    "minor_gc_time" : "2192622",
    "major_gc_time" : "85950198",
    "minor_gc_count" : "15",
    "major_gc_count" : "536",
    "major_gc_time_concurrent" : "1554106"
 },
  "threads" : [
 {
    "is_managed" : false,
    "offset_free_hash" : "0x0",
    "offset_rich_hash" : "0x0",
    "crashed" : false,
    "native_thread_id" : "0x70000e3ec000",
    "thread_info_addr" : "0x7fa814800000",
    "thread_name" : "Finalizer",
    "ctx" : {
      "IP" : "0x7fff67cf5266",
      "SP" : "0x70000e3ebda8",
      "BP" : "0x70000e3ebe50"
  },
    "unmanaged_frames" : [
  {
      "is_managed" : "false",
      "native_address" : "0x10cdac156",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x10cf52775",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x10cf524a7",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x10ce16f3c",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x7fff67dabb5d",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x20",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x10cf53373",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x7fff67db42eb",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x7fff67db7249",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x7fff67db340d",
      "native_offset" : "0x00000"
   }
  ]
 },
 {
    "is_managed" : false,
    "offset_free_hash" : "0x0",
    "offset_rich_hash" : "0x0",
    "crashed" : false,
    "native_thread_id" : "0x11ce5d5c0",
    "thread_info_addr" : "0x7fa813806000",
    "thread_name" : "tid_307",
    "ctx" : {
      "IP" : "0x7fff67cf886a",
      "SP" : "0x7ffee2f06c98",
      "BP" : "0x7ffee2f06d20"
  },
    "unmanaged_frames" : [
  {
      "is_managed" : "false",
      "native_address" : "0x10cdac156",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x10cf52775",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x10cf524a7",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x10ce16f3c",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x7fff67dabb5d",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x10cdae5b6",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x10cffc7c0",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x10d0172e1",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x10cf4f774",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x10cf4f58a",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x10cd716c2",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x10ccfb848",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x7fff67bc03d5",
      "native_offset" : "0x00000"
   }
  ]
 },
 {
    "is_managed" : true,
    "offset_free_hash" : "0x115869ea88",
    "offset_rich_hash" : "0x115869ee42",
    "crashed" : true,
    "native_thread_id" : "0x70000eb7e000",
    "thread_info_addr" : "0x7fa814d4c200",
    "thread_name" : "Thread Pool Worker",
    "ctx" : {
      "IP" : "0x7fff67cfb2c6",
      "SP" : "0x70000eb7c548",
      "BP" : "0x70000eb7c580"
  },
    "managed_frames" : [
  {
      "is_managed" : "false",
      "native_address" : "unregistered"
   }
,
  {
      "is_managed" : "true",
      "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
      "token" : "0x00000",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xec216ac8",
      "il_offset" : "0x0000c"
   }
,
  {
      "is_managed" : "true",
      "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
      "token" : "0x6001f80",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xec216ac8",
      "il_offset" : "0x0001a"
   }
,
  {
      "is_managed" : "true",
      "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
      "token" : "0x6001f27",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xec216ac8",
      "il_offset" : "0x00028"
   }
,
  {
      "is_managed" : "true",
      "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
      "token" : "0x6001f25",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xec216ac8",
      "il_offset" : "0x00002"
   }
,
  {
      "is_managed" : "true",
      "guid" : "2278D637-312B-4F39-AE26-3AE8170D7EC6",
      "token" : "0x6000084",
      "native_offset" : "0x0",
      "filename" : "MonoDevelop.MSBuildBuilder.exe",
      "sizeofimage" : "0x14000",
      "timestamp" : "0xb4416f59",
      "il_offset" : "0x000ae"
   }
,
  {
      "is_managed" : "true",
      "guid" : "2278D637-312B-4F39-AE26-3AE8170D7EC6",
      "token" : "0x6000083",
      "native_offset" : "0x0",
      "filename" : "MonoDevelop.MSBuildBuilder.exe",
      "sizeofimage" : "0x14000",
      "timestamp" : "0xb4416f59",
      "il_offset" : "0x00001"
   }
,
  {
      "is_managed" : "true",
      "guid" : "2278D637-312B-4F39-AE26-3AE8170D7EC6",
      "token" : "0x600006a",
      "native_offset" : "0x0",
      "filename" : "MonoDevelop.MSBuildBuilder.exe",
      "sizeofimage" : "0x14000",
      "timestamp" : "0xb4416f59",
      "il_offset" : "0x00048"
   }
,
  {
      "is_managed" : "true",
      "guid" : "2278D637-312B-4F39-AE26-3AE8170D7EC6",
      "token" : "0x60000a1",
      "native_offset" : "0x0",
      "filename" : "MonoDevelop.MSBuildBuilder.exe",
      "sizeofimage" : "0x14000",
      "timestamp" : "0xb4416f59",
      "il_offset" : "0x00001"
   }
,
  {
      "is_managed" : "true",
      "guid" : "2278D637-312B-4F39-AE26-3AE8170D7EC6",
      "token" : "0x6000067",
      "native_offset" : "0x0",
      "filename" : "MonoDevelop.MSBuildBuilder.exe",
      "sizeofimage" : "0x14000",
      "timestamp" : "0xb4416f59",
      "il_offset" : "0x00001"
   }
,
  {
      "is_managed" : "true",
      "guid" : "2278D637-312B-4F39-AE26-3AE8170D7EC6",
      "token" : "0x6000075",
      "native_offset" : "0x0",
      "filename" : "MonoDevelop.MSBuildBuilder.exe",
      "sizeofimage" : "0x14000",
      "timestamp" : "0xb4416f59",
      "il_offset" : "0x00057"
   }
,
  {
      "is_managed" : "true",
      "guid" : "2278D637-312B-4F39-AE26-3AE8170D7EC6",
      "token" : "0x00000",
      "native_offset" : "0x0",
      "filename" : "MonoDevelop.MSBuildBuilder.exe",
      "sizeofimage" : "0x14000",
      "timestamp" : "0xb4416f59",
      "il_offset" : "0x0002a"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "unregistered"
   }
,
  {
      "is_managed" : "true",
      "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
      "token" : "0x00000",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xec216ac8",
      "il_offset" : "0x0000c"
   }
,
  {
      "is_managed" : "true",
      "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
      "token" : "0x6004cdb",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xec216ac8",
      "il_offset" : "0x0006a"
   }
,
  {
      "is_managed" : "true",
      "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
      "token" : "0x60048c4",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xec216ac8",
      "il_offset" : "0x00000"
   }
,
  {
      "is_managed" : "true",
      "guid" : "2278D637-312B-4F39-AE26-3AE8170D7EC6",
      "token" : "0x6000039",
      "native_offset" : "0x0",
      "filename" : "MonoDevelop.MSBuildBuilder.exe",
      "sizeofimage" : "0x14000",
      "timestamp" : "0xb4416f59",
      "il_offset" : "0x00019"
   }
,
  {
      "is_managed" : "true",
      "guid" : "2278D637-312B-4F39-AE26-3AE8170D7EC6",
      "token" : "0x6000166",
      "native_offset" : "0x0",
      "filename" : "MonoDevelop.MSBuildBuilder.exe",
      "sizeofimage" : "0x14000",
      "timestamp" : "0xb4416f59",
      "il_offset" : "0x00029"
   }
,
  {
      "is_managed" : "true",
      "guid" : "2278D637-312B-4F39-AE26-3AE8170D7EC6",
      "token" : "0x6000181",
      "native_offset" : "0x0",
      "filename" : "MonoDevelop.MSBuildBuilder.exe",
      "sizeofimage" : "0x14000",
      "timestamp" : "0xb4416f59",
      "il_offset" : "0x00001"
   }
,
  {
      "is_managed" : "true",
      "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
      "token" : "0x6001fe8",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xec216ac8",
      "il_offset" : "0x00007"
   }
,
  {
      "is_managed" : "true",
      "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
      "token" : "0x6001ec3",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xec216ac8",
      "il_offset" : "0x00071"
   }
,
  {
      "is_managed" : "true",
      "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
      "token" : "0x6001ec1",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xec216ac8",
      "il_offset" : "0x00000"
   }
,
  {
      "is_managed" : "true",
      "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
      "token" : "0x6001fe6",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xec216ac8",
      "il_offset" : "0x00021"
   }
,
  {
      "is_managed" : "true",
      "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
      "token" : "0x6001fce",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xec216ac8",
      "il_offset" : "0x00074"
   }
,
  {
      "is_managed" : "true",
      "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
      "token" : "0x6001fe3",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xec216ac8",
      "il_offset" : "0x00000"
   }
,
  {
      "is_managed" : "true",
      "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
      "token" : "0x00000",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xec216ac8",
      "il_offset" : "0x0002a"
   }
  ],
  "unmanaged_frames" : [
 {
    "is_managed" : "false",
    "native_address" : "0x10cdac156",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10cf52775",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10cf52dfa",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10ce17f46",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10cdb0c65",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10ce172db",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x7fff67dabb5d",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10d07d439",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x7fff67c656a6",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10d021cb7",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10d002b2f",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10d02203e",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10d0221bf",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10cebce76",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10cebd478",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10d01019f",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10d0104b0",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10cebf7ab",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10cee2675",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "true",
    "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
    "token" : "0x00000",
    "native_offset" : "0x0",
    "filename" : "mscorlib.dll",
    "sizeofimage" : "0x472000",
    "timestamp" : "0xec216ac8",
    "il_offset" : "0x00000"
  }
,
 {
    "is_managed" : "true",
    "guid" : "2278D637-312B-4F39-AE26-3AE8170D7EC6",
    "token" : "0x6000083",
    "native_offset" : "0x0",
    "filename" : "MonoDevelop.MSBuildBuilder.exe",
    "sizeofimage" : "0x14000",
    "timestamp" : "0xb4416f59",
    "il_offset" : "0x00000"
  }
,
 {
    "is_managed" : "true",
    "guid" : "2278D637-312B-4F39-AE26-3AE8170D7EC6",
    "token" : "0x60000a1",
    "native_offset" : "0x0",
    "filename" : "MonoDevelop.MSBuildBuilder.exe",
    "sizeofimage" : "0x14000",
    "timestamp" : "0xb4416f59",
    "il_offset" : "0x00000"
  }
,
 {
    "is_managed" : "true",
    "guid" : "2278D637-312B-4F39-AE26-3AE8170D7EC6",
    "token" : "0x00000",
    "native_offset" : "0x0",
    "filename" : "MonoDevelop.MSBuildBuilder.exe",
    "sizeofimage" : "0x14000",
    "timestamp" : "0xb4416f59",
    "il_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10cd0c62d",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10cf2bfa4",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10cf303a6",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10cec76f4",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "true",
    "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
    "token" : "0x00000",
    "native_offset" : "0x0",
    "filename" : "mscorlib.dll",
    "sizeofimage" : "0x472000",
    "timestamp" : "0xec216ac8",
    "il_offset" : "0x00000"
  }
,
 {
    "is_managed" : "true",
    "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
    "token" : "0x60048c4",
    "native_offset" : "0x0",
    "filename" : "mscorlib.dll",
    "sizeofimage" : "0x472000",
    "timestamp" : "0xec216ac8",
    "il_offset" : "0x00000"
  }
,
 {
    "is_managed" : "true",
    "guid" : "2278D637-312B-4F39-AE26-3AE8170D7EC6",
    "token" : "0x6000181",
    "native_offset" : "0x0",
    "filename" : "MonoDevelop.MSBuildBuilder.exe",
    "sizeofimage" : "0x14000",
    "timestamp" : "0xb4416f59",
    "il_offset" : "0x00000"
  }
,
 {
    "is_managed" : "true",
    "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
    "token" : "0x6001ec1",
    "native_offset" : "0x0",
    "filename" : "mscorlib.dll",
    "sizeofimage" : "0x472000",
    "timestamp" : "0xec216ac8",
    "il_offset" : "0x00000"
  }
,
 {
    "is_managed" : "true",
    "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
    "token" : "0x6001fe3",
    "native_offset" : "0x0",
    "filename" : "mscorlib.dll",
    "sizeofimage" : "0x472000",
    "timestamp" : "0xec216ac8",
    "il_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10cd0c62d",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10cf2bfa4",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10cf55ec0",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10ce8828c",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10cf53373",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x7fff67db42eb",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x7fff67db7249",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x7fff67db340d",
    "native_offset" : "0x00000"
  }
 ]
}
]
}
ZigbeeApp/Shared/Common/CommonPage.cs
@@ -62,7 +62,7 @@
        /// <summary>
        /// 版本号
        /// </summary>
        public static string CodeIDString = "1.0.19112901";
        public static string CodeIDString = "1.0.19120501";
        /// <summary>
        /// 注册来源(0:HDL On 1:Zigbee)
        /// </summary>
ZigbeeApp/Shared/Common/Device.cs
@@ -1639,16 +1639,16 @@
        /// <returns></returns>
        public string AppendVersion(int versionValue)
        {
            //转为16进制
            string txt64 = Convert.ToString(versionValue, 16).PadLeft(4, '0');
            //直接是10进制
            string txt10 = Convert.ToString(versionValue).PadLeft(4, '0');
            //这个是小数点前面的值
            int value1 = Convert.ToInt32(txt64.Substring(0, 2), 16);
            int value1 = Convert.ToInt32(txt10.Substring(0, txt10.Length - 2));
            //这个是小数点后面的值
            int value2 = Convert.ToInt32(txt64.Substring(2, 2), 16);
            int value2 = Convert.ToInt32(txt10.Substring(txt10.Length - 2, 2));
            //Ver.
            string ver = Language.StringByID(R.MyInternationalizationString.uVersionAbbreviation);
            return ver + value1 + "." + value2.ToString().PadLeft(3, '0');
            return ver + value1 + "." + value2.ToString().PadLeft(2, '0');
        }
        /// <summary>
ZigbeeApp/Shared/Common/House.cs
@@ -235,8 +235,6 @@
        /// </summary>
        public static async System.Threading.Tasks.Task<List<string>> GetHomeLists()
        {
            //清空当前住宅列表
            Config.Instance.HomeFilePathList.Clear();
            var pageSetting = new SendDataToServer.ResidenceListPageSettingObj()
            {
                PageSize = CommonPage.PageSize
@@ -266,7 +264,7 @@
                    if (responseDataObj.TotalCount == 0)
                    {
                        //当住宅为空时先提示用户新建住宅
                        var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.CurrentlyTheUserIshHouseIsEmptyPleaseBuildANewHouseFirst), Language.StringByID(R.MyInternationalizationString.Close), Language.StringByID(R.MyInternationalizationString.OK));
                        var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.CurrentlyTheUserIshHouseIsEmptyPleaseBuildANewHouseFirst), Language.StringByID(R.MyInternationalizationString.Close), Language.StringByID(R.MyInternationalizationString.Confrim));
                        alert.Show();
                        alert.ResultEventHandler += (sender, e) =>
                        {
@@ -278,6 +276,8 @@
                    }
                    else
                    {
                        //清空当前住宅列表
                        Config.Instance.HomeFilePathList.Clear();
                        if (Config.Instance.HomeId == string.Empty && responseDataObj.PageData.Count > 0)
                        {
                            //赋一个初始值
ZigbeeApp/Shared/Common/SceneTargetDeviceUI.cs
@@ -112,11 +112,11 @@
                {
                    return null;
                }
                if (TaskList[0].Data1 == 0)
                if (TaskList[0].Data1 == 1)
                {
                    return Language.StringByID(R.MyInternationalizationString.Shut);
                }
                return $"{TaskList[0].Data1}%";
                return $"{TaskList[0].Data2}%";
            }
            else if (DeviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.Thermostat)
            {
ZigbeeApp/Shared/Common/ZigbeeColor.cs
@@ -11,7 +11,7 @@
        }
        public static ZigbeeColor Current;
        #region 徐梅
        public uint MainColor = 0xFFEAEAEA;
        public uint BottomMenuColor = 0xFFFFFFFF;
@@ -117,6 +117,10 @@
        /// 浅白背景 0xFFF5F6FA
        /// </summary>
        public uint GXCGrayBackgroundColor = 0xFFF5F6FA;
        /// <summary>
        /// 0x73000000
        /// </summary>
        public uint GXCGrayBackgroundColor2 = 0x73000000;
        /// <summary>
        /// 黑色背景 0xFF232323
        /// </summary>
@@ -304,7 +308,7 @@
        public uint LogicTextBlueColor = 0xFF00AAF0;
        public uint LogicDelBackgroundColor = 0xFFFF0000;
        public uint LogicEditBlackColor = 0xFF00aaf0;
        public uint LogicTimeViewColor= 0xFFFFFFFF;
        public uint LogicTimeViewColor = 0xFFFFFFFF;
        public uint LogicTimeViewSaveButton = 0xFF121212;
        //最新UI颜色
        public uint LogicTopBackgroundColor = 0xFFF9F9F9;
ZigbeeApp/Shared/DLL/Android/Shared.Droid.HDLWidget.dll
Binary files differ
ZigbeeApp/Shared/DLL/Android/Shared.Droid.Smartrefresh.dll
Binary files differ
ZigbeeApp/Shared/DLL/Android/Shared.Droid.dll
Binary files differ
ZigbeeApp/Shared/DLL/IOS/Shared.IOS.TBL.dll
Binary files differ
ZigbeeApp/Shared/DLL/IOS/Shared.IOS.dll
Binary files differ
ZigbeeApp/Shared/Phone/Device/AC/ACControl.cs
@@ -3,6 +3,7 @@
using ZigBee.Device;
using Shared.Phone.Device.CommonForm;
using Shared.Phone.UserView;
using Shared.Phone.Device.DeviceLogic;
namespace Shared.Phone.Device.AC
{
@@ -410,16 +411,7 @@
                //发送读取状态命令
                UserView.UserHomeView.ReadStatus(ac, () =>
                {
                    ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                    ac.ReadLocalTemperature();
                    ac.ReadCoolingSetpoint();
                    ac.ReadHeatingSetpoint();
                    ac.ReadAutoSetpoint();
                    ac.ReadFanMode();
                    ac.ReadSystemMode();
                    ac.ReadSystemFansSwingMode();
                    ac.ReadModeSupport();
                    ac.ReadCleanStatu();
                    ReadDeviceAttributeLogic.Instance.SendACStatuComand(device.CommonDevice);
                });
            }
            else
@@ -427,16 +419,7 @@
                //防止短时间内多次读取设备状态
                if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                {
                    ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                    ac.ReadLocalTemperature();
                    ac.ReadCoolingSetpoint();
                    ac.ReadHeatingSetpoint();
                    ac.ReadAutoSetpoint();
                    ac.ReadFanMode();
                    ac.ReadSystemMode();
                    ac.ReadSystemFansSwingMode();
                    ac.ReadModeSupport();
                    ac.ReadCleanStatu();
                    ReadDeviceAttributeLogic.Instance.SendACStatuComand(device.CommonDevice);
                }
            }
ZigbeeApp/Shared/Phone/Device/Account/AccountForgetPWD.cs
@@ -61,6 +61,7 @@
        /// </summary>
        public AccountForgetPWD()
        {
            CommonPage.Instance.IsDrawerLockMode = true;
            BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
            Tag = "Forgot";
        }
@@ -190,7 +191,7 @@
        private void AddPhoneOrEmailFL(FrameLayout accountCodeFrameLayout, string phoneOrEmail)
        {
            accountCodeFrameLayout.RemoveAll();
            account = string.Empty;
            if (phoneOrEmail == "Phone")
            {
                phoneRow = new PhoneRowForm();
@@ -241,15 +242,16 @@
        private void Account_TextChange(object sender, string mouseEventArgs)
        {
            errorBtn.Text = "";
            if ((sender as EditText).Text.Trim().Length > 0)
            {
                codeRow.SendCodeBtn.Enable = codeRow.SendCodeBtn.IsSelected = true;
                account = (sender as EditText).Text.Trim();
            }
            else
            {
                codeRow.SendCodeBtn.Enable = codeRow.SendCodeBtn.IsSelected = false;
            }
            //account = (sender as EditText).Text.Trim();
        }
        /// <summary>
ZigbeeApp/Shared/Phone/Device/Account/AccountLogic.cs
New file
@@ -0,0 +1,83 @@
using System;
using System.Text.RegularExpressions;
using Shared.Common;
namespace Shared.Phone.Device.Account
{
    public class AccountLogic
    {
        #region ◆ 变量____________________________
        /// <summary>
        /// _instance
        /// </summary>
        private static AccountLogic _instance;
        /// <summary>
        /// Instance
        /// </summary>
        public static AccountLogic Instance
        {
            get
            {
                if(_instance==null)
                {
                    _instance = new AccountLogic();
                }
                return _instance;
            }
        }
        #endregion
        #region ◆ 邮箱____________________________
        /// <summary>
        /// 检查邮箱合法性
        /// </summary>
        /// <param name="email"></param>
        /// <returns></returns>
        public bool CheckEmail(string email)
        {
            var regex= new  Regex(CommonPage.EmailRegexStr);
            return regex.IsMatch(email);
        }
        #endregion
        #region ◆ 手机____________________________
        /// <summary>
        /// 检查手机号合法性
        /// </summary>
        /// <param name="phone"></param>
        /// <returns></returns>
        public bool CheckPhone(string phone)
        {
            var regex = new Regex(CommonPage.PhoneForForeignRegexStr);
            return regex.IsMatch(phone);
        }
        /// <summary>
        /// 检查手机号合法性、区分区号
        /// </summary>
        /// <param name="phone">手机号</param>
        /// <param name="zoneCode">区号</param>
        /// <returns></returns>
        public bool CheckPhoneWithZone(string phone,string zoneCode)
        {
            if(zoneCode=="86")
            {
                var regex = new Regex(CommonPage.PhoneRegexStr);
                return regex.IsMatch(phone);
            }
            else
            {
                var regex = new Regex(CommonPage.PhoneForForeignRegexStr);
                return regex.IsMatch(phone);
            }
        }
        #endregion
    }
}
ZigbeeApp/Shared/Phone/Device/Account/AccountLogin.cs
@@ -83,6 +83,7 @@
        /// </summary>
        public AccountLogin()
        {
            CommonPage.Instance.IsDrawerLockMode = true;
            BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
            Tag = "Login";
        }
@@ -342,6 +343,11 @@
            {
                try
                {
                    if(CheckAccount(accountStr)==false)
                    {
                        return;
                    }
                    CommonPage.Loading.Start(Language.StringByID(R.MyInternationalizationString.Logining));
                    var requestObj = new SendDataToServer.LoginObj
@@ -459,6 +465,32 @@
                //});
            };
            action();
        }
        /// <summary>
        /// CheckAccount
        /// </summary>
        /// <param name="accountStr"></param>
        /// <returns></returns>
        private bool CheckAccount(string accountStr)
        {
            if (phoneEmailForm.SelectedEmail.IsSelected)
            {
                if (AccountLogic.Instance.CheckEmail(accountStr) == false)
                {
                    loginErrorBtn.TextID = R.MyInternationalizationString.TheEmailError;
                    return false;
                }
            }
            else
            {
                if (AccountLogic.Instance.CheckPhone(accountStr) == false)
                {
                    loginErrorBtn.TextID = R.MyInternationalizationString.ThePhoneError;
                    return false;
                }
            }
            return true;
        }
        /// <summary>
@@ -660,6 +692,7 @@
        {
            phoneEmailForm.SelectedPhone.IsSelected = phoneEmailForm.SelectedEmail.IsSelected = false;
            loginBtn.Enable = loginBtn.IsSelected = false;
            loginErrorBtn.Text = string.Empty;
            (sender as Button).IsSelected = true;
            if((sender as Button).Tag.ToString()=="Phone")
            {
@@ -695,8 +728,6 @@
            pwdRow = new PwdLoginRowForm();
            pwdRow.Init(accountPwdFrameLayout, 29, 225);
            pwdRow.PasswrodET.TextChangeEventHandler += Pwd_TextChange;
        }
        #endregion
@@ -724,7 +755,7 @@
        private void Register(object sender,MouseEventArgs mouseEventArgs)
        {
            var registerPage = new AccountRegister();
            Shared.Common.CommonPage.Instance.AddChidren(registerPage);
            CommonPage.Instance.AddChidren(registerPage);
            registerPage.Show();
        }
@@ -738,7 +769,7 @@
        /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
        private void Account_TextChange(object sender,string mouseEventArgs)
        {
            loginErrorBtn.Text = "";
            loginErrorBtn.Text = string.Empty;
        }
        /// <summary>
@@ -748,7 +779,7 @@
        /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
        private void Pwd_TextChange(object sender,string mouseEventArgs)
        {
            loginErrorBtn.Text = "";
            loginErrorBtn.Text = string.Empty;
            if (1 <= pwdRow.PasswrodET.Text.Trim().Length && pwdRow.PasswrodET.Text.Trim().Length <= 16 && (phoneRow.AccountET.Text.Trim().Length > 0 || emailRow.AccountET.Text.Trim().Length>0))
            {
                loginBtn.Enable = loginBtn.IsSelected = true;
ZigbeeApp/Shared/Phone/Device/Account/AccountLoginByCode.cs
@@ -87,6 +87,7 @@
        /// </summary>
        public AccountLoginByCode()
        {
            CommonPage.Instance.IsDrawerLockMode = true;
            Tag = "Login";
            BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
            t = new Timer();
@@ -430,7 +431,8 @@
        private void AddPhoneOrEmailFL(FrameLayout accountCodeFrameLayout, string phoneOrEmail)
        {
            accountCodeFrameLayout.RemoveAll();
            account = string.Empty;
            loginErrorBtn.Text = string.Empty;
            if (phoneOrEmail == "Phone")
            {
                phoneRow = new PhoneRowForm();
@@ -459,11 +461,12 @@
        /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
        private void Account_TextChange(object sender, string mouseEventArgs)
        {
            loginErrorBtn.Text = "";
            loginErrorBtn.Text = string.Empty;
            if ((sender as EditText).Text.Trim().Length > 0)
            {
                IsRightAccount = true;
                codeRow.SendCodeBtn.Enable = codeRow.SendCodeBtn.IsSelected = true;
                account= (sender as EditText).Text.Trim();
            }
            else
            {
@@ -538,9 +541,9 @@
        private void Register(object sender, MouseEventArgs mouseEventArgs)
        {
            this.RemoveFromParent();
            var login = new AccountLogin();
            CommonPage.Instance.AddChidren(login);
            login.Show();
            var registerPage = new AccountRegister();
            CommonPage.Instance.AddChidren(registerPage);
            registerPage.Show();
        }
        #endregion
@@ -567,6 +570,11 @@
        /// <param name="mouseEventArgs"></param>
        private async void SendCode_MouseUpEventAsync(object sender, MouseEventArgs mouseEventArgs)
        {
            if (CheckAccount(account) == false)
            {
                return;
            }
            (sender as Button).Enable = (sender as Button).IsSelected = false;
            CommonPage.Loading.Start();
            try
@@ -635,6 +643,34 @@
                CommonPage.Loading.Hide();
            }
        }
        /// <summary>
        /// CheckAccount
        /// </summary>
        /// <param name="accountStr"></param>
        /// <returns></returns>
        private bool CheckAccount(string accountStr)
        {
            loginErrorBtn.Text = string.Empty;
            if (phoneEmailForm.SelectedEmail.IsSelected)
            {
                if (AccountLogic.Instance.CheckEmail(accountStr) == false)
                {
                    loginErrorBtn.TextID = R.MyInternationalizationString.TheEmailError;
                    return false;
                }
            }
            else
            {
                if (AccountLogic.Instance.CheckPhoneWithZone(accountStr, CommonPage.PhoneZoneStr) == false)
                {
                    loginErrorBtn.TextID = R.MyInternationalizationString.ThePhoneError;
                    return false;
                }
            }
            return true;
        }
        #endregion
        #region ◆ 验证验证码________________________
ZigbeeApp/Shared/Phone/Device/Account/AccountRegister.cs
@@ -65,6 +65,7 @@
        #region ◆ 构造方法_________________________
        public AccountRegister()
        {
            CommonPage.Instance.IsDrawerLockMode = true;
            BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
            Tag = "Register";
        }
@@ -128,7 +129,7 @@
                Width = Application.GetRealWidth(942),
                Gravity = Gravity.CenterHorizontal,
                BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor,
                Radius = (uint)Application.GetRealHeight(30)
                Radius = (uint)Application.GetRealHeight(17)
            };
            bodyFrameLayout.AddChidren(accountCodeFL);
@@ -190,6 +191,8 @@
            phoneEmailForm.SelectedPhone.IsSelected = phoneEmailForm.SelectedEmail.IsSelected = false;
            registerBtn.Enable = registerBtn.IsSelected = false;
            (sender as Button).IsSelected = true;
            account = string.Empty;
            errorBtn.Text = string.Empty;
            if ((sender as Button).Tag.ToString() == "Phone")
            {
                AddPhoneOrEmailFL(accountCodeFL, "Phone");
@@ -208,7 +211,6 @@
        private void AddPhoneOrEmailFL(FrameLayout accountCodeFrameLayout, string phoneOrEmail)
        {
            accountCodeFrameLayout.RemoveAll();
            account = string.Empty;
            if (phoneOrEmail == "Phone")
            {
                phoneRow = new PhoneRowForm();
@@ -345,7 +347,7 @@
        /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
        private void Account_TextChange(object sender, string mouseEventArgs)
        {
            errorBtn.Text = "";
            errorBtn.Text = string.Empty;
            if ((sender as EditText).Text.Trim().Length > 0)
            {
                //IsRightAccount = true;
@@ -366,7 +368,7 @@
        /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
        private void Code_TextChange(object sender, string mouseEventArgs)
        {
            errorBtn.Text = "";
            errorBtn.Text = string.Empty;
            if ((sender as EditText).Text.Trim().Length > 0)
            {
                registerBtn.Enable = registerBtn.IsSelected = true;
ZigbeeApp/Shared/Phone/Device/Account/PhoneEmailForm.cs
@@ -147,6 +147,7 @@
                form.FinishSelectEvent += (code) =>
                {
                    (sender as Button).Text = "+" + code;
                    CommonPage.PhoneZoneStr = code;
                };
                //var zoneListView = new PhoneZone { };
@@ -161,7 +162,7 @@
            AccountET = new EditText()
            {
                X = Application.GetRealWidth(193),
                X = Application.GetRealWidth(222),
                Width = Application.GetRealWidth(600),
                Height = Application.GetRealHeight(Button_Height),
                Gravity = Gravity.CenterVertical,
@@ -574,7 +575,7 @@
            PasswrodET = new EditText()
            {
                X = Application.GetRealWidth(236),
                X = Application.GetRealWidth(222),
                Width = Application.GetRealWidth(550),
                Height = Application.GetRealHeight(Button_Height),
                Gravity = Gravity.CenterVertical,
ZigbeeApp/Shared/Phone/Device/Category/Category.cs
@@ -7,6 +7,7 @@
using Shared.Phone.Device.CommonForm;
using Shared.Phone.Device.AC;
using Shared.Phone.UserCenter.DoorLock;
using Shared.Phone.Device.DeviceLogic;
namespace Shared.Phone.Device.Category
{
@@ -828,6 +829,7 @@
                    BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
                };
                functionSceneBodyView.AddChidren(functionTypeScrowView);
                //functionSceneBodyView.SetCornerWithSameRadius(Application.GetRealHeight(50), HDLUtils.RectCornerBottomLeft);
                deviceListScrolView = new VerticalScrolViewLayout
                {
@@ -838,7 +840,10 @@
                    BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
                };
                functionSceneBodyView.AddChidren(deviceListScrolView);
                //deviceListScrolView.SetCornerWithSameRadius(Application.GetRealHeight(50), HDLUtils.RectCornerTopLeft);
                tempFunctionTypeBtn = new FunctionButton();
                tempFunctionTypeBtn.Init("","");
                EventHandler<MouseEventArgs> ShowSameTypeFunction = (object typeSender, MouseEventArgs mouseEventArgs) =>
                {
@@ -907,8 +912,7 @@
                            {
                                UserHomeView.ReadStatus(light, () =>
                                {
                                    light.ReadOnOffStatus();
                                    light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                    ReadDeviceAttributeLogic.Instance.SendLightStatuComand(deviceUI.CommonDevice);
                                });
                            }
                            else
@@ -916,8 +920,7 @@
                                //防止短时间内多次读取状态
                                if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - light.LastDateTime).TotalSeconds)
                                {
                                    light.ReadOnOffStatus();
                                    light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                    ReadDeviceAttributeLogic.Instance.SendLightStatuComand(deviceUI.CommonDevice);
                                }
                            }
@@ -1002,16 +1005,18 @@
                                Tag = deviceUI,
                                Radius = 0
                            };
                            deviceTypeRowLayout.AddRightView(editBtn);
                            editBtn.MouseUpEventHandler += deviceDetailHandler;
                            var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                            {
                                Tag = deviceUI,
                                Radius = 0
                            };
                            deviceTypeRowLayout.AddRightView(delBtn);
                            delBtn.MouseUpEventHandler += delEvent;
                            if (room.IsSharedRoom == false)
                            {
                                deviceTypeRowLayout.AddRightView(editBtn);
                                editBtn.MouseUpEventHandler += deviceDetailHandler;
                                deviceTypeRowLayout.AddRightView(delBtn);
                                delBtn.MouseUpEventHandler += delEvent;
                            }
                        }
                        else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.AirSwitch)
                        {
@@ -1026,16 +1031,14 @@
                            {
                                UserHomeView.ReadStatus(airSwitch, () =>
                                {
                                    airSwitch.ReadOnOffStatus();
                                    airSwitch.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                    ReadDeviceAttributeLogic.Instance.SendLightStatuComand(deviceUI.CommonDevice);
                                });
                            }
                            else
                            {
                                if ((DateTime.Now - airSwitch.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                                {
                                    airSwitch.ReadOnOffStatus();
                                    airSwitch.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                    ReadDeviceAttributeLogic.Instance.SendLightStatuComand(deviceUI.CommonDevice);
                                }
                            }
@@ -1102,16 +1105,19 @@
                                Tag = deviceUI,
                                Radius = 0
                            };
                            deviceTypeRowLayout.AddRightView(editBtn);
                            editBtn.MouseUpEventHandler += deviceDetailHandler;
                            var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                            {
                                Tag = deviceUI,
                                Radius = 0
                            };
                            deviceTypeRowLayout.AddRightView(delBtn);
                            delBtn.MouseUpEventHandler += delEvent;
                            if (room.IsSharedRoom == false)
                            {
                                deviceTypeRowLayout.AddRightView(editBtn);
                                editBtn.MouseUpEventHandler += deviceDetailHandler;
                                deviceTypeRowLayout.AddRightView(delBtn);
                                delBtn.MouseUpEventHandler += delEvent;
                            }
                        }
                        else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.DimmableLight)
                        {
@@ -1126,18 +1132,14 @@
                            {
                                UserHomeView.ReadStatus(dimmableLight, () =>
                                {
                                    dimmableLight.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                    dimmableLight.ReadOnOffStatus();
                                    dimmableLight.ReadLevel();
                                    ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(deviceUI.CommonDevice);
                                });
                            }
                            else
                            {
                                if ((DateTime.Now - dimmableLight.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                                {
                                    dimmableLight.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                    dimmableLight.ReadOnOffStatus();
                                    dimmableLight.ReadLevel();
                                    ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(deviceUI.CommonDevice);
                                }
                            }
@@ -1204,17 +1206,18 @@
                                Tag = deviceUI,
                                Radius = 0
                            };
                            deviceTypeRowLayout.AddRightView(editBtn);
                            editBtn.MouseUpEventHandler += deviceDetailHandler;
                            var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                            {
                                Tag = deviceUI,
                                Radius = 0
                            };
                            deviceTypeRowLayout.AddRightView(delBtn);
                            delBtn.MouseUpEventHandler += delEvent;
                            if (room.IsSharedRoom == false)
                            {
                                deviceTypeRowLayout.AddRightView(editBtn);
                                editBtn.MouseUpEventHandler += deviceDetailHandler;
                                deviceTypeRowLayout.AddRightView(delBtn);
                                delBtn.MouseUpEventHandler += delEvent;
                            }
                        }
                        else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.Thermostat)
                        {
@@ -1230,16 +1233,7 @@
                                //发送读取状态命令
                                UserView.UserHomeView.ReadStatus(ac, () =>
                                {
                                    ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                    ac.ReadLocalTemperature();
                                    ac.ReadCoolingSetpoint();
                                    ac.ReadHeatingSetpoint();
                                    ac.ReadAutoSetpoint();
                                    ac.ReadFanMode();
                                    ac.ReadSystemMode();
                                    ac.ReadSystemFansSwingMode();
                                    ac.ReadModeSupport();
                                    ac.ReadCleanStatu();
                                    ReadDeviceAttributeLogic.Instance.SendACStatuComand(deviceUI.CommonDevice);
                                });
                            }
                            else
@@ -1247,16 +1241,7 @@
                                //防止短时间内多次读取设备状态
                                if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                                {
                                    ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                    ac.ReadLocalTemperature();
                                    ac.ReadCoolingSetpoint();
                                    ac.ReadHeatingSetpoint();
                                    ac.ReadAutoSetpoint();
                                    ac.ReadFanMode();
                                    ac.ReadSystemMode();
                                    ac.ReadSystemFansSwingMode();
                                    ac.ReadModeSupport();
                                    ac.ReadCleanStatu();
                                    ReadDeviceAttributeLogic.Instance.SendACStatuComand(deviceUI.CommonDevice);
                                }
                            }
@@ -1313,16 +1298,18 @@
                                Tag = deviceUI,
                                Radius = 0
                            };
                            deviceTypeRowLayout.AddRightView(editBtn);
                            editBtn.MouseUpEventHandler += deviceDetailHandler;
                            var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                            {
                                Tag = deviceUI,
                                Radius = 0
                            };
                            deviceTypeRowLayout.AddRightView(delBtn);
                            delBtn.MouseUpEventHandler += delEvent;
                            if (room.IsSharedRoom == false)
                            {
                                deviceTypeRowLayout.AddRightView(editBtn);
                                editBtn.MouseUpEventHandler += deviceDetailHandler;
                                deviceTypeRowLayout.AddRightView(delBtn);
                                delBtn.MouseUpEventHandler += delEvent;
                            }
                            deviceRow.ClickBtn.MouseUpEventHandler += (send2, e2) =>
                            {
@@ -1347,8 +1334,7 @@
                            {
                                UserHomeView.ReadStatus(rollerShade, () =>
                                {
                                    rollerShade.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                    rollerShade.ReadWcdCurrentPositionLiftPercentage();
                                    ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(deviceUI.CommonDevice);
                                });
                            }
                            else
@@ -1356,8 +1342,7 @@
                                //防止短时间内多次读取
                                if ((DateTime.Now - rollerShade.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                                {
                                    rollerShade.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                    rollerShade.ReadWcdCurrentPositionLiftPercentage();
                                    ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(deviceUI.CommonDevice);
                                }
                            }
@@ -1400,16 +1385,18 @@
                                Tag = deviceUI,
                                Radius = 0
                            };
                            deviceTypeRowLayout.AddRightView(editBtn);
                            editBtn.MouseUpEventHandler += deviceDetailHandler;
                            var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                            {
                                Tag = deviceUI,
                                Radius = 0
                            };
                            deviceTypeRowLayout.AddRightView(delBtn);
                            delBtn.MouseUpEventHandler += delEvent;
                            if (room.IsSharedRoom == false)
                            {
                                deviceTypeRowLayout.AddRightView(editBtn);
                                editBtn.MouseUpEventHandler += deviceDetailHandler;
                                deviceTypeRowLayout.AddRightView(delBtn);
                                delBtn.MouseUpEventHandler += delEvent;
                            }
                            deviceRow.ClickBtn.MouseUpEventHandler += (send2, e2) =>
                            {
@@ -1452,15 +1439,17 @@
                            {
                                Tag = deviceUI
                            };
                            deviceTypeRowLayout.AddRightView(editBtn);
                            editBtn.MouseUpEventHandler += deviceDetailHandler;
                            var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                            {
                                Tag = deviceUI
                            };
                            deviceTypeRowLayout.AddRightView(delBtn);
                            delBtn.MouseUpEventHandler += delEvent;
                            if (room.IsSharedRoom == false)
                            {
                                deviceTypeRowLayout.AddRightView(editBtn);
                                editBtn.MouseUpEventHandler += deviceDetailHandler;
                                deviceTypeRowLayout.AddRightView(delBtn);
                                delBtn.MouseUpEventHandler += delEvent;
                            }
                        }
                        else
                        {
@@ -1484,15 +1473,17 @@
                            {
                                Tag = deviceUI
                            };
                            deviceTypeRowLayout.AddRightView(editBtn);
                            editBtn.MouseUpEventHandler += deviceDetailHandler;
                            var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                            {
                                Tag = deviceUI
                            };
                            deviceTypeRowLayout.AddRightView(delBtn);
                            delBtn.MouseUpEventHandler += delEvent;
                            if (room.IsSharedRoom == false)
                            {
                                deviceTypeRowLayout.AddRightView(editBtn);
                                editBtn.MouseUpEventHandler += deviceDetailHandler;
                                deviceTypeRowLayout.AddRightView(delBtn);
                                delBtn.MouseUpEventHandler += delEvent;
                            }
                        }
                    }
                };
@@ -1644,7 +1635,6 @@
                    var sceneView = new SceneCategoryView(0, 0);
                    sceneScrolView.AddChidren(sceneView);
                    sceneView.Init(scene, room);
                    sceneView.SetViewShadow(true);
                    GetDelayScene(sceneScrolView);
                }
            }
@@ -1737,6 +1727,18 @@
            { IsBackground = true }.Start();
        }
        /// <summary>
        /// GetExecScene
        /// </summary>
        /// <param name="scrolViewLayout"></param>
        private void GetExecScene(VerticalScrolViewLayout scrolViewLayout)
        {
            new System.Threading.Thread(() =>
            {
            })
            { IsBackground = true }.Start();
        }
        #endregion
        #region ◆ 自动化__________________________
ZigbeeApp/Shared/Phone/Device/Category/CategoryAddScene.cs
@@ -59,7 +59,7 @@
        /// <summary>
        /// backGround
        /// </summary>
        private Button backGround;
        private ImageView backGround;
        /// <summary>
        /// 是否修改
@@ -78,6 +78,14 @@
        /// </summary>
        public Common.Room modifyRoom;
        /// <summary>
        /// OldBackgroundImagePath
        /// </summary>
        private string OldBackgroundImagePath;
        /// <summary>
        /// OldIconPathType
        /// </summary>
        public int OldIconPathType;
        #endregion
@@ -178,7 +186,6 @@
                    //设备详细设置界面
                    void detailMouseUpEventHandler(object sender, MouseEventArgs e)
                    {
                        //设备
                        if (targetDevice.Type == 0)
                        {
                            if (targetDevice.DeviceUI == null || targetDevice.DeviceUI.CommonDevice == null)
@@ -204,7 +211,6 @@
                            };
                        }
                        //时间间隔
                        else if (targetDevice.Type == 2)
                        {
                            var delayTimeView = new SelectDelayTime();
@@ -223,7 +229,6 @@
                                RefreshTargetListView();
                            };
                        }
                        //场景
                        else if (targetDevice.Type == 1)
                        {
                            var sceneView = new SelectScene();
@@ -270,16 +275,7 @@
        /// </summary>
        private void Init()
        {
            //foreach (var floor in Config.Instance.Home.FloorDics)
            //{
            //    floorIds.Add(floor.Key);
            //    floorNames.Add(floor.Value);
            //    if(Common.Room.CurrentRoom.GetRoomsByFloorId(floor.Key).Count>0)
            //    {
            //        roomNames.Add(Common.Room.CurrentRoom.GetRoomNamesByFloorId(floor.Key));
            //        rooms.Add(Common.Room.CurrentRoom.GetRoomsByFloorId(floor.Key));
            //    }
            //}
        }
        /// <summary>
@@ -324,14 +320,13 @@
            };
            bodyFrameLayout.AddChidren(imgFL);
            backGround = new Button()
            backGround = new ImageView()
            {
                Width = Application.GetMinRealAverage(930),
                Height = Application.GetMinRealAverage(464),
                Gravity = Gravity.Center,
                Radius = (uint)Application.GetMinRealAverage(CommonFormResouce.BigFormRadius),
                //UnSelectedImagePath = ImagePath
                UnSelectedImagePath = "SceneIcon/3.jpg"
                ImagePath = "SceneIcon/3.jpg"
            };
            imgFL.AddChidren(backGround);
            backGround.SetViewShadow(true);
@@ -421,12 +416,10 @@
            };
            addTargetFL.AddChidren(targetLine);
            //添加目标后的展示列表
            TargetListScrolView = new VerticalScrolViewLayout()
            {
                Y = Application.GetRealHeight(49+127),
                Height = Application.GetRealHeight(730-127-49),
                //BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
            };
            targetFL.AddChidren(TargetListScrolView);
@@ -435,10 +428,22 @@
            if(isModify)
            {
                backGround.UnSelectedImagePath = modifySceneUI.IconPath;
                IconPathType = modifySceneUI.IconPathType;
                OldIconPathType = modifySceneUI.IconPathType;
                if (IconPathType != 0)
                {
                    OldBackgroundImagePath = modifySceneUI.IconPath;
                }
                if (modifySceneUI.IconPathType==0)
                {
                    backGround.ImagePath = modifySceneUI.IconPath;
                }
                else
                {
                    backGround.ImagePath = System.IO.Path.Combine(Config.Instance.FullPath, modifySceneUI.IconPath);
                }
                nameRow.SetTitle(modifySceneUI.Name);
                zoneRow.SetTitle($"{Config.Instance.Home.GetFloorNameById(modifyRoom.FloorId)},{modifyRoom.Name}");
                IconPathType = modifySceneUI.IconPathType;
                curRoom = modifyRoom;
                sceneTargetDevicesList.AddRange(modifySceneTargetDevicesList);
            }
@@ -447,7 +452,6 @@
            #region event
            //选择背景图
            EventHandler<MouseEventArgs> backGroundIMGHander = (sender, e) =>
            {
                if (curRoom != null && curRoom.IsSharedRoom)
@@ -540,14 +544,14 @@
                    {
                        IconPathType = 0;
                        backGround.ImageBytes = null;
                        backGround.UnSelectedImagePath = imgPath;
                        backGround.ImagePath = imgPath;
                    };
                };
                selectPhotographBtn.MouseUpEventHandler += (send, ee) =>
                {
                    selectFL.RemoveFromParent();
                    var tradeTime = DateTime.Now.ToString("yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo);
                    var fileName = $"Scene_{tradeTime}";
                    var fileName = $"SceneIcon_{tradeTime}";
                    //通过相机拍照裁剪
                    CropImage.TakePicture((imagePath) =>
                    {
@@ -555,13 +559,13 @@
                        {
                            if (IconPathType != 0)
                            {
                                Global.DeleteFilebyHomeId(backGround.UnSelectedImagePath);
                                Global.DeleteFilebyHomeId(backGround.ImagePath);
                            }
                        }
                        IconPathType = 1;
                        backGround.ImageBytes = Shared.IO.FileUtils.ReadFile(imagePath);
                        backGround.UnSelectedImagePath = imagePath;
                        backGround.ImagePath = imagePath;
                        System.IO.File.Delete(imagePath);
                        
                    }, fileName, 2, 1);
@@ -571,7 +575,7 @@
                {
                    selectFL.RemoveFromParent();
                    var tradeTime = DateTime.Now.ToString("yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo);
                    var fileName = $"Scene_{tradeTime}";
                    var fileName = $"SceneIcon_{tradeTime}";
                    //从相册选择图片裁剪
                    CropImage.SelectPicture((imagePath) =>
                    {
@@ -579,13 +583,13 @@
                        {
                            if (IconPathType != 0)
                            {
                                Global.DeleteFilebyHomeId(backGround.UnSelectedImagePath);
                                Global.DeleteFilebyHomeId(backGround.ImagePath);
                            }
                        }
                        IconPathType = 2;
                        backGround.ImageBytes = Shared.IO.FileUtils.ReadFile(imagePath);
                        backGround.UnSelectedImagePath = imagePath;
                        backGround.ImagePath = imagePath;
                        System.IO.File.Delete(imagePath);
                    }, fileName, 2,1);
@@ -832,44 +836,42 @@
                        try
                        {
                            var tradeTime = DateTime.Now.ToString("yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo);
                            var fileName = $"Scene_{tradeTime}";
                            //改名
                            var fileName = $"SceneIcon_{tradeTime}";
                            if (modifySceneUI.Name != nameRow.NameText.Text.Trim())
                            {
                                if (Common.Room.CurrentRoom.GetSameFloorScenes(curRoom.FloorId).Find(s => s.Name == nameRow.NameText.Text.Trim()) != null)
                                {
                                    Common.CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheSceneHadExist);
                                    CommonFormResouce.ShowTip(Language.StringByID(R.MyInternationalizationString.TheSceneHadExist));
                                    return;
                                }
                                //修改名字
                                var r = await ZigBee.Device.Scene.RenameSceneAsync(modifySceneUI.Id, nameRow.NameText.Text.Trim());
                                var reName = r.sceneRenameResponseData.Result;
                                if (reName == 0)
                                {
                                    //失败
                                    return;
                                }
                                else if (reName == 1)
                                {
                                    //成功
                                    modifySceneUI.Name = nameRow.NameText.Text.Trim();
                                }
                                else if (reName == 2)
                                {
                                    //没有该场景
                                    return;
                                }
                            }
                            //图片
                            if(IconPathType==1 || IconPathType ==2)
                            if (OldIconPathType != 0)
                            {
                                Shared.IO.FileUtils.DeleteFile(System.IO.Path.Combine(Config.Instance.FullPath, OldBackgroundImagePath));
                            }
                            if (IconPathType == 1 || IconPathType == 2)
                            {
                                Shared.IO.FileUtils.WriteFileByBytes(System.IO.Path.Combine(Config.Instance.FullPath, fileName), backGround.ImageBytes);
                                modifySceneUI.IconPath = System.IO.Path.Combine(Config.Instance.FullPath, fileName);
                                modifySceneUI.IconPath = fileName;
                            }
                            else
                            {
                                modifySceneUI.IconPath = backGround.UnSelectedImagePath;
                                modifySceneUI.IconPath = backGround.ImagePath;
                            }
                            modifySceneUI.IconPathType = IconPathType;
@@ -982,12 +984,10 @@
                            }
                            else if (result == 0)
                            {
                                //失败
                                Common.CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain);
                            }
                            else if (result == -1)
                            {
                                //已存在
                                Common.CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheSceneHadExist);
                            }
                        }
@@ -1020,15 +1020,14 @@
                            var tradeTime = DateTime.Now.ToString("yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo);
                            var fileName = $"SceneIcon_{tradeTime}.png";
                            string imgPath;
                            //图片
                            if (IconPathType == 1 || IconPathType == 2)
                            {
                                Shared.IO.FileUtils.WriteFileByBytes(System.IO.Path.Combine(Config.Instance.FullPath, fileName), backGround.ImageBytes);
                                imgPath = System.IO.Path.Combine(Config.Instance.FullPath, fileName);
                                imgPath = fileName;
                            }
                            else
                            {
                                imgPath = backGround.UnSelectedImagePath;
                                imgPath = backGround.ImagePath;
                            }
                            if (Common.Room.CurrentRoom.GetSameFloorScenes(curRoom.FloorId).Find(s => s.Name == nameRow.NameText.Text.Trim()) != null)
                            {
@@ -1091,12 +1090,10 @@
                            }
                            else if (result == 0)
                            {
                                //失败
                                CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.AddSceneFail);
                            }
                            else if (result == -1)
                            {
                                //已存在
                                CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheSceneHadExist);
                            }
                        }
ZigbeeApp/Shared/Phone/Device/Category/CategorySceneSelectImgByLocal.cs
@@ -75,18 +75,19 @@
            {
                var itemView = new FrameLayout()
                {
                    Height = Application.GetRealHeight(311 + CommonPage.XLeft)
                    Height = Application.GetRealHeight(311 + 58)
                };
                scrollView.AddChidren(itemView);
                for (int i = 0; i < 2; i++)
                {
                    var icon = new Button()
                    var icon = new ImageView()
                    {
                        X=Application.GetRealWidth(CommonPage.XLeft+i*(467+32)),
                        Width=Application.GetMinRealAverage(467),
                        Height=Application.GetMinRealAverage(311),
                        Gravity=Gravity.CenterVertical,
                        UnSelectedImagePath = $"SceneIcon/{k}.jpg",
                        X=Application.GetRealWidth(58+i*(467+32)),
                        Y=Application.GetRealHeight(58),
                        Width=Application.GetRealWidth(467),
                        Height=Application.GetRealHeight(311),
                        ImagePath = $"SceneIcon/{k}.jpg",
                        Radius =(uint)Application.GetRealHeight(17)
                    };
                    itemView.AddChidren(icon);
                    icon.SetViewShadow(true);
@@ -94,17 +95,13 @@
                    EventHandler<MouseEventArgs> selectIcon = (sender, e) =>
                    {
                        //CategoryAddScene.ImagePath = icon.UnSelectedImagePath;
                        //Room.AddRoomScene.ImagePath = icon.UnSelectedImagePath;
                        action?.Invoke(icon.UnSelectedImagePath);
                        action?.Invoke(icon.ImagePath);
                        action = null;
                        this.RemoveFromParent();
                    };
                    icon.MouseUpEventHandler += selectIcon;
                }
            }
        }
        #endregion
    }
ZigbeeApp/Shared/Phone/Device/Category/SelectDevice.cs
@@ -724,7 +724,7 @@
            if (sceneTarget.TaskList.Count > 0)
            {
                if (sceneTarget.TaskList[0].Data1 == 0)
                if (sceneTarget.TaskList[0].Data1 == 1)
                {
                    open.IsSelected = false;
                    shut.IsSelected = true;
@@ -733,7 +733,7 @@
                {
                    open.IsSelected = true;
                    shut.IsSelected = false;
                    open.SetProgress(sceneTarget.TaskList[0].Data1);
                    open.SetProgress(sceneTarget.TaskList[0].Data2);
                }
            }
@@ -748,14 +748,14 @@
                if (shut.IsSelected)
                {
                    //关
                    data1 = 0;
                    data1 = 1;
                    data2 = 0;
                }
                else
                {
                    //百分比
                    data1 = open.SeekBar.Progress;
                    data2 = 0;
                    data1 = 5;
                    data2 = open.SeekBar.Progress;
                }
                var taskInfo = new ZigBee.Device.Scene.TaskListInfo
ZigbeeApp/Shared/Phone/Device/CommonForm/ButtonLineForm.cs
@@ -3,7 +3,7 @@
namespace Shared.Phone.Device.CommonForm
{
    public class ButtonLineForm:FrameLayout
    public class ButtonLineForm : FrameLayout
    {
        /// <summary>
        /// name
@@ -65,12 +65,13 @@
            {
                Width = Width,
                Height = Height - 3,
                TextColor=ZigbeeColor.Current.GXCTextGrayColor4,
                SelectedTextColor=ZigbeeColor.Current.GXCTextDeepBlackColor
                TextColor = ZigbeeColor.Current.GXCTextGrayColor4,
                SelectedTextColor = ZigbeeColor.Current.GXCTextDeepBlackColor,
                TextSize = CommonFormResouce.TextSize
            };
            AddChidren(NameBtn);
            Line = new Line(Height,Width/2,2);
            Line = new Line(Height, Width / 2, 2);
            AddChidren(Line);
        }
@@ -99,6 +100,7 @@
        public void SetStatu(bool statu)
        {
            NameBtn.IsSelected = Line.IsSelected = statu;
            NameBtn.TextSize = statu ? CommonFormResouce.TextSize_Selected : CommonFormResouce.TextSize;
        }
    }
}
ZigbeeApp/Shared/Phone/Device/CommonForm/CategoryFunctionForWinRow.cs
@@ -224,7 +224,7 @@
        /// <param name="statu"></param>
        public void SetStatu(bool statu)
        {
            OpenOrUpBtn.IsSelected = CloseOrDownBtn.IsSelected = StopBtn.IsSelected = statu;
            //OpenOrUpBtn.IsSelected = CloseOrDownBtn.IsSelected = StopBtn.IsSelected = statu;
        }
        /// <summary>
ZigbeeApp/Shared/Phone/Device/CommonForm/CommonFormResouce.cs
@@ -11,6 +11,15 @@
        public const int AppRealWidth = 1080;
        /// <summary>
        /// 14
        /// </summary>
        public const int TextSize = 14;
        /// <summary>
        /// 16
        /// </summary>
        public const int TextSize_Selected = 16;
        /// <summary>
        /// 字体12
        /// </summary>
        public const int loginTextSize = 12;
ZigbeeApp/Shared/Phone/Device/CommonForm/FunctionMainView.cs
@@ -99,7 +99,7 @@
                Y = Application.GetMinRealAverage(17),
                Width = Application.GetMinRealAverage(320),
                Height = Application.GetMinRealAverage(63),
                TextColor = ZigbeeColor.Current.GXCTextGrayColor,
                TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
                SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor,
                TextAlignment=TextAlignment.CenterLeft
            };
ZigbeeApp/Shared/Phone/Device/CommonForm/RoomMainView.cs
@@ -8,7 +8,7 @@
        /// <summary>
        /// SceneIcon
        /// </summary>
        public Button Icon;
        public ImageView Icon;
        /// <summary>
        /// RoomNameButton
        /// </summary>
@@ -45,7 +45,7 @@
            };
            AddChidren(CardBG);
            Icon = new Button
            Icon = new ImageView
            {
                X = Application.GetMinRealAverage(14),
                Width = Application.GetMinRealAverage(467),
@@ -89,7 +89,7 @@
        /// <param name="imagePath"></param>
        public void SetRoomIcon(string imagePath)
        {
            Icon.UnSelectedImagePath = imagePath;
            Icon.ImagePath = imagePath;
        }
ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs
New file
@@ -0,0 +1,246 @@
using System;
using Shared.Common;
using Shared.Phone.UserCenter;
using Shared.Phone.UserView;
namespace Shared.Phone.Device.CommonForm
{
    public class RoomView:FrameLayout
    {
        /// <summary>
        /// Room
        /// </summary>
        private Common.Room room;
        /// <summary>
        /// action
        /// </summary>
        public Action action;
        public override void RemoveFromParent()
        {
            HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
            HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
            base.RemoveFromParent();
        }
        /// <summary>
        /// RoomView
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        public RoomView(int x, int y)
        {
            X = Application.GetRealWidth(x);
            Y = Application.GetRealHeight(y);
            Width = Application.GetRealWidth(717);
            Height = Application.GetRealHeight(478);
        }
        /// <summary>
        /// Init
        /// </summary>
        /// <param name="r"></param>
        public void Init(Common.Room r)
        {
            this.room = r;
            var roomBackView = new FrameLayout()
            {
                Width = Application.GetRealWidth(717),
                Height = Application.GetRealHeight(478)
            };
            AddChidren(roomBackView);
            var roomImg = new ImageView()
            {
                ImagePath = room.BackgroundImageType == 0 ? room.BackgroundImage : System.IO.Path.Combine(Config.Instance.FullPath, room.BackgroundImage),
                Radius = (uint)Application.GetRealHeight(17)
            };
            roomBackView.AddChidren(roomImg);
            var roomNameBackground = new FrameLayout
            {
                X = Application.GetRealWidth(29),
                Y = Application.GetRealHeight(282),
                Width = Application.GetRealWidth(200),
                Height = Application.GetRealHeight(80),
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor2
            };
            roomBackView.AddChidren(roomNameBackground);
            roomNameBackground.SetCornerWithSameRadius(Application.GetRealHeight(40), HDLUtils.RectCornerTopRight | HDLUtils.RectCornerBottomRight);
            var roomName = new Button()
            {
                X = Application.GetRealWidth(5),
                Width = Application.GetRealWidth(190),
                Text = room.Name,
                TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
            };
            roomNameBackground.AddChidren(roomName);
            var roomTemperatureBackground = new FrameLayout
            {
                X = Application.GetRealWidth(29),
                Y = Application.GetRealHeight(374),
                Width = Application.GetRealWidth(340),
                Height = Application.GetRealHeight(80),
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor2
            };
            roomBackView.AddChidren(roomTemperatureBackground);
            roomTemperatureBackground.SetCornerWithSameRadius(Application.GetRealHeight(40), HDLUtils.RectCornerTopRight | HDLUtils.RectCornerBottomRight);
            var temperatureIcon = new Button
            {
                X = Application.GetRealWidth(12),
                Width = Application.GetMinRealAverage(58),
                Height = Application.GetMinRealAverage(58),
                Gravity = Gravity.CenterVertical,
                UnSelectedImagePath = "Room/Temperature.png"
            };
            roomTemperatureBackground.AddChidren(temperatureIcon);
            var temperatureText = new Button
            {
                X = Application.GetRealWidth(69),
                Width = Application.GetRealWidth(86),
                Height = Application.GetRealHeight(58),
                Gravity = Gravity.CenterVertical,
                Text = "26℃"
            };
            roomTemperatureBackground.AddChidren(temperatureText);
            var humidityIcon = new Button
            {
                X = Application.GetRealWidth(179),
                Width = Application.GetMinRealAverage(58),
                Height = Application.GetMinRealAverage(58),
                Gravity = Gravity.CenterVertical,
                UnSelectedImagePath = "Room/Humidity.png"
            };
            roomTemperatureBackground.AddChidren(humidityIcon);
            var humidityText = new Button
            {
                X = Application.GetRealWidth(236),
                Width = Application.GetRealWidth(86),
                Height = Application.GetRealHeight(58),
                Gravity = Gravity.CenterVertical,
                Text = "13%"
            };
            roomTemperatureBackground.AddChidren(humidityText);
            if (string.IsNullOrEmpty(room.TemperatrueDevice) == false)
            {
                HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
                HdlGatewayReceiveLogic.Current.AddAttributeEvent("TemperatrueDevice", ReceiveComandDiv.A设备属性上报, (Action<ZigBee.Device.CommonDevice>)((report) =>
                {
                    string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
                    if (room.TemperatrueDevice != mainKeys)
                    {
                        return;
                    }
                    //移除掉事件
                    HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
                    foreach (var data in report.DeviceStatusReport.AttriBute)
                    {
                        if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
                        {
                            if (data.AttriButeData == 0)
                            {
                                //0℃
                                temperatureText.Text = "0.0℃";
                            }
                            else if (data.AttriButeData > 32767)
                            {
                                //负数(特殊处理)
                                string strValue = (data.AttriButeData - 65536).ToString();
                                //小数点需要一位
                                strValue = strValue.Substring(0, strValue.Length - 1);
                                temperatureText.Text = strValue.Insert(strValue.Length - 1, ".") + "℃";
                            }
                            else
                            {
                                //小数点需要一位
                                string strValue = data.AttriButeData.ToString();
                                strValue = strValue.Substring(0, strValue.Length - 1);
                                temperatureText.Text = strValue.Insert(strValue.Length - 1, ".") + "℃";
                            }
                        }
                    }
                }));
                //发送获取温度的命令
                var dev = Common.LocalDevice.Current.GetDevice(room.TemperatrueDevice);
                if (dev != null)
                {
                    (dev as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity();
                }
            }
            if (string.IsNullOrEmpty(room.HumidityDevice) == false)
            {
                HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
                HdlGatewayReceiveLogic.Current.AddAttributeEvent("HumidityDevice", ReceiveComandDiv.A设备属性上报, (report) =>
                {
                    string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
                    if (room.HumidityDevice != mainKeys)
                    {
                        return;
                    }
                    //移除掉事件
                    HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
                    foreach (var data in report.DeviceStatusReport.AttriBute)
                    {
                        if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
                        {
                            if (data.AttriButeData == 0)
                            {
                                //0
                                humidityText.Text = "0.0%";
                            }
                            else
                            {
                                //小数点需要一位(湿度没有负数)
                                string strValue = data.AttriButeData.ToString();
                                strValue = strValue.Substring(0, strValue.Length - 1);
                                humidityText.Text = strValue.Insert(strValue.Length - 1, ".") + "%";
                            }
                        }
                    }
                });
                //发送获取湿度的命令
                var dev = Common.LocalDevice.Current.GetDevice(room.HumidityDevice);
                if (dev != null)
                {
                    (dev as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity();
                }
            }
            var roomListBtn = new Button()
            {
                X = roomBackView.Width - Application.GetRealWidth(100 + 20),
                Y = Application.GetRealHeight(20),
                Width = Application.GetMinRealAverage(100),
                Height = Application.GetMinRealAverage(100),
                UnSelectedImagePath = "Room/List.png",
            };
            roomBackView.AddChidren(roomListBtn);
            roomListBtn.MouseUpEventHandler += (send, e) =>
            {
                CommonPage.Instance.IsDrawerLockMode = true;
                var editRoom = new Device.Room.EditRoom();
                HomePage.Instance.AddChidren(editRoom);
                HomePage.Instance.PageIndex += 1;
                editRoom.Show(room);
                editRoom.action += () =>
                {
                    action?.Invoke();
                };
            };
        }
    }
}
ZigbeeApp/Shared/Phone/Device/CommonForm/SceneCategoryView.cs
@@ -23,7 +23,7 @@
        /// <summary>
        /// sceneImg
        /// </summary>
        private Button sceneImg;
        private ImageView sceneImg;
        /// <summary>
        /// SceneCategoryView
@@ -60,19 +60,21 @@
            {
                Y = Application.GetRealHeight(46),
                Height = Application.GetRealHeight(446 - 46),
                LineColor = ZigbeeColor.Current.GXCGrayBackgroundColor
                LineColor = ZigbeeColor.Current.GXCGrayBackgroundColor,
                Tag= scene
            };
            AddChidren(sceneRowLayout);
            sceneImg = new Button()
            sceneImg = new ImageView()
            {
                X = Application.GetRealWidth(179),
                Width = Application.GetRealWidth(844),
                Height = Application.GetRealHeight(400),
                UnSelectedImagePath = scene.IconPath,
                ImagePath = scene.IconPathType == 0 ? scene.IconPath : System.IO.Path.Combine(Config.Instance.FullPath, scene.IconPath),
                Radius = (uint)Application.GetRealHeight(17)
            };
            sceneRowLayout.AddChidren(sceneImg);
            //sceneImg.SetViewShadow(true);
            var leftFL = new FrameLayout
            {
@@ -200,12 +202,12 @@
                if (room.IsLove)
                {
                    Shared.Common.Room.CurrentRoom.GetLoveRoom().DeleteScene(scene);
                    RemoveViewByTag((sender as Button).Tag);
                    RemoveFromParent();
                }
                else
                {
                    var tip = new CustomAlert { };
                    AddChidren(tip);
                    Common.CommonPage.Instance.AddChidren(tip);
                    tip.Show(Language.StringByID(R.MyInternationalizationString.ConfirmDelete));
                    tip.ResultEventHandler += async (e1) =>
@@ -224,7 +226,7 @@
                            {
                                room.RemoveScene(scene);
                                //RefreshBodyView();
                                RemoveViewByTag((sender as Button).Tag);
                                RemoveFromParent();
                            }
                            //0 移除失败
                            else if (removeSceneAllData.removeSceneData.Result == 0)
@@ -237,7 +239,7 @@
                            {
                                room.RemoveScene(scene);
                                //RefreshBodyView();
                                RemoveViewByTag((sender as Button).Tag);
                                RemoveFromParent();
                                CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheSceneIsNull);
                                return;
                            }
ZigbeeApp/Shared/Phone/Device/CommonForm/SceneMainView.cs
@@ -16,7 +16,7 @@
        /// <summary>
        /// SceneIcon
        /// </summary>
        public Button SceneIcon;
        public ImageView SceneIcon;
        /// <summary>
        /// statu
        /// </summary>
@@ -58,12 +58,17 @@
            }
        }
        /// <summary>
        /// SceneMainView
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        public SceneMainView(int x, int y)
        {
            X = Application.GetRealWidth(x);
            Y = Application.GetRealHeight(y);
            Width = Application.GetMinRealAverage(487);
            Height = Application.GetMinRealAverage(348);
            Width = Application.GetRealWidth(487);
            Height = Application.GetRealHeight(358);
        }
        /// <summary>
@@ -83,29 +88,32 @@
        /// </summary>
        private void InitFrame()
        {
            CardBG = new Button
            {
                Width = Application.GetMinRealAverage(487),
                Height = Application.GetMinRealAverage(348),
                UnSelectedImagePath = "Item/FunctionCardView.png",
                Gravity = Gravity.CenterHorizontal
            };
            AddChidren(CardBG);
            //CardBG = new Button
            //{
            //    Width = Application.GetMinRealAverage(487),
            //    Height = Application.GetMinRealAverage(348),
            //    UnSelectedImagePath = "Item/FunctionCardView.png",
            //    Gravity = Gravity.CenterHorizontal
            //};
            //AddChidren(CardBG);
            SceneIcon = new Button
            SceneIcon = new ImageView
            {
                X = Application.GetMinRealAverage(14),
                X=Application.GetRealWidth(14),
                Width = Application.GetMinRealAverage(458),
                Height = Application.GetRealHeight(305),
                Gravity = Gravity.CenterHorizontal
                Height = Application.GetMinRealAverage(305),
                Gravity = Gravity.CenterHorizontal,
                Radius= (uint)Application.GetRealHeight(17)
            };
            AddChidren(SceneIcon);
            //SceneIcon.SetViewShadow(true);
            //SceneIcon.SetCornerWithSameRadius(Application.GetRealHeight(100), HDLUtils.RectCornerBottomRight);
            sceneBG = new Button
            {
                Width = Application.GetMinRealAverage(487),
                Height = Application.GetMinRealAverage(348),
                UnSelectedImagePath = "Item/SceneCard.png",
                UnSelectedImagePath = "Scene/Background.png",
                Gravity = Gravity.CenterHorizontal
            };
            AddChidren(sceneBG);
@@ -138,7 +146,7 @@
                Y = Application.GetMinRealAverage(239),
                Width = Application.GetMinRealAverage(279),
                Height = Application.GetMinRealAverage(60),
                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
                SelectedTextColor = ZigbeeColor.Current.GXCTextSelectedColor,
                TextAlignment = TextAlignment.CenterLeft,
            };
@@ -150,7 +158,7 @@
        /// </summary>
        private void InitStatu()
        {
            SetIimeByDelayTime(scene.SceneDelayTime);
            SetTimeByDelayTime(scene.SceneDelayTime);
            SetSceneNameText(scene.Name);
            SetIcon(scene.IconPath);
            SetCollect(Common.Room.CurrentRoom.GetLoveRoom().SceneUIFilePathList.Contains(scene.FileName));
@@ -158,7 +166,6 @@
            TimeButton.MouseUpEventHandler += SetTimeEvents;
            CollectButton.MouseUpEventHandler += CollectionEvent;
            SceneIcon.MouseUpEventHandler += SceneUpHandler;
            sceneBG.MouseUpEventHandler += SceneUpHandler;
            SceneNameButton.MouseUpEventHandler += SceneUpHandler;
        }
@@ -189,7 +196,7 @@
        /// SetIimeByDelayTime
        /// </summary>
        /// <param name="time"></param>
        public void SetIimeByDelayTime(int time)
        public void SetTimeByDelayTime(int time)
        {
            if (time > 0)
            {
@@ -216,7 +223,14 @@
        /// <param name="iconPath"></param>
        public void SetIcon(string iconPath)
        {
            SceneIcon.UnSelectedImagePath = iconPath;
            if (scene.IconPathType == 0)
            {
                SceneIcon.ImagePath = iconPath;
            }
            else
            {
                SceneIcon.ImagePath = System.IO.Path.Combine(Config.Instance.FullPath, iconPath);
            }
        }
        /// <summary>
@@ -322,7 +336,7 @@
            timeSelect.TimeAction = (t) =>
            {
                scene.SceneDelayTime = t;
                SetIimeByDelayTime(t);
                SetTimeByDelayTime(t);
            };
        }
ZigbeeApp/Shared/Phone/Device/CommonForm/SelectDeviceWithSeekBarRow.cs
@@ -162,6 +162,14 @@
        public void SetStatu(bool statu)
        {
            SelectBtn.Visible = statu;
            if(statu)
            {
                SetProgress(100);
            }
            else
            {
                SetProgress(0);
            }
        }
        /// <summary>
ZigbeeApp/Shared/Phone/Device/Curtain/RollerShadeControl.cs
@@ -1,6 +1,7 @@
using System;
using Shared.Common;
using Shared.Phone.Device.CommonForm;
using Shared.Phone.Device.DeviceLogic;
using Shared.Phone.UserView;
using ZigBee.Device;
@@ -137,8 +138,6 @@
                                {
                                    curtainSeekBar.Progress = rollerShade.WcdCurrentPositionLiftPercentage;
                                }
                                //SeekBar.Progress = rollerShade.WcdCurrentPositionLiftPercentage;
                                //seekBarTitle.Text = $"{SeekBar.Progress} %";
                                rollerShade.LastDateTime = DateTime.Now;
                            }
                            else if (common.DeviceStatusReport.AttriBute[0].AttributeId == 0)
@@ -274,8 +273,7 @@
            {
                UserHomeView.ReadStatus(rollerShade, () =>
                {
                    rollerShade.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                    rollerShade.ReadWcdCurrentPositionLiftPercentage();
                    ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(device.CommonDevice);
                });
            }
            else
@@ -283,8 +281,7 @@
                //防止短时间内多次读取
                if ((DateTime.Now - rollerShade.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                {
                    rollerShade.ReadWcdCurrentPositionLiftPercentage();
                    rollerShade.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                    ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(device.CommonDevice);
                }
            }
@@ -505,28 +502,12 @@
            //upBtn.MouseUpEventHandler += Up;
            //stopBtn.MouseUpEventHandler += Stop;
            //downBtn.MouseUpEventHandler += Down;
            //SeekBar.ProgressChanged += SeekBar_ProgressChange;
            //collectionBtn.MouseUpEventHandler += Collection;
            //moreBtn.MouseUpEventHandler += More;
            //roomBtn.MouseUpEventHandler += BackToRoomHandler;
            //roomName.MouseUpEventHandler += BackToRoomHandler;
            collectionBtn.MouseUpEventHandler += Collection;
        }
        #endregion
        #region ◆ 控制___________________________
        /// <summary>
        /// 滑条移动发送命令
        /// </summary>
        /// <param name="sender">Sender.</param>
        /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
        private void SeekBar_ProgressChange(object sender, int mouseEventArgs)
        {
            //seekBarTitle.Text = $"{SeekBar.Progress}%";
            //(device.CommonDevice as ZigBee.Device.Rollershade).WcdGoToTiltValue(SeekBar.Progress);
        }
        #region ◆ 控制__________________________
        /// <summary>
        /// 上、开
@@ -726,11 +707,12 @@
                curtainSeekBar.Width = Application.GetRealWidth(570);
                curtainSeekBar.Height = Application.GetRealHeight(513);
                curtainSeekBar.Gravity = Gravity.CenterHorizontal;
                curtainSeekBar.Progress = (device.CommonDevice as Rollershade).WcdCurrentPositionLiftPercentage;
                layout.AddChidren(curtainSeekBar);
                curtainSeekBar.OnStopTrackingTouchEvent += (sender, e) =>
                {
                    (device.CommonDevice as Rollershade).WcdGoToTiltValue(curtainRollSeekBar.Progress);
                    (device.CommonDevice as Rollershade).WcdGoToTiltValue(curtainSeekBar.Progress);
                };
            }
        }
@@ -748,15 +730,14 @@
        /// <param name="e">E.</param>
        private void Collection(object sender, MouseEventArgs e)
        {
            //collection
            if (collectionBtn.IsSelected)
            {
                Shared.Common.Room.Lists[0].DeleteDevice(device.FileName);
                Common.Room.CurrentRoom.GetLoveRoom().DeleteDevice(device.FileName);
                collectionBtn.IsSelected = false;
            }
            else
            {
                Shared.Common.Room.Lists[0].AddDevice(device.FileName);
                Common.Room.CurrentRoom.GetLoveRoom().AddDevice(device.FileName);
                collectionBtn.IsSelected = true;
            }
        }
ZigbeeApp/Shared/Phone/Device/DeviceLogic/ReadDeviceAttributeLogic.cs
New file
@@ -0,0 +1,225 @@
using System;
using ZigBee.Device;
namespace Shared.Phone.Device.DeviceLogic
{
    public class ReadDeviceAttributeLogic
    {
        #region ◆ 变量____________________________
        /// <summary>
        /// ReadDeviceAttributeLogic
        /// </summary>
        private static ReadDeviceAttributeLogic _instance;
        /// <summary>
        /// ReadDeviceAttributeLogic
        /// </summary>
        public static ReadDeviceAttributeLogic Instance
        {
            get
            {
                if(_instance == null)
                {
                    _instance = new ReadDeviceAttributeLogic();
                }
                return _instance;
            }
        }
        #endregion
        #region ◆ 空调____________________________
        /// <summary>
        /// SendACStatuComand
        /// </summary>
        /// <param name="device">设备</param>
        public void SendACStatuComand(CommonDevice device)
        {
            SendThermostatStatuComand(device);
            SendFanStatuComand(device);
        }
        /// <summary>
        /// SendThermostatStatuComand
        /// </summary>
        /// <param name="device">设备</param>
        private void SendThermostatStatuComand(CommonDevice device)
        {
            var jObject = new Newtonsoft.Json.Linq.JObject
            {
                { "DeviceAddr",device.DeviceAddr },
                { "Epoint", device.DeviceEpoint },
                { "Cluster_ID", (int)Cluster_ID.Thermostat },
                { "Command", 108 }
            };
            var attriBute = new Newtonsoft.Json.Linq.JArray
            {
               new Newtonsoft.Json.Linq.JObject
               {
                 { "AttriButeId", (int)AttriButeId.LocalTemperature}
               },
               new Newtonsoft.Json.Linq.JObject
               {
                 { "AttriButeId", (int)AttriButeId.CoolingSetpoint}
               },
               new Newtonsoft.Json.Linq.JObject
               {
                 { "AttriButeId", (int)AttriButeId.HeatingSetpoint}
               },
               new Newtonsoft.Json.Linq.JObject
               {
                 { "AttriButeId", (int)AttriButeId.AutoSetpoint}
               },
               new Newtonsoft.Json.Linq.JObject
               {
                 { "AttriButeId", (int)AttriButeId.SystemMode}
               },
               new Newtonsoft.Json.Linq.JObject
               {
                 { "AttriButeId", (int)AttriButeId.AcModeSupport}
               },
               new Newtonsoft.Json.Linq.JObject
               {
                 { "AttriButeId", (int)AttriButeId.CleanStatu}
               }
            };
            var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
            jObject.Add("Data", data);
            device.Gateway?.Send(("GetDeviceStatus"), jObject.ToString());
        }
        /// <summary>
        /// SendFanStatuComand
        /// </summary>
        /// <param name="device">设备</param>
        private void SendFanStatuComand(CommonDevice device)
        {
            var jObject = new Newtonsoft.Json.Linq.JObject
            {
                { "DeviceAddr",device.DeviceAddr },
                { "Epoint", device.DeviceEpoint },
                { "Cluster_ID", (int)Cluster_ID.FanControl },
                { "Command", 108 }
            };
            var attriBute = new Newtonsoft.Json.Linq.JArray
            {
               new Newtonsoft.Json.Linq.JObject
               {
                 { "AttriButeId", (int)AttriButeId.FanMode}
               },
               new Newtonsoft.Json.Linq.JObject
               {
                 { "AttriButeId", (int)AttriButeId.FanSwing}
               }
            };
            var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
            jObject.Add("Data", data);
            device.Gateway?.Send(("GetDeviceStatus"), jObject.ToString());
        }
        #endregion
        #region ◆ 窗帘____________________________
        /// <summary>
        /// 发送获取窗帘状态命令
        /// </summary>
        /// <param name="device">窗帘</param>
        public void SendCurtainStatuComand(CommonDevice device)
        {
            var jObject = new Newtonsoft.Json.Linq.JObject
            {
                { "DeviceAddr",device.DeviceAddr },
                { "Epoint", device.DeviceEpoint },
                { "Cluster_ID", (int)Cluster_ID.WindowCovering },
                { "Command", 108 }
            };
            var attriBute = new Newtonsoft.Json.Linq.JArray
            {
               new Newtonsoft.Json.Linq.JObject
               {
                 { "AttriButeId", (int)AttriButeId.CurrentPositionLiftPercentage}
               }
            };
            var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
            jObject.Add("Data", data);
            device.Gateway?.Send(("GetDeviceStatus"), jObject.ToString());
        }
        #endregion
        #region ◆ 灯光____________________________
        /// <summary>
        /// Light
        /// </summary>
        /// <param name="device"></param>
        public void SendLightStatuComand(CommonDevice device)
        {
            SendSwitchStatuComand(device);
        }
        /// <summary>
        /// Light
        /// </summary>
        /// <param name="device"></param>
        public void SendDimmableLightStatuComand(CommonDevice device)
        {
            SendSwitchStatuComand(device);
            SendLevelStatuComand(device);
        }
        /// <summary>
        /// 发送获取灯光状态命令
        /// </summary>
        /// <param name="device">窗帘</param>
        private void SendSwitchStatuComand(CommonDevice device)
        {
            var jObject = new Newtonsoft.Json.Linq.JObject
            {
                { "DeviceAddr",device.DeviceAddr },
                { "Epoint", device.DeviceEpoint },
                { "Cluster_ID", (int)Cluster_ID.Switch },
                { "Command", 108 }
            };
            var attriBute = new Newtonsoft.Json.Linq.JArray
            {
               new Newtonsoft.Json.Linq.JObject
               {
                 { "AttriButeId", (int)AttriButeId.Switch}
               }
            };
            var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
            jObject.Add("Data", data);
            device.Gateway?.Send(("GetDeviceStatus"), jObject.ToString());
        }
        /// <summary>
        /// 发送获取灯光状态命令
        /// </summary>
        /// <param name="device">窗帘</param>
        private void SendLevelStatuComand(CommonDevice device)
        {
            var jObject = new Newtonsoft.Json.Linq.JObject
            {
                { "DeviceAddr",device.DeviceAddr },
                { "Epoint", device.DeviceEpoint },
                { "Cluster_ID", (int)Cluster_ID.LevelControl },
                { "Command", 108 }
            };
            var attriBute = new Newtonsoft.Json.Linq.JArray
            {
               new Newtonsoft.Json.Linq.JObject
               {
                 { "AttriButeId", (int)AttriButeId.LevelControl}
               }
            };
            var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
            jObject.Add("Data", data);
            device.Gateway?.Send(("GetDeviceStatus"), jObject.ToString());
        }
        #endregion
    }
}
ZigbeeApp/Shared/Phone/Device/Light/AirSwitchControl.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using Shared.Common;
using Shared.Phone.Device.CommonForm;
using Shared.Phone.Device.DeviceLogic;
using Shared.Phone.UserView;
using ZigBee.Device;
namespace Shared.Phone.Device.Light
@@ -206,8 +207,7 @@
            {
                UserHomeView.ReadStatus(light, () =>
                {
                    light.ReadOnOffStatus();
                    light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                    ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                });
            }
            else
@@ -215,8 +215,7 @@
                //防止短时间内多次读取状态
                if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - light.LastDateTime).TotalSeconds)
                {
                    light.ReadOnOffStatus();
                    light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                    ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                }
            }
ZigbeeApp/Shared/Phone/Device/Light/DimmableLightControl.cs
@@ -1,6 +1,7 @@
using System;
using Shared.Common;
using Shared.Phone.Device.CommonForm;
using Shared.Phone.Device.DeviceLogic;
using ZigBee.Device;
namespace Shared.Phone.Device.Light
@@ -246,9 +247,7 @@
                //发送读取状态命令
                UserView.UserHomeView.ReadStatus(dimmableLight, () =>
                {
                    dimmableLight.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                    dimmableLight.ReadOnOffStatus();
                    dimmableLight.ReadLevel();
                    ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(device.CommonDevice);
                });
            }
            else
@@ -256,9 +255,7 @@
                //防止短时间内多次读取设备状态
                if ((DateTime.Now - dimmableLight.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                {
                    dimmableLight.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                    dimmableLight.ReadOnOffStatus();
                    dimmableLight.ReadLevel();
                    ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(device.CommonDevice);
                }
            }
        }
ZigbeeApp/Shared/Phone/Device/Light/LightControl.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using Shared.Common;
using Shared.Phone.Device.CommonForm;
using Shared.Phone.Device.DeviceLogic;
using Shared.Phone.UserView;
using ZigBee.Device;
namespace Shared.Phone.Device.Light
@@ -228,8 +229,7 @@
            {
                UserHomeView.ReadStatus(light, () =>
                {
                    light.ReadOnOffStatus();
                    light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                    ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                });
            }
            else
@@ -237,8 +237,7 @@
                //防止短时间内多次读取状态
                if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - light.LastDateTime).TotalSeconds)
                {
                    light.ReadOnOffStatus();
                    light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                    ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                }
            }
ZigbeeApp/Shared/Phone/Device/Light/OnOffControl.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using Shared.Common;
using Shared.Phone.Device.CommonForm;
using Shared.Phone.Device.DeviceLogic;
using Shared.Phone.UserView;
using ZigBee.Device;
namespace Shared.Phone.Device.Light
@@ -236,8 +237,7 @@
            {
                UserHomeView.ReadStatus(light, () =>
                {
                    light.ReadOnOffStatus();
                    light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                    ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                });
            }
            else
@@ -245,8 +245,7 @@
                //防止短时间内多次读取状态
                if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - light.LastDateTime).TotalSeconds)
                {
                    light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                    light.ReadOnOffStatus();
                    ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                }
            }
ZigbeeApp/Shared/Phone/Device/Light/PlugControl.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using Shared.Common;
using Shared.Phone.Device.CommonForm;
using Shared.Phone.Device.DeviceLogic;
using Shared.Phone.UserView;
using ZigBee.Device;
namespace Shared.Phone.Device.Light
@@ -229,8 +230,7 @@
            {
                UserHomeView.ReadStatus(light, () =>
                {
                    light.ReadOnOffStatus();
                    light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                    ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                });
            }
            else
@@ -238,8 +238,7 @@
                //防止短时间内多次读取状态
                if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - light.LastDateTime).TotalSeconds)
                {
                    light.ReadOnOffStatus();
                    light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                    ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                }
            }
ZigbeeApp/Shared/Phone/Device/Logic/AddLogicPage.cs
@@ -393,7 +393,7 @@
                //Radius = (uint)Application.GetRealHeight(60),
            };
            flMain.AddChidren(securityfra);
            securityfra.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
            securityfra.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
            #region  -------取消   完成
            var timetype = new RowLayout
            {
@@ -730,7 +730,7 @@
                //Radius = (uint)Application.GetRealHeight(60),
            };
            flMain.AddChidren(Locationfra);
            Locationfra.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
            Locationfra.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
            #region  -------取消   完成
            var typeRow = new RowLayout
@@ -1011,7 +1011,7 @@
               // Radius = (uint)Application.GetRealHeight(60),
            };
            flMain.AddChidren(timetypeframelayout);
            timetypeframelayout.SetCornerWithSameRadius(20,HDLUtils.RectCornerTopLeft|HDLUtils.RectCornerTopRight);
            timetypeframelayout.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft|HDLUtils.RectCornerTopRight);
            #region  -------取消   完成
            var timetype = new RowLayout
ZigbeeApp/Shared/Phone/Device/Logic/CustomText.cs
@@ -70,7 +70,7 @@
            };
            this.AddChidren(middle);
            var textBox = new EditText
            var textBox = new EditTextView//EditText
            {
                Width = Application.GetRealWidth(1080),
                Height = Application.GetRealHeight(600),
@@ -81,6 +81,7 @@
                TextSize = 14,
            };
            middle.AddChidren(textBox);
            textBox.HideSoftInput();
             var btnsave = new Button
            {
ZigbeeApp/Shared/Phone/Device/Logic/DelayTime.cs
@@ -129,7 +129,7 @@
                BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor,
            };
            middle.AddChidren(PickerViewfra);
            PickerViewfra.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
            PickerViewfra.SetCornerWithSameRadius(Application.GetRealHeight(50), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
            
            var mUIPickerView = new UIPickerView
ZigbeeApp/Shared/Phone/Device/Logic/DeviceStateCondition.cs
@@ -134,7 +134,7 @@
            };
            this.AddChidren(devicetypehorizontalScrol);
            devicetypehorizontalScrol.SetCornerWithSameRadius(20,HDLUtils.RectCornerBottomLeft);
            devicetypehorizontalScrol.SetCornerWithSameRadius(Application.GetRealHeight(50), HDLUtils.RectCornerBottomLeft);
            middle = new VerticalScrolViewLayout();
            middle.Y = devicetypehorizontalScrol.Bottom + Application.GetRealHeight(40);
@@ -143,7 +143,7 @@
            middle.X = Application.GetRealWidth(58);
            //middle.Radius = (uint)Application.GetRealHeight(50);
            this.AddChidren(middle);
            middle.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft);
            middle.SetCornerWithSameRadius(Application.GetRealHeight(50), HDLUtils.RectCornerTopLeft);
            ///目前支持的设备
            var deviceTypeList = new List<DeviceType> {
                DeviceType.IASZone,
@@ -733,7 +733,7 @@
               // Radius = (uint)Application.GetRealHeight(60),
            };
            flMain.AddChidren(devicefra);
            devicefra.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft|HDLUtils.RectCornerTopRight);
            devicefra.SetCornerWithSameRadius(Application.GetRealHeight(50), HDLUtils.RectCornerTopLeft|HDLUtils.RectCornerTopRight);
            #region  -------取消   完成
            var timetype = new RowLayout
ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/AddCondition.cs
@@ -12,10 +12,10 @@
            Tag = "LockLogic";
        }
        Button selectedIcon = new Button();
        VerticalScrolViewLayout middle;
        VerticalRefreshLayout middle;
        public int conditionsIndex = -1;
        public async void Show()
        public void Show()
        {
            #region  最上面的布局代码
            var topRowLayout = new RowLayout
@@ -69,14 +69,37 @@
            #endregion
            middle = new VerticalScrolViewLayout
            middle = new VerticalRefreshLayout
            {
                Y = topRowLayout.Bottom,
                Height = Application.GetRealHeight(1920 - 184),
                BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
            };
            this.AddChidren(middle);
            middle.BeginHeaderRefreshingAction += () =>
            {
                //重新刷新logic列表
                string macport = Send.CurrentDoorLock.DeviceAddr + "_" + Send.CurrentDoorLock.DeviceEpoint.ToString();
                for (int i = 0; i < Send.LockList.Count; i++)
                {
                    if (Send.LockList[i].DoorLockMacPort == macport)
                    {
                        ///从列表移除当前门锁全部的旧数据;
                        Send.LockList.Remove(Send.LockList[i]);
                    }
                }
                Read();
                //关闭刷新View;
                middle.EndHeaderRefreshing();
            };
            Read();
        }
        /// <summary>
        /// 读取当前门锁的云端数据;
        /// </summary>
        public async void Read()
        {
            bool d = false;
            string macport = Send.CurrentDoorLock.DeviceAddr + "_" + Send.CurrentDoorLock.DeviceEpoint.ToString();
            for (int i = 0; i < Send.LockList.Count; i++)
@@ -96,12 +119,11 @@
            }
            UserAllView(macport);
            CommonPage.Loading.Hide();
        }
        /// <summary>
        /// 显示所有用户
        /// </summary>
        void UserAllView(string macport)
        public void UserAllView(string macport)
        {
            for (int i = 0; i < Send.LockList.Count; i++)
@@ -167,10 +189,10 @@
        /// 选择某个用户
        /// </summary>
        /// <param name="membershipIfon">触发源列表</param>
        /// <param name="userName">用户名字</param>
        void SelectedUserID(Send.MembershipIfon membershipIfon) {
        public void SelectedUserID(Send.MembershipIfon membershipIfon)
        {
           var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor };
            var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor };
            this.AddChidren(flMain);
            flMain.MouseUpEventHandler += (sender1, e1) =>
@@ -178,7 +200,7 @@
                flMain.RemoveFromParent();
            };
            var lockcolorfra1 = new FrameLayout
            {
@@ -190,7 +212,7 @@
                Radius = (uint)Application.GetRealHeight(60),
            };
            flMain.AddChidren(lockcolorfra1);
            lockcolorfra1.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
            lockcolorfra1.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
            #region  -------取消   完成
            var lockRow = new RowLayout
@@ -279,7 +301,7 @@
                    TextSize = 14,
                };
                doorlockRow.AddChidren(doorlockBtn);
                var doorlockSelected = new Button
                {
                    X = Application.GetRealWidth(860),
@@ -320,11 +342,11 @@
                        selectedIcon = doorlockSelected;
                        doorlockSelected.Visible = true;
                    }
                }
            }
            Btncomplete.MouseUpEventHandler += (sender, e) =>
            {
                var lockConditionsInfo = new Dictionary<string, string>();
@@ -339,7 +361,7 @@
                lockConditionsInfo.Add("Range", "0");
                var accounts = new Dictionary<string, string>();
                accounts.Add("Type", "1");
                accounts.Add("Account", membershipIfon.UserName+ modeName);
                accounts.Add("Account", membershipIfon.UserName + modeName);
                accounts.Add("UserId", attriButeData2);
                if (SelectedLockStatus != "")
                {
@@ -422,6 +444,6 @@
                lockLogicCommunalPage.Show(() => { });
            };
        }
    }
}
ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/LockAddDevice.cs
@@ -134,7 +134,7 @@
            };
            this.AddChidren(devicetypehorizontalScrol);
            devicetypehorizontalScrol.SetCornerWithSameRadius(20,HDLUtils.RectCornerBottomLeft);
            devicetypehorizontalScrol.SetCornerWithSameRadius(Application.GetRealHeight(58),HDLUtils.RectCornerBottomLeft);
            middle = new VerticalScrolViewLayout();
            middle.Y = devicetypehorizontalScrol.Bottom + Application.GetRealHeight(40);
@@ -143,7 +143,7 @@
            middle.X = Application.GetRealWidth(58);
            //middle.Radius = (uint)Application.GetRealHeight(50);
            this.AddChidren(middle);
            middle.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft);
            middle.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft);
            ///目前支持的设备
            List<DeviceType> deviceTypeList = new List<DeviceType> {
@@ -695,7 +695,7 @@
                Radius = (uint)Application.GetRealHeight(60),
            };
            flMain.AddChidren(devicefra);
            devicefra.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
            devicefra.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
            #region  -------取消   完成
            var timetype = new RowLayout
            {
@@ -1745,21 +1745,10 @@
                    {
                        #region  ----初始化设备功能数据----
                        Dictionary<string, string> switchdictionary = new Dictionary<string, string>();
                        Dictionary<string, string> temperaturedictionary = new Dictionary<string, string>();
                        Dictionary<string, string> modedictionary = new Dictionary<string, string>();
                        Dictionary<string, string> speeddictionary = new Dictionary<string, string>();
                        taskListInfo.Add(switchdictionary);
                        taskListInfo.Add(temperaturedictionary);
                        taskListInfo.Add(modedictionary);
                        taskListInfo.Add(speeddictionary);
                        dictionary(switchdictionary, "TaskType", "1");
                        dictionary(switchdictionary, "Data2", "0");
                        dictionary(temperaturedictionary, "TaskType", "5");
                        dictionary(modedictionary, "TaskType", "5");
                        dictionary(modedictionary, "Data1", "3");
                        dictionary(speeddictionary, "TaskType", "5");
                        dictionary(speeddictionary, "Data1", "6");
                        #endregion
@@ -1916,25 +1905,24 @@
                        {
                            foreach (var value in TaskList)
                            {
                                if (value["TaskType"] == "1")
                                if (TaskList.Count == 1)
                                {
                                    dictionary(switchdictionary, "Data1", value["Data1"]);
                                    if (value["Data1"] == "1")
                                    {
                                        openBtnSelected.Visible = true;
                                        closeBtnSelected.Visible = false;
                                        pausePickerViewfra.Height = Application.GetRealHeight(0);
                                    }
                                    else if (value["Data1"] == "0")
                                    {
                                        openBtnSelected.Visible = false;
                                        closeBtnSelected.Visible = true;
                                        pausePickerViewfra.Height = Application.GetRealHeight(600);
                                        break;
                                    }
                                    //数组只有一个元素说明当前空调状态为关;
                                    openBtnSelected.Visible = false;
                                    closeBtnSelected.Visible = true;
                                    pausePickerViewfra.Height = Application.GetRealHeight(600);
                                    //如果空调状态是关;直接跳出for循坏;
                                    break;
                                }
                                else if (value["TaskType"] == "5")
                                else
                                {
                                    openBtnSelected.Visible = true;
                                    closeBtnSelected.Visible = false;
                                    pausePickerViewfra.Height = Application.GetRealHeight(0);
                                }
                                if (value["TaskType"] == "5")
                                {
                                    if (value["Data1"] == "3")
                                    {//3---设置工作模式(1:自动;3:制冷;4:制热;7:送风;8:除湿)
@@ -2022,11 +2010,21 @@
                        ///确认事件
                        EventHandler<MouseEventArgs> openclick = (sender, e) =>
                        {
                            //清除之前数据;
                            taskListInfo.Clear();
                            //加载新数据;
                            dictionary(temperaturedictionary, "TaskType", "5");
                            dictionary(modedictionary, "TaskType", "5");
                            dictionary(modedictionary, "Data1", "3");
                            dictionary(speeddictionary, "TaskType", "5");
                            dictionary(speeddictionary, "Data1", "6");
                            taskListInfo.Add(temperaturedictionary);
                            taskListInfo.Add(modedictionary);
                            taskListInfo.Add(speeddictionary);
                            pausePickerViewfra.Height = Application.GetRealHeight(0);
                            SelectedDeviceStatusaction = "yes";
                            openBtnSelected.Visible = true;
                            closeBtnSelected.Visible = false;
                            dictionary(switchdictionary, "Data1", "1");
                            var temperature = mList1[indextemperature].Split(' ')[0];
                            var modestring = mList2[indexmode].Split(' ')[0];
                            var speedstring = mList3[indexspeed].Split(' ')[0];
@@ -2045,12 +2043,18 @@
                        ///取消事件
                        EventHandler<MouseEventArgs> closeclick = (sender, e) =>
                        {
                            pausePickerViewfra.Height = Application.GetRealHeight(600);
                            //清除之前数据;
                            taskListInfo.Clear();
                            dictionary(modedictionary, "TaskType", "5");
                            dictionary(modedictionary, "Data1", "3");
                            dictionary(modedictionary, "Data2", "0");
                            //加载新数据;
                            taskListInfo.Add(modedictionary);
                            pausePickerViewfra.Height = Application.GetRealHeight(600);
                            SelectedDeviceStatusaction = "yes";
                            openBtnSelected.Visible = false;
                            closeBtnSelected.Visible = true;
                            dictionary(switchdictionary, "Data1", "0");
                        };
                        closerowlayout.MouseUpEventHandler += closeclick;
                        btnclose.MouseUpEventHandler += closeclick;
ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/LockLogicCommunalPage.cs
@@ -760,23 +760,19 @@
                                            bool ifclose = false;
                                            foreach (var status in TaskList)
                                            {
                                                if (status["TaskType"].ToString() == "1")
                                                if (TaskList.Count == 1)
                                                {
                                                    if (status["Data1"].ToString() == "0")
                                                    {
                                                        // devicestatus.Text = Language.StringByID(MyInternationalizationString.close);
                                                        ifclose = false;
                                                        break;
                                                    }
                                                    else if (status["Data1"].ToString() == "1")
                                                    {
                                                        //devicestatus.Text = Language.StringByID(MyInternationalizationString.open);
                                                        ifclose = true;
                                                    }
                                                    //数组只有一个元素说明当前空调状态为关;
                                                    ifclose = false;
                                                    //如果空调状态是关;直接跳出for循坏;
                                                    break;
                                                }
                                                else if (status["TaskType"].ToString() == "5")
                                                else
                                                {
                                                    ifclose = true;
                                                }
                                                if (status["TaskType"].ToString() == "5")
                                                {
                                                    if (status["Data1"] == "3")
                                                    {//3---设置工作模式(1:自动;3:制冷;4:制热;7:送风;8:除湿)
ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/LockLogicList.cs
@@ -12,8 +12,8 @@
        {
            Tag = "LockLogicList";
        }
        VerticalScrolViewLayout middle;
        public async void Show()
        VerticalRefreshLayout middle;
        public void Show()
        {
            #region  最上面的布局代码
@@ -89,14 +89,29 @@
            };
            #endregion
            middle = new VerticalScrolViewLayout
            middle = new VerticalRefreshLayout
            {
                Y = topRowLayout.Bottom,
                Height = Application.GetRealHeight(1920 - 184),
                BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
            };
            this.AddChidren(middle);
            middle.BeginHeaderRefreshingAction += () =>
            {
                //重新刷新logic列表
                Common.Logic.LockLogicList.Clear();
                Read();
                //关闭刷新View;
                middle.EndHeaderRefreshing();
            };
            Read();
        }
        /// <summary>
        /// 读取自动化数据
        /// </summary>
        public async void Read()
        {
            CommonPage.Loading.Start();
            if (Common.Logic.LockLogicList.Count == 0)
            {
@@ -129,12 +144,13 @@
                    }
                }
            }
            //自动化
            Automationview();
            CommonPage.Loading.Hide();
        }
        void Automationview()
        /// <summary>
        /// 加载自动化列表的界面
        /// </summary>
        public void Automationview()
        {
            middle.RemoveAll();
            for (int i = 0; i < Common.Logic.LockLogicList.Count; i++)
ZigbeeApp/Shared/Phone/Device/Logic/LogicCommunalPage.cs
@@ -1350,28 +1350,23 @@
                                            {
                                                continue;
                                            }
                                            string modetext = "", temperaturetext="", speedtext = "";
                                            string modetext = "", temperaturetext = "", speedtext = "";
                                            bool ifclose = false;
                                            foreach (var status in TaskList)
                                            {
                                                if (status["TaskType"].ToString() == "1")
                                                if (TaskList.Count == 1)
                                                {
                                                    if (status["Data1"].ToString() == "0")
                                                    {
                                                       // devicestatus.Text = Language.StringByID(MyInternationalizationString.close);
                                                        ifclose = false;
                                                        //如果空调状态是关;直接跳出for循坏;
                                                        break;
                                                    }
                                                    else if (status["Data1"].ToString() == "1")
                                                    {
                                                        //devicestatus.Text = Language.StringByID(MyInternationalizationString.open);
                                                        ifclose = true;
                                                    }
                                                    //数组只有一个元素说明当前空调状态为关;
                                                    ifclose = false;
                                                    //如果空调状态是关;直接跳出for循坏;
                                                    break;
                                                }
                                                else if (status["TaskType"].ToString() == "5")
                                                else
                                                {
                                                    ifclose = true;
                                                }
                                                if (status["TaskType"].ToString() == "5")
                                                {
                                                    if (status["Data1"] == "3")
                                                    {//3---设置工作模式(1:自动;3:制冷;4:制热;7:送风;8:除湿)
@@ -2258,7 +2253,7 @@
                Radius = (uint)Application.GetRealHeight(60),
            };
            flMain.AddChidren(framelayout);
            framelayout.SetCornerWithSameRadius(20,HDLUtils.RectCornerTopLeft|HDLUtils.RectCornerTopRight);
            framelayout.SetCornerWithSameRadius(Application.GetRealHeight(58),HDLUtils.RectCornerTopLeft|HDLUtils.RectCornerTopRight);
            #region  -------取消   完成
            var timetype = new RowLayout
ZigbeeApp/Shared/Phone/Device/Logic/LogicDevicePage.cs
@@ -133,7 +133,7 @@
            };
            this.AddChidren(devicetypehorizontalScrol);
            devicetypehorizontalScrol.SetCornerWithSameRadius(20, HDLUtils.RectCornerBottomLeft);
            devicetypehorizontalScrol.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerBottomLeft);
            middle = new VerticalScrolViewLayout();
            middle.Y = devicetypehorizontalScrol.Bottom + Application.GetRealHeight(40);
@@ -142,7 +142,7 @@
            middle.X = Application.GetRealWidth(58);
            //middle.Radius = (uint)Application.GetRealHeight(50);
            this.AddChidren(middle);
            middle.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft);
            middle.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft);
            ///目前支持的设备
            List<DeviceType> deviceTypeList = new List<DeviceType> {
@@ -691,7 +691,7 @@
                //Radius = (uint)Application.GetRealHeight(60),
            };
            flMain.AddChidren(devicefra);
            devicefra.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
            devicefra.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
            #region  -------取消   完成
            var timetype = new RowLayout
@@ -1742,22 +1742,9 @@
                    {
                        #region  ----初始化设备功能数据----
                        Dictionary<string, string> switchdictionary = new Dictionary<string, string>();
                        Dictionary<string, string> temperaturedictionary = new Dictionary<string, string>();
                        Dictionary<string, string> modedictionary = new Dictionary<string, string>();
                        Dictionary<string, string> speeddictionary = new Dictionary<string, string>();
                        taskListInfo.Add(switchdictionary);
                        taskListInfo.Add(temperaturedictionary);
                        taskListInfo.Add(modedictionary);
                        taskListInfo.Add(speeddictionary);
                        dictionary(switchdictionary, "TaskType", "1");
                        dictionary(switchdictionary, "Data2", "0");
                        dictionary(temperaturedictionary, "TaskType", "5");
                        dictionary(modedictionary, "TaskType", "5");
                        dictionary(modedictionary, "Data1", "3");
                        dictionary(speeddictionary, "TaskType", "5");
                        dictionary(speeddictionary, "Data1", "6");
                       var temperaturedictionary = new Dictionary<string, string>();
                       var modedictionary = new Dictionary<string, string>();
                        var speeddictionary = new Dictionary<string, string>();
                        #endregion
                        #region  空调View
@@ -1906,33 +1893,32 @@
                            }
                        };
                        #endregion
                        #endregion
                        //默认26,自动,中风
                        int indextemperature = 10, indexmode = 2, indexspeed = 1;
                        if (edit && TaskList != null)
                        {
                            foreach (var value in TaskList)
                            {
                                if (value["TaskType"] == "1")
                                if (TaskList.Count == 1)
                                {
                                    dictionary(switchdictionary, "Data1", value["Data1"]);
                                    if (value["Data1"] == "1")
                                    {
                                        openBtnSelected.Visible = true;
                                        closeBtnSelected.Visible = false;
                                        pausePickerViewfra.Height = Application.GetRealHeight(0);
                                    }
                                    else if (value["Data1"] == "0")
                                    {
                                        openBtnSelected.Visible = false;
                                        closeBtnSelected.Visible = true;
                                        pausePickerViewfra.Height = Application.GetRealHeight(600);
                                        //如果空调状态是关;直接跳出for循坏;
                                        break;
                                    }
                                    //数组只有一个元素说明当前空调状态为关;
                                    openBtnSelected.Visible = false;
                                    closeBtnSelected.Visible = true;
                                    pausePickerViewfra.Height = Application.GetRealHeight(600);
                                    //如果空调状态是关;直接跳出for循坏;
                                    break;
                                }
                                else if (value["TaskType"] == "5")
                                else
                                {
                                    openBtnSelected.Visible = true;
                                    closeBtnSelected.Visible = false;
                                    pausePickerViewfra.Height = Application.GetRealHeight(0);
                                }
                                if (value["TaskType"] == "5")
                                {
                                    if (value["Data1"] == "3")
                                    {//3---设置工作模式(1:自动;3:制冷;4:制热;7:送风;8:除湿)
@@ -2020,11 +2006,21 @@
                        ///确认事件
                        EventHandler<MouseEventArgs> openclick = (sender, e) =>
                        {
                            //清除之前数据;
                            taskListInfo.Clear();
                            //加载新数据;
                            dictionary(temperaturedictionary, "TaskType", "5");
                            dictionary(modedictionary, "TaskType", "5");
                            dictionary(modedictionary, "Data1", "3");
                            dictionary(speeddictionary, "TaskType", "5");
                            dictionary(speeddictionary, "Data1", "6");
                            taskListInfo.Add(temperaturedictionary);
                            taskListInfo.Add(modedictionary);
                            taskListInfo.Add(speeddictionary);
                            pausePickerViewfra.Height = Application.GetRealHeight(0);
                            SelectedDeviceStatusaction = "yes";
                            openBtnSelected.Visible = true;
                            closeBtnSelected.Visible = false;
                            dictionary(switchdictionary, "Data1", "1");
                            var temperature = mList1[indextemperature].Split(' ')[0];
                            var modestring = mList2[indexmode].Split(' ')[0];
                            var speedstring = mList3[indexspeed].Split(' ')[0];
@@ -2043,12 +2039,18 @@
                        ///取消事件
                        EventHandler<MouseEventArgs> closeclick = (sender, e) =>
                        {
                            //清除之前数据;
                            taskListInfo.Clear();
                            dictionary(modedictionary, "TaskType", "5");
                            dictionary(modedictionary, "Data1", "3");
                            dictionary(modedictionary, "Data2", "0");
                            //加载新数据;
                            taskListInfo.Add(modedictionary);
                            pausePickerViewfra.Height = Application.GetRealHeight(600);
                            SelectedDeviceStatusaction = "yes";
                            openBtnSelected.Visible = false;
                            closeBtnSelected.Visible = true;
                            dictionary(switchdictionary, "Data1", "0");
                        };
                        closerowlayout.MouseUpEventHandler += closeclick;
                        btnclose.MouseUpEventHandler += closeclick;
ZigbeeApp/Shared/Phone/Device/Logic/LogicIfon.cs
@@ -13,7 +13,7 @@
        /// </summary>
        /// <param name="common">Common.</param>
        /// <param name="objecttype">Objecttype.</param>
        public static void AddDeviceconditions(CommonDevice common, Dictionary<string, string> objecttype)
        public static void AddDeviceconditions(CommonDevice common, Dictionary<string, string> objecttype)
        {
            for (int i = 0; i < Common.Logic.CurrentLogic.Conditions.Count; i++)
            {
ZigbeeApp/Shared/Phone/Device/Logic/MemberList.cs
@@ -15,12 +15,14 @@
        }
        Button selectedIcon = new Button();
        public static bool edit = false;
        VerticalScrolViewLayout middle;
        VerticalRefreshLayout middle;
        CommonDevice common;
        Dictionary<string, string> editdeviceConditionsInfo;
        public async void Show(CommonDevice common, Dictionary<string, string> editdeviceConditionsInfo = null)
        public void Show(CommonDevice commondevice, Dictionary<string, string> editdeviceConditions = null)
        {
            common = commondevice;
            editdeviceConditionsInfo = editdeviceConditions;
            UserView.HomePage.Instance.ScrollEnabled = false;
            this.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
            #region  最上面的布局代码
@@ -73,14 +75,36 @@
            };
            #endregion
            middle = new VerticalScrolViewLayout
            middle = new VerticalRefreshLayout
            {
                Y = topRowLayout.Bottom,
                Height = Application.GetRealHeight(1920 - 184),
                BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
            };
            this.AddChidren(middle);
            middle.BeginHeaderRefreshingAction += () =>
            {
                //重新刷新logic列表
                string macport = common.DeviceAddr + "_" + common.DeviceEpoint.ToString();
                for (int i = 0; i < Send.LockList.Count; i++)
                {
                    if (Send.LockList[i].DoorLockMacPort == macport)
                    {
                        ///从列表移除当前门锁全部的旧数据;
                        Send.LockList.Remove(Send.LockList[i]);
                    }
                }
                Read();
                //关闭刷新View;
                middle.EndHeaderRefreshing();
            };
            Read();
        }
        /// <summary>
        /// 读取当前门锁的云端数据;
        /// </summary>
        public async void Read()
        {
            bool d = false;
            string macport = common.DeviceAddr + "_" + common.DeviceEpoint.ToString();
@@ -100,14 +124,14 @@
                var allMemberslist = await Send.AllMembers(common.DeviceAddr);
                Send.LockList.AddRange(allMemberslist);
            }
            UserList(macport, common, editdeviceConditionsInfo);
            UserList(macport);
            CommonPage.Loading.Hide();
        }
        /// <summary>
        /// 成员列表的方法
        /// </summary>
        /// <param name="macport"></param>
        void UserList(string macport, CommonDevice common, Dictionary<string, string> editdeviceConditionsInfo)
        public void UserList(string macport)
        {
            foreach (var user in Send.LockList)
@@ -156,7 +180,7 @@
                EventHandler<MouseEventArgs> useridclick = (sender, e) =>
                {
                    User(user, common, editdeviceConditionsInfo);
                    User(user);
                };
                userBtn.MouseUpEventHandler += useridclick;
@@ -167,12 +191,12 @@
            }
        }
        }
        /// <summary>
        /// 当前成员信息的方法
        /// </summary>
        /// <param name="user"></param>
        void User(Send.MembershipIfon user, CommonDevice common, Dictionary<string, string> editdeviceConditionsInfo)
        public void User(Send.MembershipIfon user)
        {
            var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor };
            this.AddChidren(flMain);
ZigbeeApp/Shared/Phone/Device/Logic/TemplateDeviceAction.cs
@@ -133,7 +133,7 @@
            };
            this.AddChidren(devicetypehorizontalScrol);
            devicetypehorizontalScrol.SetCornerWithSameRadius(20, HDLUtils.RectCornerBottomLeft);
            devicetypehorizontalScrol.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerBottomLeft);
            middle = new VerticalScrolViewLayout();
            middle.Y = devicetypehorizontalScrol.Bottom + Application.GetRealHeight(40);
@@ -142,7 +142,7 @@
            middle.X = Application.GetRealWidth(58);
            //middle.Radius = (uint)Application.GetRealHeight(50);
            this.AddChidren(middle);
            middle.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft);
            middle.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft);
            ///目前支持的设备
            List<DeviceType> deviceTypeList = new List<DeviceType> {
@@ -691,7 +691,7 @@
               // Radius = (uint)Application.GetRealHeight(60),
            };
            flMain.AddChidren(devicefra);
            devicefra.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft|HDLUtils.RectCornerTopRight);
            devicefra.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft|HDLUtils.RectCornerTopRight);
            #region  -------取消   完成
            var timetype = new RowLayout
ZigbeeApp/Shared/Phone/Device/Logic/TemplateDeviceCondition.cs
@@ -133,7 +133,7 @@
            };
            this.AddChidren(devicetypehorizontalScrol);
            devicetypehorizontalScrol.SetCornerWithSameRadius(20, HDLUtils.RectCornerBottomLeft);
            devicetypehorizontalScrol.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerBottomLeft);
            middle = new VerticalScrolViewLayout();
            middle.Y = devicetypehorizontalScrol.Bottom + Application.GetRealHeight(40);
@@ -142,7 +142,7 @@
            middle.X = Application.GetRealWidth(58);
           // middle.Radius = (uint)Application.GetRealHeight(50);
            this.AddChidren(middle);
            middle.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft);
            middle.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft);
            ///目前支持的设备
            var deviceTypeList = new List<DeviceType> {
@@ -726,7 +726,7 @@
                Radius = (uint)Application.GetRealHeight(60),
            };
            flMain.AddChidren(devicefra);
            devicefra.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
            devicefra.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
            #region  -------取消   完成
            var timetype = new RowLayout
ZigbeeApp/Shared/Phone/Device/Logic/TimePoint.cs
@@ -610,7 +610,7 @@
                //Radius = (uint)Application.GetRealHeight(60),
            };
            flMain.AddChidren(fraview);
            fraview.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
            fraview.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
            #region  -------取消   完成
            var timetype = new RowLayout
ZigbeeApp/Shared/Phone/Device/Room/AddRoomSelectPicByLocal.cs
@@ -56,18 +56,19 @@
            {
                var itemView = new FrameLayout()
                {
                    Height = Application.GetRealHeight(311 + CommonPage.XLeft)
                    Height = Application.GetRealHeight(311 + 58)
                };
                midFl.AddChidren(itemView);
                for (int i = 0; i < 2; i++)
                {
                    var icon = new Button()
                    var icon = new ImageView()
                    {
                        X = Application.GetRealWidth(CommonPage.XLeft + i * (467 + 32)),
                        Width = Application.GetMinRealAverage(467),
                        Height = Application.GetMinRealAverage(311),
                        Gravity = Gravity.CenterVertical,
                        UnSelectedImagePath = $"RoomIcon/{k}.JPG",
                        X = Application.GetRealWidth(58 + i * (467 + 32)),
                        Y = Application.GetRealHeight(58),
                        Width = Application.GetRealWidth(467),
                        Height = Application.GetRealHeight(311),
                        ImagePath = $"RoomIcon/{k}.JPG",
                        Radius = (uint)Application.GetRealHeight(17)
                    };
                    itemView.AddChidren(icon);
                    icon.SetViewShadow(true);
@@ -75,7 +76,7 @@
                    EventHandler<MouseEventArgs> selectIcon = (sender, e) =>
                    {
                        action?.Invoke(icon.UnSelectedImagePath);
                        action?.Invoke(icon.ImagePath);
                        action = null;
                        this.RemoveFromParent();
                    };
ZigbeeApp/Shared/Phone/Device/Room/EditRoom.cs
@@ -29,7 +29,7 @@
        /// <summary>
        /// backGround
        /// </summary>
        private Button backGround;
        private ImageView backGround;
        /// <summary>
        /// IconPathType
        /// </summary>
@@ -60,7 +60,7 @@
            room = r;
            IconPathType = r.BackgroundImageType;
            OldIconPathType= r.BackgroundImageType;
            if (IconPathType != 1)
            if (IconPathType != 0)
            {
                OldBackgroundImagePath = r.BackgroundImage;
            }
@@ -109,17 +109,21 @@
            };
            AddChidren(bodyFrameLayout);
            backGround = new Button()
            backGround = new ImageView()
            {
                Y = Application.GetRealHeight(60),
                Width = Application.GetMinRealAverage(887),
                Height = Application.GetMinRealAverage(444),
                Gravity = Gravity.CenterHorizontal,
                Radius = (uint)Application.GetRealHeight(CommonFormResouce.BigFormRadius),
                UnSelectedImagePath = room.BackgroundImage
                ImagePath = room.BackgroundImageType == 0 ? room.BackgroundImage : System.IO.Path.Combine(Config.Instance.FullPath, room.BackgroundImage)
            };
            bodyFrameLayout.AddChidren(backGround);
            backGround.SetViewShadow(true);
            if (room.BackgroundImageType != 0)
            {
                backGround.ImageBytes = Shared.IO.FileUtils.ReadFile(backGround.ImagePath);
            }
            backGround.MouseUpEventHandler += backGroundIMGHander;
            var infoFL = new FrameLayout
@@ -150,6 +154,10 @@
            nameRow.SetTipTitle($"{Language.StringByID(R.MyInternationalizationString.RoomName)} :");
            nameRow.SetTitle(room.Name);
            infoFL.AddChidren(nameRow);
            if(room.IsLove)
            {
                nameRow.NameText.Enable = false;
            }
            var floorRow = new DeviceInfoRow(308);
            floorRow.Init();
@@ -391,18 +399,18 @@
                var tradeTime = DateTime.Now.ToString("yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo);
                var fileName = $"RoomIcon_{tradeTime}.png";
                room.Name = nameRow.NameText.Text.Trim();
                if (OldIconPathType != 1)
                if (OldIconPathType != 0)
                {
                    Shared.IO.FileUtils.DeleteFile(OldBackgroundImagePath);
                    Shared.IO.FileUtils.DeleteFile(System.IO.Path.Combine(Config.Instance.FullPath,OldBackgroundImagePath));
                }
                if (IconPathType == 0)
                {
                    room.BackgroundImage = backGround.UnSelectedImagePath;
                    room.BackgroundImage = backGround.ImagePath;
                }
                else
                {
                    Shared.IO.FileUtils.WriteFileByBytes(System.IO.Path.Combine(Config.Instance.FullPath, fileName), backGround.ImageBytes);
                    room.BackgroundImage = System.IO.Path.Combine(Config.Instance.FullPath, fileName);
                    room.BackgroundImage = fileName;
                }
                room.BackgroundImageType = IconPathType;
                room.Save();
@@ -509,7 +517,7 @@
                {
                    IconPathType = 0;
                    backGround.ImageBytes = null;
                    backGround.UnSelectedImagePath = imgPath;
                    backGround.ImagePath = imgPath;
                };
            };
            selectPhotographBtn.MouseUpEventHandler += (send, ee) =>
@@ -522,12 +530,12 @@
                {
                    if (IconPathType != 0)
                    {
                        Global.DeleteFilebyHomeId(backGround.UnSelectedImagePath);
                        Global.DeleteFilebyHomeId(backGround.ImagePath);
                    }
                    IconPathType = 1;
                    backGround.ImageBytes = Shared.IO.FileUtils.ReadFile(imagePath);
                    backGround.UnSelectedImagePath = imagePath;
                    backGround.ImagePath = imagePath;
                    System.IO.File.Delete(imagePath);
                }, fileName, 2, 1);
@@ -543,12 +551,12 @@
                {
                    if (IconPathType != 0)
                    {
                        Global.DeleteFilebyHomeId(backGround.UnSelectedImagePath);
                        Global.DeleteFilebyHomeId(backGround.ImagePath);
                    }
                    IconPathType = 2;
                    backGround.ImageBytes = Shared.IO.FileUtils.ReadFile(imagePath);
                    backGround.UnSelectedImagePath = imagePath;
                    backGround.ImagePath = imagePath;
                    System.IO.File.Delete(imagePath);
                }, fileName, 2, 1);
ZigbeeApp/Shared/Phone/Device/Room/RoomManagement.cs
@@ -27,7 +27,6 @@
        public override void RemoveFromParent()
        {
            //更新界面
            //action?.Invoke();
            base.RemoveFromParent();
        }
@@ -174,7 +173,7 @@
        }
        /// <summary>
        ///
        /// ShowUnallocatedRoom_MouseUpEvent
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="mouseEventArgs"></param>
ZigbeeApp/Shared/Phone/Device/Room/RoomTemperatureSetting.cs
@@ -47,7 +47,7 @@
        public void Show(Shared.Common.Room r)
        {
            room = r;
            AddTop();
            AddBodyView();
@@ -112,7 +112,7 @@
                devRow.SetIcon(device.IconPath);
                devRow.SetName(device.DeviceName);
                devRow.SetZone(room.FloorName + ", " + room.Name);
                if(tempDevice!=null && tempDevice==device)
                {
                    tempDeviceRow = devRow;
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Common/UserCenterCommon.cs
@@ -1080,4 +1080,22 @@
        public string MsgTime = string.Empty;
    }
    #endregion
    #region ■ 隐匿功能类__________________________
    /// <summary>
    /// 隐匿功能
    /// </summary>
    public class HideOptionInfo
    {
        /// <summary>
        /// 是否显示主页隐藏菜单(Debug用): 1 -> 显示
        /// </summary>
        public int CenterHideMenu = 0;
        /// <summary>
        /// 是否出力详细Log 1 -> 出力
        /// </summary>
        public int DetailedLog = 0;
    }
    #endregion
}
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/BaseCommonControl/Base/ButtonBase.cs
@@ -32,17 +32,22 @@
        }
        /// <summary>
        /// 控件的点击事件(此事件被认可为执行按钮按下事件,受CanClick属性控制)
        /// 是否是长按状态
        /// </summary>
        private bool isLongClick = false;
        /// <summary>
        /// 控件的点击事件(自定义封装事件,此事件被认可为执行按钮按下事件,受CanClick属性控制)
        /// </summary>
        public Action<Button, MouseEventArgs> ButtonClickEvent = null;
        /// <summary>
        /// 底部阴影控件1
        /// (★当前不要使用★)控件的长按事件,当事件为null时,代表长按结束(自定义封装事件,此事件被认可为执行按钮长按事件,受CanClick属性控制)
        /// </summary>
        private Button btnBottomShadowView1 = null;
        public Action<Button, MouseEventArgs> ButtonLongClickEvent = null;
        /// <summary>
        /// 底部阴影控件2
        /// 控件的按下事件(自定义封装事件,此事件被认可为执行按钮按下事件,受CanClick属性控制)
        /// </summary>
        private Button btnBottomShadowView2 = null;
        public Action<Button, MouseEventArgs> ButtonDownClickEvent = null;
        #endregion
@@ -61,6 +66,10 @@
            //点击事件
            this.MouseUpEventHandler += ButtonBase_MouseUpEventHandler;
            //按下事件
            this.MouseDownEventHandler += ButtonBase_MouseDownEventHandler;
            //长按事件
            this.MouseLongEventHandler += ButtonBase_MouseLongEventHandler;
        }
        /// <summary>
@@ -133,11 +142,94 @@
            if (CanClick == true)
            {
                //Log出力
                this.WriteLog();
                this.WriteLog(0);
                try
                {
                    this.ButtonClickEvent?.Invoke(this, e);
                    if (this.isLongClick == false)
                    {
                        this.ButtonClickEvent(this, e);
                    }
                    else if (ButtonLongClickEvent != null)
                    {
                        //长按结束
                        this.ButtonLongClickEvent(this, null);
                    }
                }
                catch (Exception ex)
                {
                    //出现未知错误
                    var alert = new ShowMsgControl(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.uUnKnownError));
                    alert.Show();
                    //Log出力
                    HdlLogLogic.Current.WriteLog(ex);
                }
            }
            //状态还原
            this.isLongClick = false;
        }
        #endregion
        #region ■ 按下事件___________________________
        /// <summary>
        /// 按下事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ButtonBase_MouseDownEventHandler(object sender, MouseEventArgs e)
        {
            //还原状态
            this.isLongClick = false;
            if (CanClick == false || this.ButtonDownClickEvent == null)
            {
                //不能点击
                return;
            }
            try
            {
                this.ButtonDownClickEvent(this, e);
            }
            catch (Exception ex)
            {
                //出现未知错误
                var alert = new ShowMsgControl(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.uUnKnownError));
                alert.Show();
                //Log出力
                HdlLogLogic.Current.WriteLog(ex);
            }
        }
        #endregion
        #region ■ 长按事件___________________________
        /// <summary>
        /// 长按事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ButtonBase_MouseLongEventHandler(object sender, MouseEventArgs e)
        {
            //长按状态
            this.isLongClick = true;
            if (ButtonLongClickEvent == null)
            {
                this.MouseLongEventHandler -= ButtonBase_MouseLongEventHandler;
                return;
            }
            if (CanClick == true)
            {
                //Log出力
                this.WriteLog(1);
                try
                {
                    this.ButtonLongClickEvent(this, e);
                }
                catch (Exception ex)
                {
@@ -173,21 +265,14 @@
        #region ■ 一般方法___________________________
        /// <summary>
        /// 重置单击事件(此操作委托会变null)
        /// </summary>
        public void ResetClickEvent()
        {
            ButtonClickEvent = null;
            this.MouseUpEventHandler -= this.ButtonBase_MouseUpEventHandler;
            this.MouseUpEventHandler += this.ButtonBase_MouseUpEventHandler;
        }
        /// <summary>
        /// 控件摧毁
        /// </summary>
        public override void RemoveFromParent()
        {
            ButtonClickEvent = null;
            ButtonDownClickEvent = null;
            ButtonLongClickEvent = null;
            base.RemoveFromParent();
        }
@@ -257,7 +342,7 @@
        /// <summary>
        /// Log出力
        /// </summary>
        private void WriteLog()
        private void WriteLog(int div)
        {
            if (formName == null)
            {
@@ -288,7 +373,14 @@
                    controlName = this.UnSelectedImagePath;
                }
            }
            HdlLogLogic.Current.WriteLog(1, formName + "的[" + controlName + "]按键被点击");
            if (div == 0)
            {
                HdlLogLogic.Current.WriteLog(1, formName + "的[" + controlName + "]按键被点击");
            }
            else
            {
                HdlLogLogic.Current.WriteLog(1, formName + "的[" + controlName + "]按键被长按");
            }
        }
        #endregion
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/BaseCommonControl/Common/ClickButtonCommon.cs
@@ -41,7 +41,7 @@
            this.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
            this.TextAlignment = TextAlignment.Center;
            this.MouseDownEventHandler += this.Button_MouseDownEvent;
            this.ButtonDownClickEvent += this.Button_MouseDownEvent;
        }
        #endregion
@@ -58,7 +58,7 @@
            if (this.UseClickStatu == false)
            {
                //永久移除
                this.MouseDownEventHandler -= this.Button_MouseDownEvent;
                this.ButtonDownClickEvent -= Button_MouseDownEvent;
                return;
            }
            if (base.CanClick == false || isSelcetStatu == true)
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/BaseCommonControl/Common/IconControlCommon.cs
@@ -26,7 +26,7 @@
        public IconControlCommon()
        {
            //这个事件是搞点亮特效的
            this.MouseDownEventHandler += this.Button_MouseDownEvent;
            this.ButtonDownClickEvent += this.Button_MouseDownEvent;
        }
        #endregion
@@ -43,7 +43,7 @@
            if (this.UseClickStatu == false || string.IsNullOrEmpty(this.SelectedImagePath) == true)
            {
                //永久移除
                this.MouseDownEventHandler -= this.Button_MouseDownEvent;
                this.ButtonDownClickEvent -= Button_MouseDownEvent;
                return;
            }
            if (base.CanClick == false || this.IsSelected == true)
@@ -54,15 +54,8 @@
            //设置处于选择状态时,显示的图标
            this.SetSelectPictrue();
            HdlThreadLogic.Current.RunThread(() =>
            {
                System.Threading.Thread.Sleep(ControlCommonResourse.StatuChangedWaitTime);
                Application.RunOnMainThread(() =>
                {
                    //设置处于非选择状态时,显示的图标
                    this.SetUnSelectPictrue();
                });
            });
            //设置处于非选择状态时,显示的图标
            this.SetUnSelectPictrue(true);
        }
        /// <summary>
@@ -76,10 +69,29 @@
        /// <summary>
        /// 设置处于非选择状态时,显示的图标
        /// </summary>
        public void SetUnSelectPictrue()
        /// <param name="waitTime">追加变量:是否等待</param>
        public void SetUnSelectPictrue(bool waitTime)
        {
            //设置不选择状态
            this.IsSelected = false;
            if (waitTime == false)
            {
                Application.RunOnMainThread(() =>
                {
                    //设置不选择状态
                    this.IsSelected = false;
                });
            }
            else
            {
                HdlThreadLogic.Current.RunThread(() =>
                {
                    System.Threading.Thread.Sleep(ControlCommonResourse.StatuChangedWaitTime);
                    Application.RunOnMainThread(() =>
                    {
                        //设置不选择状态
                        this.IsSelected = false;
                    });
                });
            }
        }
        #endregion
    }
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/SafetyMasterControl.cs
@@ -23,6 +23,10 @@
        /// 撤防
        /// </summary>
        private GarrisonControl btnReGarrisonGarrison = null;
        /// <summary>
        /// 桌布控件
        /// </summary>
        private FrameLayout frameTable = null;
        #endregion
@@ -36,8 +40,6 @@
            this.Gravity = Gravity.CenterHorizontal;
            this.Width = Application.GetRealWidth(964);
            this.Height = Application.GetRealHeight(340);
            this.Radius = 20;
            this.BackgroundColor = UserCenterColor.Current.White;
        }
        /// <summary>
@@ -49,15 +51,22 @@
            this.btnReGarrisonGarrison = null;
            this.btnRemovehomeGarrison = null;
            this.frameTable = new FrameLayout();
            frameTable.Height = this.Height;
            frameTable.Width = this.Width;
            frameTable.Radius = 20;
            frameTable.BackgroundColor = UserCenterColor.Current.White;
            this.AddChidren(frameTable);
            //右上圆角背景
            var btnTopRight = new NormalViewControl(50, 50, true);
            var btnTopRight = new NormalViewControl(150, 60, true);
            btnTopRight.BackgroundColor = UserCenterColor.Current.White;
            btnTopRight.Radius = 6;
            this.AddChidren(btnTopRight);
            btnTopRight.X = this.Width - btnTopRight.Width;
            //左下圆角背景
            var btnBottomRight = new NormalViewControl(50, 50, true);
            var btnBottomRight = new NormalViewControl(150, 60, true);
            btnBottomRight.BackgroundColor = UserCenterColor.Current.White;
            btnBottomRight.Radius = 6;
            this.AddChidren(btnBottomRight);
@@ -68,7 +77,7 @@
            {
                //在家布防
                btnAthomeGarrison = new GarrisonControl();
                this.AddChidren(btnAthomeGarrison);
                frameTable.AddChidren(btnAthomeGarrison);
                btnAthomeGarrison.InitControl(GarrisonMode.AtHome);
                btnAthomeGarrison.ButtonClickEvent += (sender, e) =>
                {
@@ -80,7 +89,7 @@
                //离家布防
                btnRemovehomeGarrison = new GarrisonControl();
                btnRemovehomeGarrison.X = btnAthomeGarrison.Right + Application.GetRealWidth(32);
                this.AddChidren(btnRemovehomeGarrison);
                frameTable.AddChidren(btnRemovehomeGarrison);
                btnRemovehomeGarrison.InitControl(GarrisonMode.RemoveHome);
                btnRemovehomeGarrison.ButtonClickEvent += (sender, e) =>
                {
@@ -92,7 +101,7 @@
                //撤防
                btnReGarrisonGarrison = new GarrisonControl();
                btnReGarrisonGarrison.X = btnRemovehomeGarrison.Right + Application.GetRealWidth(32);
                this.AddChidren(btnReGarrisonGarrison);
                frameTable.AddChidren(btnReGarrisonGarrison);
                btnReGarrisonGarrison.InitControl(GarrisonMode.RemoveGarrison);
                btnReGarrisonGarrison.ButtonClickEvent += (sender, e) =>
                {
@@ -104,7 +113,7 @@
                //布防
                btnAthomeGarrison = new GarrisonControl();
                btnAthomeGarrison.X = Application.GetRealWidth(166);
                this.AddChidren(btnAthomeGarrison);
                frameTable.AddChidren(btnAthomeGarrison);
                btnAthomeGarrison.InitControl(GarrisonMode.AtHome);
                btnAthomeGarrison.ButtonClickEvent += (sender, e) =>
                {
@@ -116,7 +125,7 @@
                //撤防
                btnReGarrisonGarrison = new GarrisonControl();
                btnReGarrisonGarrison.X = btnAthomeGarrison.Right + Application.GetRealWidth(32);
                this.AddChidren(btnReGarrisonGarrison);
                frameTable.AddChidren(btnReGarrisonGarrison);
                btnReGarrisonGarrison.InitControl(GarrisonMode.RemoveGarrison);
                btnReGarrisonGarrison.ButtonClickEvent += (sender, e) =>
                {
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlBackupLogic.cs
@@ -35,11 +35,6 @@
            }
        }
        /// <summary>
        /// Log备份的名字
        /// </summary>
        private string LogBackupName = "##Log##";
        #endregion
        #region ■ 获取备份名字列表___________________
@@ -49,9 +44,9 @@
        /// </summary>
        /// <param name="ZigbeeBackupType">0:App手动备份 1: App 自动备份 2:网关手动备份 3:网关自动备份</param>
        /// <param name="ZigbeeUniqueId">网关的唯一Id,获取网关备份需要</param>
        /// <param name="getLogBackup">是否获取Log备份</param>
        /// <param name="getOptionBackup">是否获取功能备份</param>
        /// <returns></returns>
        public async Task<List<BackupListNameInfo>> GetBackupListNameFromDB(int ZigbeeBackupType = 0, string ZigbeeUniqueId = null, bool getLogBackup = false)
        public async Task<List<BackupListNameInfo>> GetBackupListNameFromDB(int ZigbeeBackupType = 0, string ZigbeeUniqueId = null, bool getOptionBackup = false)
        {
            //备份名字很少的内存,可以直接一次性全部取完
            var pra = new GetBackupListPra();
@@ -78,9 +73,9 @@
                {
                    continue;
                }
                if (getLogBackup == false && data2.BackupName == LogBackupName)
                if (getOptionBackup == false && data2.BackupName == DirNameResourse.OptionBackupName)
                {
                    //不获取Log备份
                    //不获取功能备份
                    continue;
                }
                list.Add(data2);
@@ -370,13 +365,6 @@
                ProgressFormBar.Current.SetValue(i + 1 + listNormalFile.Count, listFileCount);
            }
            //上传Log备份
            if (upPath != UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.LogDirectory))
            {
                //里面有个回调自身的方法,所以这里加个判断,不然会死循环
                await this.UpLoadLogBackup();
            }
            //进度条关闭
            ProgressFormBar.Current.Close();
            //允许按系统的返回键
@@ -541,10 +529,10 @@
        #region ■ 上传Log备份________________________
        /// <summary>
        /// 上传Log备份
        /// 上传Log备份(隐匿功能)
        /// </summary>
        /// <returns></returns>
        private async Task<bool> UpLoadLogBackup()
        public async Task<bool> UpLoadLogBackup()
        {
            string upPath = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.LogDirectory);
            if (HdlAutoBackupLogic.GetFileFromDirectory(upPath).Count == 0)
@@ -553,41 +541,38 @@
                return true;
            }
            //无视错误
            IMessageCommon.Current.IgnoreError = true;
            ProgressFormBar.Current.Start();
            ProgressFormBar.Current.SetMsg("正在上传Log文件");
            //从云端获取数据
            var pageData = await HdlBackupLogic.Current.GetBackupListNameFromDB(0, null, true);
            if (pageData == null)
            {
                //恢复
                IMessageCommon.Current.IgnoreError = false;
                ProgressFormBar.Current.Close();
                return false;
            }
            string backId = string.Empty;
            for (int i = 0; i < pageData.Count; i++)
            {
                if (pageData[i].BackupName == LogBackupName)
                if (pageData[i].BackupName == DirNameResourse.OptionBackupName)
                {
                    //删除掉这个备份
                    bool flage = await this.DeleteDbBackupData(pageData[i].Id);
                    if (flage == false)
                    {
                        //恢复
                        IMessageCommon.Current.IgnoreError = false;
                        return false;
                    }
                    //获取功能备份的ID
                    backId = pageData[i].Id;
                    break;
                }
            }
            //创建新的备份
            string backupClassId = await HdlBackupLogic.Current.CreatNewBackupNameToDB(LogBackupName);
            if (backupClassId == null)
            if (backId == string.Empty)
            {
                //恢复
                IMessageCommon.Current.IgnoreError = false;
                return false;
                //创建新的备份
                backId = await HdlBackupLogic.Current.CreatNewBackupNameToDB(DirNameResourse.OptionBackupName);
                if (backId == null)
                {
                    ProgressFormBar.Current.Close();
                    return false;
                }
            }
            //上传Log文件
            bool result = await this.UpLoadBackupFileToDB(backupClassId, 0, upPath, false);
            bool result = await this.UpLoadBackupFileToDB(backId, 0, upPath, false);
            if (result == true)
            {
                try
@@ -597,14 +582,81 @@
                }
                catch { }
            }
            //恢复
            IMessageCommon.Current.IgnoreError = false;
            ProgressFormBar.Current.Close();
            return result;
        }
        #endregion
        #region ■ 读取隐匿功能配置___________________
        /// <summary>
        /// 读取隐匿功能配置(不要在意返回值)
        /// </summary>
        /// <returns></returns>
        public async Task<bool> LoadHideOption()
        {
            //先初始化
            UserCenterResourse.HideOption = new HideOptionInfo();
            if (UserCenterResourse.UserInfo.AuthorityNo != 1 && UserCenterResourse.UserInfo.AuthorityNo != 2)
            {
                return true;
            }
            //无视错误
            IMessageCommon.Current.IgnoreError = true;
            //从云端获取数据
            var pageData = await this.GetBackupListNameFromDB(0, null, true);
            if (pageData == null)
            {
                //恢复
                IMessageCommon.Current.IgnoreError = false;
                return false;
            }
            string backId = string.Empty;
            for (int i = 0; i < pageData.Count; i++)
            {
                if (pageData[i].BackupName == DirNameResourse.OptionBackupName)
                {
                    //获取功能备份的ID
                    backId = pageData[i].Id;
                    break;
                }
            }
            if (backId == string.Empty)
            {
                //没有功能配置
                IMessageCommon.Current.IgnoreError = false;
                return true;
            }
            //获取这个备份下面有多少个文件
            List<string> listFile = await GetBackFileIDFromDB(backId, false, null);
            if (listFile == null)
            {
                //恢复
                IMessageCommon.Current.IgnoreError = false;
                return false;
            }
            if (listFile.Contains(DirNameResourse.ShowOptionMenuFile) == true)
            {
                //显示主页隐藏菜单(Debug用)
                UserCenterResourse.HideOption.CenterHideMenu = 1;
            }
            if (listFile.Contains(DirNameResourse.DetailedLogFile) == true)
            {
                //出力详细Log(Debug用)
                UserCenterResourse.HideOption.DetailedLog = 1;
            }
            //恢复
            IMessageCommon.Current.IgnoreError = false;
            return true;
        }
        #endregion
        #region ■ 读取备份___________________________
        /// <summary>
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs
@@ -461,7 +461,7 @@
                    btnMsg.TextID = R.MyInternationalizationString.uGatewayDataIsChangingPleaseWhait;
                });
            }
            await System.Threading.Tasks.Task.Delay(8000);
            await Task.Delay(8000);
            //获取网关的信息
            var result = await zbGateway.GetZbGwInfoAsync();
@@ -473,15 +473,7 @@
                return -1;
            }
            if (result == null)
            {
                //获取网关信息失败
                string msg = Language.StringByID(R.MyInternationalizationString.uGetGatewayInfoFail);
                this.ShowTipMsg(msg);
                return -1;
            }
            if (result.getGwData == null)
            if (result == null || result.getGwData == null)
            {
                //获取网关信息失败
                string msg = Language.StringByID(R.MyInternationalizationString.uGetGatewayInfoFail);
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlLogLogic.cs
@@ -60,7 +60,7 @@
        {
            lock (objLock)
            {
                if (div != -1)
                if (div != -1 && UserCenterResourse.HideOption.DetailedLog == 0)
                {
                    //暂时只记录异常信息
                    return;
@@ -95,11 +95,11 @@
            string fileName = DateTime.Now.ToString("yyyyMMdd");
            if (div == -1)
            {
                fileName += "Log";
                fileName += "Error";
            }
            else if (div == 1)
            {
                fileName += "Error";
                fileName += "Log";
            }
            fileName = UserCenterLogic.EncryptPassword("4^Olh_3f", fileName);
            return fileName;
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs
@@ -32,18 +32,6 @@
        }
        /// <summary>
        /// 当前Wifi的Ip地址
        /// </summary>
        public string IpAddress
        {
            get
            {
                var temp = new Shared.Net.NetWiFi();
                return temp.GetIPAddress();
            }
        }
        /// <summary>
        /// 当前是否是网关热点
        /// </summary>
        public bool IsGatewayHotspot
@@ -286,14 +274,14 @@
        /// <param name="wifiPsw">wifi密码</param>
        /// <param name="p2">我也不知道这个是什么东西</param>
        /// <returns></returns>
        public bool StartSmartConnection(string wifiName, string wifiPsw, string p2 = "1")
        public bool StartSmartConnection(string wifiName, string wifiPsw, string p2 = "")
        {
            if (hdlWiFi == null)
            {
                Com.Mediatek.Elian.ElianNative.LoadLib();
                //初始化Wi-Fi配网
                this.hdlWiFi = new Com.Mediatek.Elian.ElianNative();
                hdlWiFi.InitSmartConnection(null, 1, 1);
                var value = hdlWiFi.InitSmartConnection(null, 1, 0);
            }
            //开始Wi-Fi配网
            var result = hdlWiFi.StartSmartConnection(wifiName, wifiPsw, p2);
@@ -308,7 +296,7 @@
            if (hdlWiFi != null)
            {
                //停止Wi-Fi配网
                hdlWiFi.StopSmartConnection();
                var result = hdlWiFi.StopSmartConnection();
            }
        }
#endif
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/UserCenterLogic.cs
@@ -639,11 +639,6 @@
                }
                catch { }
                if (noticeDb == true)
                {
                    //通知云端,已经退出登陆
                    var result = await CommonPage.Instance.RequestHttpsZigbeeBytesResultAsync("ZigbeeUsers/SignOut", null, "GET");
                }
                HdlThreadLogic.Current.RunMain(() =>
                {
                    //关闭所有打开了的界面
@@ -654,6 +649,12 @@
                    Shared.Common.CommonPage.Instance.AddChidren(formLogin);
                    formLogin.Show(account);
                });
                if (noticeDb == true)
                {
                    //通知云端,已经退出登陆
                    var result = await CommonPage.Instance.RequestHttpsZigbeeBytesResultAsync("ZigbeeUsers/SignOut", null, "GET");
                }
            });
        }
@@ -800,7 +801,9 @@
        /// <summary>
        /// 异步方法执行(仅限切换住宅时调用),刷新个人中心的内存及线程
        /// </summary>
        public async static Task<bool> InitUserCenterMenmoryAndThread()
        /// <param name="ShowPrompted">新追加变量:是否显示提示自动备份的界面</param>
        /// <returns></returns>
        public async static Task<bool> InitUserCenterMenmoryAndThread(bool ShowPrompted = true)
        {
            //APP缓存加载开始
            UserCenterResourse.Option.AppCanSignout = false;
@@ -831,6 +834,8 @@
                {
                    //重新发送命令去绑定断网情况下备份的网关
                    HdlGatewayLogic.Current.ResetComandToBindBackupGateway();
                    //读取隐匿配置
                    await HdlBackupLogic.Current.LoadHideOption();
                }
                //初始化缓存成员的信息
@@ -878,7 +883,7 @@
                HdlGatewayLogic.Current.RefreshAppOldSelectGatewayId();
                //0:已经同步过,不需要同步,这个时候需要提示备份
                if (result == 0)
                if (result == 0 && ShowPrompted == true)
                {
                    //开启自动备份提示
                    HdlAutoBackupLogic.ShowAutoBackupPromptedForm();
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Resourse/DirectoryFileNameResourse.cs
@@ -118,5 +118,18 @@
        /// 保存意见反馈次数的【文件】
        /// </summary>
        public const string SuggestionFile = "f782709778b751ef2b3840f17e407ead";
        /// <summary>
        /// 显示功能菜单的【标识文件】
        /// </summary>
        public const string ShowOptionMenuFile = "eaf5efcca1be2f4cb0ff3dea79df755f5886beb3bf7aed1b";
        /// <summary>
        /// 详细Log处理的【标识文件】
        /// </summary>
        public const string DetailedLogFile = "ceec8cfdbe5e8112755cba32c1b081f9";
        /// <summary>
        /// 功能备份的名字  这个东西不加密
        /// </summary>
        public const string OptionBackupName = "##Option##";
    }
}
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Resourse/UserCenterResourse.cs
@@ -35,5 +35,9 @@
        /// 账号的设置信息
        /// </summary>
        public static AccountOption Option = new AccountOption();
        /// <summary>
        /// 隐匿配置
        /// </summary>
        public static HideOptionInfo HideOption = new HideOptionInfo();
    }
}
ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddDevicePage.cs
@@ -15,10 +15,10 @@
        /// </summary>
        /// <param name="common">Common.</param>
        public void Changed(CommonDevice common)
        {
        {
            Shared.Application.RunOnMainThread(() =>
            {
             });
            });
        }
        /// 构造函数
@@ -573,7 +573,7 @@
                };
                rowLayout.AddChidren(line2);
                if (curIndex == curRoom.SceneUIList.Count - 1)
                if (curIndex == curRoom.DeviceUIList.Count - 1)
                {
                    line2.Visible = false;
                }
@@ -591,9 +591,16 @@
                    }
                    else
                    {
                        targetList.Add(device.CommonDevice);
                        btnChoose.IsSelected = true;
                        btnChoose.Visible = true;
                        if (targetList.Count > 9)
                        {
                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.BindFull), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                        }
                        else
                        {
                            targetList.Add(device.CommonDevice);
                            btnChoose.IsSelected = true;
                            btnChoose.Visible = true;
                        }
                    }
                };
                rowLayout.MouseUpEventHandler += hander;
ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs
@@ -1112,96 +1112,103 @@
                //    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(CommonPage.Instance);
                //}
                if (delResult.delDeviceBindResponseData?.RemoveBindList != null)
                if (delResult != null && delResult.removeBindResultResponseData != null)
                {
                    foreach (var re in delResult.delDeviceBindResponseData.RemoveBindList)
                    if (delResult.delDeviceBindResponseData?.RemoveBindList != null)
                    {
                        switch (re.Result)
                        foreach (var re in delResult.delDeviceBindResponseData.RemoveBindList)
                        {
                            case 0:
                                currentKey.bindList.Remove(bindDevice);
                                RefreshList();
                                //如果是场景,用户删除清空当前到房间列表
                                currentKey.RoomId = "";
                                currentKey.ReSave();
                                return 0;
                                break;
                            case 1:
                                currentKey.bindList.Clear();
                                try
                                {
                                    CommonPage.Loading.Start("");
                                    var getBindList = await currentKey.GetDeviceBindAsync();
                                    var bindDeviceListTemp = new System.Collections.Generic.List<BindListResponseObj> { };
                                    var bindSceneListTemp = new System.Collections.Generic.List<BindListResponseObj> { };
                                    if (getBindList != null)
                            switch (re.Result)
                            {
                                case 0:
                                    currentKey.bindList.Remove(bindDevice);
                                    RefreshList();
                                    //如果是场景,用户删除清空当前到房间列表
                                    currentKey.RoomId = "";
                                    currentKey.ReSave();
                                    return 0;
                                    break;
                                case 1:
                                    currentKey.bindList.Clear();
                                    try
                                    {
                                        if (getBindList.getAllBindResponseData != null)
                                        {
                                            foreach (var b in getBindList.getAllBindResponseData.BindList)
                                            {
                                                if (b.BindCluster == currentClusterID)
                                                {
                                                    if (b.BindCluster == 6)
                                                    {
                                        CommonPage.Loading.Start("");
                                                        if (b.BindType == 2)
                                        var getBindList = await currentKey.GetDeviceBindAsync();
                                        var bindDeviceListTemp = new System.Collections.Generic.List<BindListResponseObj> { };
                                        var bindSceneListTemp = new System.Collections.Generic.List<BindListResponseObj> { };
                                        if (getBindList != null)
                                        {
                                            if (getBindList.getAllBindResponseData != null)
                                            {
                                                foreach (var b in getBindList.getAllBindResponseData.BindList)
                                                {
                                                    if (b.BindCluster == currentClusterID)
                                                    {
                                                        if (b.BindCluster == 6)
                                                        {
                                                            bindSceneListTemp.Add(b);
                                                            if (b.BindType == 2)
                                                            {
                                                                bindSceneListTemp.Add(b);
                                                            }
                                                            else
                                                            {
                                                                bindDeviceListTemp.Add(b);
                                                            }
                                                        }
                                                        else
                                                        {
                                                            bindDeviceListTemp.Add(b);
                                                            currentKey.bindList.Add(b);
                                                        }
                                                    }
                                                    else
                                                    {
                                                        currentKey.bindList.Add(b);
                                                    }
                                                }
                                            }
                                        }
                                        if (currentKey.panelMode == 1)
                                        {
                                            currentKey.bindList = bindSceneListTemp;
                                        }
                                        else if (currentKey.panelMode == 100 || currentKey.panelMode == 101 || currentKey.panelMode == 102)
                                        {
                                            currentKey.bindList = bindDeviceListTemp;
                                        }
                                    }
                                    if (currentKey.panelMode == 1)
                                    catch { }
                                    finally
                                    {
                                        currentKey.bindList = bindSceneListTemp;
                                    }
                                    else if (currentKey.panelMode == 100 || currentKey.panelMode == 101 || currentKey.panelMode == 102)
                                    {
                                        currentKey.bindList = bindDeviceListTemp;
                                    }
                                }
                                catch { }
                                finally
                                {
                                    RefreshList();
                                    CommonPage.Loading.Hide();
                                }
                                break;
                            case 2:
                                if (delResult.removeBindResultResponseData != null)
                                {
                                    if (delResult.removeBindResultResponseData.Result == 0)
                                    {
                                        currentKey.bindList.Remove(bindDevice);
                                        RefreshList();
                                        return 0;
                                        CommonPage.Loading.Hide();
                                    }
                                    else
                                    break;
                                case 2:
                                    if (delResult.removeBindResultResponseData != null)
                                    {
                                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
                                        if (delResult.removeBindResultResponseData.Result == 0)
                                        {
                                            currentKey.bindList.Remove(bindDevice);
                                            RefreshList();
                                            return 0;
                                        }
                                        else
                                        {
                                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
                                        }
                                    }
                                }
                                break;
                            default:
                                break;
                                    break;
                                default:
                                    break;
                            }
                        }
                    }
                    else
                    {
                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
                    }
                }
                else
                {
                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(CommonPage.Instance);
                }
            }
            catch { }
ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceDryContactSettionForm.cs
@@ -221,6 +221,11 @@
        /// </summary>
        private void InitTopRightMenu()
        {
            //检测此回路是否拥有定位功能
            if (Common.LocalDevice.Current.DeviceIsCanFixedPosition(nowSelectDevice) == false)
            {
                return;
            }
            var btnIcon = new MostRightIconControl(69, 69);
            btnIcon.UnSelectedImagePath = "Item/More.png";
            topFrameLayout.AddChidren(btnIcon);
@@ -241,10 +246,10 @@
            string deviceMenu = string.Empty;
            //检测此回路是否拥有定位功能
            bool canTest = Common.LocalDevice.Current.DeviceIsCanFixedPosition(nowSelectDevice);
            if (canTest == true)
            {
                menuCount = 2;
            }
            //if (canTest == true)
            //{
            //    menuCount = 2;
            //}
            var frame = new TopRightMenuControl(menuCount);
            if (canTest == true)
            {
@@ -258,10 +263,10 @@
            }
            //删除
            deviceMenu = Language.StringByID(R.MyInternationalizationString.uDelete);
            frame.AddRowMenu(deviceMenu, "Item/DeleteIcon2.png", "Item/DeleteIcon2Selected.png", () =>
            {
            });
            //deviceMenu = Language.StringByID(R.MyInternationalizationString.uDelete);
            //frame.AddRowMenu(deviceMenu, "Item/DeleteIcon2.png", "Item/DeleteIcon2Selected.png", () =>
            //{
            //});
        }
        #endregion
ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs
@@ -220,6 +220,11 @@
        /// </summary>
        private void InitTopRightMenu()
        {
            //检测此回路是否拥有定位功能
            if (Common.LocalDevice.Current.DeviceIsCanFixedPosition(nowSelectDevice) == false)
            {
                return;
            }
            var btnIcon = new MostRightIconControl(69, 69);
            btnIcon.UnSelectedImagePath = "Item/More.png";
            topFrameLayout.AddChidren(btnIcon);
@@ -240,10 +245,10 @@
            string deviceMenu = string.Empty;
            //检测此回路是否拥有定位功能
            bool canTest = Common.LocalDevice.Current.DeviceIsCanFixedPosition(nowSelectDevice);
            if (canTest == true)
            {
                menuCount = 2;
            }
            //if (canTest == true)
            //{
            //    menuCount = 2;
            //}
            var frame = new TopRightMenuControl(menuCount);
            if (canTest == true)
            {
@@ -257,10 +262,10 @@
            }
            //删除
            deviceMenu = Language.StringByID(R.MyInternationalizationString.uDelete);
            frame.AddRowMenu(deviceMenu, "Item/DeleteIcon2.png", "Item/DeleteIcon2Selected.png", () =>
            {
            });
            //deviceMenu = Language.StringByID(R.MyInternationalizationString.uDelete);
            //frame.AddRowMenu(deviceMenu, "Item/DeleteIcon2.png", "Item/DeleteIcon2Selected.png", () =>
            //{
            //});
        }
        #endregion
ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceMacInfoEditorForm.cs
@@ -918,16 +918,27 @@
        /// <summary>
        /// 删除指定设备
        /// </summary>
        private async void DoDeleteDevice()
        private void DoDeleteDevice()
        {
            //删除设备
            bool result = await Common.LocalDevice.Current.DeleteDevice(listNewDevice);
            if (result == false)
            HdlThreadLogic.Current.RunThread(async () =>
            {
                return;
            }
            //关闭界面
            this.CloseForm();
                //打开进度条
                this.ShowProgressBar();
                //删除设备
                bool result = await Common.LocalDevice.Current.DeleteDevice(listNewDevice);
                //关闭进度条
                this.CloseProgressBar();
                if (result == false)
                {
                    return;
                }
                HdlThreadLogic.Current.RunMain(() =>
                {
                    //关闭界面
                    this.CloseForm();
                });
            });
        }
        #endregion
ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelButtonSettionForm.cs
@@ -184,6 +184,11 @@
        /// </summary>
        private void InitTopRightMenu()
        {
            //检测此回路是否拥有定位功能
            if (Common.LocalDevice.Current.DeviceIsCanFixedPosition(nowSelectDevice) == false)
            {
                return;
            }
            var btnIcon = new MostRightIconControl(69, 69);
            btnIcon.UnSelectedImagePath = "Item/More.png";
            topFrameLayout.AddChidren(btnIcon);
@@ -204,10 +209,10 @@
            string deviceMenu = string.Empty;
            //检测此回路是否拥有定位功能
            bool canTest = Common.LocalDevice.Current.DeviceIsCanFixedPosition(nowSelectDevice);
            if (canTest == true)
            {
                menuCount = 2;
            }
            //if (canTest == true)
            //{
            //    menuCount = 2;
            //}
            var frame = new TopRightMenuControl(menuCount);
            if (canTest == true)
            {
@@ -221,10 +226,10 @@
            }
            //删除
            deviceMenu = Language.StringByID(R.MyInternationalizationString.uDelete);
            frame.AddRowMenu(deviceMenu, "Item/DeleteIcon2.png", "Item/DeleteIcon2Selected.png", () =>
            {
            });
            //deviceMenu = Language.StringByID(R.MyInternationalizationString.uDelete);
            //frame.AddRowMenu(deviceMenu, "Item/DeleteIcon2.png", "Item/DeleteIcon2Selected.png", () =>
            //{
            //});
        }
        #endregion
ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFunctionSettionForm.cs
@@ -214,6 +214,11 @@
        /// </summary>
        private void InitTopRightMenu()
        {
            //检测此回路是否拥有定位功能
            if (Common.LocalDevice.Current.DeviceIsCanFixedPosition(nowSelectDevice) == false)
            {
                return;
            }
            var btnIcon = new MostRightIconControl(69, 69);
            btnIcon.UnSelectedImagePath = "Item/More.png";
            topFrameLayout.AddChidren(btnIcon);
@@ -234,10 +239,10 @@
            string deviceMenu = string.Empty;
            //检测此回路是否拥有定位功能
            bool canTest = Common.LocalDevice.Current.DeviceIsCanFixedPosition(nowSelectDevice);
            if (canTest == true)
            {
                menuCount = 2;
            }
            //if (canTest == true)
            //{
            //    menuCount = 2;
            //}
            var frame = new TopRightMenuControl(menuCount);
            if (canTest == true)
            {
@@ -251,10 +256,10 @@
            }
            //删除
            deviceMenu = Language.StringByID(R.MyInternationalizationString.uDelete);
            frame.AddRowMenu(deviceMenu, "Item/DeleteIcon2.png", "Item/DeleteIcon2Selected.png", () =>
            {
            });
            //deviceMenu = Language.StringByID(R.MyInternationalizationString.uDelete);
            //frame.AddRowMenu(deviceMenu, "Item/DeleteIcon2.png", "Item/DeleteIcon2Selected.png", () =>
            //{
            //});
        }
        #endregion
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonLayout.cs
@@ -64,7 +64,7 @@
            Height = Application.GetRealHeight(58),
            Width = Application.GetRealWidth(101),
            Text = Language.StringByID(R.MyInternationalizationString.Complete),
            TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
            TextColor = Shared.Common.ZigbeeColor.Current.XMOrange,
            TextSize = 14,
        };
        #endregion
@@ -424,9 +424,8 @@
                var dialog = new Dialog { };
                var doorDialog = new Shared.Phone.UserCenter.DoorLock.DoorlockDialog(dialog, Language.StringByID(R.MyInternationalizationString.Tip));
                doorDialog.Show();
                doorDialog.dialogMidFraFrameLayout.Width = Application.GetRealWidth(415);
                doorDialog.dialogMidFraFrameLayout.Height = Application.GetRealHeight(58);
                doorDialog.dialogMidFraFrameLayout.X = Application.GetRealWidth(190);
                doorDialog.dialogMidFraFrameLayout.X = Application.GetRealWidth(0);
                doorDialog.dialogMidFraFrameLayout.Y = Application.GetRealHeight(202);
                doorDialog.dialogMidFraFrameLayout.AddChidren(doorDialog.dialogMidText);
                doorDialog.dialogMidText.Text = Language.StringByID(R.MyInternationalizationString.BindRemoteUnlockDoorlock);
@@ -529,12 +528,12 @@
            var dialog3 = new Dialog { };
            var doorDialog3 = new Shared.Phone.UserCenter.DoorLock.DoorlockDialog(dialog3, Language.StringByID(R.MyInternationalizationString.UnlockRequest));
            doorDialog3.Show();
            doorDialog3.dialogMidFraFrameLayout.Width = Application.GetRealWidth(415);
            doorDialog3.dialogMidFraFrameLayout.Height = Application.GetRealHeight(58);
            doorDialog3.dialogMidFraFrameLayout.X = Application.GetRealWidth(228);
            doorDialog3.dialogMidFraFrameLayout.X = Application.GetRealWidth(0);
            doorDialog3.dialogMidFraFrameLayout.Y = Application.GetRealHeight(202);
            doorDialog3.dialogMidFraFrameLayout.AddChidren(doorDialog3.dialogMidText);
            doorDialog3.dialogMidText.Text = Language.StringByID(R.MyInternationalizationString.SureToOpenDoorLock);
            doorDialog3.dialogMidText.TextAlignment = TextAlignment.Center;
            doorDialog3.dialogMidFraFrameLayout.AddChidren(doorDialog3.dialogMidText);
            doorDialog3.dialogBtnConfirm.Text = Language.StringByID(R.MyInternationalizationString.Confrim);
            doorDialog3.dialogBtnCancel.MouseUpEventHandler += (sender1, e1) =>
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorlockDialog.cs
@@ -48,7 +48,6 @@
        /// </summary>
        public FrameLayout dialogMidFraFrameLayout = new FrameLayout
        {
            Width = Application.GetRealWidth(415),
            Height = Application.GetRealHeight(58),
            X = Application.GetRealWidth(190),
            Y = Application.GetRealHeight(202),
@@ -60,6 +59,8 @@
        public Button dialogMidText = new Button
        {
            TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
            TextSize = 14,
            TextAlignment = TextAlignment.Center,
        };
        /// <summary>
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/EntryStatusPage.cs
@@ -131,7 +131,7 @@
            var btnLine = new FrameLayout()
            {
                Width = Application.GetRealWidth(965),
                Height = Application.GetRealHeight(5),
                Height = 1,
                X = Application.GetRealWidth(58),
                Y = Application.GetRealHeight(81 + 127),
                BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
@@ -152,7 +152,7 @@
                Width = Application.GetRealWidth(222),
                Height = Application.GetRealHeight(58),
                Y = Application.GetRealHeight(35),
                Text = Language.StringByID(R.MyInternationalizationString.MatchPerson),
                Text = Language.StringByID(R.MyInternationalizationString.MatchPerson) + ":",
                TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = 14,
@@ -171,6 +171,16 @@
            };
            personRemarkRemarkFrameLayout.AddChidren(btnMatchPersonContent);
            var btnLine1 = new FrameLayout()
            {
                Width = Application.GetRealWidth(965),
                Height = 1,
                X = Application.GetRealWidth(58),
                Y = Application.GetRealHeight(81 + 127 + 12 + 127),
                BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
            };
            bottomFrameLayout.AddChidren(btnLine1);
            var completeBtn = new Button
            {
                X = Application.GetRealWidth(86),
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSetting.cs
@@ -163,10 +163,9 @@
                if (i == 0)
                {
                    bottomRowLayout.Y = Application.GetRealHeight(220);
                    btnName.Text = Language.StringByID(R.MyInternationalizationString.DeviceRemarkXm);
                    btnNextFrameLayout.Width = btnNext.Width = Application.GetRealWidth(789 - 58);
                    btnNextFrameLayout.X = Application.GetRealWidth(233);
                    btnNext.Text = doorLock.DeviceName;
                    btnName.Text = Language.StringByID(R.MyInternationalizationString.DeviceRemarkXm) + ":";
                    btnNextFrameLayout.Width = btnNext.Width = Application.GetRealWidth(789 - 58 - 20);
                    btnNextFrameLayout.X = Application.GetRealWidth(233 + 20);
                    var btnDeviceNameEditText = new EditText()
                    {
                        X = Application.GetRealWidth(46),
@@ -239,9 +238,8 @@
                {
                    bottomRowLayout.Y = Application.GetRealHeight(481);
                    btnName.Text = Language.StringByID(R.MyInternationalizationString.BelongModel) + ":";
                    btnNextFrameLayout.Width = btnNext.Width = Application.GetRealWidth(789 - 58);
                    btnNextFrameLayout.X = Application.GetRealWidth(233);
                    btnNextFrameLayout.Width = btnNext.Width = Application.GetRealWidth(789 - 58 - 20);
                    btnNextFrameLayout.X = Application.GetRealWidth(253);
                    btnNext.TextAlignment = TextAlignment.CenterLeft;
                    btnNext.Height = Application.GetRealHeight(58);
                    btnNext.Text = doorLock.DeviceName;
@@ -286,7 +284,7 @@
                    btnName.Text = Language.StringByID(R.MyInternationalizationString.DoorLockTime);
                    btnNextFrameLayout.Y = btnName.Y;
                    btnNext.UnSelectedImagePath = "DoorLock/RightIcon.png";
                    btnLine.Visible = false;
                    btnLine.Visible = true;
                    btnLine.Y = Application.GetRealHeight(992);
                }
                int currentIndex = i;
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSettingSub.cs
@@ -145,10 +145,9 @@
                if (i == 0)
                {
                    bottomRowLayout.Y = Application.GetRealHeight(220);
                    btnName.Text = Language.StringByID(R.MyInternationalizationString.DeviceRemarkXm);
                    btnNextFrameLayout.Width = btnNext.Width = Application.GetRealWidth(789 - 58);
                    btnNextFrameLayout.X = Application.GetRealWidth(233);
                    btnNext.Text = doorLock.DeviceName;
                    btnName.Text = Language.StringByID(R.MyInternationalizationString.DeviceRemarkXm) + ":";
                    btnNextFrameLayout.Width = btnNext.Width = Application.GetRealWidth(789 - 58 - 20);
                    btnNextFrameLayout.X = Application.GetRealWidth(233 + 20);
                    var btnDeviceNameEditText = new EditText()
                    {
                        X = Application.GetRealWidth(46),
@@ -220,9 +219,8 @@
                {
                    bottomRowLayout.Y = Application.GetRealHeight(481);
                    btnName.Text = Language.StringByID(R.MyInternationalizationString.BelongModel) + ":";
                    btnNextFrameLayout.Width = btnNext.Width = Application.GetRealWidth(789 - 58);
                    btnNextFrameLayout.X = Application.GetRealWidth(233);
                    btnNextFrameLayout.Width = btnNext.Width = Application.GetRealWidth(789 - 58 - 20);
                    btnNextFrameLayout.X = Application.GetRealWidth(253);
                    btnNext.TextAlignment = TextAlignment.CenterLeft;
                    btnNext.Height = Application.GetRealHeight(58);
                    btnNext.Text = doorLock.DeviceName;
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberFrozenPage.cs
@@ -227,10 +227,23 @@
                        }
                    }
                };
                btnRightFrameLayout.MouseUpEventHandler += eHandler;
                btnRight.MouseUpEventHandler += eHandler;
                RowView.MouseUpEventHandler += eHandler;
                btnText.MouseUpEventHandler += eHandler;
                if (i == 0)
                {
                    btnRightFrameLayout.MouseUpEventHandler += eHandler;
                    btnRight.MouseUpEventHandler += eHandler;
                    RowView.MouseUpEventHandler += eHandler;
                    btnText.MouseUpEventHandler += eHandler;
                }
                else if (i == 1)
                {
                    btnRightFrameLayout.MouseUpEventHandler += eHandler;
                    btnRight.MouseUpEventHandler += eHandler;
                }
                else if (i == 2)
                {
                    btnRightFrameLayout.MouseUpEventHandler += eHandler;
                    btnRight.MouseUpEventHandler += eHandler;
                }
            }
        }
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TimeSettignPage.cs
@@ -350,7 +350,7 @@
                                Height = Application.GetRealHeight(58),
                                Width = Application.GetRealWidth(101),
                                Text = Language.StringByID(R.MyInternationalizationString.Complete),
                                TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
                                TextColor = Shared.Common.ZigbeeColor.Current.XMOrange,
                                TextSize = 14,
                            };
                            this.bottomRadiusFrameLayout.AddChidren(btnOk);
@@ -522,7 +522,7 @@
                                Height = Application.GetRealHeight(58),
                                Width = Application.GetRealWidth(101),
                                Text = Language.StringByID(R.MyInternationalizationString.Complete),
                                TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
                                TextColor = Shared.Common.ZigbeeColor.Current.XMOrange,
                                TextSize = 14,
                            };
                            this.bottomRadiusFrameLayout.AddChidren(btnOk);
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UnLockMethod.cs
@@ -46,17 +46,20 @@
        }
        #region ◆ 变量申明__________________________
        ZigBee.Device.DoorLock doorLock;
        VerticalRefreshLayout bodyView;
        ZigBee.Device.DoorLock doorLock;//当前门锁
        VerticalRefreshLayout bodyView;//刷新View
        Button currentMethod;// 当前选择的方式
        Shared.Phone.UserCenter.MemberInfoRes curAccountObj;
        Shared.Phone.UserCenter.MemberInfoRes curAccountObj;//当前账户
        Button entryStatusPic;
        Button btnPicTip;
        Button btnPicTip1;
        bool isSecondDel;
        FrameLayout blankFrameLayout;
        bool isSecondDel;//是否二次删除
        FrameLayout blankFrameLayout;//空数据显示布局
        #endregion
        /// <summary>
        /// 读取门锁存储的最新数据
        /// </summary>
        void ReadDoorLockUserInfo()
        {
            System.Threading.Tasks.Task.Run(async () =>
@@ -238,6 +241,9 @@
            BlankPicUI();
        }
        /// <summary>
        /// 空数据UI显示
        /// </summary>
        void BlankPicUI()
        {
            blankFrameLayout = new FrameLayout
@@ -334,6 +340,7 @@
                    BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
                };
                bodyView.AddChidren(frameLayoutRow);
                int i = 0;
                foreach (var curUserId in curAccountDoorLockUserList.Keys)
                {
@@ -655,6 +662,20 @@
                    #endregion
                    i++;
                }
                //遮挡RowLayout多余的线条
                for (int j = 0; j < curAccountDoorLockUserList.Keys.Count; j++)
                {
                    var frameLayoutRowLineHide = new FrameLayout()
                    {
                        Height = 10,
                        Width = Application.GetRealWidth(173),
                        X = Application.GetRealWidth(58),
                        Y = (j + 1) * Application.GetRealHeight(145),
                        BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
                    };
                    frameLayoutRow.AddChidren(frameLayoutRowLineHide);
                }
                frameLayoutRow.Height = i * Application.GetRealHeight(150);
            }
        }
@@ -697,6 +718,8 @@
                var rowFrameLayout = new RowLayout()
                {
                    Height = Application.GetRealHeight(150),
                    LineColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
                    X = Application.GetRealWidth(81),
                };
                sidelipVerticalScrolViewLayout.AddChidren(rowFrameLayout);
@@ -704,7 +727,6 @@
                {
                    Width = Application.GetRealWidth(81),
                    Height = Application.GetRealHeight(81),
                    X = Application.GetRealWidth(81),
                    Y = Application.GetRealHeight(55),
                };
                rowFrameLayout.AddChidren(btnAllMethod);
@@ -713,7 +735,7 @@
                {
                    Width = Application.GetRealWidth(311),
                    Height = Application.GetRealHeight(58),
                    X = Application.GetRealWidth(173),
                    X = Application.GetRealWidth(92),
                    Y = Application.GetRealHeight(69),
                    TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
                    TextSize = 14,
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UndistributeDoorlockUserPage.cs
@@ -249,7 +249,7 @@
                var line2 = new Button()
                {
                    Y = rowFrameLayout.Height - 1,
                    X = Application.GetRealWidth(58),
                    X = Application.GetRealWidth(176),
                    Width = Application.GetRealWidth(965),
                    Height = 1,
                    BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
@@ -364,33 +364,35 @@
            var btnMatchUser = new Button
            {
                X = Application.GetRealWidth(446),
                X = Application.GetRealWidth(159),
                Y = Application.GetRealHeight(35),
                Height = Application.GetRealHeight(63),
                Width = Application.GetRealWidth(284),
                Width = Application.GetRealWidth(762),
                Text = Language.StringByID(R.MyInternationalizationString.MatchPerson),
                TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                TextSize = 16,
                TextAlignment = TextAlignment.Center,
            };
            matchUsersFrameLayout.AddChidren(btnMatchUser);
            var btnFinish = new Button
            {
                X = Application.GetRealWidth(919),
                X = Application.GetRealWidth(921),
                Y = Application.GetRealHeight(40),
                Height = Application.GetRealHeight(58),
                Width = Application.GetRealWidth(101),
                Width = Application.GetRealWidth(101 + 81),
                Text = Language.StringByID(R.MyInternationalizationString.Complete),
                TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
                TextColor = Shared.Common.ZigbeeColor.Current.XMOrange,
                TextSize = 14,
                TextAlignment = TextAlignment.CenterLeft,
            };
            matchUsersFrameLayout.AddChidren(btnFinish);
            var btnTopLine = new FrameLayout()
            {
                Height = Application.GetRealHeight(5),
                Height = 1,
                Y = Application.GetRealHeight(138),
                BackgroundColor = Shared.Common.ZigbeeColor.Current.XMGray3,
                BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
            };
            bottomFrameLayout2.AddChidren(btnTopLine);
@@ -644,6 +646,8 @@
                var rowFrameLayout = new RowLayout()
                {
                    Height = Application.GetRealHeight(150),
                    LineColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
                    X = Application.GetRealWidth(81),
                };
                sidelipVerticalScrolViewLayout.AddChidren(rowFrameLayout);
@@ -651,7 +655,6 @@
                {
                    Width = Application.GetRealWidth(81),
                    Height = Application.GetRealHeight(81),
                    X = Application.GetRealWidth(81),
                    Y = Application.GetRealHeight(55),
                };
                rowFrameLayout.AddChidren(btnAllMethod);
@@ -660,7 +663,7 @@
                {
                    Width = Application.GetRealWidth(311),
                    Height = Application.GetRealHeight(58),
                    X = Application.GetRealWidth(173),
                    X = Application.GetRealWidth(92),
                    Y = Application.GetRealHeight(69),
                    TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
                    TextSize = 14,
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs
@@ -117,6 +117,7 @@
                Height = Application.GetRealHeight(1238),
                Width = Application.GetRealWidth(965),
                BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
                Radius = 6,
            };
            this.midFrameLayout.AddChidren(midTopFrameLayout);
@@ -286,12 +287,22 @@
            };
            closeFrameLayout.AddChidren(btnDoorClosePic);
            var btnCurrentTopFrameLayout = new FrameLayout()
            {
                Height = Application.GetRealHeight(50),
                Width = Application.GetRealWidth(965),
                BackgroundColor = ZigbeeColor.Current.XMBlack,
                Y = Application.GetRealHeight(1100),
            };
            midTopFrameLayout.AddChidren(btnCurrentTopFrameLayout);
            var btnCurrentFrameLayout = new FrameLayout()
            {
                Width = Application.GetRealWidth(965),
                Height = Application.GetRealHeight(138),
                Y = Application.GetRealHeight(1100),
                BackgroundColor = ZigbeeColor.Current.XMBlack,
                Radius = 6,
            };
            midTopFrameLayout.AddChidren(btnCurrentFrameLayout);
@@ -320,17 +331,19 @@
            #endregion
            EventHandler<MouseEventArgs> hander1 = async (sender, e) =>
             {
                 if (UserCenterResourse.UserInfo.AuthorityNo != 1)
                 {
                     var result = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockOperateAccess(doorLock, Shared.Common.Config.Instance.Guid);
                     if (result == false)
                     {
                         var result1 = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockUnlockAccess(doorLock, Shared.Common.Config.Instance.Guid);
                         if (result1 == true)
                         {
                             RemoteUnlockRequest(doorLock, action, progressButton, btnDoorLockPic, btnStatus, btnDoorLockTitle);
                             devicNameSecAction += (deviceRename) =>
            {
                openFrameLayout.Enable = false;
                btnDoorOpenPic.Enable = false;
                if (UserCenterResourse.UserInfo.AuthorityNo != 1)
                {
                    var result = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockOperateAccess(doorLock, Shared.Common.Config.Instance.Guid);
                    if (result == false)
                    {
                        var result1 = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockUnlockAccess(doorLock, Shared.Common.Config.Instance.Guid);
                        if (result1 == true)
                        {
                            RemoteUnlockRequest(doorLock, action, progressButton, btnDoorLockPic, btnStatus, btnDoorLockTitle);
                            devicNameSecAction += (deviceRename) =>
                             {
                                 if (!string.IsNullOrEmpty(deviceRename))
                                 {
@@ -340,21 +353,27 @@
                                     deviceUI.CommonDevice.ReSave();
                                 }
                             };
                         }
                         else
                         {
                             new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.NoAccess), Direction = AMPopTipDirection.Down, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                         }
                     }
                     else
                     {
                         new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.AccountIsFreezed), Direction = AMPopTipDirection.Down, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                     }
                 }
                 else
                 {
                     RemoteUnlockRequest(doorLock, action, progressButton, btnDoorLockPic, btnStatus, btnDoorLockTitle);
                     devicNameSecAction += (deviceRename) =>
                            openFrameLayout.Enable = true;
                            btnDoorOpenPic.Enable = true;
                        }
                        else
                        {
                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.NoAccess), Direction = AMPopTipDirection.Down, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                            openFrameLayout.Enable = true;
                            btnDoorOpenPic.Enable = true;
                        }
                    }
                    else
                    {
                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.AccountIsFreezed), Direction = AMPopTipDirection.Down, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                        openFrameLayout.Enable = true;
                        btnDoorOpenPic.Enable = true;
                    }
                }
                else
                {
                    RemoteUnlockRequest(doorLock, action, progressButton, btnDoorLockPic, btnStatus, btnDoorLockTitle);
                    devicNameSecAction += (deviceRename) =>
                     {
                         if (!string.IsNullOrEmpty(deviceRename))
                         {
@@ -364,8 +383,10 @@
                             deviceUI.CommonDevice.ReSave();
                         }
                     };
                 }
             };
                    openFrameLayout.Enable = true;
                    btnDoorOpenPic.Enable = true;
                }
            };
            openFrameLayout.MouseUpEventHandler += hander1;
            btnDoorOpenPic.MouseUpEventHandler += hander1;
            EventHandler<MouseEventArgs> hander2 = (sender, e) =>
ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WiredGatewaySearchForm.cs
@@ -394,6 +394,8 @@
                {
                    //需要重新绑定
                    this.dicZbGatewayDiv[listId[i]] = 2;
                    //获取到了新网关
                    this.newGatewayGetting = true;
                }
                if (mode == GatewayBindMode.First)
@@ -415,29 +417,7 @@
        public override void CloseFormBefore()
        {
            ZigBee.Common.Application.IsSearchingGateway = false;
            //断开没有执行绑定的网关的mqtt
            var list = new List<ZbGateway>();
            for (int i = 0; i < ZbGateway.GateWayList.Count; i++)
            {
                if (HdlGatewayLogic.Current.IsGatewayExist(ZbGateway.GateWayList[i]) == false)
                {
                    list.Add(ZbGateway.GateWayList[i]);
                }
            }
            if (list.Count > 0)
            {
                foreach (var way in list)
                {
                    ZbGateway.GateWayList.RemoveAll((obj) => HdlGatewayLogic.Current.GetGatewayId(obj) == HdlGatewayLogic.Current.GetGatewayId(way));
                    way.DisConnectLocalMqttClient("Search");
                }
            }
            if (UserCenterResourse.listActionFormId.Contains("UserMainForm") == false)
            {
                //刷新主页
                UserView.UserPage.Instance.Fresh();
            }
            base.CloseFormBefore();
        }
ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WirelessApSearchForm.cs
@@ -382,6 +382,8 @@
                {
                    //需要重新绑定
                    this.dicZbGatewayDiv[wayId] = 2;
                    //获取到了新网关
                    this.newGatewayGetting = true;
                }
                if (mode == GatewayBindMode.First)
@@ -403,14 +405,7 @@
        public override void CloseFormBefore()
        {
            ZigBee.Common.Application.IsSearchingGateway = false;
            //停止Wi-Fi配网
            HdlWifiLogic.Current.StopSmartConnection();
            if (UserCenterResourse.listActionFormId.Contains("UserMainForm") == false)
            {
                //刷新主页
                UserView.UserPage.Instance.Fresh();
            }
            base.CloseFormBefore();
        }
ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WirelessUdpSearchForm.cs
@@ -384,6 +384,8 @@
                {
                    //需要重新绑定
                    this.dicZbGatewayDiv[wayId] = 2;
                    //获取到了新网关
                    this.newGatewayGetting = true;
                }
                if (mode == GatewayBindMode.First)
@@ -408,11 +410,6 @@
            //停止Wi-Fi配网
            HdlWifiLogic.Current.StopSmartConnection();
            if (UserCenterResourse.listActionFormId.Contains("UserMainForm") == false)
            {
                //刷新主页
                UserView.UserPage.Instance.Fresh();
            }
            base.CloseFormBefore();
        }
ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayInfoEditorForm.cs
@@ -395,21 +395,32 @@
        /// </summary>
        /// <param name="strWayId"></param>
        /// <param name="row"></param>
        private async void DeleteGateway(string strWayId)
        private void DeleteGateway(string strWayId)
        {
            //删除云端网关
            bool result = await HdlGatewayLogic.Current.DeleteGateway(strWayId);
            if (result == false)
            HdlThreadLogic.Current.RunThread(async () =>
            {
                return;
            }
                //打开进度条
                this.ShowProgressBar();
            if (strWayId == GatewayResourse.AppOldSelectGatewayId)
            {
                HdlGatewayLogic.Current.SaveGatewayIdToLocation(string.Empty);
            }
            //关闭自身
            this.CloseForm();
                //删除云端网关
                bool result = await HdlGatewayLogic.Current.DeleteGateway(strWayId);
                //关闭进度条
                this.CloseProgressBar();
                if (result == false)
                {
                    return;
                }
                if (strWayId == GatewayResourse.AppOldSelectGatewayId)
                {
                    HdlGatewayLogic.Current.SaveGatewayIdToLocation(string.Empty);
                }
                HdlThreadLogic.Current.RunMain(() =>
                {
                    //关闭自身
                    this.CloseForm();
                });
            });
        }
        #endregion
ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayProductInfoForm.cs
@@ -148,6 +148,7 @@
                {
                    //如果这个网关还没有绑定,则直接关闭界面
                    this.CloseForm();
                    return;
                }
                //完成按钮按下
                this.FinishButtonClick(btnGateName.Text);
ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewaySearchListForm.cs
@@ -177,5 +177,22 @@
        }
        #endregion
        #region ■ 界面关闭___________________________
        /// <summary>
        /// 界面关闭
        /// </summary>
        public override void CloseFormBefore()
        {
            if (UserCenterResourse.listActionFormId.Contains("UserMainForm") == false)
            {
                //刷新主页
                UserView.UserPage.Instance.Fresh();
            }
            base.CloseFormBefore();
        }
        #endregion
    }
}
ZigbeeApp/Shared/Phone/UserCenter/HdlBackup/HdlAutoBackupForm.cs
@@ -99,7 +99,7 @@
            bodyFrameLayout.AddChidren(btnRemind);
            btnRemind.ButtonClickEvent += (sender, e) =>
            {
                HdlAutoBackupLogic.SaveBackupNotPrompted(false, 1);
                HdlAutoBackupLogic.SaveBackupNotPrompted(false, 3);
                this.CloseForm();
            };
        }
ZigbeeApp/Shared/Phone/UserCenter/HideOption/HideOptionGatewayListForm.cs
New file
@@ -0,0 +1,127 @@
using System;
using System.Collections.Generic;
using System.Text;
using ZigBee.Device;
namespace Shared.Phone.UserCenter.HideOption
{
    /// <summary>
    /// 隐匿功能的网关列表界面
    /// </summary>
    public class HideOptionGatewayListForm : EditorCommonForm
    {
        #region ■ 变量声明___________________________
        /// <summary>
        /// 列表控件
        /// </summary>
        private VerticalListControl listview = null;
        #endregion
        #region ■ 初始化_____________________________
        /// <summary>
        /// 画面显示(底层会固定调用此方法,借以完成画面创建)
        /// </summary>
        /// <param name="i_GatewayDiv">网关区分,1:本地网关 2:广播搜到的网关</param>
        public void ShowForm(int i_GatewayDiv)
        {
            if (i_GatewayDiv == 1)
            {
                //设置标题信息
                base.SetTitleText("本地网关");
            }
            else
            {
                //设置标题信息
                base.SetTitleText("广播搜到的网关");
            }
            //初始化中部控件
            this.InitMiddleFrame(i_GatewayDiv);
        }
        /// <summary>
        /// 初始化中部控件
        /// </summary>
        private void InitMiddleFrame(int i_GatewayDiv)
        {
            //清空bodyFrame
            this.ClearBodyFrame();
            listview = new VerticalListControl(29);
            listview.Height = bodyFrameLayout.Height;
            listview.BackgroundColor = UserCenterColor.Current.White;
            bodyFrameLayout.AddChidren(listview);
            HdlThreadLogic.Current.RunMainInThread(() =>
            {
                //设定中部信息
                this.SetMiddleFrameInfo(i_GatewayDiv);
            });
        }
        /// <summary>
        /// 设定中部信息
        /// </summary>
        private void SetMiddleFrameInfo(int i_GatewayDiv)
        {
            List<ZbGateway> listway = null;
            if (i_GatewayDiv == 1)
            {
                //获取本地全部网关对象
                listway = HdlGatewayLogic.Current.GetAllLocalGateway();
            }
            else
            {
                listway = ZbGateway.GateWayList;
            }
            for (int i = 0; i < listway.Count; i++)
            {
                //添加行
                this.AddRowLayout(listway[i], i != listway.Count - 1);
            }
            //调整列表控件的高度
            this.listview.AdjustRealHeight(Application.GetRealHeight(23));
        }
        #endregion
        #region ■ 添加网关行_________________________
        /// <summary>
        /// 添加行
        /// </summary>
        /// <param name="i_gateway">i_gateway</param>
        /// <param name="addLine">是否添加底线</param>
        private void AddRowLayout(ZbGateway i_gateway, bool addLine)
        {
            //网关控件
            var gatewayRow = new GatewayRowControl(i_gateway, listview.rowSpace / 2);
            listview.AddChidren(gatewayRow);
            gatewayRow.InitControl(81);
            if (addLine == true)
            {
                gatewayRow.frameTable.AddBottomLine();
            }
            //定位
            var btnPosition = new NormalViewControl(Application.GetRealWidth(184), gatewayRow.Height, false);
            btnPosition.BackgroundColor = 0xff4a4a4a;
            btnPosition.TextAlignment = TextAlignment.Center;
            btnPosition.TextColor = UserCenterColor.Current.White;
            btnPosition.TextSize = 12;
            btnPosition.TextID = R.MyInternationalizationString.uFixedPosition;
            gatewayRow.AddRightView(btnPosition);
            btnPosition.ButtonClickEvent += (sender, e) =>
            {
                //发送定位命令
                HdlGatewayLogic.Current.SetFixedPositionCommand(i_gateway);
            };
        }
        #endregion
    }
}
ZigbeeApp/Shared/Phone/UserCenter/HideOption/HideOptionMainForm.cs
New file
@@ -0,0 +1,136 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Shared.Phone.UserCenter.HideOption
{
    /// <summary>
    /// 隐匿功能的主界面
    /// </summary>
    public class HideOptionMainForm : EditorCommonForm
    {
        #region ■ 变量声明___________________________
        /// <summary>
        /// 列表控件
        /// </summary>
        private VerticalListRefreshControl listView = null;
        #endregion
        #region ■ 初始化_____________________________
        /// <summary>
        /// 画面显示(底层会固定调用此方法,借以完成画面创建)
        /// </summary>
        public void ShowForm()
        {
            //设置头部信息
            base.SetTitleText("隐匿主界面");
            listView = new VerticalListRefreshControl(23);
            listView.BackgroundColor = UserCenterColor.Current.White;
            listView.Height = bodyFrameLayout.Height;
            bodyFrameLayout.AddChidren(listView);
            listView.BeginHeaderRefreshingAction += () =>
            {
                //初始化中部信息
                this.InitMiddleFrame();
                listView.EndHeaderRefreshing();
            };
            //初始化中部信息
            this.InitMiddleFrame();
        }
        /// <summary>
        /// 初始化中部信息
        /// </summary>
        private void InitMiddleFrame()
        {
            listView.RemoveAll();
            this.AddRowControl("当前身份", 400, UserCenterResourse.UserInfo.AuthorityText, 400);
            this.AddRowControl("住宅分享", 400, Common.Config.Instance.Home.IsOthreShare == true ? "是" : "否", 400);
            this.AddRowControl("账号类型", 400, Common.Config.Instance.Home.AccountType.ToString(), 400);
            this.AddRowControl("是否远程连接", 400, ZigBee.Device.ZbGateway.IsRemote == true ? "是" : "否", 400);
            int count = HdlGatewayLogic.Current.GetAllLocalGateway().Count;
            var row1 = new FrameRowControl(listView.rowSpace / 2);
            listView.AddChidren(row1);
            row1.UseClickStatu = false;
            row1.AddLeftCaption("本地网关", 400);
            if (count > 0)
            {
                row1.UseClickStatu = true;
                row1.AddRightArrow();
                row1.ButtonClickEvent += (sender, e) =>
                {
                    var form = new HideOptionGatewayListForm();
                    form.AddForm(1);
                };
            }
            row1.AddMostRightView(count + "个", 400);
            row1.AddBottomLine();
            count = ZigBee.Device.ZbGateway.GateWayList.Count;
            row1 = new FrameRowControl(listView.rowSpace / 2);
            listView.AddChidren(row1);
            row1.UseClickStatu = false;
            row1.AddLeftCaption("广播搜到的网关", 400);
            if (count > 0)
            {
                row1.UseClickStatu = true;
                row1.AddRightArrow();
                row1.ButtonClickEvent += (sender, e) =>
                {
                    var form = new HideOptionGatewayListForm();
                    form.AddForm(2);
                };
            }
            row1.AddMostRightView(count + "个", 400);
            row1.AddBottomLine();
            row1 = new FrameRowControl(listView.rowSpace / 2);
            listView.AddChidren(row1);
            row1.AddLeftCaption("上传Log", 500);
            row1.AddRightArrow();
            row1.ButtonClickEvent += (sender, e) =>
            {
                this.ShowMassage(ShowMsgType.Confirm, "是否上传Log文件", () =>
                {
                    HdlThreadLogic.Current.RunThread(async () =>
                    {
                        await HdlBackupLogic.Current.UpLoadLogBackup();
                    });
                });
            };
            listView.AdjustRealHeight(Application.GetRealHeight(23));
        }
        /// <summary>
        /// 添加行
        /// </summary>
        /// <param name="caption"></param>
        /// <param name="width1"></param>
        /// <param name="viewText"></param>
        /// <param name="width2"></param>
        private FrameRowControl AddRowControl(string caption, int width1, string viewText, int width2)
        {
            var row1 = new FrameRowControl(listView.rowSpace / 2);
            listView.AddChidren(row1);
            row1.AddLeftCaption(caption, width1);
            row1.AddMostRightView(viewText, width2);
            row1.AddBottomLine();
            row1.UseClickStatu = false;
            return row1;
        }
        #endregion
    }
}
ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceListForm.cs
@@ -117,6 +117,15 @@
                    listResidenceSort.Add(pageData.PageData[i].Id);
                }
            }
            for (int i = 0; i < listResidenceSort.Count; i++)
            {
                //移除掉不存在了的顺序
                if (dicData.ContainsKey(listResidenceSort[i]) == false)
                {
                    listResidenceSort.RemoveAt(i);
                    i--;
                }
            }
            //保存顺序
            string fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.ResidenceSortFile);
            UserCenterLogic.SaveFileContent(fullName, listResidenceSort);
@@ -132,6 +141,10 @@
                this.dicResidenceData = new Dictionary<string, Common.ResponseEntity.ResidenceObj>();
                for (int i = 0; i < listResidenceSort.Count; i++)
                {
                    if (dicData.ContainsKey(listResidenceSort[i]) == false)
                    {
                        continue;
                    }
                    var info = dicData[listResidenceSort[i]];
                    if (info.IsOthreShare == false)
                    {
@@ -206,12 +219,13 @@
                    {
                        HdlThreadLogic.Current.RunThread(async () =>
                        {
                            ProgressBar.Show();
                            this.ShowProgressBar();
                            Config.Instance.HomeId = info.Id;
                            Global.CreateHomeDirectory(info.Id);
                            Config.Instance.Save();
                            //刷新个人中心的内存及线程
                            await UserCenterLogic.InitUserCenterMenmoryAndThread();
                            await UserCenterLogic.InitUserCenterMenmoryAndThread(false);
                            Room.InitAllRoom();
ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceManagementForm.cs
@@ -601,10 +601,10 @@
            Pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
            bool result = await UserCenterLogic.GetResultStatuByRequestHttps("App/DelHome", true, Pra);
            //关闭进度条
            this.CloseProgressBar();
            if (result == false)
            {
                //关闭进度条
                this.CloseProgressBar();
                return;
            }
@@ -636,8 +636,9 @@
            Common.Config.Instance.HomeId = myHouse.Id;
            Common.Global.CreateHomeDirectory(myHouse.Id);
            Common.Config.Instance.Save();
            //刷新个人中心的内存及线程
            await UserCenterLogic.InitUserCenterMenmoryAndThread();
            await UserCenterLogic.InitUserCenterMenmoryAndThread(false);
            Common.Room.InitAllRoom();
            //删除住宅
ZigbeeApp/Shared/Phone/UserCenter/Safety/CoercePswAddContactForm.cs
@@ -44,6 +44,11 @@
            {
                Contacts.ContactAction = (phoneName, phoneNum) =>
                {
                    //手机号检测
                    if (this.CheckPhoneNumber("86", phoneNum, phoneName) == false)
                    {
                        return;
                    }
                    //保存联系人
                    this.SaveCoercePhoneNumber("86", phoneNum, phoneName);
                };
ZigbeeApp/Shared/Phone/UserCenter/Safety/CoercePswEditorForm.cs
@@ -27,6 +27,10 @@
        /// 列表的桌布控件
        /// </summary>
        private FrameLayout frameTable = null;
        /// <summary>
        /// 当前的联系人列表
        /// </summary>
        private List<ZigBee.Device.Safeguard.PushTargetInfo> listPhoneData = null;
        #endregion
@@ -150,7 +154,7 @@
                HdlThreadLogic.Current.RunMain(() =>
                {
                    var listPhoneData = new List<ZigBee.Device.Safeguard.PushTargetInfo>();
                    this.listPhoneData = new List<ZigBee.Device.Safeguard.PushTargetInfo>();
                    //联系人
                    var rowContact = new FrameRowControl(listview.rowSpace / 2);
                    rowContact.UseClickStatu = false;
@@ -257,6 +261,16 @@
            if (result == true)
            {
                rowContact.RemoveFromParent();
                //移除缓存
                string checkKeys = areaCode + "-" + phone;
                for (int i = 0; i < this.listPhoneData.Count; i++)
                {
                    if (listPhoneData[i].PushNumber == checkKeys)
                    {
                        listPhoneData.RemoveAt(i);
                    }
                }
            }
        }
ZigbeeApp/Shared/Phone/UserCenter/Safety/SafetyManagementMainForm.cs
@@ -65,30 +65,31 @@
        /// </summary>
        private void InitTabSwitchControl()
        {
            var frameBack = new FrameLayout();
            frameBack.Height = Application.GetRealHeight(1300);
            frameBack.Y = Application.GetRealHeight(444);
            frameBack.BackgroundColor = 0xa1ffffff;
            frameBack.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
            bodyFrameLayout.AddChidren(frameBack);
            //桌布控件
            frameLayoutDraw = new FrameLayout();
            frameLayoutDraw.Y = Application.GetRealHeight(590);
            frameLayoutDraw.Height = bodyFrameLayout.Height - Application.GetRealHeight(590);
            bodyFrameLayout.AddChidren(frameLayoutDraw);
            //临时的一个东西,用来计算真实值而已
            var btnTemp = new NormalViewControl(100, false);
            int realLogWidth = btnTemp.GetRealWidthByText(16, Language.StringByID(R.MyInternationalizationString.uSecurityLog));
            int realSensorWidth = btnTemp.GetRealWidthByText(16, Language.StringByID(R.MyInternationalizationString.uSensorStatu));
            btnTemp = null;
            frameLayoutDraw.Y = Application.GetRealHeight(181);
            frameLayoutDraw.Height = frameBack.Height - Application.GetRealHeight(181);
            frameBack.AddChidren(frameLayoutDraw);
            //安防记录(点击范围有点小,需要扩大它的点击范围)
            var frameLog = new FrameLayoutControl();
            frameLog.UseClickStatu = false;
            frameLog.Height = Application.GetRealHeight(123);
            frameLog.Width = realLogWidth;
            frameLog.X = Application.GetRealWidth(489) - realLogWidth;
            frameLog.Y = Application.GetRealHeight(467);
            bodyFrameLayout.AddChidren(frameLog);
            frameLog.Width = Application.GetRealWidth(273);
            frameLog.X = Application.GetRealWidth(259);
            frameLog.Y = Application.GetRealHeight(58);
            frameBack.AddChidren(frameLog);
            //标题
            var btnLog = new NormalViewControl(100, 63, true);
            btnLog.Width = realLogWidth;
            btnLog.TextAlignment = TextAlignment.CenterRight;
            btnLog.Width = frameLog.Width;
            btnLog.TextAlignment = TextAlignment.Center;
            btnLog.TextID = R.MyInternationalizationString.uSecurityLog;
            btnLog.TextColor = UserCenterColor.Current.TextGrayColor3;
            frameLog.AddChidren(btnLog, ChidrenBindMode.BindEventOnly);
@@ -105,15 +106,16 @@
            var frameSensor = new FrameLayoutControl();
            frameSensor.UseClickStatu = false;
            frameSensor.Height = frameLog.Height;
            frameSensor.Width = realSensorWidth;
            frameSensor.X = Application.GetRealWidth(550);
            frameSensor.Width = frameLog.Width;
            frameSensor.X = frameLog.Right;
            frameSensor.Y = frameLog.Y;
            bodyFrameLayout.AddChidren(frameSensor);
            frameBack.AddChidren(frameSensor);
            //标题
            var btnSensor = new NormalViewControl(100, 63, true);
            btnSensor.Width = realSensorWidth;
            btnSensor.Width = frameSensor.Width;
            btnSensor.TextID = R.MyInternationalizationString.uSensorStatu;
            btnSensor.TextSize = 16;
            btnSensor.TextAlignment = TextAlignment.Center;
            btnSensor.TextColor = UserCenterColor.Current.TextColor2;
            frameSensor.AddChidren(btnSensor, ChidrenBindMode.BindEventOnly);
            //底线
ZigbeeApp/Shared/Phone/UserCenter/Suggestion/FeedbackForm.cs
@@ -74,6 +74,7 @@
            txtInput.PlaceholderTextColor = UserCenterColor.Current.TextGrayColor1;
            txtInput.PlaceholderText = Language.StringByID(R.MyInternationalizationString.uYouSuggestionMsg);
            frameInput.AddChidren(txtInput);
            txtInput.InitIosPlaceholderUILabelWithHeight(Application.GetRealHeight(60));
            txtInput.TextChangeEventHandler += (sender, txtvalue) =>
            {
                if (this.suggestionCount <= 0)
ZigbeeApp/Shared/Phone/UserCenter/UserMain/SecondAuthenticationForm.cs
@@ -90,13 +90,18 @@
            }
            //二次安全验证将用于下列操作
            var btnTitle = new NormalViewControl(800, 49, true);
            var btnTitle = new NormalViewControl(800, 50, true);
            btnTitle.X = ControlCommonResourse.XXLeft;
            btnTitle.Y = frameTop.Bottom + Application.GetRealHeight(35);
            btnTitle.Y = frameTop.Bottom + Application.GetRealHeight(34);
            btnTitle.TextSize = 12;
            btnTitle.TextColor = UserCenterColor.Current.TextGrayColor3;
            btnTitle.TextID = R.MyInternationalizationString.uSecondarySecurityWillBeUsedForTheFollowingOperations;
            bodyFrameLayout.AddChidren(btnTitle);
            btnTitle.ButtonClickEvent += (sender, e) =>
            {
                //隐匿功能点击
                this.HideOptionClick(btnTitle);
            };
            var frameButtom = new FrameListControl(12);
            frameButtom.Y = btnTitle.Bottom + Application.GetRealHeight(23);
@@ -321,5 +326,52 @@
        }
        #endregion
        #region ■ 隐匿功能___________________________
        /// <summary>
        /// 点击合计
        /// </summary>
        private int clickCount = 0;
        /// <summary>
        /// 点击的那瞬间的时间
        /// </summary>
        private DateTime clickTime;
        /// <summary>
        /// 隐匿功能
        /// </summary>
        private void HideOptionClick(NormalViewControl btnTitle)
        {
            if (clickCount == 0)
            {
                clickTime = DateTime.Now;
            }
            clickCount++;
            if (clickCount >= 10)
            {
                if ((DateTime.Now - clickTime).TotalSeconds > 3)
                {
                    clickCount = 0;
                    return;
                }
                btnTitle.CanClick = false;
                HdlThreadLogic.Current.RunThread(async () =>
                {
                    this.ShowProgressBar();
                    var result = await HdlBackupLogic.Current.LoadHideOption();
                    this.CloseProgressBar();
                    if (result == true)
                    {
                        this.ShowMassage(ShowMsgType.Tip, "刷新隐匿配置成功");
                    }
                    else
                    {
                        this.ShowMassage(ShowMsgType.Tip, "刷新隐匿配置失败");
                    }
                });
            }
        }
        #endregion
    }
}
ZigbeeApp/Shared/Phone/UserCenter/UserMain/UserMainForm.cs
@@ -11,9 +11,13 @@
        #region ■ 变量声明___________________________
        /// <summary>
        /// 白色背景框
        /// 主菜单背景框
        /// </summary>
        private FrameLayout frameWhiteBack = null;
        private FrameLayout frameMainMenuBack = null;
        /// <summary>
        /// 其他菜单的容器控件
        /// </summary>
        private FrameListControl frameOtherMenuContr = null;
        /// <summary>
        /// 用户名字
        /// </summary>
@@ -174,21 +178,21 @@
        /// <param name="frameWhite">背景</param>
        private void InitMainMenuInfoControl(FrameLayout frameWhite)
        {
            if (frameWhiteBack != null)
            if (frameMainMenuBack != null)
            {
                frameWhiteBack.RemoveAll();
                frameMainMenuBack.RemoveAll();
            }
            else
            {
                //背景框
                frameWhiteBack = new FrameLayout();
                frameWhiteBack.Y = Application.GetRealHeight(288);
                frameWhiteBack.Gravity = Gravity.CenterHorizontal;
                frameWhiteBack.Height = Application.GetRealHeight(371);
                frameWhiteBack.Width = frameWhite.Width - Application.GetRealWidth(29 * 2);
                frameWhiteBack.Radius = 10;
                frameWhiteBack.BackgroundColor = UserCenterColor.Current.White;
                frameWhite.AddChidren(frameWhiteBack);
                frameMainMenuBack = new FrameLayout();
                frameMainMenuBack.Y = Application.GetRealHeight(288);
                frameMainMenuBack.Gravity = Gravity.CenterHorizontal;
                frameMainMenuBack.Height = Application.GetRealHeight(371);
                frameMainMenuBack.Width = frameWhite.Width - Application.GetRealWidth(29 * 2);
                frameMainMenuBack.Radius = 10;
                frameMainMenuBack.BackgroundColor = UserCenterColor.Current.White;
                frameWhite.AddChidren(frameMainMenuBack);
            }
            //标题:管理
@@ -197,7 +201,7 @@
            frameTitle.Width = Application.GetRealWidth(907);
            frameTitle.Height = Application.GetRealHeight(121);
            frameTitle.Gravity = Gravity.CenterHorizontal;
            frameWhiteBack.AddChidren(frameTitle);
            frameMainMenuBack.AddChidren(frameTitle);
            var btnTitle = new NormalViewControl(500, 60, true);
            btnTitle.Gravity = Gravity.CenterVertical;
            btnTitle.TextID = R.MyInternationalizationString.uManagement;
@@ -208,7 +212,7 @@
            frameTitle.AddChidren(btnLine);
            //创建全部的主菜单控件
            this.CreatAllMainMenuControl(frameWhiteBack);
            this.CreatAllMainMenuControl(frameMainMenuBack);
        }
        /// <summary>
@@ -340,16 +344,23 @@
        /// <param name="frameWhite">背景</param>
        private void InitOtherMenuControl(FrameLayout frameWhite)
        {
            var frameList = new FrameListControl(26);
            frameList.Y = Application.GetRealHeight(698);
            frameList.Height = ControlCommonResourse.ListViewRowHeight * 3 + Application.GetRealHeight(26 * 3);
            frameWhite.AddChidren(frameList);
            if (this.frameOtherMenuContr != null)
            {
                frameOtherMenuContr.RemoveAll();
            }
            else
            {
                frameOtherMenuContr = new FrameListControl(26);
                frameOtherMenuContr.Y = Application.GetRealHeight(698);
                frameOtherMenuContr.Height = ControlCommonResourse.ListViewRowHeight * 4 + Application.GetRealHeight(26 * 4);
                frameWhite.AddChidren(frameOtherMenuContr);
            }
            if (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2)
            {
                //数据备份
                var rowback = new FrameRowControl(frameList.rowSpace / 2);
                frameList.AddChidren(rowback);
                var rowback = new FrameRowControl(frameOtherMenuContr.rowSpace / 2);
                frameOtherMenuContr.AddChidren(rowback);
                //向右图标
                var btnBackRight = rowback.AddRightArrow();
                btnBackRight.X -= ControlCommonResourse.XXLeft / 2;
@@ -371,8 +382,8 @@
            }
            //意见反馈
            var rowSuggestion = new FrameRowControl(frameList.rowSpace / 2);
            frameList.AddChidren(rowSuggestion);
            var rowSuggestion = new FrameRowControl(frameOtherMenuContr.rowSpace / 2);
            frameOtherMenuContr.AddChidren(rowSuggestion);
            //向右图标
            var btnSuRight = rowSuggestion.AddRightArrow();
            btnSuRight.X -= ControlCommonResourse.XXLeft / 2;
@@ -393,8 +404,8 @@
            };
            //关于我们
            var rowAbount = new FrameRowControl(frameList.rowSpace / 2);
            frameList.AddChidren(rowAbount);
            var rowAbount = new FrameRowControl(frameOtherMenuContr.rowSpace / 2);
            frameOtherMenuContr.AddChidren(rowAbount);
            //向右图标
            var btnAbountRight = rowAbount.AddRightArrow();
            btnAbountRight.X -= ControlCommonResourse.XXLeft / 2;
@@ -413,6 +424,31 @@
                var form = new Abount.AbountForm();
                form.AddForm();
            };
            if (UserCenterResourse.HideOption.CenterHideMenu == 1)
            {
                //隐匿菜单
                var rowHide = new FrameRowControl(frameOtherMenuContr.rowSpace / 2);
                frameOtherMenuContr.AddChidren(rowHide);
                //向右图标
                var btnHideRight = rowHide.AddRightArrow();
                btnHideRight.X -= ControlCommonResourse.XXLeft / 2;
                //图标
                var btnHideIcon = rowHide.AddLeftIcon();
                btnHideIcon.X -= ControlCommonResourse.XXLeft / 2;
                btnHideIcon.UnSelectedImagePath = "Center/Abount.png";
                //底线
                var btnHideLine = rowHide.AddBottomLine();
                btnHideLine.X -= ControlCommonResourse.XXLeft / 2;
                //隐匿菜单View
                var btnHideView = rowHide.AddLeftCaption("隐匿菜单", 300);
                btnHideView.X -= ControlCommonResourse.XXLeft / 2;
                rowHide.ButtonClickEvent += (sender, e) =>
                {
                    var from = new HideOption.HideOptionMainForm();
                    from.AddForm();
                };
            }
        }
        #endregion
@@ -454,7 +490,9 @@
            this.msgControl?.RefreshStatu();
            //初始化主菜单的控件
            this.InitMainMenuInfoControl(frameWhiteBack);
            this.InitMainMenuInfoControl(null);
            //初始化其他菜单的控件
            this.InitOtherMenuControl(null);
            return 1;
        }
ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs
@@ -6,6 +6,7 @@
using Shared.Phone.Device.CommonForm;
using Shared.Phone.UserCenter.DoorLock;
using System.Timers;
using Shared.Phone.Device.DeviceLogic;
namespace Shared.Phone.UserView
{
@@ -475,7 +476,7 @@
                var tempHomeBtn = send as Button;
                if (Config.Instance.HomeFilePathList.Count == 0)
                {
                    var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.CurrentlyTheUserIshHouseIsEmptyPleaseBuildANewHouseFirst), Language.StringByID(R.MyInternationalizationString.Close), Language.StringByID(R.MyInternationalizationString.OK));
                    var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.CurrentlyTheUserIshHouseIsEmptyPleaseBuildANewHouseFirst), Language.StringByID(R.MyInternationalizationString.Close), Language.StringByID(R.MyInternationalizationString.Confrim));
                    alert.Show();
                    alert.ResultEventHandler += (senderHouse, eHouse) =>
                    {
@@ -502,7 +503,7 @@
                        Y = Application.GetRealHeight(248),
                        Width = Application.GetMinRealAverage(449),
                        Height = Application.GetMinRealAverage(478),
                        UnSelectedImagePath = "Item/SelectHouse"
                        UnSelectedImagePath = "Item/SelectHouse.png"
                    };
                    closeBGview.AddChidren(bg);
@@ -510,8 +511,8 @@
                    {
                        X = Application.GetRealWidth(35),
                        Y = Application.GetRealHeight(271),
                        Height = Application.GetRealHeight(449),
                        Width = Application.GetRealWidth(440),
                        Height = Application.GetMinRealAverage(449),
                        Width = Application.GetMinRealAverage(440),
                        Radius = CommonPage.BigFormRadius,
                        BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
                    };
@@ -623,23 +624,25 @@
            //消息
            messageBtn.MouseUpEventHandler += (send, e) =>
            {
            };
            #endregion
            if (CanBindGateway() == false)
            {
                var roomPageView = new PageLayout()
                var roomPageView = new HorizontalPages()
                {
                    Y = Application.GetRealHeight(302),
                    Width = Application.GetRealWidth(CommonPage.AppRealWidth - CommonPage.XLeft * 2),
                    Height = Application.GetMinRealAverage(roomPageView_Height),
                    Radius = CommonPage.BigFormRadius,
                    Gravity = Gravity.CenterHorizontal,
                    IsShowPoint = false
                    Width = Application.GetRealWidth(CommonPage.AppRealWidth),
                    Height = Application.GetRealHeight(478),
                };
                AddChidren(roomPageView);
                //与屏幕边框的边距
                roomPageView.RowPadding = Application.GetRealWidth(181);
                //两个page之间的间距
                roomPageView.PagePadding = Application.GetRealWidth(69);
                //当前房间
                //Room.CurrentRoom = Room.CurrentRoom == null ? Room.Lists[0] : Room.CurrentRoom;
@@ -647,50 +650,12 @@
                Room.CurrentRoom = rList[0];
                foreach (var room in rList)
                {
                    var roomBackView = new FrameLayout()
                    var roomView = new Device.CommonForm.RoomView(0, 0);
                    roomPageView.AddChidren(roomView);
                    roomView.Init(room);
                    roomView.action += () =>
                    {
                        BackgroundImagePath = room.BackgroundImage
                    };
                    roomPageView.AddChidren(roomBackView);
                    var roomBG = new Button()
                    {
                        UnSelectedImagePath = "Room/HomeBG.png",
                        //UnSelectedImagePath = room.BackgroundImage
                    };
                    roomBackView.AddChidren(roomBG);
                    var roomName = new Button()
                    {
                        X = Application.GetRealWidth(20),
                        Y = Application.GetRealHeight(20),
                        Width = Application.GetRealWidth(500),
                        Height = Application.GetRealHeight(80),
                        Text = room.Name,
                        TextAlignment = TextAlignment.CenterLeft,
                        TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
                        TextSize = 18,
                    };
                    roomBackView.AddChidren(roomName);
                    var roomListBtn = new Device.CommonForm.SelectedStatuButton()
                    {
                        X = roomPageView.Width - Application.GetRealWidth(100 + 20),
                        Y = Application.GetRealHeight(20),
                        Width = Application.GetMinRealAverage(100),
                        Height = Application.GetMinRealAverage(100),
                        UnSelectedImagePath = "Item/List.png",
                    };
                    roomBackView.AddChidren(roomListBtn);
                    roomListBtn.MouseUpEventHandler += (send, e) =>
                    {
                        CommonPage.Instance.IsDrawerLockMode = true;
                        var editRoom = new Device.Room.EditRoom();
                        HomePage.Instance.AddChidren(editRoom);
                        HomePage.Instance.PageIndex += 1;
                        editRoom.Show(room);
                        editRoom.action += () =>
                        {
                            Show();
                        };
                        Show();
                    };
                }
@@ -714,7 +679,8 @@
                    TextColor = ZigbeeColor.Current.GXCTextGrayColor3,
                    SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor,
                    TextID = R.MyInternationalizationString.Scence,
                    IsSelected = false
                    IsSelected = true,
                    TextSize=16
                };
                functionSceneView.AddChidren(sceneBtn);
@@ -728,7 +694,8 @@
                    TextColor = ZigbeeColor.Current.GXCTextGrayColor3,
                    SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor,
                    TextID = R.MyInternationalizationString.Function,
                    IsSelected = false
                    IsSelected = false,
                    TextSize=14
                };
                functionSceneView.AddChidren(functionBtn);
@@ -747,6 +714,8 @@
                {
                    sceneBtn.IsSelected = false;
                    functionBtn.IsSelected = true;
                    sceneBtn.TextSize = 14;
                    functionBtn.TextSize = 16;
                    RefreshBodyView();
                };
                //选择场景分栏
@@ -754,6 +723,8 @@
                {
                    functionBtn.IsSelected = false;
                    sceneBtn.IsSelected = true;
                    sceneBtn.TextSize = 16;
                    functionBtn.TextSize = 14;
                    RefreshBodyView();
                };
@@ -1019,14 +990,14 @@
                            //发送读取状态命令
                            ReadStatus(rollerShade, () =>
                            {
                                rollerShade.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(device.CommonDevice);
                            });
                        }
                        else
                        {
                            if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - rollerShade.LastDateTime).TotalSeconds)
                            {
                                rollerShade.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(device.CommonDevice);
                            }
                        }
                        var lightView = new FunctionMainView(xx, yy);
@@ -1049,7 +1020,7 @@
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                (device.CommonDevice as Rollershade).CurtainUpDownStopControl(1);
                                (device.CommonDevice as Rollershade).CurtainUpDownStopControl(0);
                                ((sender as Button).Parent as FunctionMainView).SetStatuText(CommonFormResouce.GetSwitchStatu(true));
                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
@@ -1075,7 +1046,7 @@
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                (device.CommonDevice as Rollershade).CurtainUpDownStopControl(0);
                                (device.CommonDevice as Rollershade).CurtainUpDownStopControl(1);
                                ((sender as Button).Parent as FunctionMainView).SetStatuText(CommonFormResouce.GetSwitchStatu(false));
                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
@@ -1124,16 +1095,14 @@
                            //发送读取状态命令
                            ReadStatus(light, () =>
                            {
                                light.ReadOnOffStatus();
                                light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                            });
                        }
                        else
                        {
                            if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - light.LastDateTime).TotalSeconds)
                            {
                                light.ReadOnOffStatus();
                                light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                            }
                        }
@@ -1259,8 +1228,7 @@
                            //发送读取状态命令
                            ReadStatus(airSwitch, () =>
                            {
                                airSwitch.ReadOnOffStatus();
                                airSwitch.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                            });
                        }
                        else
@@ -1268,8 +1236,7 @@
                            //防止短时间内多次读取设备状态
                            if ((DateTime.Now - airSwitch.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                            {
                                airSwitch.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                airSwitch.ReadOnOffStatus();
                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                            }
                        }
@@ -1367,15 +1334,7 @@
                            //发送读取状态命令
                            ReadStatus(ac, () =>
                            {
                                ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                ac.ReadLocalTemperature();
                                ac.ReadCoolingSetpoint();
                                ac.ReadHeatingSetpoint();
                                ac.ReadAutoSetpoint();
                                ac.ReadFanMode();
                                ac.ReadSystemMode();
                                ac.ReadSystemFansSwingMode();
                                ac.ReadModeSupport();
                                ReadDeviceAttributeLogic.Instance.SendACStatuComand(device.CommonDevice);
                            });
                        }
                        else
@@ -1383,15 +1342,7 @@
                            //防止短时间内多次读取设备状态
                            if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                            {
                                ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                ac.ReadLocalTemperature();
                                ac.ReadCoolingSetpoint();
                                ac.ReadHeatingSetpoint();
                                ac.ReadAutoSetpoint();
                                ac.ReadFanMode();
                                ac.ReadSystemMode();
                                ac.ReadSystemFansSwingMode();
                                ac.ReadModeSupport();
                                ReadDeviceAttributeLogic.Instance.SendACStatuComand(device.CommonDevice);
                            }
                        }
                        var lightView = new FunctionMainView(xx, yy);
@@ -1486,8 +1437,7 @@
                            //发送读取状态命令
                            ReadStatus(dimmableLight, () =>
                            {
                                dimmableLight.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                dimmableLight.ReadOnOffStatus();
                                ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(device.CommonDevice);
                            });
                        }
                        else
@@ -1495,8 +1445,7 @@
                            //防止短时间内多次读取设备状态
                            if ((DateTime.Now - dimmableLight.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                            {
                                dimmableLight.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                dimmableLight.ReadOnOffStatus();
                                ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(device.CommonDevice);
                            }
                        }
@@ -1596,20 +1545,6 @@
                        if (dimmableLight.Gateway == null)
                        {
                            continue;
                        }
                        if (dimmableLight.Gateway.IsVirtual)
                        {
                            ReadStatus(dimmableLight, () =>
                            {
                                dimmableLight.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                            });
                        }
                        else
                        {
                            if ((DateTime.Now - dimmableLight.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                            {
                                dimmableLight.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                            }
                        }
                        var lightView = new FunctionMainView(xx, yy);
@@ -1720,7 +1655,7 @@
                for (int i = 0; i < sceneList.Count; i++)
                {
                    var scene = sceneList[i];
                    int xx = 43 + i % 2 * (20 + 487);
                    int xx = 33 + i % 2 * (40 + 487);
                    int yy = 14;
                    if (scene == null)
                    {
ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs
@@ -50,7 +50,9 @@
                    try
                    {
                        if (string.IsNullOrEmpty(Shared.Common.Config.Instance.HomeId))
                        {
                        {
                            //住宅ID为空只有一种可能就是退出了登录,这里的上一次住宅ID要清空
                            oldHomeID = "?";
                            System.Threading.Thread.Sleep(1000);
                            continue;
                        }
ZigbeeApp/Shared/Phone/ZigBee/Device/BindObj.cs
@@ -317,6 +317,124 @@
        /// <summary>
        /// 解除绑定
        /// </summary>
        //public async System.Threading.Tasks.Task<DelDeviceBindResponseAllData> DelDeviceBindAsync(DelDeviceBindData delDeviceBindData)
        //{
        //    return await System.Threading.Tasks.Task.Run(async () =>
        //    {
        //        DelDeviceBindResponseAllData responseData = null;
        //        var mainGateway = ZbGateway.MainGateWay;
        //        if (mainGateway == null)
        //        {
        //            responseData = new DelDeviceBindResponseAllData { errorMessageBase = "当前没有主网关" };
        //        }
        //        Action<string, string> action = (topic, message) =>
        //        {
        //            var gatewayID = topic.Split('/')[0];
        //            var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
        //            if (topic == gatewayID + "/" + "Error_Respon")
        //            {
        //                var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = mainGateway.getGatewayBaseInfo.gwID };
        //                var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString());
        //                if (temp == null)
        //                {
        //                    responseData = new DelDeviceBindResponseAllData { errorMessageBase = "网关错误回复,且数据是空" };
        //                }
        //                else
        //                {
        //                    responseData = new DelDeviceBindResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
        //                }
        //            }
        //            //场景移除
        //            if (topic == gatewayID + "/" + "Bind/RemoveBind_Respon")
        //            {
        //                var gatewayTemp = new ZbGateway() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = Gateway.getGatewayBaseInfo.gwID };
        //                var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<DelDeviceBindResponseData>(jobject["Data"].ToString());
        //                if (tempData == null)
        //                {
        //                    responseData = new DelDeviceBindResponseAllData { errorMessageBase = "网关返回的数据为空" };
        //                }
        //                else
        //                {
        //                    responseData = new DelDeviceBindResponseAllData { delDeviceBindResponseData = tempData };
        //                    System.Console.WriteLine($"UI收到通知后的主题_{ topic}");
        //                }
        //            }
        //            //设备移除
        //            if (topic == gatewayID + "/" + "Bind/RemoveBindResult")
        //            {
        //                var gatewayTemp = new ZbGateway() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = mainGateway.getGatewayBaseInfo.gwID };
        //                var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<RemoveBindResultResponseData>(jobject["Data"].ToString());
        //                if (tempData != null)
        //                {
        //                    responseData = new DelDeviceBindResponseAllData { removeBindResultResponseData = tempData };
        //                    System.Console.WriteLine($"UI收到通知后的主题_{ topic}");
        //                }
        //            }
        //        };
        //        mainGateway.Actions += action;
        //        System.Console.WriteLine("DeviceBind/DelBind_Actions 启动" + "_" + System.DateTime.Now.ToString());
        //        try
        //        {
        //            if (delDeviceBindData != null)
        //            {
        //                var jObject = new JObject { { "DeviceAddr", delDeviceBindData.DeviceAddr }, { "Epoint", delDeviceBindData.Epoint }, { "Cluster_ID", 0 }, { "Command", 5003 } };
        //                var removeBindList = new JArray { };
        //                foreach (var removeBindInfo in delDeviceBindData.RemoveBindList)
        //                {
        //                    if (removeBindInfo.BindType == 0)
        //                    {
        //                        var dInfo = new JObject{
        //                    { "BindMacAddr",removeBindInfo.BindMacAddr},
        //                 { "BindEpoint", removeBindInfo.BindEpoint} ,
        //                 { "BindCluster", removeBindInfo.BindCluster} ,
        //                 { "BindType",removeBindInfo.BindType}
        //                    };
        //                        removeBindList.Add(dInfo);
        //                    }
        //                    else if (removeBindInfo.BindType == 1)
        //                    {
        //                        var dInfo = new JObject{
        //                 { "BindCluster", removeBindInfo.BindCluster} ,
        //                 { "BindType",removeBindInfo.BindType},
        //                 { "BindScenesId", removeBindInfo.BindScenesId}
        //                    };
        //                        removeBindList.Add(dInfo);
        //                    }
        //                }
        //                var data = new JObject {
        //            {"RemoveBindList",removeBindList}
        //             };
        //                jObject.Add("Data", data);
        //                mainGateway.Send("Bind/RemoveBind", jObject.ToString());
        //            }
        //        }
        //        catch { }
        //        var dateTime = DateTime.Now;
        //        while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime)
        //        {
        //            await System.Threading.Tasks.Task.Delay(10);
        //            if (responseData != null)
        //            {
        //                break;
        //            }
        //        }
        //        if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
        //        {
        //            responseData = new DelDeviceBindResponseAllData { errorMessageBase = " 回复超时,请重新操作" };
        //        }
        //        mainGateway.Actions -= action;
        //        System.Console.WriteLine("DeviceBind/DelBind_Actions 退出" + System.DateTime.Now.ToString());
        //        return responseData;
        //    });
        //}
        //之前2种方式反馈结果
        public async System.Threading.Tasks.Task<DelDeviceBindResponseAllData> DelDeviceBindAsync(DelDeviceBindData delDeviceBindData)
        {
            return await System.Threading.Tasks.Task.Run(async () =>
@@ -441,7 +559,7 @@
                            break;
                        }
                    }
                    else if (0 < responseData.delDeviceBindResponseData.RemoveBindList.FindAll((obj) => obj.BindType == 0 && obj.Result == 4).Count)
                    else if (0 < responseData.delDeviceBindResponseData.RemoveBindList.FindAll((obj) => obj.BindType == 0 && obj.Result == 2).Count)
                    {
                        if (responseData.removeBindResultResponseData != null)
                        {
@@ -1005,7 +1123,8 @@
                        break;
                    }
                }
                if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
                //一键清除目标,会因为目标数量多而加长时间,目前暂定10秒
                if ((DateTime.Now - dateTime).TotalMilliseconds > 10 * 1000)
                {
                    d = new ClearBindInfoResponseAllData { errorMessageBase = " 回复超时,请重新操作" };
                }
ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs
@@ -603,7 +603,8 @@
                    var jObject = new JObject { { "Cluster_ID", 0 }, { "Command", 82 } };
                    var data = new JObject { { "HomeId", homeId }, { "AccountId", accountId } };
                    jObject.Add("Data", data);
                    Send("GwSetHomeId", jObject.ToString());
                    //住宅ID的设置,固定使用局域网,不存在远程的说法
                    SendLocation("GwSetHomeId", System.Text.Encoding.UTF8.GetBytes(jObject.ToString()));
                }
                catch { }
@@ -3631,6 +3632,7 @@
                            await StartLocalMqtt("ReConnect");
                            if (localIsConnected)
                            {
                                DebugPrintLog($"局域网——二次发送到网关的主题:{topic}_发送到网关的数据:{System.Text.Encoding.UTF8.GetString(message)}_当前网关{CurrentGateWayId} 是否加密:{IsEncry}");
                                await localMqttClient.PublishAsync(new MqttApplicationMessage { Topic = topic, Payload = message, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce, Retain = retain });
                            }
                        }
@@ -3657,8 +3659,58 @@
                return;
            }
            await Send(topic, System.Text.Encoding.UTF8.GetBytes(message), retain);
        }
        /// <summary>
        /// 强制指定使用本地局域网发送消息到服务器
        /// </summary>
        /// <returns></returns>
        /// <param name="topic"></param>
        /// <param name="message"></param>
        /// <param name="retain"></param>
        public async Task SendLocation(string topic, byte[] message, bool retain = false)
        {
            try
            {
                if (Shared.Common.Config.Instance.HomeId == "")
                {
                    return;
                }
                DebugPrintLog($"局域网——发送到网关的主题:{topic}_发送到网关的数据:{System.Text.Encoding.UTF8.GetString(message)}_当前网关{CurrentGateWayId} 是否加密:{IsEncry}");
                if (IsEncry)
                {
                    //文件流不用加密
                    if (topic != "FileTransfer/SendFile")
                    {
                        message = SecuritySet.AesEncryptBytes(message, password);
                    }
                }
                if (localIsConnected)
                {
                    try
                    {
                        await localMqttClient.PublishAsync(new MqttApplicationMessage { Topic = topic, Payload = message, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce, Retain = retain });
                    }
                    catch (Exception e)
                    {
                        DebugPrintLog($"Local主动断开_{e.Message}");
                        await DisConnectLocalMqttClient(e.Message);
                        await StartLocalMqtt("ReConnect");
                        if (localIsConnected)
                        {
                            DebugPrintLog($"局域网——二次发送到网关的主题:{topic}_发送到网关的数据:{System.Text.Encoding.UTF8.GetString(message)}_当前网关{CurrentGateWayId} 是否加密:{IsEncry}");
                            await localMqttClient.PublishAsync(new MqttApplicationMessage { Topic = topic, Payload = message, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce, Retain = retain });
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                DebugPrintLog($"Send:{ex.Message}");
            }
        }
        [Serializable]
        public class CloudTimeResponse
ZigbeeApp/Shared/R.cs
old mode 100755 new mode 100644
@@ -715,7 +715,7 @@
        /// </summary>
        public const int USERNAMEORPWDERROR = 10131;
        /// <summary>
        /// 账号不存在,请先注册
        /// 账号不存在,请注册用户
        /// </summary>
        public const int ACCOUNTNOEXISTS = 10132;
        /// <summary>
@@ -726,16 +726,100 @@
        /// 即将通过微信授权登录
        /// </summary>
        public const int LoginByWechat = 10134;
        /// <summary>
        /// 登录中...
        /// </summary>
        public const int Logining = 10135;
        /// <summary>
        /// 当前住宅为空,请先建立住宅
        /// </summary>
        public const int CurrentlyTheUserIshHouseIsEmptyPleaseBuildANewHouseFirst = 10136;
        /// <summary>
        /// 住宅名称为空
        /// </summary>
        public const int TheResidenceNameNull = 10137;
        /// <summary>
        /// 邮箱错误,请重新输入
        /// </summary>
        public const int TheEmailError = 10138;
        /// <summary>
        /// 手机号错误,请重新输入
        /// </summary>
        public const int ThePhoneError = 10139;
        /// <summary>
        /// 你已被强制下线!
        /// </summary>
        public const int YouHaveBeenSignOut = 10141;
        #endregion
        /// <summary>
        /// 改房间名称已存在
        /// </summary>
        public const int HadSameRoom = 10150;
        /// <summary>
        /// 场景名不能为空
        /// </summary>
        public const int SceneNameCannotBeNull = 10151;
        /// <summary>
        /// 控制场景失败
        /// </summary>
        public const int ControlSceneFail = 10152;
        /// <summary>
        /// 场景为空
        /// </summary>
        public const int TheSceneIsNull = 10153;
        /// <summary>
        /// 该场景中没有执行目标
        /// </summary>
        public const int ThisSceneHaveNoDevice = 10154;
        /// <summary>
        /// 操作失败
        /// </summary>
        public const int FAIL = 10155;
        /// <summary>
        /// 发送验证码失败
        /// </summary>
        public const int SENDFAIL = 10156;
        /// <summary>
        /// 网关不在线
        /// </summary>
        public const int TheMainGatewayIsNotOnLine = 10157;
        #region 分类
        /// <summary>
        /// 功能
        /// </summary>
        public const int Function = 11000;
        /// <summary>
        /// 已是最新版本
        /// </summary>
        public const int TheAppVersionIsNewest = 10160;
        /// <summary>
        /// 更新
        /// </summary>
        public const int Update = 10161;
        /// <summary>
        /// 更新内容
        /// </summary>
        public const int UpdateContent = 10162;
        /// <summary>
        /// 更新失败
        /// </summary>
        public const int UpdateAppFail = 10163;
        /// <summary>
        /// 更新中...
        /// </summary>
        public const int Updating = 10164;
        /// <summary>
        /// 取消更新
        /// </summary>
        public const int CancelUpdating = 10165;
        #endregion
        #region 分类
        /// <summary>
        /// 功能
        /// </summary>
        public const int Function = 11000;
        /// <summary>
        /// 场景
        /// </summary>
@@ -1140,301 +1224,9 @@
        #endregion
        public static readonly int OK = 10005;
        public static readonly int AccountOrPasswordCanNotBeEmpty = 10006;
        public static readonly int IncorrectMailboxformat = 10008;
        public static readonly int PasswordLengthIsLessThanSix = 10009;
        public static readonly int ThePasswordIsEmpty = 10011;
        public static readonly int PleaseGoToTheMailboxToActivateTheAccountNumber = 10012;
        public static readonly int PleaseInputTheCorrectCellPhoneNumber = 10013;
        public static readonly int PleaseInputTheCorrectVerificationCode = 10014;
        public static readonly int ThePhoneNumberIsNotRegisteredYetPleaseRegisterFirst = 10017;
        public static readonly int LoginCodeError = 10018;
        public static readonly int ThisUserBelongsToDebugAccountAndIsNotEnabled = 10019;
        public static readonly int PleaseGoToTheMailboxToConfirmThePasswordChange = 10020;
        public static readonly int MailDeliveryFailedPleaseTryAgain = 10021;
        public static readonly int TheAccountIsNotAuthorized = 10022;
        public static readonly int Version = 10023;
        public static readonly int QuitAccount = 10024;
        public static readonly int InputNewPWD = 10025;
        public static readonly int CurrentlyTheUserIshHouseIsEmptyPleaseBuildANewHouseFirst = 10026;
        public static readonly int ResidentialNameCannotBeEmpty = 10027;
        public static readonly int TheResidenceNameHasExist = 10028;
        public static readonly int DelResidence = 10029;
        public static readonly int PWDCannotBeNull = 10030;
        public static readonly int AddRoomBackgroundPicture = 10031;
        public static readonly int TheRoomNameCannotBeNUll = 10032;
        public static readonly int TheResidenceNameNull = 10033;
        public static readonly int PleaseInputPhoneNumberOrEmail = 11000;
        //*****public static readonly int ForgotPassword = 11002;
        public static readonly int Account = 11005;
        public static readonly int RegisterByPhone = 11006;
        public static readonly int RegisterByEmail = 11007;
        public static readonly int LoginHadAccountPWD = 11008;
        public static readonly int BackToLogin = 11015;
        public static readonly int FindPWDByPhone = 11017;
        public static readonly int FindPWDByEmail = 11018;
        public static readonly int PleaseInputThePhoneAndYouWillHaveVerificationCode = 11019;
        public static readonly int PleaseInputTheEmailAndYouWillHaveVerificatoinCode = 11020;
        public static readonly int ResetPWD = 11021;
        public static readonly int ResetPWDSuccessPleaseLoginAgain = 11022;
        public static readonly int Logining = 11024;
        public static readonly int AddRoom = 11026;
        public static readonly int SettingContent = 11031;
        public static readonly int PleaseInputRoomName = 11032;
        public static readonly int LocalPic = 11033;
        public static readonly int TakePhoto = 11034;
        public static readonly int SystemPic = 11035;
        public static readonly int HadSameRoom = 11037;
        //*****public static readonly int Function = 11038;
        public static readonly int AddFunction = 11042;
        public static readonly int Light = 11044;
        public static readonly int AddLight = 11045;
        public static readonly int DropLight = 11046;
        public static readonly int DownLight = 11047;
        public static readonly int SpotLight = 11048;
        public static readonly int DeviceName = 11049;
        public static readonly int ConfirmAdd = 11052;
        public static readonly int Add = 11054;
        public static readonly int DeviceSetting = 11055;
        public static readonly int AddDeviceSuccess = 11058;
        public static readonly int Device = 11060;
        public static readonly int ConfirmDeleteThisRoom = 11062;
        public static readonly int NextStep = 11071;
        public static readonly int SelectRoom = 11072;
        public static readonly int SelectDevice = 11073;
        /// <summary>
        /// 调光
        /// </summary>
        public static readonly int Dimming = 11075;
        public static readonly int ThisSceneHadTheDevice = 11076;
        public static readonly int SceneNameCannotBeNull = 11077;
        public static readonly int ModifyScene = 11078;
        public static readonly int YourPWDIsTooSample = 11088;
        public static readonly int PleaseInputTheCorrectEmail = 11089;
        /// <summary>
        /// 操作失败
        /// </summary>
        public static readonly int FAIL = 11090;
        /// <summary>
        /// 发送验证码失败
        /// </summary>
        public static readonly int SENDFAIL = 11091;
        /// <summary>
        /// 连接网关或者获取数据失败
        /// </summary>
        public static readonly int ConnectGWFail = 11092;
        /// <summary>
        /// 时间间隔
        /// </summary>
        public static readonly int TimeSpan = 11093;
        /// <summary>
        /// 自定义
        /// </summary>
        public static readonly int Custom = 11098;
        /// <summary>
        /// 取消收藏
        /// </summary>
        public static readonly int CancelCollect = 11101;
        /// <summary>
        /// 修改信息
        /// </summary>
        public static readonly int ChangeDeviceInfo = 11102;
        /// <summary>
        /// 百分比
        /// </summary>
        public static readonly int Percent = 11103;
        /// <summary>
        /// The please confirm new password.
        /// </summary>
        public readonly static int PleaseConfirmNewPassword = 11106;
        /// <summary>
        /// 验证码失效
        /// </summary>
        public readonly static int NORECORD = 11107;
        public static readonly int TheMainGatewayIsNotOnLine = 12000;
        public static readonly int TheSceneIsNull = 12002;
        /// <summary>
        /// 该场景中没有执行目标
        /// </summary>
        public static readonly int ThisSceneHaveNoDevice = 12003;
        public static readonly int TheAppVersionIsNewest = 12004;
        public static readonly int Update = 12005;
        public static readonly int UpdateContent = 12006;
        public static readonly int UpdateAppFail = 12007;
        public static readonly int ControlSceneFail = 12008;
        public static readonly int DeleteSceneFail = 12009;
        public static readonly int SaveTheNewRoomOrNo = 12010;
        public static readonly int Updating = 12011;
        public static readonly int CancelUpdating = 12012;
        /// <summary>
        /// 方向与限位
        /// </summary>
        public static readonly int DirectionLimit = 12013;
        /// <summary>
        /// 维护模式
        /// </summary>
        public static readonly int MaintenanceMode = 12014;
        /// <summary>
        /// 启动/禁止手拉开关
        /// </summary>
        public static readonly int Start_Forbid_Hand_Pull_Switch = 12015;
        /// <summary>
        /// 起始方向
        /// </summary>
        public static readonly int InitialDirection = 12016;
        /// <summary>
        /// 正向
        /// </summary>
        public static readonly int ForwardDirection = 12017;
        /// <summary>
        /// 反向
        /// </summary>
        public static readonly int ReverseDirection = 12018;
        /// <summary>
        /// 限位
        /// </summary>
        public static readonly int Limit = 12019;
        /// <summary>
        /// 开始
        /// </summary>
        public static readonly int Start = 12020;
        /// <summary>
        /// 结束
        /// </summary>
        public static readonly int End = 12021;
        /// <summary>
        /// 恢复行程设置
        /// </summary>
        public static readonly int RestoreTravelSettings = 12022;
        /// <summary>
        /// 恢复行程设置后,当前设置将被初始化,确定继续吗?
        /// </summary>
        public static readonly int IsCancelRestoreTravelSettings = 12023;
        /// <summary>
        /// 切换维护模式失败
        /// </summary>
        public static readonly int ChangeMaintenanceMode_Fail = 12024;
        /// <summary>
        /// 是否设置当前位置为开始限位?
        /// </summary>
        public static readonly int SettingStartLimit = 12025;
        /// <summary>
        /// 是否设置当前位置为结束限位?
        /// </summary>
        public static readonly int SettingEndLimit = 12026;
        /// <summary>
        /// 设置开始限位
        /// </summary>
        public static readonly int SetStartLimit = 12027;
        /// <summary>
        /// 设置结束限位
        /// </summary>
        public static readonly int SetEndLimit = 12028;
        /// <summary>
        /// 导轨移动中,请等待。。。
        /// </summary>
        public static readonly int PleaseWaitWhileTheGuidewayIsMoving = 12029;
        /// <summary>
        /// 您的账号已在另一台设备登录,您已被强制下线
        /// </summary>
        public static readonly int YouHaveBeenSignOut = 12030;
        /// <summary>
        /// 场景中已包含该场景
        /// </summary>
        public static readonly int ThisSceneHadTheScene = 12032;
        /// <summary>
        /// 当前没搜索到网关,请先添加网关
        /// </summary>
        public static readonly int NoGateway = 12033;
        /// <summary>
        ///当前没有可以添加到该房间的设备
        /// </summary>
        public static readonly int NoDeviceCanAddToRoom = 12034;
        /// <summary>
        /// 当前房间没有设备可以添加到场景
        /// </summary>
        public static readonly int TheRoomNoDeviceAddToScene = 12500;
        /// <summary>
        /// 往上移动
        /// </summary>
        public static readonly int RollerShadeUp = 12501;
        /// <summary>
        /// 往下移动
        /// </summary>
        public static readonly int RollerShadeDown = 12502;
        /// <summary>
ZigbeeApp/Shared/Shared.projitems
@@ -21,6 +21,7 @@
    <Compile Include="$(MSBuildThisFileDirectory)Common\ResponseEntity\UserLoginLocalRegionRes.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Pad\MainPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\Account\AccountForgetPWD.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\Account\AccountLogic.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\Account\AccountRegister.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\Account\AccountRegisterSuccess.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\Account\AccountResetPWDSuccess.cs" />
@@ -55,6 +56,7 @@
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\CommonForm\Line.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\CommonForm\RoomMainView.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\CommonForm\RoomNoNameMainView.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\CommonForm\RoomView.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\CommonForm\RowLayoutDeleteButton.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\CommonForm\RowLayoutEditButton.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\CommonForm\SceneCategoryView.cs" />
@@ -70,6 +72,7 @@
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\CommonForm\SelectTime.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\CommonForm\SelectZone.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\CommonForm\TopFrameLayout.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\DeviceLogic\ReadDeviceAttributeLogic.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\Light\AirSwitchControl.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\Light\DimmableLightControl.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\Light\LightControl.cs" />
@@ -204,6 +207,8 @@
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Gateway\Update\GatewayVirtualDriveInfoForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\HdlBackup\HdlAutoBackupForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\HdlBackup\HdlBackupListForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\HideOption\HideOptionGatewayListForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\HideOption\HideOptionMainForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Member\MemberNotEsixtForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Password\CheckNewPhoneForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Password\CheckOldPhoneForm.cs" />