From 80075a89316729927db0ad65ca7674f81a942a93 Mon Sep 17 00:00:00 2001
From: wjc <1243177876@qq.com>
Date: 星期三, 26 七月 2023 09:22:41 +0800
Subject: [PATCH] Merge branch 'Dev-Branch' into wjc

---
 SiriIntents/SiriIntents.csproj                                                               |    6 
 HDL_ON/UI/UI2/FuntionControlView/Light/ColorfulSettingPage.cs                                |   20 
 HDL-ON_iOS/Assets.xcassets/preview_play_btn_sel.imageset/preview_play_btn_sel.png            |    0 
 HDL-ON_Android/Assets/Language.ini                                                           |   43 
 HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorlockBatteryManagementPage.cs         |   84 +
 HDL-ON_Android/Assets/Phone/Classification/Room/HomePagebg.png                               |    0 
 HDL-ON_iOS/HDL-ON_iOS.csproj                                                                 |   60 
 HDL_ON/Common/ApiUtlis.cs                                                                    |   17 
 HDL_ON/UI/UI2/2-Classification/RoomPage.cs                                                   |    2 
 HDL_ON/HDL_ON.projitems                                                                      |    1 
 HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs                                                      |  170 --
 HDL-ON_Android/Resources/Resource.designer.cs                                                |    2 
 HDL_ON/UI/UI0-Public/PublicAssmebly.cs                                                       |    9 
 HDL-ON_iOS/Assets.xcassets/preview_voice_btn.imageset/preview_voice_btn.png                  |    0 
 HDL_ON/UI/UI2/FuntionControlView/Light/GroupControlPage_V2.cs                                |  504 +++++++-
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/groupControl_white.png                |    0 
 HDL-ON_iOS/Assets.xcassets/preview_enlarge.imageset/preview_enlarge@2x.png                   |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/VideoDoorlockBatteryManagementBg.png        |    0 
 SiriIntents/Server/HttpUtil.cs                                                               |    4 
 HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn .imageset/Contents.json                      |   23 
 HDL_ON/Entity/DB_ResidenceData.cs                                                            |    4 
 HDL-ON_iOS/Resources/Phone/Classification/Room/HomePagebg.png                                |    0 
 HDL-ON_iOS/Assets.xcassets/preview_unvoice_btn_sel.imageset/preview_unvoice_btn_sel.png      |    0 
 HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn.imageset/preview_stopplay_btn@3x.png         |    0 
 HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn_sel.imageset/preview_stopplay_btn_sel@3x.png |    0 
 HDL-ON_iOS/Assets.xcassets/preview_voice_btn_sel.imageset/preview_voice_btn_sel@2x.png       |    0 
 HDL-ON_iOS/Assets.xcassets/picture_bg.imageset/picture_bg@2x.png                             |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs                                         |    2 
 HDL-ON_iOS/Assets.xcassets/preview_unvoice_btn.imageset/preview_unvoice_btn.png              |    0 
 HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs                               |   59 
 HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorLockPage.cs                          |   59 
 HDL-ON_iOS/Assets.xcassets/preview_enlarge_btn_sel.imageset/preview_enlarge_btn_sel@3x.png   |    0 
 HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs                                                        |   16 
 HDL-ON_iOS/Assets.xcassets/preview_play_btn.imageset/preview_play_btn@3x.png                 |    0 
 HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs                                                      |    2 
 HDL-ON_iOS/Assets.xcassets/preview_play_btn.imageset/preview_play_btn.png                    |    0 
 HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn .imageset/preview_stoppaly_btn @3x.png       |    0 
 HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs                                           |   15 
 HDL-ON_iOS/Assets.xcassets/preview_enlarge_btn_sel.imageset/preview_enlarge_btn_sel.png      |    0 
 HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorlockFaceUnlockTriggerSettingPage.cs  |    1 
 HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn.imageset/preview_stopplay_btn.png            |    0 
 HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn_sel.imageset/preview_stoppaly_btn_sel@3x.png |    0 
 HDL-ON_iOS/Resources/Language.ini                                                            |   43 
 HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn_sel.imageset/preview_stopplay_btn_sel@2x.png |    0 
 SiriIntentsUI/SiriIntentsUI.csproj                                                           |    6 
 HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn_sel.imageset/preview_stopplay_btn_sel.png    |    0 
 HDL-ON_iOS/Assets.xcassets/preview_enlarge_btn_sel.imageset/preview_enlarge_btn_sel@2x.png   |    0 
 HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn.imageset/preview_stopplay_btn .png           |    0 
 HDL-ON_iOS/Resources/zh-Hans.lproj/Localizable.strings                                       |   31 
 HDL-ON_iOS/Assets.xcassets/preview_voice_btn_sel.imageset/preview_voice_btn_sel@3x.png       |    0 
 HDL-ON_iOS/Resources/EZ/Base.lproj/EZMain.storyboard                                         |  303 +++-
 HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/AddGroupControlPage.cs                        |   21 
 HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn_sel.imageset/Contents.json                   |   10 
 HDL-ON_iOS/Assets.xcassets/preview_voice_btn.imageset/preview_voice_btn@3x.png               |    0 
 HDL-ON_Android/Properties/AndroidManifest.xml                                                |    2 
 HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorlockUserListPage.cs                  |   17 
 HDL_ON/UI/UI2/FuntionControlView/Light/ColorfulInfoPage.cs                                   |   93 +
 HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn .imageset/preview_stopplay_btn @2x.png       |    0 
 HDL-ON_iOS/Assets.xcassets/preview_play_btn_sel.imageset/preview_play_btn_sel@3x.png         |    0 
 HDL_ON/DAL/Mqtt/MqttClient.cs                                                                |   43 
 HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/VideoDoorlockBatteryManagementBg.png       |    0 
 HDL-ON_Android/HDL-ON_Android.csproj                                                         |    4 
 HDL-ON_iOS/Info.plist                                                                        |    4 
 HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn.imageset/Contents.json                       |   10 
 HDL_ON/Common/HDLCommon.cs                                                                   |    9 
 HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayMusicPage.cs                                   |    4 
 HDL_ON/UI/UI1-Login/LoginPage.cs                                                             |    4 
 HDL-ON_iOS/Assets.xcassets/preview_unvoice_btn_sel.imageset/preview_unvoice_btn_sel@2x.png   |    0 
 HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn .imageset/preview_stopplay_btn @3x.png       |    0 
 HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/UnlockSettingFacePage.cs                      |   28 
 HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn .imageset/preview_stoppaly_btn @2x.png       |    0 
 HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs                                         |   59 
 HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/CombinedDimmingListPage.cs                    |  315 ++--
 HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn.imageset/preview_stopplay_btn @2x.png        |    0 
 HDL-ON_iOS/Assets.xcassets/preview_voice_btn_sel.imageset/preview_voice_btn_sel.png          |    0 
 HDL_ON/Entity/Function/Function.cs                                                           |   20 
 HDL_ON/UI/UI2/2-Classification/FunctionPage.cs                                               |    2 
 HDL_ON/DAL/Server/HttpUtil.cs                                                                |    4 
 HDL-ON_iOS/Assets.xcassets/preview_unvoice_btn.imageset/preview_unvoice_btn@3x.png           |    0 
 HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs                                          |    3 
 HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs                                                    |   10 
 HDL_ON/UI/UI2/1-HomePage/HomePage.cs                                                         |  551 ++++++---
 HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs                               |   28 
 HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorlockAudioSetupPage.cs                |  130 +
 HDL-ON_iOS/Assets.xcassets/preview_unvoice_btn_sel.imageset/preview_unvoice_btn_sel@3x.png   |    0 
 HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn .imageset/Contents.json                      |   11 
 HDL-ON_iOS/Assets.xcassets/preview_enlarge.imageset/preview_enlarge@3x.png                   |    0 
 HDL-ON_iOS/Resources/en.lproj/Localizable.strings                                            |   33 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Music/MusicPlayOnIcon.png                           |    0 
 HDL-ON_iOS/Assets.xcassets/preview_play_btn.imageset/preview_play_btn@2x.png                 |    0 
 HDL_ON/UI/MainPage.cs                                                                        |    5 
 HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn_sel.imageset/Contents.json                   |   10 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/groupControl_white.png                 |    0 
 HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn_sel.imageset/preview_stoppaly_btn_sel@2x.png |    0 
 HDL-ON_iOS/Assets.xcassets/picture_bg.imageset/picture_bg.png                                |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/groupControl_blue.png                 |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/groupControl_blue.png                  |    0 
 HDL_ON/UI/UI2/2-Classification/SeriesFunctionListPage.cs                                     |  184 +++
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Music/MusicPlayOnIcon.png                            |    0 
 HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorlockUserManagerPage.cs               |  141 +-
 HDL-ON_iOS/Assets.xcassets/preview_voice_btn.imageset/preview_voice_btn@2x.png               |    0 
 DLL/IOS/EZSDK.IOS.dll                                                                        |    0 
 HDL-ON_iOS/Assets.xcassets/preview_enlarge.imageset/preview_enlarge.png                      |    0 
 HDL_ON/DAL/Server/NewAPI.cs                                                                  |    4 
 HDL-ON_iOS/Assets.xcassets/preview_unvoice_btn.imageset/preview_unvoice_btn@2x.png           |    0 
 HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn_sel.imageset/preview_stoppaly_btn_sel.png    |    0 
 HDL_ON/Common/R.cs                                                                           |   33 
 HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn .imageset/preview_stopplay_btn .png          |    0 
 HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn.imageset/preview_stopplay_btn@2x.png         |    0 
 HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn .imageset/preview_stoppaly_btn .png          |    0 
 HDL-ON_iOS/Assets.xcassets/preview_play_btn_sel.imageset/preview_play_btn_sel@2x.png         |    0 
 111 files changed, 2,243 insertions(+), 1,035 deletions(-)

diff --git a/DLL/IOS/EZSDK.IOS.dll b/DLL/IOS/EZSDK.IOS.dll
index 86181a6..c96f7ed 100644
--- a/DLL/IOS/EZSDK.IOS.dll
+++ b/DLL/IOS/EZSDK.IOS.dll
Binary files differ
diff --git a/HDL-ON_Android/Assets/Language.ini b/HDL-ON_Android/Assets/Language.ini
index 05d3ffb..75c5e2b 100644
--- a/HDL-ON_Android/Assets/Language.ini
+++ b/HDL-ON_Android/Assets/Language.ini
@@ -664,6 +664,14 @@
 677=High 
 678=Current user data has been cleared, about to return to the previous page.
 679=Group control
+680=Colorful switch
+681=Test
+682=Group
+683=The time is invalid
+684=Length out of range
+685=note: User management can only manage added users. If you need to add a new user, please go to the lock end for relevant operations.
+
+
 
 
 
@@ -2001,7 +2009,17 @@
 676=涓�
 677=楂�
 678=褰撳墠鐢ㄦ埛鏁版嵁宸叉竻绌猴紝鍗冲皢杩斿洖涓婁竴椤点��
-679=缇ゆ帶
+679=缁勬帶
+680=鐐僵寮�鍏�
+681=鑷姩鐐僵娴嬭瘯
+682=缇ょ粍
+683=璇ユ椂闂存棤鏁�
+684=闀垮害瓒呭嚭鑼冨洿
+685=娉細鐢ㄦ埛绠$悊浠呭彲瀵瑰凡娣诲姞鐢ㄦ埛杩涜绠$悊銆傚闇�娣诲姞鏂扮敤鎴凤紝璇峰墠寰�閿佺杩涜鐩稿叧鎿嶄綔銆�
+
+
+
+
 
 
 
@@ -3339,6 +3357,13 @@
 677=High 
 678=Current user data has been cleared, about to return to the previous page.
 679=Group control
+680=Colorful switch
+681=Test
+682=Group
+683=The time is invalid
+684=Length out of range
+685=note: User management can only manage added users. If you need to add a new user, please go to the lock end for relevant operations.
+
 
 
 
@@ -4672,7 +4697,12 @@
 677=High 
 678=Current user data has been cleared, about to return to the previous page.
 679=Group control
-
+680=Colorful switch
+681=Test
+682=Group
+683=The time is invalid
+684=Length out of range
+685=note: User management can only manage added users. If you need to add a new user, please go to the lock end for relevant operations.
 
 
 
@@ -5994,6 +6024,15 @@
 677=High 
 678=Current user data has been cleared, about to return to the previous page.
 679=Group control
+680=Colorful switch
+681=Test
+682=Group
+683=The time is invalid
+684=Length out of range
+685=note: User management can only manage added users. If you need to add a new user, please go to the lock end for relevant operations.
+
+
+
 
 
 
diff --git a/HDL-ON_Android/Assets/Phone/Classification/Room/HomePagebg.png b/HDL-ON_Android/Assets/Phone/Classification/Room/HomePagebg.png
new file mode 100644
index 0000000..a183c95
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/Classification/Room/HomePagebg.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/VideoDoorlockBatteryManagementBg.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/VideoDoorlockBatteryManagementBg.png
new file mode 100644
index 0000000..e0eab23
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/VideoDoorlockBatteryManagementBg.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/groupControl_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/groupControl_blue.png
index 53eeb27..cc8383a 100644
--- a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/groupControl_blue.png
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/groupControl_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/groupControl_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/groupControl_white.png
index b923744..90b408e 100644
--- a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/groupControl_white.png
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/groupControl_white.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Music/MusicPlayOnIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Music/MusicPlayOnIcon.png
index 42639bb..a7714e4 100644
--- a/HDL-ON_Android/Assets/Phone/FunctionIcon/Music/MusicPlayOnIcon.png
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Music/MusicPlayOnIcon.png
Binary files differ
diff --git a/HDL-ON_Android/HDL-ON_Android.csproj b/HDL-ON_Android/HDL-ON_Android.csproj
index f619aa0..68b87db 100644
--- a/HDL-ON_Android/HDL-ON_Android.csproj
+++ b/HDL-ON_Android/HDL-ON_Android.csproj
@@ -401,7 +401,6 @@
     <AndroidAsset Include="Assets\Phone\LogicIcon\selectlocation.png" />
     <AndroidAsset Include="Assets\Phone\FunctionIcon\Light\ColorfulBar.png" />
     <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\groupControl_blue.png" />
-    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\GroupControl_white.png" />
     <AndroidAsset Include="Assets\h5\index.html" />
     <AndroidAsset Include="Assets\h5\static\index.63b34199.css" />
     <AndroidAsset Include="Assets\h5\static\images\coal-save-ic.png" />
@@ -455,6 +454,9 @@
     <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\DoorlockHelpImage3.png" />
     <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\DoorlockHelpImage4.png" />
     <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HorseRaceLampIcon.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\VideoDoorlockBatteryManagementBg.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\groupControl_white.png" />
+    <AndroidAsset Include="Assets\Phone\Classification\Room\HomePagebg.png" />
   </ItemGroup>
   <ItemGroup>
     <AndroidResource Include="Resources\values\colors.xml" />
diff --git a/HDL-ON_Android/Properties/AndroidManifest.xml b/HDL-ON_Android/Properties/AndroidManifest.xml
index dc840b6..b773372 100644
--- a/HDL-ON_Android/Properties/AndroidManifest.xml
+++ b/HDL-ON_Android/Properties/AndroidManifest.xml
@@ -1,5 +1,5 @@
 锘�<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.8.1" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202307061">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="2.0.0" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202307261">
 	<uses-sdk android:minSdkVersion="26" android:targetSdkVersion="29" />
 	<uses-permission android:name="android.permission.RECEIVE_SMS" />
 	<!--鍙嬬洘-->
diff --git a/HDL-ON_Android/Resources/Resource.designer.cs b/HDL-ON_Android/Resources/Resource.designer.cs
index 24b9b9e..0bf2792 100644
--- a/HDL-ON_Android/Resources/Resource.designer.cs
+++ b/HDL-ON_Android/Resources/Resource.designer.cs
@@ -14,7 +14,7 @@
 {
 	
 	
-	[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "1.0.0.0")]
+	[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "12.2.8.165")]
 	public partial class Resource
 	{
 		
diff --git a/HDL-ON_iOS/Assets.xcassets/picture_bg.imageset/picture_bg.png b/HDL-ON_iOS/Assets.xcassets/picture_bg.imageset/picture_bg.png
index 6d59dd0..3644818 100644
--- a/HDL-ON_iOS/Assets.xcassets/picture_bg.imageset/picture_bg.png
+++ b/HDL-ON_iOS/Assets.xcassets/picture_bg.imageset/picture_bg.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/picture_bg.imageset/picture_bg@2x.png b/HDL-ON_iOS/Assets.xcassets/picture_bg.imageset/picture_bg@2x.png
index fe4b56c..07340dc 100644
--- a/HDL-ON_iOS/Assets.xcassets/picture_bg.imageset/picture_bg@2x.png
+++ b/HDL-ON_iOS/Assets.xcassets/picture_bg.imageset/picture_bg@2x.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_enlarge.imageset/preview_enlarge.png b/HDL-ON_iOS/Assets.xcassets/preview_enlarge.imageset/preview_enlarge.png
index fafd7e5..a46ea23 100644
--- a/HDL-ON_iOS/Assets.xcassets/preview_enlarge.imageset/preview_enlarge.png
+++ b/HDL-ON_iOS/Assets.xcassets/preview_enlarge.imageset/preview_enlarge.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_enlarge.imageset/preview_enlarge@2x.png b/HDL-ON_iOS/Assets.xcassets/preview_enlarge.imageset/preview_enlarge@2x.png
index 74bf56d..1320f0a 100644
--- a/HDL-ON_iOS/Assets.xcassets/preview_enlarge.imageset/preview_enlarge@2x.png
+++ b/HDL-ON_iOS/Assets.xcassets/preview_enlarge.imageset/preview_enlarge@2x.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_enlarge.imageset/preview_enlarge@3x.png b/HDL-ON_iOS/Assets.xcassets/preview_enlarge.imageset/preview_enlarge@3x.png
new file mode 100644
index 0000000..25313fd
--- /dev/null
+++ b/HDL-ON_iOS/Assets.xcassets/preview_enlarge.imageset/preview_enlarge@3x.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_enlarge_btn_sel.imageset/preview_enlarge_btn_sel.png b/HDL-ON_iOS/Assets.xcassets/preview_enlarge_btn_sel.imageset/preview_enlarge_btn_sel.png
index a823d6f..0c3e498 100644
--- a/HDL-ON_iOS/Assets.xcassets/preview_enlarge_btn_sel.imageset/preview_enlarge_btn_sel.png
+++ b/HDL-ON_iOS/Assets.xcassets/preview_enlarge_btn_sel.imageset/preview_enlarge_btn_sel.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_enlarge_btn_sel.imageset/preview_enlarge_btn_sel@2x.png b/HDL-ON_iOS/Assets.xcassets/preview_enlarge_btn_sel.imageset/preview_enlarge_btn_sel@2x.png
index c1838af..16dc55c 100644
--- a/HDL-ON_iOS/Assets.xcassets/preview_enlarge_btn_sel.imageset/preview_enlarge_btn_sel@2x.png
+++ b/HDL-ON_iOS/Assets.xcassets/preview_enlarge_btn_sel.imageset/preview_enlarge_btn_sel@2x.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_enlarge_btn_sel.imageset/preview_enlarge_btn_sel@3x.png b/HDL-ON_iOS/Assets.xcassets/preview_enlarge_btn_sel.imageset/preview_enlarge_btn_sel@3x.png
new file mode 100644
index 0000000..3ef38ba
--- /dev/null
+++ b/HDL-ON_iOS/Assets.xcassets/preview_enlarge_btn_sel.imageset/preview_enlarge_btn_sel@3x.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_play_btn.imageset/preview_play_btn.png b/HDL-ON_iOS/Assets.xcassets/preview_play_btn.imageset/preview_play_btn.png
index 22b8248..a30f9fd 100644
--- a/HDL-ON_iOS/Assets.xcassets/preview_play_btn.imageset/preview_play_btn.png
+++ b/HDL-ON_iOS/Assets.xcassets/preview_play_btn.imageset/preview_play_btn.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_play_btn.imageset/preview_play_btn@2x.png b/HDL-ON_iOS/Assets.xcassets/preview_play_btn.imageset/preview_play_btn@2x.png
index 7d1bbbe..d060083 100644
--- a/HDL-ON_iOS/Assets.xcassets/preview_play_btn.imageset/preview_play_btn@2x.png
+++ b/HDL-ON_iOS/Assets.xcassets/preview_play_btn.imageset/preview_play_btn@2x.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_play_btn.imageset/preview_play_btn@3x.png b/HDL-ON_iOS/Assets.xcassets/preview_play_btn.imageset/preview_play_btn@3x.png
new file mode 100644
index 0000000..c7226d9
--- /dev/null
+++ b/HDL-ON_iOS/Assets.xcassets/preview_play_btn.imageset/preview_play_btn@3x.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_play_btn_sel.imageset/preview_play_btn_sel.png b/HDL-ON_iOS/Assets.xcassets/preview_play_btn_sel.imageset/preview_play_btn_sel.png
index 9b398b5..c431f51 100644
--- a/HDL-ON_iOS/Assets.xcassets/preview_play_btn_sel.imageset/preview_play_btn_sel.png
+++ b/HDL-ON_iOS/Assets.xcassets/preview_play_btn_sel.imageset/preview_play_btn_sel.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_play_btn_sel.imageset/preview_play_btn_sel@2x.png b/HDL-ON_iOS/Assets.xcassets/preview_play_btn_sel.imageset/preview_play_btn_sel@2x.png
index 2ea80f4..ba1d20d 100644
--- a/HDL-ON_iOS/Assets.xcassets/preview_play_btn_sel.imageset/preview_play_btn_sel@2x.png
+++ b/HDL-ON_iOS/Assets.xcassets/preview_play_btn_sel.imageset/preview_play_btn_sel@2x.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_play_btn_sel.imageset/preview_play_btn_sel@3x.png b/HDL-ON_iOS/Assets.xcassets/preview_play_btn_sel.imageset/preview_play_btn_sel@3x.png
new file mode 100644
index 0000000..4862e3a
--- /dev/null
+++ b/HDL-ON_iOS/Assets.xcassets/preview_play_btn_sel.imageset/preview_play_btn_sel@3x.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn .imageset/Contents.json b/HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn .imageset/Contents.json
new file mode 100644
index 0000000..1535ae4
--- /dev/null
+++ b/HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn .imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_stoppaly_btn .png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_stoppaly_btn @2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "preview_stoppaly_btn @3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn .imageset/preview_stoppaly_btn .png b/HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn .imageset/preview_stoppaly_btn .png
new file mode 100644
index 0000000..9d158cd
--- /dev/null
+++ b/HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn .imageset/preview_stoppaly_btn .png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn .imageset/preview_stoppaly_btn @2x.png b/HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn .imageset/preview_stoppaly_btn @2x.png
new file mode 100644
index 0000000..e8b6f0f
--- /dev/null
+++ b/HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn .imageset/preview_stoppaly_btn @2x.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn .imageset/preview_stoppaly_btn @3x.png b/HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn .imageset/preview_stoppaly_btn @3x.png
new file mode 100644
index 0000000..596038a
--- /dev/null
+++ b/HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn .imageset/preview_stoppaly_btn @3x.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn_sel.imageset/Contents.json b/HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn_sel.imageset/Contents.json
index 4fe27fc..98275d0 100644
--- a/HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn_sel.imageset/Contents.json
+++ b/HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn_sel.imageset/Contents.json
@@ -1,13 +1,13 @@
 {
   "images" : [
     {
-      "idiom" : "universal",
       "filename" : "preview_stoppaly_btn_sel.png",
+      "idiom" : "universal",
       "scale" : "1x"
     },
     {
-      "idiom" : "universal",
       "filename" : "preview_stoppaly_btn_sel@2x.png",
+      "idiom" : "universal",
       "scale" : "2x"
     },
     {
@@ -16,7 +16,7 @@
     }
   ],
   "info" : {
-    "version" : 1,
-    "author" : "xcode"
+    "author" : "xcode",
+    "version" : 1
   }
-}
\ No newline at end of file
+}
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn_sel.imageset/preview_stoppaly_btn_sel.png b/HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn_sel.imageset/preview_stoppaly_btn_sel.png
index 7910053..dc8415d 100644
--- a/HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn_sel.imageset/preview_stoppaly_btn_sel.png
+++ b/HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn_sel.imageset/preview_stoppaly_btn_sel.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn_sel.imageset/preview_stoppaly_btn_sel@2x.png b/HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn_sel.imageset/preview_stoppaly_btn_sel@2x.png
index 0668cef..a01441f 100644
--- a/HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn_sel.imageset/preview_stoppaly_btn_sel@2x.png
+++ b/HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn_sel.imageset/preview_stoppaly_btn_sel@2x.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn_sel.imageset/preview_stoppaly_btn_sel@3x.png b/HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn_sel.imageset/preview_stoppaly_btn_sel@3x.png
new file mode 100644
index 0000000..a5e0e92
--- /dev/null
+++ b/HDL-ON_iOS/Assets.xcassets/preview_stoppaly_btn_sel.imageset/preview_stoppaly_btn_sel@3x.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn .imageset/Contents.json b/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn .imageset/Contents.json
index b458dba..1958f48 100644
--- a/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn .imageset/Contents.json
+++ b/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn .imageset/Contents.json
@@ -1,22 +1,23 @@
 {
   "images" : [
     {
-      "idiom" : "universal",
       "filename" : "preview_stopplay_btn .png",
+      "idiom" : "universal",
       "scale" : "1x"
     },
     {
-      "idiom" : "universal",
       "filename" : "preview_stopplay_btn @2x.png",
+      "idiom" : "universal",
       "scale" : "2x"
     },
     {
+      "filename" : "preview_stopplay_btn @3x.png",
       "idiom" : "universal",
       "scale" : "3x"
     }
   ],
   "info" : {
-    "version" : 1,
-    "author" : "xcode"
+    "author" : "xcode",
+    "version" : 1
   }
-}
\ No newline at end of file
+}
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn .imageset/preview_stopplay_btn .png b/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn .imageset/preview_stopplay_btn .png
index 72c3fb4..9d158cd 100644
--- a/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn .imageset/preview_stopplay_btn .png
+++ b/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn .imageset/preview_stopplay_btn .png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn .imageset/preview_stopplay_btn @2x.png b/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn .imageset/preview_stopplay_btn @2x.png
index 003c00b..e8b6f0f 100644
--- a/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn .imageset/preview_stopplay_btn @2x.png
+++ b/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn .imageset/preview_stopplay_btn @2x.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn .imageset/preview_stopplay_btn @3x.png b/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn .imageset/preview_stopplay_btn @3x.png
new file mode 100644
index 0000000..596038a
--- /dev/null
+++ b/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn .imageset/preview_stopplay_btn @3x.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn.imageset/Contents.json b/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn.imageset/Contents.json
index b458dba..d7aabbd 100644
--- a/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn.imageset/Contents.json
+++ b/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn.imageset/Contents.json
@@ -1,13 +1,13 @@
 {
   "images" : [
     {
-      "idiom" : "universal",
       "filename" : "preview_stopplay_btn .png",
+      "idiom" : "universal",
       "scale" : "1x"
     },
     {
-      "idiom" : "universal",
       "filename" : "preview_stopplay_btn @2x.png",
+      "idiom" : "universal",
       "scale" : "2x"
     },
     {
@@ -16,7 +16,7 @@
     }
   ],
   "info" : {
-    "version" : 1,
-    "author" : "xcode"
+    "author" : "xcode",
+    "version" : 1
   }
-}
\ No newline at end of file
+}
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn.imageset/preview_stopplay_btn .png b/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn.imageset/preview_stopplay_btn .png
index 72c3fb4..9d158cd 100644
--- a/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn.imageset/preview_stopplay_btn .png
+++ b/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn.imageset/preview_stopplay_btn .png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn.imageset/preview_stopplay_btn @2x.png b/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn.imageset/preview_stopplay_btn @2x.png
index 003c00b..e8b6f0f 100644
--- a/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn.imageset/preview_stopplay_btn @2x.png
+++ b/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn.imageset/preview_stopplay_btn @2x.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn.imageset/preview_stopplay_btn.png b/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn.imageset/preview_stopplay_btn.png
new file mode 100644
index 0000000..9d158cd
--- /dev/null
+++ b/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn.imageset/preview_stopplay_btn.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn.imageset/preview_stopplay_btn@2x.png b/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn.imageset/preview_stopplay_btn@2x.png
new file mode 100644
index 0000000..e8b6f0f
--- /dev/null
+++ b/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn.imageset/preview_stopplay_btn@2x.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn.imageset/preview_stopplay_btn@3x.png b/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn.imageset/preview_stopplay_btn@3x.png
new file mode 100644
index 0000000..596038a
--- /dev/null
+++ b/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn.imageset/preview_stopplay_btn@3x.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn_sel.imageset/Contents.json b/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn_sel.imageset/Contents.json
index 5f871e8..0168d6f 100644
--- a/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn_sel.imageset/Contents.json
+++ b/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn_sel.imageset/Contents.json
@@ -1,13 +1,13 @@
 {
   "images" : [
     {
-      "idiom" : "universal",
       "filename" : "preview_stopplay_btn_sel.png",
+      "idiom" : "universal",
       "scale" : "1x"
     },
     {
-      "idiom" : "universal",
       "filename" : "preview_stopplay_btn_sel@2x.png",
+      "idiom" : "universal",
       "scale" : "2x"
     },
     {
@@ -16,7 +16,7 @@
     }
   ],
   "info" : {
-    "version" : 1,
-    "author" : "xcode"
+    "author" : "xcode",
+    "version" : 1
   }
-}
\ No newline at end of file
+}
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn_sel.imageset/preview_stopplay_btn_sel.png b/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn_sel.imageset/preview_stopplay_btn_sel.png
index 7910053..dc8415d 100644
--- a/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn_sel.imageset/preview_stopplay_btn_sel.png
+++ b/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn_sel.imageset/preview_stopplay_btn_sel.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn_sel.imageset/preview_stopplay_btn_sel@2x.png b/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn_sel.imageset/preview_stopplay_btn_sel@2x.png
index 0668cef..a01441f 100644
--- a/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn_sel.imageset/preview_stopplay_btn_sel@2x.png
+++ b/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn_sel.imageset/preview_stopplay_btn_sel@2x.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn_sel.imageset/preview_stopplay_btn_sel@3x.png b/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn_sel.imageset/preview_stopplay_btn_sel@3x.png
new file mode 100644
index 0000000..a5e0e92
--- /dev/null
+++ b/HDL-ON_iOS/Assets.xcassets/preview_stopplay_btn_sel.imageset/preview_stopplay_btn_sel@3x.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_unvoice_btn.imageset/preview_unvoice_btn.png b/HDL-ON_iOS/Assets.xcassets/preview_unvoice_btn.imageset/preview_unvoice_btn.png
index 77c5688..ce321b8 100644
--- a/HDL-ON_iOS/Assets.xcassets/preview_unvoice_btn.imageset/preview_unvoice_btn.png
+++ b/HDL-ON_iOS/Assets.xcassets/preview_unvoice_btn.imageset/preview_unvoice_btn.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_unvoice_btn.imageset/preview_unvoice_btn@2x.png b/HDL-ON_iOS/Assets.xcassets/preview_unvoice_btn.imageset/preview_unvoice_btn@2x.png
index 2554612..4f90c7b 100644
--- a/HDL-ON_iOS/Assets.xcassets/preview_unvoice_btn.imageset/preview_unvoice_btn@2x.png
+++ b/HDL-ON_iOS/Assets.xcassets/preview_unvoice_btn.imageset/preview_unvoice_btn@2x.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_unvoice_btn.imageset/preview_unvoice_btn@3x.png b/HDL-ON_iOS/Assets.xcassets/preview_unvoice_btn.imageset/preview_unvoice_btn@3x.png
new file mode 100644
index 0000000..afe9882
--- /dev/null
+++ b/HDL-ON_iOS/Assets.xcassets/preview_unvoice_btn.imageset/preview_unvoice_btn@3x.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_unvoice_btn_sel.imageset/preview_unvoice_btn_sel.png b/HDL-ON_iOS/Assets.xcassets/preview_unvoice_btn_sel.imageset/preview_unvoice_btn_sel.png
index 2908329..dbd1bfa 100644
--- a/HDL-ON_iOS/Assets.xcassets/preview_unvoice_btn_sel.imageset/preview_unvoice_btn_sel.png
+++ b/HDL-ON_iOS/Assets.xcassets/preview_unvoice_btn_sel.imageset/preview_unvoice_btn_sel.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_unvoice_btn_sel.imageset/preview_unvoice_btn_sel@2x.png b/HDL-ON_iOS/Assets.xcassets/preview_unvoice_btn_sel.imageset/preview_unvoice_btn_sel@2x.png
index 8858696..90e6aa8 100644
--- a/HDL-ON_iOS/Assets.xcassets/preview_unvoice_btn_sel.imageset/preview_unvoice_btn_sel@2x.png
+++ b/HDL-ON_iOS/Assets.xcassets/preview_unvoice_btn_sel.imageset/preview_unvoice_btn_sel@2x.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_unvoice_btn_sel.imageset/preview_unvoice_btn_sel@3x.png b/HDL-ON_iOS/Assets.xcassets/preview_unvoice_btn_sel.imageset/preview_unvoice_btn_sel@3x.png
new file mode 100644
index 0000000..efe18ff
--- /dev/null
+++ b/HDL-ON_iOS/Assets.xcassets/preview_unvoice_btn_sel.imageset/preview_unvoice_btn_sel@3x.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_voice_btn.imageset/preview_voice_btn.png b/HDL-ON_iOS/Assets.xcassets/preview_voice_btn.imageset/preview_voice_btn.png
index b330c2a..ab3bfcf 100644
--- a/HDL-ON_iOS/Assets.xcassets/preview_voice_btn.imageset/preview_voice_btn.png
+++ b/HDL-ON_iOS/Assets.xcassets/preview_voice_btn.imageset/preview_voice_btn.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_voice_btn.imageset/preview_voice_btn@2x.png b/HDL-ON_iOS/Assets.xcassets/preview_voice_btn.imageset/preview_voice_btn@2x.png
index 2dff6b3..035ab45 100644
--- a/HDL-ON_iOS/Assets.xcassets/preview_voice_btn.imageset/preview_voice_btn@2x.png
+++ b/HDL-ON_iOS/Assets.xcassets/preview_voice_btn.imageset/preview_voice_btn@2x.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_voice_btn.imageset/preview_voice_btn@3x.png b/HDL-ON_iOS/Assets.xcassets/preview_voice_btn.imageset/preview_voice_btn@3x.png
new file mode 100644
index 0000000..c605952
--- /dev/null
+++ b/HDL-ON_iOS/Assets.xcassets/preview_voice_btn.imageset/preview_voice_btn@3x.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_voice_btn_sel.imageset/preview_voice_btn_sel.png b/HDL-ON_iOS/Assets.xcassets/preview_voice_btn_sel.imageset/preview_voice_btn_sel.png
index 7276951..8cdf75f 100644
--- a/HDL-ON_iOS/Assets.xcassets/preview_voice_btn_sel.imageset/preview_voice_btn_sel.png
+++ b/HDL-ON_iOS/Assets.xcassets/preview_voice_btn_sel.imageset/preview_voice_btn_sel.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_voice_btn_sel.imageset/preview_voice_btn_sel@2x.png b/HDL-ON_iOS/Assets.xcassets/preview_voice_btn_sel.imageset/preview_voice_btn_sel@2x.png
index 1bbf161..0105ca9 100644
--- a/HDL-ON_iOS/Assets.xcassets/preview_voice_btn_sel.imageset/preview_voice_btn_sel@2x.png
+++ b/HDL-ON_iOS/Assets.xcassets/preview_voice_btn_sel.imageset/preview_voice_btn_sel@2x.png
Binary files differ
diff --git a/HDL-ON_iOS/Assets.xcassets/preview_voice_btn_sel.imageset/preview_voice_btn_sel@3x.png b/HDL-ON_iOS/Assets.xcassets/preview_voice_btn_sel.imageset/preview_voice_btn_sel@3x.png
new file mode 100644
index 0000000..0eea11e
--- /dev/null
+++ b/HDL-ON_iOS/Assets.xcassets/preview_voice_btn_sel.imageset/preview_voice_btn_sel@3x.png
Binary files differ
diff --git a/HDL-ON_iOS/HDL-ON_iOS.csproj b/HDL-ON_iOS/HDL-ON_iOS.csproj
index e2c88cf..0db5cb8 100644
--- a/HDL-ON_iOS/HDL-ON_iOS.csproj
+++ b/HDL-ON_iOS/HDL-ON_iOS.csproj
@@ -25,7 +25,7 @@
         <MtouchArch>x86_64</MtouchArch>
         <MtouchLink>Full</MtouchLink>
         <MtouchDebug>true</MtouchDebug>
-        <CodesignKey>iPhone Developer</CodesignKey>
+        <CodesignKey>Apple Development: xuebiao huang (4P32GXQWWK)</CodesignKey>
         <MtouchExtraArgs>-gcc_flags="-dead_strip -ObjC"</MtouchExtraArgs>
         <CodesignProvision>OnPro230605-1-Dev</CodesignProvision>
         <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
@@ -51,7 +51,7 @@
         <ErrorReport>prompt</ErrorReport>
         <WarningLevel>4</WarningLevel>
         <MtouchArch>ARM64</MtouchArch>
-        <CodesignKey>iPhone Developer: xuebiao huang (4P32GXQWWK)</CodesignKey>
+        <CodesignKey>Apple Development: xuebiao huang (4P32GXQWWK)</CodesignKey>
         <MtouchDebug>true</MtouchDebug>
         <MtouchI18n>cjk</MtouchI18n>
         <MtouchLink>SdkOnly</MtouchLink>
@@ -96,9 +96,6 @@
         <Reference Include="HDL.Shared.IOS.ScanQRCode">
           <HintPath>..\DLL\IOS\HDL.Shared.IOS.ScanQRCode.dll</HintPath>
         </Reference>
-        <Reference Include="Shared.IOS">
-          <HintPath>..\DLL\Shared.IOS.dll</HintPath>
-        </Reference>
         <Reference Include="Shared.IOS.HDLLinphoneSDK">
           <HintPath>..\DLL\Linphone\iOS\Shared.IOS.HDLLinphoneSDK.dll</HintPath>
         </Reference>
@@ -116,6 +113,9 @@
         </Reference>
         <Reference Include="EZSDK.IOS">
           <HintPath>..\DLL\IOS\EZSDK.IOS.dll</HintPath>
+        </Reference>
+        <Reference Include="Shared.IOS">
+          <HintPath>..\DLL\Shared.IOS.dll</HintPath>
         </Reference>
     </ItemGroup>
     <ItemGroup>
@@ -1562,6 +1562,32 @@
       <BundleResource Include="Resources\Phone\FunctionIcon\Light\ColorfulBar.png" />
       <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\groupControl_blue.png" />
       <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\groupControl_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\DoorlockUserManager.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\groupControl.png" />
+      <BundleResource Include="Resources\Phone\LogicIcon\SeriesIcon.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\UserRightsManagement\NfcIcon.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\UserRightsManagement\DigitalPasswordIcon.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\UserRightsManagement\FingerprintIcon.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\UserRightsManagement\DigitalPasswordOnIcon.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\UserRightsManagement\FingerprintOnIcon.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\UserRightsManagement\NfcOnIcon.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\UserRightsManagement\FaceOnIcon.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\UserRightsManagement\FaceIcon.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\peephole.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\securityipcamez.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\AutomaitcTriggerIcon_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\AutomaitcTriggerIcon_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\FaceUnlockImage.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\ManualTriggerIcon_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\ManualTriggerIcon_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\TouchUnlcokImage.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\DoorlockHelpImage1.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\DoorlockHelpImage2.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\DoorlockHelpImage3.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\DoorlockHelpImage4.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HorseRaceLampIcon.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\VideoDoorlockBatteryManagementBg.png" />
+      <BundleResource Include="Resources\Phone\Classification\Room\HomePagebg.png" />
       <BundleResource Include="Resources\h5\index.html" />
       <BundleResource Include="Resources\h5\static\index.63b34199.css" />
       <BundleResource Include="Resources\h5\static\images\coal-save-ic.png" />
@@ -1591,30 +1617,6 @@
       <BundleResource Include="Resources\h5\static\img\equal-plant-ic.7ef6befa.png" />
       <BundleResource Include="Resources\h5\static\img\coal-save-ic.6c5fd125.png" />
       <BundleResource Include="Resources\h5\static\font\SourceHanSansCN-Normal.otf" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\DoorlockUserManager.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\groupControl.png" />
-      <BundleResource Include="Resources\Phone\LogicIcon\SeriesIcon.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\UserRightsManagement\NfcIcon.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\UserRightsManagement\DigitalPasswordIcon.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\UserRightsManagement\FingerprintIcon.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\UserRightsManagement\DigitalPasswordOnIcon.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\UserRightsManagement\FingerprintOnIcon.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\UserRightsManagement\NfcOnIcon.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\UserRightsManagement\FaceOnIcon.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\UserRightsManagement\FaceIcon.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\peephole.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\securityipcamez.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\AutomaitcTriggerIcon_blue.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\AutomaitcTriggerIcon_white.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\FaceUnlockImage.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\ManualTriggerIcon_blue.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\ManualTriggerIcon_white.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\TouchUnlcokImage.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\DoorlockHelpImage1.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\DoorlockHelpImage2.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\DoorlockHelpImage3.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\DoorlockHelpImage4.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HorseRaceLampIcon.png" />
     </ItemGroup>
     <ItemGroup>
       <ITunesArtwork Include="iTunesArtwork" />
diff --git a/HDL-ON_iOS/Info.plist b/HDL-ON_iOS/Info.plist
index 3edb6dd..922dbd4 100644
--- a/HDL-ON_iOS/Info.plist
+++ b/HDL-ON_iOS/Info.plist
@@ -11,7 +11,7 @@
 	<key>CFBundleName</key>
 	<string>On Pro</string>
 	<key>CFBundleShortVersionString</key>
-	<string>1.8.1</string>
+	<string>1.9.0</string>
 	<key>CFBundleURLTypes</key>
 	<array>
 		<dict>
@@ -36,7 +36,7 @@
 		</dict>
 	</array>
 	<key>CFBundleVersion</key>
-	<string>1.8.1</string>
+	<string>1.9.0</string>
 	<key>LSApplicationQueriesSchemes</key>
 	<array>
 		<string>weixinULAPI</string>
diff --git a/HDL-ON_iOS/Resources/EZ/Base.lproj/EZMain.storyboard b/HDL-ON_iOS/Resources/EZ/Base.lproj/EZMain.storyboard
index 63dec62..9e5e029 100644
--- a/HDL-ON_iOS/Resources/EZ/Base.lproj/EZMain.storyboard
+++ b/HDL-ON_iOS/Resources/EZ/Base.lproj/EZMain.storyboard
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" colorMatched="YES" initialViewController="tPl-Go-Tmu">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="21701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" colorMatched="YES" initialViewController="tPl-Go-Tmu">
     <device id="retina4_7" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment version="4352" identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21679"/>
         <capability name="System colors in document resources" minToolsVersion="11.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
@@ -14,7 +14,7 @@
                 <navigationController id="tPl-Go-Tmu" sceneMemberID="viewController">
                     <tabBarItem key="tabBarItem" title="Item" id="EOh-Lf-fJU"/>
                     <navigationBar key="navigationBar" contentMode="scaleToFill" id="9n2-YJ-ND5">
-                        <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
+                        <rect key="frame" x="0.0" y="20" width="375" height="44"/>
                         <autoresizingMask key="autoresizingMask"/>
                     </navigationBar>
                     <connections>
@@ -35,7 +35,7 @@
                         <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
                         <prototypes>
                             <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="R2t-zM-WMl">
-                                <rect key="frame" x="0.0" y="44.5" width="375" height="44"/>
+                                <rect key="frame" x="0.0" y="50" width="375" height="44"/>
                                 <autoresizingMask key="autoresizingMask"/>
                                 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="R2t-zM-WMl" id="a02-NK-SeS">
                                     <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
@@ -92,14 +92,14 @@
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="logo" translatesAutoresizingMaskIntoConstraints="NO" id="MPX-n4-aGz">
-                                <rect key="frame" x="82.5" y="100" width="210" height="94"/>
+                                <rect key="frame" x="82.5" y="120" width="210" height="94"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="94" id="UZa-4y-JdR"/>
                                     <constraint firstAttribute="width" constant="210" id="xPZ-ku-beA"/>
                                 </constraints>
                             </imageView>
                             <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="9VU-hP-zCR">
-                                <rect key="frame" x="45" y="247" width="285" height="39"/>
+                                <rect key="frame" x="45" y="267" width="285" height="39"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="39" id="Uox-Yc-kob"/>
                                     <constraint firstAttribute="width" constant="285" id="wAy-Hx-fAn"/>
@@ -112,7 +112,7 @@
                                 </connections>
                             </button>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="p2R-3f-bRm">
-                                <rect key="frame" x="45" y="306" width="285" height="39"/>
+                                <rect key="frame" x="45" y="326" width="285" height="39"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="39" id="Dta-c4-zZr"/>
                                     <constraint firstAttribute="width" constant="285" id="OT3-hb-4Yn"/>
@@ -138,7 +138,7 @@
                                 </connections>
                             </button>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="EWl-dl-v7z">
-                                <rect key="frame" x="45" y="365" width="285" height="39"/>
+                                <rect key="frame" x="45" y="385" width="285" height="39"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="39" id="FhC-TV-ezu"/>
                                     <constraint firstAttribute="width" constant="285" id="Niw-45-NHf"/>
@@ -151,7 +151,7 @@
                                 </connections>
                             </button>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Tbh-3f-Kyo">
-                                <rect key="frame" x="45" y="483" width="285" height="39"/>
+                                <rect key="frame" x="45" y="503" width="285" height="39"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="39" id="aUb-DN-crC"/>
                                     <constraint firstAttribute="width" constant="285" id="u2c-90-3In"/>
@@ -164,7 +164,7 @@
                                 </connections>
                             </button>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ps8-ku-D1c">
-                                <rect key="frame" x="45" y="424" width="285" height="39"/>
+                                <rect key="frame" x="45" y="444" width="285" height="39"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="39" id="Mu0-my-UVK"/>
                                     <constraint firstAttribute="width" constant="285" id="rGt-yT-DqQ"/>
@@ -222,7 +222,7 @@
                         <color key="backgroundColor" red="0.94117647059999998" green="0.94117647059999998" blue="0.94509803920000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                         <prototypes>
                             <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="EZDeviceCell" rowHeight="73" id="Xkg-Dw-w2X" customClass="DeviceListCell">
-                                <rect key="frame" x="0.0" y="44.5" width="375" height="73"/>
+                                <rect key="frame" x="0.0" y="50" width="375" height="73"/>
                                 <autoresizingMask key="autoresizingMask"/>
                                 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Xkg-Dw-w2X" id="Iet-JC-0rQ">
                                     <rect key="frame" x="0.0" y="0.0" width="375" height="73"/>
@@ -392,7 +392,7 @@
                         <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                         <prototypes>
                             <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="EZCameraCell" id="7Im-ni-l3z">
-                                <rect key="frame" x="0.0" y="44.5" width="375" height="44"/>
+                                <rect key="frame" x="0.0" y="50" width="375" height="44"/>
                                 <autoresizingMask key="autoresizingMask"/>
                                 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="7Im-ni-l3z" id="DdN-J1-0fa">
                                     <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
@@ -428,13 +428,13 @@
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="璁惧搴忓垪鍙�" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="iwL-Ah-WH0">
-                                <rect key="frame" x="20" y="150" width="72" height="17"/>
+                                <rect key="frame" x="20" y="170" width="72" height="17"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="bezel" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="3Ww-0Y-zfl">
-                                <rect key="frame" x="102" y="138.5" width="253" height="40"/>
+                                <rect key="frame" x="102" y="158.5" width="253" height="40"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="40" id="zI7-mv-iMH"/>
                                 </constraints>
@@ -442,7 +442,7 @@
                                 <textInputTraits key="textInputTraits"/>
                             </textField>
                             <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="1" borderStyle="bezel" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="iAj-OV-oUu">
-                                <rect key="frame" x="102" y="198.5" width="253" height="40"/>
+                                <rect key="frame" x="102" y="218.5" width="253" height="40"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="40" id="jeW-7w-Zss"/>
                                 </constraints>
@@ -450,7 +450,7 @@
                                 <textInputTraits key="textInputTraits"/>
                             </textField>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="2s3-2Z-WBg">
-                                <rect key="frame" x="170" y="258.5" width="35" height="33"/>
+                                <rect key="frame" x="170" y="278.5" width="35" height="33"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                 <state key="normal" title="璺宠浆">
                                     <color key="titleColor" systemColor="darkTextColor"/>
@@ -466,7 +466,7 @@
                                 <nil key="highlightedColor"/>
                             </label>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="閫氶亾鍙�" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Gfd-eM-Uwg">
-                                <rect key="frame" x="20" y="210" width="43" height="17"/>
+                                <rect key="frame" x="20" y="230" width="43" height="17"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
@@ -512,7 +512,7 @@
                         <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                         <prototypes>
                             <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="DemoAPICell" id="wpS-t4-02o">
-                                <rect key="frame" x="0.0" y="44.5" width="375" height="44"/>
+                                <rect key="frame" x="0.0" y="50" width="375" height="44"/>
                                 <autoresizingMask key="autoresizingMask"/>
                                 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="wpS-t4-02o" id="8mM-ux-z21">
                                     <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
@@ -551,7 +551,7 @@
                         <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
                         <prototypes>
                             <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="UVM-wN-ME4">
-                                <rect key="frame" x="0.0" y="44.5" width="375" height="44"/>
+                                <rect key="frame" x="0.0" y="50" width="375" height="44"/>
                                 <autoresizingMask key="autoresizingMask"/>
                                 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="UVM-wN-ME4" id="PFk-ak-8nJ">
                                     <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
@@ -587,22 +587,22 @@
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="8AH-ts-VAl">
-                                <rect key="frame" x="0.0" y="44" width="187.5" height="100"/>
+                                <rect key="frame" x="0.0" y="64" width="187.5" height="100"/>
                                 <color key="backgroundColor" red="0.17321318387985229" green="0.74333697557449341" blue="0.45914602279663086" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="100" id="uyH-gu-qB2"/>
                                 </constraints>
                             </view>
                             <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="frT-lO-vkv">
-                                <rect key="frame" x="187.5" y="144" width="187.5" height="100"/>
+                                <rect key="frame" x="187.5" y="164" width="187.5" height="100"/>
                                 <color key="backgroundColor" red="0.17321318387985229" green="0.74333697557449341" blue="0.45914602279663086" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             </view>
                             <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="XlI-CJ-eCW">
-                                <rect key="frame" x="0.0" y="144" width="187.5" height="100"/>
+                                <rect key="frame" x="0.0" y="164" width="187.5" height="100"/>
                                 <color key="backgroundColor" red="0.93333333330000001" green="0.65490196079999996" blue="0.40000000000000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             </view>
                             <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="iCt-fy-olc">
-                                <rect key="frame" x="187.5" y="44" width="187.5" height="100"/>
+                                <rect key="frame" x="187.5" y="64" width="187.5" height="100"/>
                                 <color key="backgroundColor" red="0.85770881180000003" green="0.211302614" blue="0.113631911" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             </view>
                         </subviews>
@@ -648,7 +648,7 @@
                         <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
                         <prototypes>
                             <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="VhH-MZ-U0P">
-                                <rect key="frame" x="0.0" y="44.5" width="375" height="44"/>
+                                <rect key="frame" x="0.0" y="50" width="375" height="44"/>
                                 <autoresizingMask key="autoresizingMask"/>
                                 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="VhH-MZ-U0P" id="Kep-2I-4hb">
                                     <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
@@ -683,7 +683,7 @@
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hdv-eQ-Pot">
-                                <rect key="frame" x="0.0" y="44" width="375" height="211"/>
+                                <rect key="frame" x="0.0" y="64" width="375" height="211"/>
                                 <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
                                 <constraints>
                                     <constraint firstAttribute="width" secondItem="hdv-eQ-Pot" secondAttribute="height" multiplier="16:9" id="qjy-ev-K4v"/>
@@ -800,24 +800,23 @@
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="wifi_bg" translatesAutoresizingMaskIntoConstraints="NO" id="gFl-PI-CLn">
-                                <rect key="frame" x="0.0" y="44" width="375" height="623"/>
+                                <rect key="frame" x="0.0" y="64" width="375" height="603"/>
                             </imageView>
                             <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="NRj-hs-uOI">
-                                <rect key="frame" x="0.0" y="44" width="375" height="211"/>
+                                <rect key="frame" x="0.0" y="64" width="375" height="211"/>
                                 <subviews>
                                     <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1Xz-5f-ZJx">
                                         <rect key="frame" x="0.0" y="0.0" width="375" height="211"/>
-                                        <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <color key="backgroundColor" red="0.047058823530000002" green="0.054901960780000002" blue="0.062745098040000002" alpha="1" colorSpace="calibratedRGB"/>
                                         <constraints>
                                             <constraint firstAttribute="width" secondItem="1Xz-5f-ZJx" secondAttribute="height" multiplier="16:9" id="7NS-WA-bEr"/>
                                         </constraints>
                                     </view>
                                 </subviews>
                                 <constraints>
-                                    <constraint firstItem="1Xz-5f-ZJx" firstAttribute="centerY" secondItem="NRj-hs-uOI" secondAttribute="centerY" id="DTc-SB-nnD"/>
+                                    <constraint firstItem="1Xz-5f-ZJx" firstAttribute="top" secondItem="NRj-hs-uOI" secondAttribute="top" id="DTc-SB-nnD"/>
                                     <constraint firstAttribute="width" secondItem="NRj-hs-uOI" secondAttribute="height" multiplier="16:9" id="FHe-T4-BRJ"/>
                                     <constraint firstItem="1Xz-5f-ZJx" firstAttribute="width" secondItem="NRj-hs-uOI" secondAttribute="width" id="JfK-ti-Ys7"/>
-                                    <constraint firstItem="1Xz-5f-ZJx" firstAttribute="height" secondItem="NRj-hs-uOI" secondAttribute="height" id="QcN-dO-GL9"/>
                                     <constraint firstAttribute="bottom" secondItem="1Xz-5f-ZJx" secondAttribute="bottom" id="ted-kP-rO7"/>
                                     <constraint firstAttribute="trailing" secondItem="1Xz-5f-ZJx" secondAttribute="trailing" id="wA6-Da-kWF"/>
                                     <constraint firstItem="1Xz-5f-ZJx" firstAttribute="centerX" secondItem="NRj-hs-uOI" secondAttribute="centerX" id="zUn-i2-2qZ"/>
@@ -826,7 +825,7 @@
                                 <viewLayoutGuide key="frameLayoutGuide" id="itJ-oF-sXb"/>
                             </scrollView>
                             <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2bL-GF-xWw">
-                                <rect key="frame" x="0.0" y="44" width="375" height="40"/>
+                                <rect key="frame" x="0.0" y="64" width="375" height="40"/>
                                 <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="40" id="u99-on-soH"/>
@@ -836,7 +835,7 @@
                                 <nil key="highlightedColor"/>
                             </label>
                             <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="  00:00" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Yrc-c9-rvb">
-                                <rect key="frame" x="147.5" y="54" width="80" height="24"/>
+                                <rect key="frame" x="147.5" y="74" width="80" height="24"/>
                                 <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="80" id="O7b-Gn-efp"/>
@@ -847,7 +846,7 @@
                                 <nil key="highlightedColor"/>
                             </label>
                             <view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dTs-1h-o4p">
-                                <rect key="frame" x="157" y="162" width="61" height="93"/>
+                                <rect key="frame" x="157" y="182" width="61" height="93"/>
                                 <subviews>
                                     <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="picture_bg" translatesAutoresizingMaskIntoConstraints="NO" id="oew-Eh-y6G">
                                         <rect key="frame" x="0.0" y="0.0" width="61" height="93"/>
@@ -911,7 +910,7 @@
                                 </constraints>
                             </view>
                             <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1FE-Su-4U4">
-                                <rect key="frame" x="0.0" y="255" width="375" height="37"/>
+                                <rect key="frame" x="0.0" y="275" width="375" height="37"/>
                                 <subviews>
                                     <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="xSp-4i-Jwh">
                                         <rect key="frame" x="0.0" y="0.0" width="75" height="37"/>
@@ -942,6 +941,12 @@
                                             <constraint firstAttribute="height" constant="37" id="dpN-py-vBv"/>
                                         </constraints>
                                         <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                        <state key="normal">
+                                            <color key="titleColor" red="0.61960784310000006" green="0.62352941179999999" blue="0.62352941179999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        </state>
+                                        <state key="highlighted">
+                                            <color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                        </state>
                                     </button>
                                     <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="lTh-qe-8pV">
                                         <rect key="frame" x="300" y="0.0" width="75" height="37"/>
@@ -961,14 +966,17 @@
                                         </constraints>
                                         <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                         <state key="normal" title="楂樻竻">
-                                            <color key="titleColor" red="0.70588235294117641" green="0.70588235294117641" blue="0.70588235294117641" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                            <color key="titleColor" red="0.61960784310000006" green="0.62352941179999999" blue="0.62352941179999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        </state>
+                                        <state key="highlighted">
+                                            <color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                                         </state>
                                         <connections>
                                             <action selector="qualityButtonClicked:" destination="uBF-Yq-Qo0" eventType="touchUpInside" id="Hze-u0-cgn"/>
                                         </connections>
                                     </button>
                                 </subviews>
-                                <color key="backgroundColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <color key="backgroundColor" red="0.047058823529411764" green="0.054901960784313725" blue="0.062745098039215685" alpha="1" colorSpace="calibratedRGB"/>
                                 <constraints>
                                     <constraint firstItem="xSp-4i-Jwh" firstAttribute="top" secondItem="1FE-Su-4U4" secondAttribute="top" id="1W5-cF-JRC"/>
                                     <constraint firstItem="lTh-qe-8pV" firstAttribute="top" secondItem="1FE-Su-4U4" secondAttribute="top" id="HsY-AZ-lgd"/>
@@ -989,10 +997,10 @@
                                 </constraints>
                             </view>
                             <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="7Gq-77-ypg">
-                                <rect key="frame" x="0.0" y="292" width="375" height="375"/>
+                                <rect key="frame" x="0.0" y="312" width="375" height="355"/>
                                 <subviews>
                                     <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fUI-tR-jyG">
-                                        <rect key="frame" x="77.5" y="87.5" width="100" height="100"/>
+                                        <rect key="frame" x="77.5" y="77.5" width="100" height="100"/>
                                         <constraints>
                                             <constraint firstAttribute="width" constant="100" id="4pV-lo-eLV"/>
                                             <constraint firstAttribute="height" constant="100" id="CFM-rZ-KQg"/>
@@ -1008,7 +1016,7 @@
                                         </connections>
                                     </button>
                                     <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="4Eh-hh-84T">
-                                        <rect key="frame" x="197.5" y="87.5" width="100" height="100"/>
+                                        <rect key="frame" x="197.5" y="77.5" width="100" height="100"/>
                                         <constraints>
                                             <constraint firstAttribute="width" constant="100" id="MdX-on-ZlR"/>
                                             <constraint firstAttribute="height" constant="100" id="uZ6-ZC-fku"/>
@@ -1025,7 +1033,7 @@
                                         </connections>
                                     </button>
                                     <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="wEO-O3-gSJ">
-                                        <rect key="frame" x="77.5" y="187.5" width="100" height="100"/>
+                                        <rect key="frame" x="77.5" y="177.5" width="100" height="100"/>
                                         <constraints>
                                             <constraint firstAttribute="width" constant="100" id="HNG-1d-auy"/>
                                             <constraint firstAttribute="height" constant="100" id="fFt-WV-T6O"/>
@@ -1041,7 +1049,7 @@
                                         </connections>
                                     </button>
                                     <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Lrx-9r-gJZ">
-                                        <rect key="frame" x="0.0" y="287" width="375" height="88"/>
+                                        <rect key="frame" x="0.0" y="287" width="375" height="68"/>
                                         <subviews>
                                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Un0-bC-uwU">
                                                 <rect key="frame" x="325" y="0.0" width="50" height="50"/>
@@ -1059,7 +1067,7 @@
                                                 </connections>
                                             </button>
                                             <button opaque="NO" contentMode="scaleToFill" enabled="NO" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="cRL-ov-Bad">
-                                                <rect key="frame" x="110.5" y="-33" width="154" height="154"/>
+                                                <rect key="frame" x="110.5" y="-43" width="154" height="154"/>
                                                 <constraints>
                                                     <constraint firstAttribute="width" constant="154" id="2qV-nc-X2D"/>
                                                     <constraint firstAttribute="height" constant="154" id="CCV-cO-2RB"/>
@@ -1069,7 +1077,7 @@
                                                 <state key="highlighted" image="ptz_bg"/>
                                             </button>
                                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="46J-XC-G3M">
-                                                <rect key="frame" x="162.5" y="-33" width="50" height="50"/>
+                                                <rect key="frame" x="162.5" y="-43" width="50" height="50"/>
                                                 <constraints>
                                                     <constraint firstAttribute="width" constant="50" id="bG6-29-hdH"/>
                                                     <constraint firstAttribute="height" constant="50" id="sI2-gA-aFQ"/>
@@ -1080,7 +1088,7 @@
                                                 </connections>
                                             </button>
                                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="YpD-H2-J3L">
-                                                <rect key="frame" x="162.5" y="71" width="50" height="50"/>
+                                                <rect key="frame" x="162.5" y="61" width="50" height="50"/>
                                                 <constraints>
                                                     <constraint firstAttribute="width" constant="50" id="8xd-ja-amB"/>
                                                     <constraint firstAttribute="height" constant="50" id="fYS-8a-jfb"/>
@@ -1091,7 +1099,7 @@
                                                 </connections>
                                             </button>
                                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="WlW-FZ-jz8">
-                                                <rect key="frame" x="214.5" y="18" width="50" height="50"/>
+                                                <rect key="frame" x="214.5" y="8" width="50" height="50"/>
                                                 <constraints>
                                                     <constraint firstAttribute="width" constant="50" id="JyV-sT-9Nd"/>
                                                     <constraint firstAttribute="height" constant="50" id="bVy-Jx-0Yf"/>
@@ -1102,7 +1110,7 @@
                                                 </connections>
                                             </button>
                                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="g5e-Uk-Wgs">
-                                                <rect key="frame" x="110.5" y="19" width="50" height="50"/>
+                                                <rect key="frame" x="110.5" y="9" width="50" height="50"/>
                                                 <constraints>
                                                     <constraint firstAttribute="width" constant="50" id="ZN7-OU-GCA"/>
                                                     <constraint firstAttribute="height" constant="50" id="et2-oA-SKp"/>
@@ -1130,7 +1138,7 @@
                                         </constraints>
                                     </view>
                                     <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="IqL-eW-ddl">
-                                        <rect key="frame" x="0.0" y="287" width="375" height="88"/>
+                                        <rect key="frame" x="0.0" y="287" width="375" height="68"/>
                                         <subviews>
                                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="j3z-1C-gSQ">
                                                 <rect key="frame" x="325" y="0.0" width="50" height="50"/>
@@ -1148,7 +1156,7 @@
                                                 </connections>
                                             </button>
                                             <imageView contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="preview_talkback" highlightedImage="spkImg" translatesAutoresizingMaskIntoConstraints="NO" id="SdD-om-sXP">
-                                                <rect key="frame" x="137.5" y="-6" width="100" height="100"/>
+                                                <rect key="frame" x="137.5" y="-16" width="100" height="100"/>
                                                 <gestureRecognizers/>
                                                 <constraints>
                                                     <constraint firstAttribute="height" constant="100" id="5Av-B7-ISV"/>
@@ -1168,7 +1176,7 @@
                                         </constraints>
                                     </view>
                                     <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="xQS-rQ-Xez">
-                                        <rect key="frame" x="197.5" y="187.5" width="100" height="100"/>
+                                        <rect key="frame" x="197.5" y="177.5" width="100" height="100"/>
                                         <constraints>
                                             <constraint firstAttribute="width" constant="100" id="Gjc-CC-41w"/>
                                             <constraint firstAttribute="height" constant="100" id="Kpb-pS-Xes"/>
@@ -1250,7 +1258,7 @@
                                 </constraints>
                             </view>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="nkn-oC-NfP">
-                                <rect key="frame" x="0.0" y="44" width="40" height="40"/>
+                                <rect key="frame" x="17.5" y="64" width="40" height="40"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="40" id="WQV-Fb-Hpn"/>
                                     <constraint firstAttribute="width" constant="40" id="rqc-sI-jaX"/>
@@ -1262,7 +1270,7 @@
                                 </connections>
                             </button>
                             <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="yYv-tJ-QCV">
-                                <rect key="frame" x="160.5" y="122.5" width="54" height="54"/>
+                                <rect key="frame" x="160.5" y="142.5" width="54" height="54"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="54" id="TXE-KQ-iJl"/>
                                     <constraint firstAttribute="height" constant="54" id="nqy-4G-kEq"/>
@@ -1275,7 +1283,7 @@
                                 </connections>
                             </button>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YwB-6z-DKL">
-                                <rect key="frame" x="0.0" y="134.5" width="375" height="30"/>
+                                <rect key="frame" x="0.0" y="154.5" width="375" height="30"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="30" id="eMk-ij-ZRD"/>
                                 </constraints>
@@ -1284,22 +1292,89 @@
                                 <nil key="highlightedColor"/>
                             </label>
                             <label hidden="YES" opaque="NO" userInteractionEnabled="NO" alpha="0.69999999999999996" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3XK-Ur-ZIj">
-                                <rect key="frame" x="16" y="139" width="0.0" height="0.0"/>
+                                <rect key="frame" x="16" y="159" width="0.0" height="0.0"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                 <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                                 <nil key="highlightedColor"/>
                             </label>
+                            <view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="sMv-Yh-W5N">
+                                <rect key="frame" x="0.0" y="312" width="375" height="355"/>
+                                <subviews>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="---" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8Fe-E7-C5g">
+                                        <rect key="frame" x="32" y="46.5" width="311" height="21"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                        <color key="textColor" red="0.090196078430000007" green="0.094117647060000004" blue="0.29411764709999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <button opaque="NO" contentMode="scaleAspectFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="aq5-rn-Dgo" customClass="HDLEZOPButton">
+                                        <rect key="frame" x="142.5" y="117.5" width="84.5" height="120"/>
+                                        <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                        <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                        <state key="normal" title="蹇界暐" image="hdl_ez_cat_eyes_ignore">
+                                            <color key="titleColor" red="0.10588235294117647" green="0.1764705882352941" blue="0.30196078431372547" alpha="1" colorSpace="calibratedRGB"/>
+                                        </state>
+                                        <connections>
+                                            <action selector="clickCalloutIgnoreAction:" destination="uBF-Yq-Qo0" eventType="touchUpInside" id="fTQ-p0-9jk"/>
+                                        </connections>
+                                    </button>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="2bC-B5-gMZ" customClass="HDLEZOPButton">
+                                        <rect key="frame" x="259" y="117.5" width="84" height="120"/>
+                                        <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                        <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                        <state key="normal" title="鎺ュ惉" image="hdl_ez_cat_eyes_answer">
+                                            <color key="titleColor" red="0.10588235294117647" green="0.1764705882352941" blue="0.30196078431372547" alpha="1" colorSpace="calibratedRGB"/>
+                                        </state>
+                                        <connections>
+                                            <action selector="clickCalloutAnswerAction:" destination="uBF-Yq-Qo0" eventType="touchUpInside" id="2tR-65-1sv"/>
+                                        </connections>
+                                    </button>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="jPI-nC-uAq" customClass="HDLEZOPButton">
+                                        <rect key="frame" x="32" y="117.5" width="78.5" height="120"/>
+                                        <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="120" id="NXb-C0-Nw5"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                        <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                        <state key="normal" title="鎸傛柇" image="hdl_ez_cat_eyes_hang_up">
+                                            <color key="titleColor" red="0.1058823529" green="0.1764705882" blue="0.30196078430000001" alpha="1" colorSpace="calibratedRGB"/>
+                                        </state>
+                                        <connections>
+                                            <action selector="clickCalloutHangupAction:" destination="uBF-Yq-Qo0" eventType="touchUpInside" id="Szo-xH-Mh6"/>
+                                        </connections>
+                                    </button>
+                                </subviews>
+                                <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                <constraints>
+                                    <constraint firstItem="aq5-rn-Dgo" firstAttribute="centerY" secondItem="jPI-nC-uAq" secondAttribute="centerY" id="0YK-rV-xIW"/>
+                                    <constraint firstAttribute="trailing" secondItem="8Fe-E7-C5g" secondAttribute="trailing" constant="32" id="8NR-Fc-tPc"/>
+                                    <constraint firstItem="aq5-rn-Dgo" firstAttribute="leading" secondItem="jPI-nC-uAq" secondAttribute="trailing" constant="32" id="8ht-5u-0y7"/>
+                                    <constraint firstItem="2bC-B5-gMZ" firstAttribute="height" secondItem="aq5-rn-Dgo" secondAttribute="height" id="B0O-2O-7OG"/>
+                                    <constraint firstItem="jPI-nC-uAq" firstAttribute="centerY" secondItem="sMv-Yh-W5N" secondAttribute="centerY" id="Fa3-MI-9zW"/>
+                                    <constraint firstItem="aq5-rn-Dgo" firstAttribute="width" secondItem="jPI-nC-uAq" secondAttribute="width" multiplier="1.07143" id="Jzm-Kq-s1B"/>
+                                    <constraint firstItem="aq5-rn-Dgo" firstAttribute="top" secondItem="8Fe-E7-C5g" secondAttribute="bottom" constant="50" id="aM7-YH-wta"/>
+                                    <constraint firstItem="aq5-rn-Dgo" firstAttribute="height" secondItem="jPI-nC-uAq" secondAttribute="height" id="dri-gY-bvB"/>
+                                    <constraint firstItem="jPI-nC-uAq" firstAttribute="leading" secondItem="sMv-Yh-W5N" secondAttribute="leading" constant="32" id="eUw-x2-5HY"/>
+                                    <constraint firstItem="2bC-B5-gMZ" firstAttribute="leading" secondItem="aq5-rn-Dgo" secondAttribute="trailing" constant="32" id="eu1-g4-zxI"/>
+                                    <constraint firstAttribute="trailing" secondItem="2bC-B5-gMZ" secondAttribute="trailing" constant="32" id="fzR-kq-9dw"/>
+                                    <constraint firstItem="2bC-B5-gMZ" firstAttribute="centerY" secondItem="aq5-rn-Dgo" secondAttribute="centerY" id="jQf-ae-vvC"/>
+                                    <constraint firstItem="8Fe-E7-C5g" firstAttribute="leading" secondItem="sMv-Yh-W5N" secondAttribute="leading" constant="32" id="p4O-md-aUe"/>
+                                    <constraint firstItem="2bC-B5-gMZ" firstAttribute="width" secondItem="aq5-rn-Dgo" secondAttribute="width" id="w2D-Ia-3nQ"/>
+                                </constraints>
+                            </view>
                         </subviews>
                         <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                         <constraints>
                             <constraint firstItem="Yrc-c9-rvb" firstAttribute="top" secondItem="heE-pR-PSR" secondAttribute="bottom" constant="10" id="0Cf-Q8-Mwq"/>
                             <constraint firstAttribute="trailing" secondItem="YwB-6z-DKL" secondAttribute="trailing" id="0oZ-sb-kgM"/>
                             <constraint firstItem="YwB-6z-DKL" firstAttribute="leading" secondItem="PYB-vu-Xcw" secondAttribute="leading" id="135-mO-STg"/>
-                            <constraint firstItem="7Gq-77-ypg" firstAttribute="top" secondItem="1FE-Su-4U4" secondAttribute="bottom" priority="751" id="4Dh-L5-Wxp"/>
+                            <constraint firstItem="dTs-1h-o4p" firstAttribute="centerX" secondItem="JEB-Q6-XNh" secondAttribute="centerX" id="16Z-Vr-x9e"/>
+                            <constraint firstItem="7Gq-77-ypg" firstAttribute="top" secondItem="NRj-hs-uOI" secondAttribute="bottom" priority="751" constant="37" id="4Dh-L5-Wxp"/>
                             <constraint firstItem="YwB-6z-DKL" firstAttribute="centerX" secondItem="PYB-vu-Xcw" secondAttribute="centerX" id="58C-Bi-adb"/>
-                            <constraint firstItem="dTs-1h-o4p" firstAttribute="centerX" secondItem="PYB-vu-Xcw" secondAttribute="centerX" id="7Nq-GR-ypc"/>
-                            <constraint firstAttribute="trailing" secondItem="1FE-Su-4U4" secondAttribute="trailing" id="9po-jh-PJt"/>
-                            <constraint firstItem="1FE-Su-4U4" firstAttribute="top" secondItem="NRj-hs-uOI" secondAttribute="bottom" id="Aeo-vo-x5Y"/>
+                            <constraint firstItem="3qm-Zv-a7S" firstAttribute="top" secondItem="sMv-Yh-W5N" secondAttribute="bottom" id="5fc-VK-Tfj"/>
+                            <constraint firstItem="NRj-hs-uOI" firstAttribute="trailing" secondItem="1FE-Su-4U4" secondAttribute="trailing" id="9po-jh-PJt"/>
                             <constraint firstAttribute="trailing" secondItem="NRj-hs-uOI" secondAttribute="trailing" id="G3Q-MC-BpN"/>
                             <constraint firstItem="2bL-GF-xWw" firstAttribute="top" secondItem="heE-pR-PSR" secondAttribute="bottom" id="JNG-uc-9XA"/>
                             <constraint firstItem="NRj-hs-uOI" firstAttribute="top" secondItem="heE-pR-PSR" secondAttribute="bottom" id="PXn-FW-8dk"/>
@@ -1307,35 +1382,45 @@
                             <constraint firstItem="1FE-Su-4U4" firstAttribute="top" secondItem="dTs-1h-o4p" secondAttribute="bottom" id="Qae-km-Xxm"/>
                             <constraint firstItem="NRj-hs-uOI" firstAttribute="centerY" secondItem="yYv-tJ-QCV" secondAttribute="centerY" id="TGA-a5-AUm"/>
                             <constraint firstItem="nkn-oC-NfP" firstAttribute="top" secondItem="heE-pR-PSR" secondAttribute="bottom" id="Tn0-Se-wHE"/>
-                            <constraint firstItem="nkn-oC-NfP" firstAttribute="leading" secondItem="PYB-vu-Xcw" secondAttribute="leading" id="YSp-TA-bZd"/>
+                            <constraint firstItem="sMv-Yh-W5N" firstAttribute="top" secondItem="7Gq-77-ypg" secondAttribute="top" id="TvP-3j-NV3"/>
                             <constraint firstItem="yYv-tJ-QCV" firstAttribute="centerX" secondItem="YwB-6z-DKL" secondAttribute="centerX" id="Yt6-5R-nAw"/>
+                            <constraint firstItem="1FE-Su-4U4" firstAttribute="top" secondItem="NRj-hs-uOI" secondAttribute="bottom" id="aO9-KQ-MPh"/>
                             <constraint firstItem="2bL-GF-xWw" firstAttribute="leading" secondItem="PYB-vu-Xcw" secondAttribute="leading" id="adY-eM-6Nb"/>
                             <constraint firstItem="NRj-hs-uOI" firstAttribute="centerY" secondItem="YwB-6z-DKL" secondAttribute="centerY" id="cjf-nt-XqE"/>
                             <constraint firstItem="3qm-Zv-a7S" firstAttribute="top" secondItem="gFl-PI-CLn" secondAttribute="bottom" id="fSZ-Xw-PGz"/>
                             <constraint firstItem="gFl-PI-CLn" firstAttribute="leading" secondItem="PYB-vu-Xcw" secondAttribute="leading" id="hvI-bX-2fD"/>
                             <constraint firstItem="3XK-Ur-ZIj" firstAttribute="leading" secondItem="PYB-vu-Xcw" secondAttribute="leading" constant="16" id="hya-DL-nrl"/>
+                            <constraint firstItem="sMv-Yh-W5N" firstAttribute="trailing" secondItem="PYB-vu-Xcw" secondAttribute="trailing" id="jzU-g2-HL3"/>
                             <constraint firstItem="1FE-Su-4U4" firstAttribute="leading" secondItem="PYB-vu-Xcw" secondAttribute="leading" id="mfp-Y3-aJF"/>
                             <constraint firstItem="7Gq-77-ypg" firstAttribute="leading" secondItem="PYB-vu-Xcw" secondAttribute="leading" id="nIY-1B-8KJ"/>
                             <constraint firstItem="NRj-hs-uOI" firstAttribute="leading" secondItem="PYB-vu-Xcw" secondAttribute="leading" id="opo-g8-z05"/>
                             <constraint firstAttribute="trailing" secondItem="7Gq-77-ypg" secondAttribute="trailing" id="pjs-uX-99u"/>
+                            <constraint firstItem="nkn-oC-NfP" firstAttribute="centerX" secondItem="xSp-4i-Jwh" secondAttribute="centerX" id="qFB-6I-bhK"/>
                             <constraint firstAttribute="trailing" secondItem="2bL-GF-xWw" secondAttribute="trailing" id="sJ1-Mt-Ys4"/>
                             <constraint firstItem="gFl-PI-CLn" firstAttribute="top" secondItem="heE-pR-PSR" secondAttribute="bottom" id="sJh-Px-GtM"/>
                             <constraint firstAttribute="trailing" secondItem="gFl-PI-CLn" secondAttribute="trailing" id="vZX-0k-C1e"/>
                             <constraint firstItem="3XK-Ur-ZIj" firstAttribute="top" secondItem="2bL-GF-xWw" secondAttribute="bottom" constant="55" id="vyg-ls-OTR"/>
                             <constraint firstItem="Yrc-c9-rvb" firstAttribute="centerX" secondItem="PYB-vu-Xcw" secondAttribute="centerX" id="y5l-xh-jsd"/>
+                            <constraint firstItem="sMv-Yh-W5N" firstAttribute="leading" secondItem="PYB-vu-Xcw" secondAttribute="leading" id="yPz-fc-ra1"/>
                         </constraints>
                     </view>
                     <navigationItem key="navigationItem" id="vpB-aG-zb3"/>
                     <connections>
+                        <outlet property="answerButton" destination="2bC-B5-gMZ" id="T42-Dl-1mx"/>
                         <outlet property="bottomView" destination="7Gq-77-ypg" id="kLP-FN-Tvv"/>
+                        <outlet property="callOutAlertLabel" destination="8Fe-E7-C5g" id="h1w-BY-5fi"/>
                         <outlet property="captureButton" destination="wEO-O3-gSJ" id="ABn-Ub-QEs"/>
                         <outlet property="cloudBtn" destination="WYB-ca-Ox6" id="E4S-1L-4uS"/>
                         <outlet property="cloudTip" destination="wXb-RI-dLd" id="bCu-fP-8IF"/>
                         <outlet property="controlButton" destination="fUI-tR-jyG" id="uqI-1T-h8V"/>
                         <outlet property="currentHDStatus" destination="oNR-gT-NPm" id="STe-rh-VhG"/>
+                        <outlet property="emptyBtnLeftMargin" destination="ea4-ei-JXX" id="aQh-Jb-qGX"/>
                         <outlet property="emptyButton" destination="MqM-GF-jSr" id="jD7-hz-yfd"/>
+                        <outlet property="hangUpButton" destination="jPI-nC-uAq" id="WAF-xK-pJI"/>
                         <outlet property="highButton" destination="skK-Ar-y6h" id="jbk-j5-fCX"/>
+                        <outlet property="ignoreButton" destination="aq5-rn-Dgo" id="0J6-cC-KP5"/>
                         <outlet property="largeBackButton" destination="nkn-oC-NfP" id="kwo-DU-hgk"/>
+                        <outlet property="largeBtnRightMargin" destination="aid-gD-fi2" id="2eQ-2e-83s"/>
                         <outlet property="largeButton" destination="lTh-qe-8pV" id="feK-gX-fjt"/>
                         <outlet property="largeTitleLabel" destination="2bL-GF-xWw" id="mev-Ko-lDT"/>
                         <outlet property="localRecordButton" destination="xQS-rQ-Xez" id="Z0M-JE-cTx"/>
@@ -1344,9 +1429,12 @@
                         <outlet property="lowButton" destination="UlQ-aK-1VP" id="ISE-DJ-W5I"/>
                         <outlet property="messageLabel" destination="YwB-6z-DKL" id="196-Ds-Vl6"/>
                         <outlet property="middleButton" destination="WSh-Ao-McO" id="vty-N8-cDz"/>
+                        <outlet property="playBtnLeftMargin" destination="qZZ-Fc-8jt" id="Fyj-20-v8W"/>
                         <outlet property="playButton" destination="xSp-4i-Jwh" id="DUU-ap-reQ"/>
                         <outlet property="playerPlayButton" destination="yYv-tJ-QCV" id="EIB-lc-14l"/>
                         <outlet property="playerView" destination="1Xz-5f-ZJx" id="tYS-5X-mCe"/>
+                        <outlet property="playerViewBottomMargin" destination="ted-kP-rO7" id="oFs-an-sCu"/>
+                        <outlet property="playerViewWHRatio" destination="7NS-WA-bEr" id="nAT-Lb-Z7I"/>
                         <outlet property="ptzCloseButton" destination="Un0-bC-uwU" id="pBM-jg-Hsv"/>
                         <outlet property="ptzControlButton" destination="cRL-ov-Bad" id="dO9-KY-Fpn"/>
                         <outlet property="ptzDownButton" destination="YpD-H2-J3L" id="9Hs-IT-QQk"/>
@@ -1358,6 +1446,8 @@
                         <outlet property="qualityButton" destination="JEB-Q6-XNh" id="z41-pC-jcF"/>
                         <outlet property="qualityView" destination="dTs-1h-o4p" id="cwe-H0-P0z"/>
                         <outlet property="scrollView" destination="NRj-hs-uOI" id="eoY-a5-7Nt"/>
+                        <outlet property="scrollViewTopMargin" destination="PXn-FW-8dk" id="ROR-nh-sCL"/>
+                        <outlet property="scrollViewWHRatio" destination="FHe-T4-BRJ" id="VDa-Ms-cmg"/>
                         <outlet property="speakImageView" destination="SdD-om-sXP" id="vut-X7-g34"/>
                         <outlet property="streamPlayBtn" destination="X2B-Km-Emd" id="wjk-zR-FDC"/>
                         <outlet property="streamTypeLabel" destination="5WH-Ih-9Yw" id="azv-2u-5FX"/>
@@ -1366,6 +1456,7 @@
                         <outlet property="talkView" destination="IqL-eW-ddl" id="hTy-iu-CUA"/>
                         <outlet property="talkViewContraint" destination="IcU-Zd-4MD" id="vMR-vH-k7J"/>
                         <outlet property="toolBar" destination="1FE-Su-4U4" id="CTH-vb-IfL"/>
+                        <outlet property="videoCallOutView" destination="sMv-Yh-W5N" id="RBZ-2y-YXA"/>
                         <outlet property="voiceButton" destination="tAW-X2-E9K" id="N5O-Qz-qd6"/>
                         <outlet property="zoomSizeLabel" destination="3XK-Ur-ZIj" id="vYD-CM-uoE"/>
                     </connections>
@@ -1392,7 +1483,7 @@
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="kQU-Pc-qqv">
-                                <rect key="frame" x="0.0" y="44" width="375" height="211"/>
+                                <rect key="frame" x="0.0" y="64" width="375" height="211"/>
                                 <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <gestureRecognizers/>
                                 <constraints>
@@ -1403,7 +1494,7 @@
                                 </connections>
                             </view>
                             <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SJH-Sa-TMv">
-                                <rect key="frame" x="0.0" y="44" width="375" height="40"/>
+                                <rect key="frame" x="0.0" y="64" width="375" height="40"/>
                                 <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="40" id="o94-Gh-tdc"/>
@@ -1413,7 +1504,7 @@
                                 <nil key="highlightedColor"/>
                             </label>
                             <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3j6-e7-ztE">
-                                <rect key="frame" x="0.0" y="255" width="375" height="44"/>
+                                <rect key="frame" x="0.0" y="275" width="375" height="44"/>
                                 <subviews>
                                     <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Bu9-Qz-3Ij">
                                         <rect key="frame" x="187.5" y="0.0" width="187.5" height="44"/>
@@ -1472,7 +1563,7 @@
                                 </constraints>
                             </view>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="hY1-Ac-Oot">
-                                <rect key="frame" x="0.0" y="44" width="40" height="40"/>
+                                <rect key="frame" x="0.0" y="64" width="40" height="40"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="40" id="AFV-2p-wo1"/>
                                     <constraint firstAttribute="width" constant="40" id="h15-cw-wZH"/>
@@ -1483,7 +1574,7 @@
                                 </connections>
                             </button>
                             <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="buq-PS-h5p">
-                                <rect key="frame" x="0.0" y="195" width="375" height="60"/>
+                                <rect key="frame" x="0.0" y="215" width="375" height="60"/>
                                 <subviews>
                                     <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Z3E-1u-wEn">
                                         <rect key="frame" x="0.0" y="23" width="60" height="37"/>
@@ -1492,6 +1583,7 @@
                                             <constraint firstAttribute="width" constant="60" id="mZh-Ks-yHR"/>
                                         </constraints>
                                         <state key="normal" image="preview_play_btn"/>
+                                        <state key="highlighted" image="preview_play_btn_sel"/>
                                         <connections>
                                             <action selector="playButtonClicked:" destination="I6z-uV-dEU" eventType="touchUpInside" id="nzq-1I-c5F"/>
                                         </connections>
@@ -1503,6 +1595,7 @@
                                             <constraint firstAttribute="height" constant="37" id="nC8-FN-WAT"/>
                                         </constraints>
                                         <state key="normal" image="preview_voice_btn"/>
+                                        <state key="highlighted" image="preview_voice_btn_sel"/>
                                         <connections>
                                             <action selector="voiceButtonClicked:" destination="I6z-uV-dEU" eventType="touchUpInside" id="aAV-1Z-FGI"/>
                                         </connections>
@@ -1520,7 +1613,7 @@
                                         </connections>
                                     </button>
                                     <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="00:00" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ruu-Hg-3Tx">
-                                        <rect key="frame" x="0.0" y="0.0" width="34" height="20"/>
+                                        <rect key="frame" x="20" y="0.0" width="34" height="20"/>
                                         <constraints>
                                             <constraint firstAttribute="height" constant="20" id="0Xh-uc-DaE"/>
                                         </constraints>
@@ -1529,7 +1622,7 @@
                                         <nil key="highlightedColor"/>
                                     </label>
                                     <slider opaque="NO" contentMode="scaleToFill" semanticContentAttribute="playback" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="0.0" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="e5d-g8-Knj">
-                                        <rect key="frame" x="35.5" y="-5" width="303.5" height="31"/>
+                                        <rect key="frame" x="55.5" y="-5" width="263.5" height="31"/>
                                         <constraints>
                                             <constraint firstAttribute="height" constant="30" id="4zL-xp-G9T"/>
                                         </constraints>
@@ -1539,7 +1632,7 @@
                                         </connections>
                                     </slider>
                                     <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="00:00" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ESG-x4-J8R">
-                                        <rect key="frame" x="341" y="0.0" width="34" height="20"/>
+                                        <rect key="frame" x="321" y="0.0" width="34" height="20"/>
                                         <constraints>
                                             <constraint firstAttribute="height" constant="20" id="2SN-fe-EDR"/>
                                         </constraints>
@@ -1575,7 +1668,7 @@
                                 <constraints>
                                     <constraint firstItem="Z3E-1u-wEn" firstAttribute="leading" secondItem="buq-PS-h5p" secondAttribute="leading" id="1R2-0e-zLb"/>
                                     <constraint firstItem="t6K-Cq-gMh" firstAttribute="leading" secondItem="Z3E-1u-wEn" secondAttribute="trailing" id="4m4-IR-mc0"/>
-                                    <constraint firstItem="ruu-Hg-3Tx" firstAttribute="leading" secondItem="buq-PS-h5p" secondAttribute="leading" id="7Mx-RJ-l3f"/>
+                                    <constraint firstItem="ruu-Hg-3Tx" firstAttribute="leading" secondItem="buq-PS-h5p" secondAttribute="leading" constant="20" id="7Mx-RJ-l3f"/>
                                     <constraint firstAttribute="bottom" secondItem="7aB-y0-gtH" secondAttribute="bottom" id="7tH-jm-Tc8"/>
                                     <constraint firstItem="7aB-y0-gtH" firstAttribute="leading" secondItem="gRk-Pf-zJ6" secondAttribute="trailing" constant="5" id="8Ex-wx-3ye"/>
                                     <constraint firstItem="ruu-Hg-3Tx" firstAttribute="top" secondItem="buq-PS-h5p" secondAttribute="top" id="Er7-IE-Hng"/>
@@ -1590,12 +1683,12 @@
                                     <constraint firstAttribute="bottom" secondItem="gRk-Pf-zJ6" secondAttribute="bottom" constant="10" id="pO2-v2-n1y"/>
                                     <constraint firstItem="e5d-g8-Knj" firstAttribute="centerY" secondItem="ESG-x4-J8R" secondAttribute="centerY" id="pTj-gC-TCd"/>
                                     <constraint firstAttribute="height" constant="60" id="tMQ-jL-rdi"/>
-                                    <constraint firstAttribute="trailing" secondItem="ESG-x4-J8R" secondAttribute="trailing" id="vMR-I6-RPC"/>
+                                    <constraint firstAttribute="trailing" secondItem="ESG-x4-J8R" secondAttribute="trailing" constant="20" id="vMR-I6-RPC"/>
                                     <constraint firstAttribute="trailing" secondItem="7aB-y0-gtH" secondAttribute="trailing" id="vXW-8l-Y0i"/>
                                 </constraints>
                             </view>
                             <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="jim-qG-8NV">
-                                <rect key="frame" x="0.0" y="299" width="375" height="368"/>
+                                <rect key="frame" x="0.0" y="319" width="375" height="348"/>
                                 <color key="backgroundColor" red="0.94117647059999998" green="0.94117647059999998" blue="0.94509803920000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="1" minimumInteritemSpacing="1" id="rBI-Vc-Dgo">
                                     <size key="itemSize" width="106" height="80"/>
@@ -1662,14 +1755,14 @@
                                 </connections>
                             </collectionView>
                             <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="no_video" translatesAutoresizingMaskIntoConstraints="NO" id="KsP-XU-bB0">
-                                <rect key="frame" x="140.5" y="361" width="94" height="94"/>
+                                <rect key="frame" x="140.5" y="381" width="94" height="94"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="94" id="aF8-gn-fXB"/>
                                     <constraint firstAttribute="width" constant="94" id="kaI-f1-60h"/>
                                 </constraints>
                             </imageView>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="绌虹┖濡備篃" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="pg3-8C-ucI">
-                                <rect key="frame" x="137.5" y="465" width="100" height="20"/>
+                                <rect key="frame" x="137.5" y="485" width="100" height="20"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="100" id="lIY-Ce-8Ca"/>
                                     <constraint firstAttribute="height" constant="20" id="zIg-E3-en7"/>
@@ -1679,7 +1772,7 @@
                                 <nil key="highlightedColor"/>
                             </label>
                             <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ihF-af-cva">
-                                <rect key="frame" x="338.5" y="54" width="26.5" height="12"/>
+                                <rect key="frame" x="338.5" y="74" width="26.5" height="12"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="10"/>
                                 <color key="textColor" systemColor="systemRedColor"/>
                                 <nil key="highlightedColor"/>
@@ -1687,7 +1780,6 @@
                         </subviews>
                         <color key="backgroundColor" red="0.94117647059999998" green="0.94117647059999998" blue="0.94509803920000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                         <constraints>
-                            <constraint firstItem="3j6-e7-ztE" firstAttribute="top" secondItem="buq-PS-h5p" secondAttribute="bottom" id="3Mc-Kc-zIp"/>
                             <constraint firstItem="kQU-Pc-qqv" firstAttribute="leading" secondItem="6jg-tf-s0b" secondAttribute="leading" id="3Sz-uF-O8o"/>
                             <constraint firstItem="ihF-af-cva" firstAttribute="top" secondItem="0R4-Gk-cpw" secondAttribute="bottom" constant="10" id="4k9-qQ-Y1T"/>
                             <constraint firstItem="hY1-Ac-Oot" firstAttribute="top" secondItem="0R4-Gk-cpw" secondAttribute="bottom" id="9Ug-e9-Uoo"/>
@@ -1710,6 +1802,7 @@
                             <constraint firstAttribute="trailing" secondItem="ihF-af-cva" secondAttribute="trailing" constant="10" id="mtn-nO-5qu"/>
                             <constraint firstAttribute="trailing" secondItem="buq-PS-h5p" secondAttribute="trailing" id="qAj-RS-bdT"/>
                             <constraint firstItem="3j6-e7-ztE" firstAttribute="top" secondItem="kQU-Pc-qqv" secondAttribute="bottom" id="tGf-lM-bPe"/>
+                            <constraint firstItem="buq-PS-h5p" firstAttribute="bottom" secondItem="kQU-Pc-qqv" secondAttribute="bottom" id="w1f-hD-qgK"/>
                             <constraint firstItem="SJH-Sa-TMv" firstAttribute="leading" secondItem="6jg-tf-s0b" secondAttribute="leading" id="xkf-hy-wp1"/>
                             <constraint firstItem="jim-qG-8NV" firstAttribute="top" secondItem="3j6-e7-ztE" secondAttribute="bottom" priority="750" id="zW5-Vq-dsE"/>
                         </constraints>
@@ -1756,6 +1849,7 @@
                         <outlet property="noVideoLabel" destination="pg3-8C-ucI" id="pWG-m9-pOS"/>
                         <outlet property="playButton" destination="Z3E-1u-wEn" id="kh9-WC-095"/>
                         <outlet property="playTimeLabel" destination="ruu-Hg-3Tx" id="wAa-dH-XNO"/>
+                        <outlet property="playViewWHScale" destination="0Wa-du-utY" id="4f8-NA-Y6I"/>
                         <outlet property="playbackList" destination="jim-qG-8NV" id="dpb-Sy-z2g"/>
                         <outlet property="playerToolbox" destination="buq-PS-h5p" id="1ue-bg-0Vs"/>
                         <outlet property="playerToolboxConstraint" destination="tMQ-jL-rdi" id="STA-TC-Nan"/>
@@ -1809,7 +1903,7 @@
                         <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                         <prototypes>
                             <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="MessageCell" rowHeight="75" id="St6-kz-bZE" customClass="MessageListCell">
-                                <rect key="frame" x="0.0" y="44.5" width="375" height="75"/>
+                                <rect key="frame" x="0.0" y="50" width="375" height="75"/>
                                 <autoresizingMask key="autoresizingMask"/>
                                 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="St6-kz-bZE" id="gqt-AI-8vk">
                                     <rect key="frame" x="0.0" y="0.0" width="375" height="75"/>
@@ -1927,7 +2021,7 @@
                         <color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                         <prototypes>
                             <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="EZSettingCell" id="Mk7-Ag-WW0">
-                                <rect key="frame" x="0.0" y="49.5" width="375" height="44"/>
+                                <rect key="frame" x="0.0" y="55.5" width="375" height="44"/>
                                 <autoresizingMask key="autoresizingMask"/>
                                 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Mk7-Ag-WW0" id="Pt3-DC-cCE">
                                     <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
@@ -1947,6 +2041,8 @@
                         <outlet property="hdSwitch" destination="KBU-5V-GwK" id="lf0-8b-Qeq"/>
                         <outlet property="nVersionLabel" destination="bvq-5A-JW8" id="dqy-G7-H05"/>
                         <outlet property="nameLabel" destination="8Y3-zX-Cnw" id="w24-b8-OXa"/>
+                        <outlet property="privacyMaskSwitch" destination="rv3-Sh-Gib" id="Cmw-V7-tnn"/>
+                        <outlet property="rightArrowImg" destination="PR2-qZ-cVt" id="g4z-ld-DK0"/>
                         <outlet property="serialLabel" destination="9VV-np-Xv9" id="Vvo-rR-zdY"/>
                         <outlet property="updateImageView" destination="A8K-Mk-xFS" id="qqg-Hg-1rw"/>
                         <outlet property="videoSwitch" destination="eKv-yq-ycl" id="HD9-JX-sBQ"/>
@@ -1976,6 +2072,17 @@
                         <action selector="HDChanged:" destination="3ZH-14-C2h" eventType="valueChanged" id="fHK-6L-vL6"/>
                     </connections>
                 </switch>
+                <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" id="rv3-Sh-Gib">
+                    <rect key="frame" x="0.0" y="0.0" width="51" height="31"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <connections>
+                        <action selector="privacyMasking:" destination="3ZH-14-C2h" eventType="valueChanged" id="X9h-ed-zD5"/>
+                    </connections>
+                </switch>
+                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="hdl_ez_list_next" id="PR2-qZ-cVt">
+                    <rect key="frame" x="0.0" y="0.0" width="42" height="49"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                </imageView>
                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="璁惧鍚�" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="8Y3-zX-Cnw">
                     <rect key="frame" x="0.0" y="0.0" width="72" height="21"/>
                     <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
@@ -2024,7 +2131,7 @@
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="璇疯緭鍏ヨ澶囧悕绉�" textAlignment="natural" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="r1W-d8-Rg7">
-                                <rect key="frame" x="0.0" y="94" width="375" height="40"/>
+                                <rect key="frame" x="0.0" y="114" width="375" height="40"/>
                                 <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="40" id="NLX-OK-XZ7"/>
@@ -2034,7 +2141,7 @@
                                 <textInputTraits key="textInputTraits"/>
                             </textField>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="xdQ-Ec-12V">
-                                <rect key="frame" x="45" y="194" width="285" height="39"/>
+                                <rect key="frame" x="45" y="214" width="285" height="39"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="285" id="F6x-VP-pj1"/>
                                     <constraint firstAttribute="height" constant="39" id="eMs-1w-UTL"/>
@@ -2046,7 +2153,7 @@
                                 </connections>
                             </button>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="涓嶈秴杩�50涓瓧绗�" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="xj6-wT-AiB">
-                                <rect key="frame" x="9" y="145" width="216" height="21"/>
+                                <rect key="frame" x="9" y="165" width="216" height="21"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="21" id="H5l-ew-D4h"/>
                                 </constraints>
@@ -2188,7 +2295,7 @@
                                 <rect key="frame" x="0.0" y="32" width="375" height="635"/>
                             </imageView>
                             <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Sid-Ff-mRw">
-                                <rect key="frame" x="0.0" y="44" width="375" height="211"/>
+                                <rect key="frame" x="0.0" y="64" width="375" height="211"/>
                                 <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <gestureRecognizers/>
                                 <constraints>
@@ -2199,7 +2306,7 @@
                                 </connections>
                             </view>
                             <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="  00:00" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="IqR-oy-XmU">
-                                <rect key="frame" x="147.5" y="54" width="80" height="24"/>
+                                <rect key="frame" x="147.5" y="74" width="80" height="24"/>
                                 <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="80" id="57P-5k-0tb"/>
@@ -2210,7 +2317,7 @@
                                 <nil key="highlightedColor"/>
                             </label>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="XID-G7-Q1F">
-                                <rect key="frame" x="0.0" y="44" width="40" height="40"/>
+                                <rect key="frame" x="0.0" y="64" width="40" height="40"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="40" id="AOT-6h-sls"/>
                                     <constraint firstAttribute="height" constant="40" id="JO7-Hb-1i7"/>
@@ -2222,7 +2329,7 @@
                                 </connections>
                             </button>
                             <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="b60-F5-UgT">
-                                <rect key="frame" x="0.0" y="195" width="375" height="60"/>
+                                <rect key="frame" x="0.0" y="215" width="375" height="60"/>
                                 <subviews>
                                     <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="a6a-IS-kTU">
                                         <rect key="frame" x="0.0" y="23" width="60" height="37"/>
@@ -2311,7 +2418,7 @@
                                 </constraints>
                             </view>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="es2-2O-C6T">
-                                <rect key="frame" x="197.5" y="355" width="100" height="100"/>
+                                <rect key="frame" x="197.5" y="375" width="100" height="100"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="100" id="ggm-qd-KNb"/>
                                     <constraint firstAttribute="width" constant="100" id="sET-Nc-aei"/>
@@ -2329,7 +2436,7 @@
                                 </connections>
                             </button>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="uxM-3S-gu1">
-                                <rect key="frame" x="77.5" y="355" width="100" height="100"/>
+                                <rect key="frame" x="77.5" y="375" width="100" height="100"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="100" id="76E-yD-MgD"/>
                                     <constraint firstAttribute="height" constant="100" id="YTu-Ca-QiC"/>
@@ -2408,7 +2515,7 @@
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="4ol-dw-GX9">
-                                <rect key="frame" x="45" y="260" width="285" height="39"/>
+                                <rect key="frame" x="45" y="280" width="285" height="39"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="285" id="ZIE-YP-8dt"/>
                                     <constraint firstAttribute="height" constant="39" id="t3Q-fl-sHA"/>
@@ -2420,7 +2527,7 @@
                                 </connections>
                             </button>
                             <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="ex5-eL-x0h">
-                                <rect key="frame" x="0.0" y="80" width="375" height="150"/>
+                                <rect key="frame" x="0.0" y="100" width="375" height="150"/>
                                 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="150" id="azy-6S-UKf"/>
@@ -2429,10 +2536,10 @@
                                 <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
                             </textView>
                             <progressView hidden="YES" opaque="NO" contentMode="scaleToFill" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="jcN-yM-fWF">
-                                <rect key="frame" x="20" y="313" width="335" height="4"/>
+                                <rect key="frame" x="20" y="333" width="335" height="4"/>
                             </progressView>
                             <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="姝e湪鏇存柊..." textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ckd-hd-wtP">
-                                <rect key="frame" x="20" y="269" width="335" height="21"/>
+                                <rect key="frame" x="20" y="289" width="335" height="21"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="21" id="hMV-z6-oh2"/>
                                 </constraints>
@@ -2485,8 +2592,12 @@
         <image name="chuanshujilu--2" width="24" height="24"/>
         <image name="cloud" width="32" height="32"/>
         <image name="duijiangji" width="39" height="39"/>
+        <image name="hdl_ez_cat_eyes_answer" width="68" height="68"/>
+        <image name="hdl_ez_cat_eyes_hang_up" width="68" height="68"/>
+        <image name="hdl_ez_cat_eyes_ignore" width="68" height="68"/>
+        <image name="hdl_ez_list_next" width="16" height="16"/>
         <image name="icon_download_fill" width="20" height="20"/>
-        <image name="large_back_btn" width="10" height="19"/>
+        <image name="large_back_btn" width="12" height="20"/>
         <image name="logo" width="210" height="94"/>
         <image name="message" width="39" height="39"/>
         <image name="no_message" width="94" height="94"/>
@@ -2504,10 +2615,10 @@
         <image name="preview_barrel" width="65" height="65"/>
         <image name="preview_barrel_dis" width="65" height="65"/>
         <image name="preview_barrel_sel" width="65" height="65"/>
-        <image name="preview_enlarge" width="37" height="37"/>
-        <image name="preview_enlarge_btn_sel" width="37" height="37"/>
-        <image name="preview_play_btn" width="37" height="37"/>
-        <image name="preview_play_btn_sel" width="37" height="37"/>
+        <image name="preview_enlarge" width="20" height="20"/>
+        <image name="preview_enlarge_btn_sel" width="20" height="20"/>
+        <image name="preview_play_btn" width="20" height="20"/>
+        <image name="preview_play_btn_sel" width="20" height="20"/>
         <image name="preview_recording" width="65" height="65"/>
         <image name="preview_recording_dis" width="65" height="65"/>
         <image name="preview_recording_sel" width="65" height="65"/>
@@ -2517,9 +2628,9 @@
         <image name="preview_talkback" width="65" height="65"/>
         <image name="preview_talkback_dis" width="65" height="65"/>
         <image name="preview_talkback_sel" width="65" height="65"/>
-        <image name="preview_unvoice_btn" width="37" height="37"/>
-        <image name="preview_voice_btn" width="37" height="37"/>
-        <image name="preview_voice_btn_sel" width="37" height="37"/>
+        <image name="preview_unvoice_btn" width="20" height="20"/>
+        <image name="preview_voice_btn" width="20" height="20"/>
+        <image name="preview_voice_btn_sel" width="20" height="20"/>
         <image name="ptz_bg" width="154" height="154"/>
         <image name="setup" width="39" height="39"/>
         <image name="spkImg" width="155" height="155"/>
diff --git a/HDL-ON_iOS/Resources/Language.ini b/HDL-ON_iOS/Resources/Language.ini
index 05d3ffb..75c5e2b 100644
--- a/HDL-ON_iOS/Resources/Language.ini
+++ b/HDL-ON_iOS/Resources/Language.ini
@@ -664,6 +664,14 @@
 677=High 
 678=Current user data has been cleared, about to return to the previous page.
 679=Group control
+680=Colorful switch
+681=Test
+682=Group
+683=The time is invalid
+684=Length out of range
+685=note: User management can only manage added users. If you need to add a new user, please go to the lock end for relevant operations.
+
+
 
 
 
@@ -2001,7 +2009,17 @@
 676=涓�
 677=楂�
 678=褰撳墠鐢ㄦ埛鏁版嵁宸叉竻绌猴紝鍗冲皢杩斿洖涓婁竴椤点��
-679=缇ゆ帶
+679=缁勬帶
+680=鐐僵寮�鍏�
+681=鑷姩鐐僵娴嬭瘯
+682=缇ょ粍
+683=璇ユ椂闂存棤鏁�
+684=闀垮害瓒呭嚭鑼冨洿
+685=娉細鐢ㄦ埛绠$悊浠呭彲瀵瑰凡娣诲姞鐢ㄦ埛杩涜绠$悊銆傚闇�娣诲姞鏂扮敤鎴凤紝璇峰墠寰�閿佺杩涜鐩稿叧鎿嶄綔銆�
+
+
+
+
 
 
 
@@ -3339,6 +3357,13 @@
 677=High 
 678=Current user data has been cleared, about to return to the previous page.
 679=Group control
+680=Colorful switch
+681=Test
+682=Group
+683=The time is invalid
+684=Length out of range
+685=note: User management can only manage added users. If you need to add a new user, please go to the lock end for relevant operations.
+
 
 
 
@@ -4672,7 +4697,12 @@
 677=High 
 678=Current user data has been cleared, about to return to the previous page.
 679=Group control
-
+680=Colorful switch
+681=Test
+682=Group
+683=The time is invalid
+684=Length out of range
+685=note: User management can only manage added users. If you need to add a new user, please go to the lock end for relevant operations.
 
 
 
@@ -5994,6 +6024,15 @@
 677=High 
 678=Current user data has been cleared, about to return to the previous page.
 679=Group control
+680=Colorful switch
+681=Test
+682=Group
+683=The time is invalid
+684=Length out of range
+685=note: User management can only manage added users. If you need to add a new user, please go to the lock end for relevant operations.
+
+
+
 
 
 
diff --git a/HDL-ON_iOS/Resources/Phone/Classification/Room/HomePagebg.png b/HDL-ON_iOS/Resources/Phone/Classification/Room/HomePagebg.png
new file mode 100644
index 0000000..a183c95
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/Classification/Room/HomePagebg.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/VideoDoorlockBatteryManagementBg.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/VideoDoorlockBatteryManagementBg.png
new file mode 100644
index 0000000..e0eab23
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/VideoDoorlockBatteryManagementBg.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/groupControl_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/groupControl_blue.png
index 53eeb27..cc8383a 100644
--- a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/groupControl_blue.png
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/groupControl_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/groupControl_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/groupControl_white.png
index b923744..90b408e 100644
--- a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/groupControl_white.png
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/groupControl_white.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Music/MusicPlayOnIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Music/MusicPlayOnIcon.png
index 42639bb..a7714e4 100644
--- a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Music/MusicPlayOnIcon.png
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Music/MusicPlayOnIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/en.lproj/Localizable.strings b/HDL-ON_iOS/Resources/en.lproj/Localizable.strings
index ac1100f..0d5be5d 100644
--- a/HDL-ON_iOS/Resources/en.lproj/Localizable.strings
+++ b/HDL-ON_iOS/Resources/en.lproj/Localizable.strings
@@ -50,6 +50,7 @@
 "device_verify_code_wrong"="Incorrect device password.";
 "device_restart_talk"="Enabling two-way audio. Please wait...";
 "device_save_gallery"="Saved to the albums.";
+"device_save_gallery_failure"="Download failure";
 "device_analogue_camera"="Analog Channel";
 "device_digital_camera"="Digital Channel";
 "device_lan_device_list_title"="LAN Device List";
@@ -72,7 +73,7 @@
 "device_open_success"="Success to open the door!";
 "device_please_input_door_password"="Input the unlock password";
 "device_history"="History";
-"device_his_no_more_data"="No more data";
+"device_his_no_more_data"="In the end";
 "device_temp_pass"="Temporary password";
 "device_temp_year"=".";
 "device_temp_month"=".";
@@ -107,6 +108,18 @@
 "device_temp_copied"="Copied";
 "device_temp_long_tap_copy"="Long press to copy";
 "device_temp_sure_to_delete"="Are you sure to delete the temporary password?";
+"device_callout_alert_message" = "Doorbell on call...";
+"device_callout_hang_up" = "Hang up";
+"device_callout_ignore" = "Ignore";
+"device_callout_answer" = "Answer";
+"device_full_scene_play" = "play";
+"device_full_scene_pause" = "Pause";
+"device_full_scene_sound" = "Sound";
+"device_full_scene_sound_off" = "Sound off";
+"device_full_scene_quality" = "Articulation";
+"device_full_scene_exit_full" = "Exit";
+"device_callout_answer" = "Answered";
+"device_callout_no_answer" = "Missed";
 
 "dmessage_title"="Message";
 "message_read"="Mark as Read";
@@ -140,8 +153,15 @@
 "setting_secure_code"="Encrypt Video and Picture";
 "setting_cloud_storage"="Cloud Storage";
 "setting_hardware_decoding" = "Hardware decoding";
+"setting_privacy_masking" = "Privacy masking";
+"setting_sd_card_formatting" = "SD card formatting";
+"setting_formatting_alert_message" = "You are currently formatting an SD card";
 "setting_opration_fail"="Operation failed.";
 "setting_opration_success"="Completed.";
+"setting_privacy_masking_ing"="Running, please try again later";
+"setting_privacy_masking_fail"="Setup failed, please try again later";
+"setting_sd_card_success"="Successful formatting";
+"setting_sd_card_fail"="Formatting failed, please try again";
 "setting_switching"="Switching. Please wait...";
 "setting_device_security_check"="Security Authentication";
 "setting_input_code_plz"="Input the device verification code (6 characters on the device label).";
@@ -223,4 +243,13 @@
 "Logout"="Log Out";
 
 //閫氱敤
-"hdl_ez_common_no_data"="No Data";
\ No newline at end of file
+"hdl_ez_common_no_data"="No Data";
+"hdl_ez_download"="Download";
+"hdl_ez_download_selectPhotos" = "Select a photo";
+"hdl_ez_download_takePhoto" = "Take a picture";
+"hdl_ez_download_selectFrAlbum" = "Select from the albums";
+"hdl_ez_download_cancle"= "Cancle";
+"hdl_ez_download_tip" = "Tips";
+"hdl_ez_download_auth" = "Please authorize access";
+"hdl_ez_download_sure" = "Sure";
+"hdl_ez_download_toSet" = "Setting";
diff --git a/HDL-ON_iOS/Resources/zh-Hans.lproj/Localizable.strings b/HDL-ON_iOS/Resources/zh-Hans.lproj/Localizable.strings
index d2711a4..2a5f549 100644
--- a/HDL-ON_iOS/Resources/zh-Hans.lproj/Localizable.strings
+++ b/HDL-ON_iOS/Resources/zh-Hans.lproj/Localizable.strings
@@ -50,6 +50,7 @@
 "device_verify_code_wrong"="璁惧瀵嗙爜閿欒";
 "device_restart_talk"="姝e湪寮�鍚璁诧紝璇风◢鍊�...";
 "device_save_gallery"="宸蹭繚瀛樿嚦鎵嬫満鐩稿唽";
+"device_save_gallery_failure"="涓嬭浇澶辫触";
 "device_analogue_camera"="妯℃嫙閫氶亾";
 "device_digital_camera"="鏁板瓧閫氶亾";
 "device_lan_device_list_title"="灞�鍩熺綉璁惧鍒楄〃";
@@ -67,12 +68,24 @@
 "device_account_pw_empty"="甯愬彿鎴栧瘑鐮佷笉鑳戒负绌�";
 "device_lan_preview_title"="灞�鍩熺綉棰勮";
 "device_add_device_qr_code"="璁惧浜岀淮鐮�";
+"device_callout_alert_message" = "闂ㄩ搩鍛煎彨涓�...";
+"device_callout_hang_up" = "鎸傛柇";
+"device_callout_ignore" = "蹇界暐";
+"device_callout_answer" = "鎺ュ惉";
+"device_full_scene_play" = "鎾斁";
+"device_full_scene_pause" = "鏆傚仠";
+"device_full_scene_sound" = "闊抽噺";
+"device_full_scene_sound_off" = "闈欓煶";
+"device_full_scene_quality" = "娓呮櫚搴�";
+"device_full_scene_exit_full" = "閫�鍑哄叏灞�";
+"device_callout_answer" = "宸叉帴";
+"device_callout_no_answer" = "鏈帴";
 
 "device_open"="寮�闂�";
 "device_open_success"="寮�闂ㄦ垚鍔燂紒";
 "device_please_input_door_password"="璇疯緭鍏ュ紑閿佸瘑鐮�";
 "device_history"="鍘嗗彶璁板綍";
-"device_his_no_more_data"="娌℃湁鏇村鏁版嵁";
+"device_his_no_more_data"="鍒板簳鍟�";
 "device_temp_pass"="涓存椂瀵嗙爜";
 "device_temp_year"="骞�";
 "device_temp_month"="鏈�";
@@ -141,8 +154,15 @@
 "setting_secure_code"="瑙嗛鍥剧墖鍔犲瘑";
 "setting_cloud_storage"="浜戝瓨鍌�";
 "setting_hardware_decoding" = "纭В鐮�";
+"setting_privacy_masking" = "闅愮閬斀";
+"setting_sd_card_formatting" = "SD鍗℃牸寮忓寲";
+"setting_formatting_alert_message" = "鎮ㄥ綋鍓嶆鍦ㄦ牸寮忓寲SD鍗�";
 "setting_opration_fail"="鎿嶄綔澶辫触";
 "setting_opration_success"="鎿嶄綔鎴愬姛";
+"setting_privacy_masking_ing"="姝e湪鎵ц涓紝璇风◢鍚庡啀璇�";
+"setting_privacy_masking_fail"="璁剧疆澶辫触锛岃绋嶅悗鍐嶈瘯";
+"setting_sd_card_success"="鏍煎紡鍖栨垚鍔�";
+"setting_sd_card_fail"="鏍煎紡鍖栧け璐ワ紝璇烽噸鏂板啀璇�";
 "setting_switching"="姝e湪鍒囨崲锛岃绋嶅��...";
 "setting_device_security_check"="璁惧鎿嶄綔瀹夊叏楠岃瘉";
 "setting_input_code_plz"="璇疯緭鍏ヨ璁惧鐨勮澶囬獙璇佺爜锛堣澶囨爣绛句笂鐨�6浣嶅瓧姣嶏級";
@@ -225,3 +245,12 @@
 
 //閫氱敤
 "hdl_ez_common_no_data"="鏆傛棤鏁版嵁";
+"hdl_ez_download"="涓嬭浇";
+"hdl_ez_download_selectPhotos" = "閫夊彇鐓х墖";
+"hdl_ez_download_takePhoto" = "鎷嶇収";
+"hdl_ez_download_selectFrAlbum" = "浠庣浉鍐岄�夊彇";
+"hdl_ez_download_cancle"= "鍙栨秷";
+"hdl_ez_download_tip" = "娓╅Θ鎻愮ず";
+"hdl_ez_download_auth" = "璇锋墦寮�璁块棶鏉冮檺";
+"hdl_ez_download_sure" = "纭畾";
+"hdl_ez_download_toSet" = "鍘昏缃�";
diff --git a/HDL_ON/Common/ApiUtlis.cs b/HDL_ON/Common/ApiUtlis.cs
index e0a8a6a..e6f4a51 100644
--- a/HDL_ON/Common/ApiUtlis.cs
+++ b/HDL_ON/Common/ApiUtlis.cs
@@ -104,6 +104,11 @@
                 code = Ins.HttpRequest.RefreshToken();
                 if (code != StateCode.SUCCESS)
                 {
+                    if (waitPage != null)
+                    {
+                        waitPage.RemoveFromParent();
+                        waitPage = null;
+                    }
                     MainPage.Log($"鍒锋柊token澶辫触");
                     return;
                 }
@@ -112,6 +117,11 @@
                 code = Ins.HttpRequest.GetHomePager();
                 if (code != StateCode.SUCCESS)
                 {
+                    if (waitPage != null)
+                    {
+                        waitPage.RemoveFromParent();
+                        waitPage = null;
+                    }
                     MainPage.Log($"鍒锋柊浣忓畢淇℃伅澶辫触");
                     return;
                 }
@@ -120,6 +130,11 @@
                 code = Ins.HttpRequest.GetUserInfo();
                 if (code != StateCode.SUCCESS)
                 {
+                    if (waitPage != null)
+                    {
+                        waitPage.RemoveFromParent();
+                        waitPage = null;
+                    }
                     MainPage.Log($"鍒锋柊涓汉淇℃伅澶辫触");
                     return;
                 }
@@ -178,7 +193,7 @@
                                 FunctionList.List.ClearDatas();
                                 //MainPage.Log($"============璁惧============寮�濮�" + FunctionList.List.Functions.Count);
                                 //MainPage.Log($"璇诲彇璁惧淇℃伅鎴愬姛");
-                                //MainPage.Log($"sid鍒楄〃鑾峰彇====" + deviceResult.Data.ToString());
+                                MainPage.Log($"sid鍒楄〃鑾峰彇====" + deviceResult.Data.ToString());
                                 var deviceList = JsonConvert.DeserializeObject<DevcieApiPack>(deviceResult.Data.ToString());
                                 if (deviceList == null)
                                 {
diff --git a/HDL_ON/Common/HDLCommon.cs b/HDL_ON/Common/HDLCommon.cs
index ba7989b..24e612e 100644
--- a/HDL_ON/Common/HDLCommon.cs
+++ b/HDL_ON/Common/HDLCommon.cs
@@ -358,6 +358,14 @@
                             eSVideoInfo.Lc_AccessToken = json["subToken"].ToString();//"瀛愯处鍙穞oken
                             eSVideoInfo.DeviceSerial = json["devSerial"].ToString();//璁惧搴忓垪鍙�
                             eSVideoInfo.HomeId = jpushMessageInfo.HomeId;
+                            if (json.ContainsKey("msgId") && !string.IsNullOrEmpty(json["msgId"].ToString()))
+                            {
+                                eSVideoInfo.msgId = json["msgId"].ToString();
+                            }
+                            if (json.ContainsKey("currentTime") && !string.IsNullOrEmpty(json["currentTime"].ToString()))
+                            {
+                                eSVideoInfo.currentTime = json["currentTime"].ToString();
+                            }
                         }
                         else if (interphoneTypeEnum == InterphoneType.HDL.ToString())
                         {
@@ -461,6 +469,7 @@
                 case "464027401@qq.com":
                 case "13580507523":
                 case "15626203746":
+                case "18316672920":
                     return;
             }
 
diff --git a/HDL_ON/Common/R.cs b/HDL_ON/Common/R.cs
index 4b3807e..452b955 100644
--- a/HDL_ON/Common/R.cs
+++ b/HDL_ON/Common/R.cs
@@ -5,8 +5,39 @@
     public static class StringId
     {
 
+
+
+
+
+
+
         /// <summary>
-        /// 缇ゆ帶
+        /// 娉細鐢ㄦ埛绠$悊浠呭彲瀵瑰凡娣诲姞鐢ㄦ埛杩涜绠$悊銆傚闇�娣诲姞鏂扮敤鎴凤紝璇峰墠寰�閿佺杩涜鐩稿叧鎿嶄綔銆�
+        /// </summary>
+        public const int VideoDoorlockManagerTip = 685;
+        /// <summary>
+        /// 闀垮害瓒呭嚭鑼冨洿
+        /// </summary>
+        public const int LengthOutOfRange = 684;
+        /// <summary>
+        /// 璇ユ椂闂存棤鏁�
+        /// </summary>
+        public const int TimeInvalid = 683;
+        //public const int 
+        /// <summary>
+        /// 缇ょ粍锛堣窇椹伅鍒嗙粍锛�
+        /// </summary>
+        public const int HorseRaceLampGroup = 682;
+        /// <summary>
+        /// 鑷姩鐐僵娴嬭瘯
+        /// </summary>
+        public const int CulorfulTest = 681;
+        /// <summary>
+        /// 鐐僵寮�鍏�
+        /// </summary>
+        public const int ColorfulSwitch = 680;
+        /// <summary>
+        /// 缁勬帶
         /// </summary>
         public const int GroupControl = 679;
         /// <summary>
diff --git a/HDL_ON/DAL/Mqtt/MqttClient.cs b/HDL_ON/DAL/Mqtt/MqttClient.cs
index 0358a57..f4e129f 100644
--- a/HDL_ON/DAL/Mqtt/MqttClient.cs
+++ b/HDL_ON/DAL/Mqtt/MqttClient.cs
@@ -491,48 +491,6 @@
                                 else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/event/appDeviceRefresh/up")
                                 {
                                     MainPage.Log("璁惧鏁版嵁鍒锋柊閫氱煡");
-                                    var deviceResult = new HttpServerRequest().GetDeviceList();
-                                    if (deviceResult.Code == StateCode.SUCCESS)
-                                    {
-                                        MainPage.Log($"璇诲彇璁惧淇℃伅鎴愬姛");
-                                        var deviceList = Newtonsoft.Json.JsonConvert.DeserializeObject<DevcieApiPack>(deviceResult.Data.ToString());
-                                        if (deviceList == null)
-                                        {
-                                            deviceList = new DevcieApiPack();
-                                        }
-                                        string delFile = "";
-                                        if (FunctionList.List.GetDeviceFunctionList().Count > 0)
-                                        {
-                                            for (int i = 0; i < FunctionList.List.GetDeviceFunctionList().Count;)
-                                            {
-                                                var localFunction = FunctionList.List.GetDeviceFunctionList()[i];
-                                                if (SPK.MusicSpkList().Contains(localFunction.spk))
-                                                {
-                                                    i++;
-                                                    continue;
-                                                }
-                                                var newFunction = deviceList.list.Find((obj) => obj.deviceId == localFunction.deviceId);
-
-                                                if (delFile == localFunction.savePath)
-                                                {
-                                                    i++;
-                                                    continue;
-                                                }
-                                                delFile = localFunction.savePath;
-                                                FunctionList.List.DeleteFunction(localFunction);
-                                            }
-                                        }
-                                        //澶勭悊鍓╀笅鐨勬柊澧炲姛鑳�
-                                        foreach (var newFunction in deviceList.list)
-                                        {
-                                            newFunction.SaveFunctionFile();
-                                            FunctionList.List.IniFunctionList(newFunction.savePath);
-                                        }
-                                    }
-                                    else
-                                    {
-                                        MainPage.Log($"璇诲彇浜戠璁惧鏁版嵁澶辫触:Code:{deviceResult.Code};  Msg:{deviceResult.message}");
-                                    }
                                 }
                                 //缃戝叧瀵嗛挜鍙樺寲
                                 else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/custom/mqtt/secret/change")
@@ -879,6 +837,7 @@
             //娴嬭瘯璐﹀彿锛屼笉鎸や笅绾�
             switch (UserInfo.Current.userMobileInfo)
             {
+                case "18316672920":
                 case "15626203746":
                 case "464027401@qq.com":
                     return;
diff --git a/HDL_ON/DAL/Server/HttpUtil.cs b/HDL_ON/DAL/Server/HttpUtil.cs
index fcb9604..4766d4f 100644
--- a/HDL_ON/DAL/Server/HttpUtil.cs
+++ b/HDL_ON/DAL/Server/HttpUtil.cs
@@ -18,8 +18,8 @@
         /// 鍥哄畾鍩熷悕,姝e紡鐜
         /// 鍏叡鍩熷悕灏辫繎瑙f瀽
         /// </summary>
-        public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
-        //public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";
+        //public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
+        public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";
         const string APP_KEY = "HDL-HOME-APP-TEST";
         const string SECRET_KEY = "WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss";
         //public const string GlobalRequestHttpsHost = "http://59.41.255.150:7777";//mmmm
diff --git a/HDL_ON/DAL/Server/NewAPI.cs b/HDL_ON/DAL/Server/NewAPI.cs
index 975830e..2eca374 100644
--- a/HDL_ON/DAL/Server/NewAPI.cs
+++ b/HDL_ON/DAL/Server/NewAPI.cs
@@ -902,9 +902,9 @@
         public const string Api_Post_GetDoorlockUserList = "/home-wisdom/platform/yingshi/lock/user/list";
 
         /// <summary>
-        /// 鏇存敼闂ㄩ攣鐢ㄦ埛澶囨敞鍚�
+        /// 鏇存敼闂ㄩ攣鐢ㄦ埛澶囨敞鍚� 
         /// </summary>
-        public const string Api_Post_setDoorUserRemark = "/home-wisdom/platform/yingshi/lock/user/list";
+        public const string Api_Post_setDoorUserRemark = "/home-wisdom/platform/yingshi/lock/setDoorUserRemark";
         /// <summary>
         /// 鍒犻櫎鐢ㄦ埛鏁板瓧瀵嗙爜
         /// </summary>
diff --git a/HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs b/HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs
index e583183..c67c196 100644
--- a/HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs
+++ b/HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs
@@ -213,8 +213,14 @@
                 //2.璁剧疆钀ょ煶瀛愯处鍙风殑AccessToken鍒癝DK
                 EZSDK.IOS.EZSDK.SharedInstance().SetEZAccessToken(mESVideoInfo.Lc_AccessToken);
                 //3.鎵撳紑瑙嗛鎾斁椤甸潰
-                EZSDK.IOS.EZSDK.SharedInstance().PlayWithDeviceSerial(mESVideoInfo.DeviceSerial);
+                string currentTimeStr = Utlis.GetTimestamp();   // 褰撳墠鏃堕棿
 
+                if (string.IsNullOrEmpty(mESVideoInfo.currentTime) && string.IsNullOrEmpty(currentTimeStr) && (long.Parse(currentTimeStr) - long.Parse(mESVideoInfo.currentTime)) > 30000) {    // 瓒呮椂30s
+                    EZSDK.IOS.EZSDK.SharedInstance().PlayWithDeviceSerial(mESVideoInfo.DeviceSerial);
+                }
+                else {
+                    EZSDK.IOS.EZSDK.SharedInstance().PlayWithDeviceSerial(mESVideoInfo.DeviceSerial, mESVideoInfo.msgId);
+                }
             }
             else if (interphoneType == InterphoneType.HDL.ToString())
             {
@@ -816,6 +822,14 @@
         /// 璁惧搴忓垪鍙�
         /// </summary>
         public string DeviceSerial = string.Empty;
+        /// <summary>
+        /// 鏈嶅姟鍣ㄦ帹閫佹椂闂�
+        /// </summary>
+        public string currentTime = string.Empty;
+        /// <summary>
+        /// 娑堟伅id
+        /// </summary>
+        public string msgId = string.Empty;
         //========================HDL SIP==========================
         /// <summary>
         /// 璁惧sip璐﹀彿 interphoneType鏄疕DL鏃舵墠浼氭湁鍊�
diff --git a/HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs b/HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs
index 953f33a..aebb3a8 100644
--- a/HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs
+++ b/HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs
@@ -234,7 +234,7 @@
                 //鍏堟竻绌哄懠鍙拰鐩戣璁惧淇℃伅
                 if (clearCallInfo)
                 {
-                    //InitCallInfo(null);
+                    //InitCallInfo(null);//閫犳垚鎺ユ敹鍛煎彨鏃跺紑閿佸紑閿佸紓甯�
                 }
 
                 HDLSipInfo mHDLSipInfo = GetHDLSipInfo(mHDLCallVideoInfo.HomeId);
diff --git a/HDL_ON/Entity/DB_ResidenceData.cs b/HDL_ON/Entity/DB_ResidenceData.cs
index 8b5e4cb..3fe97ad 100644
--- a/HDL_ON/Entity/DB_ResidenceData.cs
+++ b/HDL_ON/Entity/DB_ResidenceData.cs
@@ -96,7 +96,7 @@
                     {
                         instance = new DB_ResidenceData();
                         instance.SaveResidenceData();
-                        instance.residenceImage = "Classification/Room/Roombg.png";
+                        instance.residenceImage = "Classification/Room/HomePagebg.png";
                         instance.HomeGateway = new HomeGatewayInfo()
                         {
                             homeId = "1396717478877241345",
@@ -135,7 +135,7 @@
                         instance = new DB_ResidenceData { };
                         return instance;
                     }
-                    instance.residenceImage = "Classification/Room/Roombg.png";
+                    instance.residenceImage = "Classification/Room/HomePagebg.png";
                     //鍒濆鍖栦綇瀹呭姛鑳芥暟鎹�
                     SpatialInfo.CurrentSpatial.InitRoomListFunctions();
 
diff --git a/HDL_ON/Entity/Function/Function.cs b/HDL_ON/Entity/Function/Function.cs
index 5b7f073..8e8602b 100644
--- a/HDL_ON/Entity/Function/Function.cs
+++ b/HDL_ON/Entity/Function/Function.cs
@@ -803,25 +803,27 @@
             var list = new List<FunctionAttributes>();
             if (spk == SPK.GroupControl)
             {
-                var gc = FunctionList.List.groupControls.Find((obj) => obj.sid == sid);
-                if (gc != null)
+                lock (list)
                 {
-                    foreach (var temp in gc.sids)
+                    var gc = FunctionList.List.groupControls.Find((obj) => obj.sid == sid);
+                    if (gc != null)
                     {
-                        var light = FunctionList.List.GetLightList().Find((obj) => obj.sid == temp.sid);
-                        if (light != null)
+                        foreach (var temp in gc.sids)
                         {
-                            foreach (var attr in light.attributes)
+                            var light = FunctionList.List.GetLightList().Find((obj) => obj.sid == temp.sid);
+                            if (light != null)
                             {
-                                if (list.Find((obj) => obj.key == attr.key) == null)
+                                foreach (var attr in light.attributes)
                                 {
-                                    list.Add(attr);
+                                    if (list.Find((obj) => obj.key == attr.key) == null)
+                                    {
+                                        list.Add(attr);
+                                    }
                                 }
                             }
                         }
                     }
                 }
-
             }
             else
             {
diff --git a/HDL_ON/HDL_ON.projitems b/HDL_ON/HDL_ON.projitems
index 544dd99..f946b7e 100644
--- a/HDL_ON/HDL_ON.projitems
+++ b/HDL_ON/HDL_ON.projitems
@@ -561,6 +561,7 @@
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\VideoDoorlockFaceUnlockHelpPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\VideoDoorlockAudioSetupPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\VideoDoorlockBatteryManagementPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\2-Classification\SeriesFunctionListPage.cs" />
   </ItemGroup>
   <ItemGroup>
     <Folder Include="$(MSBuildThisFileDirectory)Entity\Device\" />
diff --git a/HDL_ON/UI/MainPage.cs b/HDL_ON/UI/MainPage.cs
index a7cf3b9..6f43aa2 100644
--- a/HDL_ON/UI/MainPage.cs
+++ b/HDL_ON/UI/MainPage.cs
@@ -26,7 +26,7 @@
         /// <summary>
         /// 鐗堟湰鍙�
         /// </summary>
-        public static string VersionString = "1.8.1";
+        public static string VersionString = "2.0.0";
         ///// <summary>
         ///// 瀹㈡埛绔被鍨�
         ///// </summary>
@@ -121,7 +121,8 @@
             SPK.AirSwitch,
             SPK.PanelSocket,SPK.ElectricSocket,
             SPK.MechanicalArm,SPK.IpCam_Imou,
-            SPK.GroupControl
+            SPK.GroupControl,
+            SPK.AvMusic,SPK.MusicStandard
         };
 
 
diff --git a/HDL_ON/UI/UI0-Public/PublicAssmebly.cs b/HDL_ON/UI/UI0-Public/PublicAssmebly.cs
index fd6cc65..526a60f 100644
--- a/HDL_ON/UI/UI0-Public/PublicAssmebly.cs
+++ b/HDL_ON/UI/UI0-Public/PublicAssmebly.cs
@@ -11,12 +11,16 @@
 {
     public partial class PublicAssmebly
     {
+        public Button btnTip;
+
+        public int entryMaxLength = 40;
+        //public Action entrylistener;
 
         void EditParaterEvent(Button btnConfirm, int errorId_IsNullOrEmpty, int errorId_ContainsPar, List<string> list, EditText editText, Action<string> callBackAction,
             FrameLayout contentView, Button btnLine, Button btnCancel, FrameLayout editView, Dialog dialog, int titleId)
         {
 
-            var btnTip = new Button()
+            btnTip = new Button()
             {
                 X = editView.X,
                 Y = editView.Bottom,
@@ -151,13 +155,14 @@
 
             etParater.TextChangeEventHandler = (sender, e) =>
             {
-                if (etParater.Text.Length > 20)
+                if (System.Text.Encoding.Default.GetBytes(etParater.Text).Length > entryMaxLength)
                 {
                     etParater.Text = etParater.Text.Remove(20);
 
 #if __ANDROID__
                     etParater.SetSelectionEnd();
 #endif
+                    //entrylistener?.Invoke();
                 }
             };
 
diff --git a/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs b/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
index 3488b00..96dd1af 100644
--- a/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
+++ b/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
@@ -157,11 +157,11 @@
                         break;
                     case SPK.MusicStandard:
                     case SPK.AvMusic:
-                        //Music.A31MusicModel.Current= new Music.A31MusicModel { functionMusic = function };//褰撳墠鎾斁鍣�
-                        //var a31PlayMusicPage = new Music.A31PlayMusicPage();
-                        //MainPage.BasePageView.AddChidren(a31PlayMusicPage);
-                        //a31PlayMusicPage.Show();
-                        //MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                        Music.A31MusicModel.Current = new Music.A31MusicModel { functionMusic = function };//褰撳墠鎾斁鍣�
+                        var a31PlayMusicPage = new Music.A31PlayMusicPage();
+                        MainPage.BasePageView.AddChidren(a31PlayMusicPage);
+                        a31PlayMusicPage.Show();
+                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                         break;
                     case SPK.LightCCT:
                         var TureView = new ColorTureLampPage(function);
diff --git a/HDL_ON/UI/UI1-Login/LoginPage.cs b/HDL_ON/UI/UI1-Login/LoginPage.cs
index 1200b13..c5cfa1d 100644
--- a/HDL_ON/UI/UI1-Login/LoginPage.cs
+++ b/HDL_ON/UI/UI1-Login/LoginPage.cs
@@ -312,7 +312,6 @@
                     //etAccount.Text = "13143792049";
                     etAccount.Text = "18688414428";//澶╂渤3妤�
                     //etAccount.Text = "18244942707";
-                    //etAccount.Text = "12345678904";
                     //etAccount.Text = "13418062953";
                     etAccount.Text = "13138683659";
                     //etAccount.Text = "15217626103";
@@ -320,12 +319,13 @@
                     //etAccount.Text = "18321091245";
                     //etAccount.Text = "13751916353";
                     etAccount.Text = "13549566666";
-                    etAccount.Text = "18316672920";
                     etAccount.Text = "support7@hdlautomation.com";
                     etAccount.Text = "13375012446";//娴嬭瘯鏈嶅姟鍣�
                     etAccount.Text = "15855403939";
                     etAccount.Text = "15006564444";
                     etAccount.Text = "13580507523";
+                    //etAccount.Text = "12345678904";//2.0 娴嬭瘯  钀ょ煶
+                    etAccount.Text = "18316672920";
                 }
                 else
                 {
diff --git a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
index a7fd938..255f9f7 100644
--- a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
+++ b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
@@ -70,19 +70,20 @@
         /// <summary>
         /// 鍒囨崲鏄剧ず鍔熻兘绫诲瀷鍖哄煙
         /// </summary>
-        FrameLayout changeView;
-        /// <summary>
-        /// 鍒囨崲鏄剧ず璁惧鍔熻兘鎸夐挳
-        /// </summary>
-        Button btnChangeFunction;
-        /// <summary>
-        /// 鍒囨崲鏄剧ず鍦烘櫙鍔熻兘鎸夐挳
-        /// </summary>
-        Button btnChangeScene;
-        /// <summary>
-        /// 鍒囨崲鏄剧ず鍦虹粍鎺ф寜閽�
-        /// </summary>
-        Button btnChangeGroupControl;
+        FrameLayout changeBaseView;
+        //FrameLayout changeView;
+        ///// <summary>
+        ///// 鍒囨崲鏄剧ず璁惧鍔熻兘鎸夐挳
+        ///// </summary>
+        //Button btnChangeFunction;
+        ///// <summary>
+        ///// 鍒囨崲鏄剧ず鍦烘櫙鍔熻兘鎸夐挳
+        ///// </summary>
+        //Button btnChangeScene;
+        ///// <summary>
+        ///// 鍒囨崲鏄剧ず鍦虹粍鎺ф寜閽�
+        ///// </summary>
+        //Button btnChangeGroupControl;
         /// <summary>
         /// 鍔熻兘鏄剧ず鍖哄煙
         /// </summary>
@@ -116,11 +117,11 @@
 #endregion
 
 #region 鎶ヨ淇℃伅
-        Button btnMsgBg;
-        Button btnMsgTime;
-        Button btnMsg;
+        //Button btnMsgBg;
+        //Button btnMsgTime;
+        //Button btnMsg;
         Button btnMsgIcon;
-#endregion
+        #endregion
 
         public HomePage()
         {
@@ -164,14 +165,14 @@
                 };
                 topView = new FrameLayout()
                 {
-                    Height = Application.GetRealHeight(216),
+                    Height = Application.GetRealHeight(113),//216),
                     BackgroundImagePath = DB_ResidenceData.Instance.residenceImage,
                 };
                 bodyView.AddChidren(topView);
 #else
                 VerticalRefreshLayout refreshLayout = new VerticalRefreshLayout()
                 {
-                    Height = Application.GetRealHeight(216),
+                    Height = Application.GetRealHeight(113),//216),
                     BackgroundImagePath = DB_ResidenceData.Instance.residenceImage,
                 };
                 bodyView.AddChidren(refreshLayout);
@@ -184,7 +185,7 @@
                 };
                 topView = new FrameLayout()
                 {
-                    Height = Application.GetRealHeight(216),
+                    Height = Application.GetRealHeight(113),//216),
                 };
                 refreshLayout.AddChidren(topView);
 #endif
@@ -508,57 +509,57 @@
 
 
 #region msg
-                FrameLayout msgView;
-                msgView = new FrameLayout()
-                {
-                    Y = Application.GetRealHeight(164),
-                    Gravity = Gravity.CenterHorizontal,
-                    Width = Application.GetRealWidth(343),
-                    Height = Application.GetRealHeight(28),
-                };
-                topView.AddChidren(msgView);
+                //FrameLayout msgView;
+                //msgView = new FrameLayout()
+                //{
+                //    Y = Application.GetRealHeight(164),
+                //    Gravity = Gravity.CenterHorizontal,
+                //    Width = Application.GetRealWidth(343),
+                //    Height = Application.GetRealHeight(28),
+                //};
+                //topView.AddChidren(msgView);
 
-                btnMsgBg = new Button()
-                {
-                    BackgroundColor = CSS_Color.MainColor,//0x3F4484F4,
-                    Alpha = 0.4f,
-                };
-                msgView.AddChidren(btnMsgBg);
+                //btnMsgBg = new Button()
+                //{
+                //    BackgroundColor = CSS_Color.MainColor,//0x3F4484F4,
+                //    Alpha = 0.4f,
+                //};
+                //msgView.AddChidren(btnMsgBg);
 
 
                 btnMsgIcon = new Button()
                 {
-                    X = Application.GetRealWidth(12),
-                    Gravity = Gravity.CenterVertical,
+                    X = Application.GetRealWidth(290),
+                    Y = Application.GetRealHeight(35),
                     Width = Application.GetMinRealAverage(24),
                     Height = Application.GetMinRealAverage(24),
                     UnSelectedImagePath = "Collection/MsgIcon.png",
                     SelectedImagePath = "Collection/MsgIconTip.png",
                 };
-                msgView.AddChidren(btnMsgIcon);
+                topView.AddChidren(btnMsgIcon);
 
 
-                btnMsg = new Button()
-                {
-                    X = Application.GetRealWidth(10) + btnMsgIcon.Right,
-                    Width = Application.GetRealWidth(240),
-                    Text = "...",
-                    TextColor = CSS_Color.MainBackgroundColor,
-                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                    TextAlignment = TextAlignment.CenterLeft,
-                };
-                msgView.AddChidren(btnMsg);
+                //btnMsg = new Button()
+                //{
+                //    X = Application.GetRealWidth(10) + btnMsgIcon.Right,
+                //    Width = Application.GetRealWidth(240),
+                //    Text = "...",
+                //    TextColor = CSS_Color.MainBackgroundColor,
+                //    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                //    TextAlignment = TextAlignment.CenterLeft,
+                //};
+                //msgView.AddChidren(btnMsg);
 
 
-                btnMsgTime = new Button()
-                {
-                    X = Application.GetRealWidth(299),
-                    Width = Application.GetRealWidth(44),
-                    Text = "00:00",
-                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                    TextAlignment = TextAlignment.CenterLeft,
-                };
-                msgView.AddChidren(btnMsgTime);
+                //btnMsgTime = new Button()
+                //{
+                //    X = Application.GetRealWidth(299),
+                //    Width = Application.GetRealWidth(44),
+                //    Text = "00:00",
+                //    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                //    TextAlignment = TextAlignment.CenterLeft,
+                //};
+                //msgView.AddChidren(btnMsgTime);
 
                 LoadEvent_GotoMessageCenterPage();
 
@@ -570,134 +571,12 @@
 
                 bodyView.AddChidren(new Button() { Height = Application.GetRealHeight(20), BackgroundColor = 0x00000000 });
 
-                if (DB_ResidenceData.Instance.HomeGateway.isSupportGroupControl)
-                {
-                    changeView = new FrameLayout()
-                    {
-                        //Y = Application.GetRealHeight(20) + topView.Bottom,
-                        Gravity = Gravity.CenterHorizontal,
-                        Width = Application.GetRealWidth(334),
-                        Height = Application.GetRealHeight(62),
-                        BackgroundImagePath = "Collection/ChangeViewbg.png",
-                    };
-                    bodyView.AddChidren(changeView);
+                loadNavView();
 
-                    btnChangeFunction = new Button()
-                    {
-                        X = Application.GetRealWidth(10),
-                        Width = Application.GetRealWidth(114 - 10),
-                        TextID = StringId.Functions,
-                        SelectedTextColor = CSS_Color.MainColor,
-                        TextColor = CSS_Color.PromptingColor1,
-                        TextSize = CSS_FontSize.HeadlineFontSize,
-                        TextAlignment = TextAlignment.Center,
-                        IsSelected = true,
-                        IsBold = true,
-                    };
-                    changeView.AddChidren(btnChangeFunction);
-
-                    Button btnLine = new Button()
-                    {
-                        X = btnChangeFunction.Right,
-                        Gravity = Gravity.CenterVertical,
-                        Width = Application.GetRealWidth(1),
-                        Height = Application.GetRealHeight(14),
-                        BackgroundColor = CSS_Color.PromptingColor1,
-                    };
-                    changeView.AddChidren(btnLine);
-
-                    btnChangeScene = new Button()
-                    {
-                        X = btnLine.Right,
-                        Width = Application.GetRealWidth(114 - 10),
-                        TextID = StringId.Scenes,
-                        SelectedTextColor = CSS_Color.MainColor,
-                        TextColor = CSS_Color.PromptingColor1,
-                        TextSize = CSS_FontSize.TextFontSize,
-                        TextAlignment = TextAlignment.Center,
-                    };
-                    changeView.AddChidren(btnChangeScene);
-
-                    Button btnLine2 = new Button()
-                    {
-                        X = btnChangeScene.Right,
-                        Gravity = Gravity.CenterVertical,
-                        Width = Application.GetRealWidth(1),
-                        Height = Application.GetRealHeight(14),
-                        BackgroundColor = CSS_Color.PromptingColor1,
-                    };
-                    changeView.AddChidren(btnLine2);
-
-                    btnChangeGroupControl = new Button()
-                    {
-                        X = btnLine2.Right,
-                        Width = Application.GetRealWidth(114 - 10),
-                        TextID = StringId.GroupControl,
-                        SelectedTextColor = CSS_Color.MainColor,
-                        TextColor = CSS_Color.PromptingColor1,
-                        TextSize = CSS_FontSize.TextFontSize,
-                        TextAlignment = TextAlignment.Center,
-                    };
-                    changeView.AddChidren(btnChangeGroupControl);
-                }
-                else
-                {
-                    changeView = new FrameLayout()
-                    {
-                        //Y = Application.GetRealHeight(20) + topView.Bottom,
-                        Gravity = Gravity.CenterHorizontal,
-                        Width = Application.GetRealWidth(230),
-                        Height = Application.GetRealHeight(62),
-                        BackgroundImagePath = "Collection/ChangeViewbg.png",
-                    };
-                    bodyView.AddChidren(changeView);
-
-                    btnChangeFunction = new Button()
-                    {
-                        X = Application.GetRealWidth(10),
-                        Width = Application.GetRealWidth(114 - 10),
-                        TextID = StringId.Functions,
-                        SelectedTextColor = CSS_Color.MainColor,
-                        TextColor = CSS_Color.PromptingColor1,
-                        TextSize = CSS_FontSize.HeadlineFontSize,
-                        TextAlignment = TextAlignment.Center,
-                        IsSelected = true,
-                        IsBold = true,
-                    };
-                    changeView.AddChidren(btnChangeFunction);
-
-                    Button btnLine = new Button()
-                    {
-                        X = btnChangeFunction.Right,
-                        Gravity = Gravity.CenterVertical,
-                        Width = Application.GetRealWidth(1),
-                        Height = Application.GetRealHeight(14),
-                        BackgroundColor = CSS_Color.PromptingColor1,
-                    };
-                    changeView.AddChidren(btnLine);
-
-                    btnChangeScene = new Button()
-                    {
-                        X = btnLine.Right,
-                        Width = Application.GetRealWidth(114 - 10),
-                        TextID = StringId.Scenes,
-                        SelectedTextColor = CSS_Color.MainColor,
-                        TextColor = CSS_Color.PromptingColor1,
-                        TextSize = CSS_FontSize.TextFontSize,
-                        TextAlignment = TextAlignment.Center,
-                    };
-                    changeView.AddChidren(btnChangeScene);
-                }
                 #endregion
 
                 #region ContextView
-                contentView = new PageLayout()
-                {
-                    //Y = changeView.Bottom,
-                    Height = Application.GetRealHeight(310 + 30 + 10), //20涓鸿秴鍑洪儴鍒�
-                    IsShowPoint = false,
-                };
-                bodyView.AddChidren(contentView);
+
 
                 functionViews = new List<FrameLayout>();
 
@@ -712,6 +591,295 @@
 
 
         }
+
+        void loadNavView()
+        {
+            if(changeBaseView == null)
+            {
+                changeBaseView = new FrameLayout()
+                {
+                    Gravity = Gravity.CenterHorizontal,
+                    Height = Application.GetRealHeight(62),
+                };
+                bodyView.AddChidren(changeBaseView);
+            }
+            else
+            {
+                changeBaseView.RemoveAll();
+            }
+
+            if (contentView == null)
+            {
+                contentView = new PageLayout()
+                {
+                    Height = Application.GetRealHeight(310 + 30 + 10 + 100), //20涓鸿秴鍑洪儴鍒�
+                    IsShowPoint = false,
+                };
+                bodyView.AddChidren(contentView);
+            }
+
+            if (DB_ResidenceData.Instance.HomeGateway.isSupportGroupControl && FunctionList.List.groupControls.Count > 0)
+            {
+                var changeView = new FrameLayout()
+                {
+                    //Y = Application.GetRealHeight(20) + topView.Bottom,
+                    Gravity = Gravity.CenterHorizontal,
+                    Width = Application.GetRealWidth(334),
+                    Height = Application.GetRealHeight(62),
+                    BackgroundImagePath = "Collection/ChangeViewbg.png",
+                };
+                changeBaseView.AddChidren(changeView);
+
+                var btnChangeFunction = new Button()
+                {
+                    X = Application.GetRealWidth(10),
+                    Width = Application.GetRealWidth(114 - 10),
+                    TextID = StringId.Functions,
+                    SelectedTextColor = CSS_Color.MainColor,
+                    TextColor = CSS_Color.PromptingColor1,
+                    TextSize = CSS_FontSize.HeadlineFontSize,
+                    TextAlignment = TextAlignment.Center,
+                    IsSelected = true,
+                    IsBold = true,
+                };
+                changeView.AddChidren(btnChangeFunction);
+
+                Button btnLine = new Button()
+                {
+                    X = btnChangeFunction.Right,
+                    Gravity = Gravity.CenterVertical,
+                    Width = Application.GetRealWidth(1),
+                    Height = Application.GetRealHeight(14),
+                    BackgroundColor = CSS_Color.PromptingColor1,
+                };
+                changeView.AddChidren(btnLine);
+
+                var btnChangeScene = new Button()
+                {
+                    X = btnLine.Right,
+                    Width = Application.GetRealWidth(114 - 10),
+                    TextID = StringId.Scenes,
+                    SelectedTextColor = CSS_Color.MainColor,
+                    TextColor = CSS_Color.PromptingColor1,
+                    TextSize = CSS_FontSize.TextFontSize,
+                    TextAlignment = TextAlignment.Center,
+                };
+                changeView.AddChidren(btnChangeScene);
+
+                Button btnLine2 = new Button()
+                {
+                    X = btnChangeScene.Right,
+                    Gravity = Gravity.CenterVertical,
+                    Width = Application.GetRealWidth(1),
+                    Height = Application.GetRealHeight(14),
+                    BackgroundColor = CSS_Color.PromptingColor1,
+                };
+                changeView.AddChidren(btnLine2);
+
+                var btnChangeGroupControl = new Button()
+                {
+                    X = btnLine2.Right,
+                    Width = Application.GetRealWidth(114 - 10),
+                    TextID = StringId.GroupControl,
+                    SelectedTextColor = CSS_Color.MainColor,
+                    TextColor = CSS_Color.PromptingColor1,
+                    TextSize = CSS_FontSize.TextFontSize,
+                    TextAlignment = TextAlignment.Center,
+                };
+                changeView.AddChidren(btnChangeGroupControl);
+
+
+
+                btnChangeGroupControl.MouseUpEventHandler = (sender, e) => {
+                    btnChangeFunction.IsSelected = false;
+                    btnChangeFunction.TextSize = CSS.CSS_FontSize.TextFontSize;
+                    btnChangeFunction.IsBold = false;
+                    btnChangeScene.TextSize = CSS.CSS_FontSize.TextFontSize;
+                    btnChangeScene.IsSelected = false;
+                    btnChangeScene.IsBold = false;
+                    btnChangeGroupControl.IsSelected = true;
+                    btnChangeGroupControl.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
+                    btnChangeGroupControl.IsBold = true;
+                    CurShowTypeContent = 2;
+                    contentView.PageIndex = 2;
+                };
+
+                btnChangeFunction.MouseUpEventHandler = (sender, e) => {
+                    btnChangeFunction.IsSelected = true;
+                    btnChangeFunction.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
+                    btnChangeFunction.IsBold = true;
+                    btnChangeScene.TextSize = CSS.CSS_FontSize.TextFontSize;
+                    btnChangeScene.IsSelected = false;
+                    btnChangeScene.IsBold = false;
+                    CurShowTypeContent = 0;
+                    contentView.PageIndex = 0;
+
+                    btnChangeGroupControl.IsSelected = false;
+                    btnChangeGroupControl.TextSize = CSS.CSS_FontSize.TextFontSize;
+                    btnChangeGroupControl.IsBold = false;
+                };
+                btnChangeScene.MouseUpEventHandler = (sender, e) => {
+                    btnChangeScene.IsSelected = true;
+                    btnChangeScene.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
+                    btnChangeScene.IsBold = true;
+                    btnChangeFunction.TextSize = CSS.CSS_FontSize.TextFontSize;
+                    btnChangeFunction.IsSelected = false;
+                    btnChangeFunction.IsBold = false;
+                    CurShowTypeContent = 1;
+                    contentView.PageIndex = 1;
+
+                    btnChangeGroupControl.IsSelected = false;
+                    btnChangeGroupControl.TextSize = CSS.CSS_FontSize.TextFontSize;
+                    btnChangeGroupControl.IsBold = false;
+                };
+
+                contentView.PageChange = (sender, e) =>
+                {
+                    if (contentView.PageIndex == 0)
+                    {
+                        btnChangeFunction.IsSelected = true;
+                        btnChangeFunction.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
+                        btnChangeFunction.IsBold = true;
+                        btnChangeScene.TextSize = CSS.CSS_FontSize.TextFontSize;
+                        btnChangeScene.IsSelected = false;
+                        btnChangeScene.IsBold = false;
+                        btnChangeGroupControl.IsSelected = false;
+                        btnChangeGroupControl.TextSize = CSS.CSS_FontSize.TextFontSize;
+                        btnChangeGroupControl.IsBold = false;
+                    }
+                    else if (contentView.PageIndex == 1)
+                    {
+                        btnChangeScene.IsSelected = true;
+                        btnChangeScene.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
+                        btnChangeScene.IsBold = true;
+                        btnChangeFunction.TextSize = CSS.CSS_FontSize.TextFontSize;
+                        btnChangeFunction.IsSelected = false;
+                        btnChangeFunction.IsBold = false;
+                        btnChangeGroupControl.IsSelected = false;
+                        btnChangeGroupControl.TextSize = CSS.CSS_FontSize.TextFontSize;
+                        btnChangeGroupControl.IsBold = false;
+                    }
+                    else if (contentView.PageIndex == 2)
+                    {
+                        btnChangeFunction.IsSelected = false;
+                        btnChangeFunction.TextSize = CSS.CSS_FontSize.TextFontSize;
+                        btnChangeFunction.IsBold = false;
+                        btnChangeScene.TextSize = CSS.CSS_FontSize.TextFontSize;
+                        btnChangeScene.IsSelected = false;
+                        btnChangeScene.IsBold = false;
+                        btnChangeGroupControl.IsSelected = true;
+                        btnChangeGroupControl.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
+                        btnChangeGroupControl.IsBold = true;
+                    }
+                };
+
+
+            }
+            else
+            {
+                var changeView = new FrameLayout()
+                {
+                    //Y = Application.GetRealHeight(20) + topView.Bottom,
+                    Gravity = Gravity.CenterHorizontal,
+                    Width = Application.GetRealWidth(230),
+                    Height = Application.GetRealHeight(62),
+                    BackgroundImagePath = "Collection/ChangeViewbg.png",
+                };
+                changeBaseView.AddChidren(changeView);
+
+                var btnChangeFunction = new Button()
+                {
+                    X = Application.GetRealWidth(10),
+                    Width = Application.GetRealWidth(114 - 10),
+                    TextID = StringId.Functions,
+                    SelectedTextColor = CSS_Color.MainColor,
+                    TextColor = CSS_Color.PromptingColor1,
+                    TextSize = CSS_FontSize.HeadlineFontSize,
+                    TextAlignment = TextAlignment.Center,
+                    IsSelected = true,
+                    IsBold = true,
+                };
+                changeView.AddChidren(btnChangeFunction);
+
+                Button btnLine = new Button()
+                {
+                    X = btnChangeFunction.Right,
+                    Gravity = Gravity.CenterVertical,
+                    Width = Application.GetRealWidth(1),
+                    Height = Application.GetRealHeight(14),
+                    BackgroundColor = CSS_Color.PromptingColor1,
+                };
+                changeView.AddChidren(btnLine);
+
+                var btnChangeScene = new Button()
+                {
+                    X = btnLine.Right,
+                    Width = Application.GetRealWidth(114 - 10),
+                    TextID = StringId.Scenes,
+                    SelectedTextColor = CSS_Color.MainColor,
+                    TextColor = CSS_Color.PromptingColor1,
+                    TextSize = CSS_FontSize.TextFontSize,
+                    TextAlignment = TextAlignment.Center,
+                };
+                changeView.AddChidren(btnChangeScene);
+
+
+                btnChangeFunction.MouseUpEventHandler = (sender, e) =>
+                {
+
+                    btnChangeFunction.IsSelected = true;
+                    btnChangeFunction.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
+                    btnChangeFunction.IsBold = true;
+                    btnChangeScene.TextSize = CSS.CSS_FontSize.TextFontSize;
+                    btnChangeScene.IsSelected = false;
+                    btnChangeScene.IsBold = false;
+                    CurShowTypeContent = 0;
+                    contentView.PageIndex = 0;
+                };
+
+                btnChangeScene.MouseUpEventHandler = (sender, e) =>
+                {
+                    btnChangeScene.IsSelected = true;
+                    btnChangeScene.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
+                    btnChangeScene.IsBold = true;
+                    btnChangeFunction.TextSize = CSS.CSS_FontSize.TextFontSize;
+                    btnChangeFunction.IsSelected = false;
+                    btnChangeFunction.IsBold = false;
+                    CurShowTypeContent = 1;
+                    contentView.PageIndex = 1;
+                };
+
+                contentView.PageChange = (sender, e) =>
+                {
+                    if (contentView.PageIndex == 0)
+                    {
+                        btnChangeFunction.IsSelected = true;
+                        btnChangeFunction.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
+                        btnChangeFunction.IsBold = true;
+                        btnChangeScene.TextSize = CSS.CSS_FontSize.TextFontSize;
+                        btnChangeScene.IsSelected = false;
+                        btnChangeScene.IsBold = false;
+                    }
+                    else if (contentView.PageIndex == 1)
+                    {
+                        btnChangeScene.IsSelected = true;
+                        btnChangeScene.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
+                        btnChangeScene.IsBold = true;
+                        btnChangeFunction.TextSize = CSS.CSS_FontSize.TextFontSize;
+                        btnChangeFunction.IsSelected = false;
+                        btnChangeFunction.IsBold = false;
+                    }
+                };
+
+
+
+            }
+
+
+            contentView.PageIndex = CurShowTypeContent;
+
+        }
+
         /// <summary>
         /// 鍔犺浇鍐呭鍖哄煙
         /// </summary>
@@ -736,8 +904,10 @@
                         {
                             if (contentView == null)
                             {
+                                waitPage.Hide();
                                 return;
                             }
+                            loadNavView();
                             contentView.RemoveAll();
                             deviceFunctionView = new VerticalScrolViewLayout();
                             contentView.AddChidren(deviceFunctionView);
@@ -745,7 +915,6 @@
                             sceneFunctionView = new VerticalScrolViewLayout();
                             contentView.AddChidren(sceneFunctionView);
                             LoadSceneFunctionControlZone();
-                            contentView.PageIndex = CurShowTypeContent;
                             if (DB_ResidenceData.Instance.HomeGateway.isSupportGroupControl)
                             {
                                 gcFunctionView = new VerticalScrolViewLayout();
@@ -759,6 +928,7 @@
                             GetUnreadPushMessages();
                             RegisterGetPushMessageAction();
 
+                            contentView.PageIndex = CurShowTypeContent;
                             if (waitPage != null)
                             {
                                 waitPage.RemoveFromParent();
@@ -819,11 +989,11 @@
                 foreach (var function in list)
                 {
                     //闊充箰妯″潡鏈変富浠庡叧绯伙紝闇�瑕佺壒娈婂鐞�
-                    if (SPK.MusicSpkList().Contains( function.spk))
-                    {
-                        continue;
-                    }
-                    else
+                    //if (SPK.MusicSpkList().Contains( function.spk))
+                    //{
+                    //    continue;
+                    //}
+                    //else
                     {
                         if (!function.collect)
                             continue;
@@ -917,6 +1087,7 @@
         /// </summary>
         void LoadGroupControlFunctionControlZone()
         {
+
             #region ContextView
             gcFunctionView.RemoveAll();
             functionViews.Clear();
@@ -964,7 +1135,7 @@
                 if (index == 0)
                 {
                     var view = new FrameLayout();
-                    deviceFunctionView.AddChidren(view);
+                    gcFunctionView.AddChidren(view);
 
                     var btnNoCollectionBg = new Button()
                     {
@@ -1284,7 +1455,7 @@
                 {
                     btnIcon.UnSelectedImagePath = "FunctionIcon/Music/MusicIcon.png";
                     btnIcon.SelectedImagePath = "FunctionIcon/Music/MusicOnIcon.png";
-                    btnCollection.Visible = false;
+                    //btnCollection.Visible = false;
                     Button btnPower;
                     btnPower = new Button()
                     {
@@ -1431,7 +1602,7 @@
                 btnName.MouseUpEventHandler = skipControlPageEvent;
                 btnIcon.MouseUpEventHandler = skipControlPageEvent;
                 btnState.MouseUpEventHandler = skipControlPageEvent;
-                //涓嶉渶瑕佹洿鏂扮姸鎬佺殑鍔ㄨ兘鍒楄〃
+                //涓嶉渶瑕佹洿鏂扮姸鎬佺殑鍔熻兘鍒楄〃
                 if(!SPK.NotStatusSpkList.Contains(function.spk) || function.spk != SPK.IpCam_Imou)
                 {
                     UpdataFunctionStates(function);
diff --git a/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs b/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
index 7fc68a1..649b4c8 100644
--- a/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
+++ b/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
@@ -238,6 +238,25 @@
         }
 
         /// <summary>
+        /// 鏇存柊鍔熻兘缁勬帶涓婚〉
+        /// </summary>
+        public static void RefreshGroupControlView()
+        {
+            if (bodyView != null)
+            {
+
+                if (FunctionList.List.groupControls.Count == 0)
+                {
+                    bodyView.loadNavView();
+                    bodyView.contentView.PageIndex = 0;
+                }
+                bodyView.LoadGroupControlFunctionControlZone();
+            }
+        }
+
+
+
+        /// <summary>
         /// 鏇存柊杩炴帴鐘舵�佸浘鏍�
         /// </summary>
         void CheckLinkStatus()
@@ -325,137 +344,9 @@
         /// </summary>
         void LoadEvent_ChangeShowedFunctionType()
         {
-            btnChangeFunction.MouseUpEventHandler = (sender, e) =>
+           
+            if (DB_ResidenceData.Instance.HomeGateway.isSupportGroupControl && FunctionList.List.groupControls.Count>0)
             {
-                
-                btnChangeFunction.IsSelected = true;
-                btnChangeFunction.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
-                btnChangeFunction.IsBold = true;
-                btnChangeScene.TextSize = CSS.CSS_FontSize.TextFontSize;
-                btnChangeScene.IsSelected = false;
-                btnChangeScene.IsBold = false;
-                CurShowTypeContent = 0;
-                contentView.PageIndex = 0;
-            };
-
-            btnChangeScene.MouseUpEventHandler = (sender, e) =>
-            {
-                btnChangeScene.IsSelected = true;
-                btnChangeScene.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
-                btnChangeScene.IsBold = true;
-                btnChangeFunction.TextSize = CSS.CSS_FontSize.TextFontSize;
-                btnChangeFunction.IsSelected = false;
-                btnChangeFunction.IsBold = false;
-                CurShowTypeContent = 1;
-                contentView.PageIndex = 1;
-            };
-
-            contentView.PageChange = (sender, e) =>
-            {
-                if (contentView.PageIndex == 0)
-                {
-                    btnChangeFunction.IsSelected = true;
-                    btnChangeFunction.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
-                    btnChangeFunction.IsBold = true;
-                    btnChangeScene.TextSize = CSS.CSS_FontSize.TextFontSize;
-                    btnChangeScene.IsSelected = false;
-                    btnChangeScene.IsBold = false;
-                }
-                else if (contentView.PageIndex == 1)
-                {
-                    btnChangeScene.IsSelected = true;
-                    btnChangeScene.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
-                    btnChangeScene.IsBold = true;
-                    btnChangeFunction.TextSize = CSS.CSS_FontSize.TextFontSize;
-                    btnChangeFunction.IsSelected = false;
-                    btnChangeFunction.IsBold = false;
-                }
-            };
-
-            if (DB_ResidenceData.Instance.HomeGateway.isSupportGroupControl)
-            {
-                btnChangeGroupControl.MouseUpEventHandler = (sender, e) => {
-                    btnChangeFunction.IsSelected = false;
-                    btnChangeFunction.TextSize = CSS.CSS_FontSize.TextFontSize;
-                    btnChangeFunction.IsBold = false;
-                    btnChangeScene.TextSize = CSS.CSS_FontSize.TextFontSize;
-                    btnChangeScene.IsSelected = false;
-                    btnChangeScene.IsBold = false;
-                    btnChangeGroupControl.IsSelected = true;
-                    btnChangeGroupControl.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
-                    btnChangeGroupControl.IsBold = true;
-                    CurShowTypeContent = 2;
-                    contentView.PageIndex = 2;
-                };
-
-                btnChangeFunction.MouseUpEventHandler = (sender, e) => {
-                    btnChangeFunction.IsSelected = true;
-                    btnChangeFunction.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
-                    btnChangeFunction.IsBold = true;
-                    btnChangeScene.TextSize = CSS.CSS_FontSize.TextFontSize;
-                    btnChangeScene.IsSelected = false;
-                    btnChangeScene.IsBold = false;
-                    CurShowTypeContent = 0;
-                    contentView.PageIndex = 0;
-
-                    btnChangeGroupControl.IsSelected = false;
-                    btnChangeGroupControl.TextSize = CSS.CSS_FontSize.TextFontSize;
-                    btnChangeGroupControl.IsBold = false;
-                };
-                btnChangeScene.MouseUpEventHandler = (sender, e) => {
-                    btnChangeScene.IsSelected = true;
-                    btnChangeScene.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
-                    btnChangeScene.IsBold = true;
-                    btnChangeFunction.TextSize = CSS.CSS_FontSize.TextFontSize;
-                    btnChangeFunction.IsSelected = false;
-                    btnChangeFunction.IsBold = false;
-                    CurShowTypeContent = 1;
-                    contentView.PageIndex = 1;
-
-                    btnChangeGroupControl.IsSelected = false;
-                    btnChangeGroupControl.TextSize = CSS.CSS_FontSize.TextFontSize;
-                    btnChangeGroupControl.IsBold = false;
-                };
-
-                contentView.PageChange = (sender, e) =>
-                {
-                    if (contentView.PageIndex == 0)
-                    {
-                        btnChangeFunction.IsSelected = true;
-                        btnChangeFunction.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
-                        btnChangeFunction.IsBold = true;
-                        btnChangeScene.TextSize = CSS.CSS_FontSize.TextFontSize;
-                        btnChangeScene.IsSelected = false;
-                        btnChangeScene.IsBold = false;
-                        btnChangeGroupControl.IsSelected = false;
-                        btnChangeGroupControl.TextSize = CSS.CSS_FontSize.TextFontSize;
-                        btnChangeGroupControl.IsBold = false;
-                    }
-                    else if (contentView.PageIndex == 1)
-                    {
-                        btnChangeScene.IsSelected = true;
-                        btnChangeScene.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
-                        btnChangeScene.IsBold = true;
-                        btnChangeFunction.TextSize = CSS.CSS_FontSize.TextFontSize;
-                        btnChangeFunction.IsSelected = false;
-                        btnChangeFunction.IsBold = false;
-                        btnChangeGroupControl.IsSelected = false;
-                        btnChangeGroupControl.TextSize = CSS.CSS_FontSize.TextFontSize;
-                        btnChangeGroupControl.IsBold = false;
-                    }
-                    else if (contentView.PageIndex == 2)
-                    {
-                        btnChangeFunction.IsSelected = false;
-                        btnChangeFunction.TextSize = CSS.CSS_FontSize.TextFontSize;
-                        btnChangeFunction.IsBold = false;
-                        btnChangeScene.TextSize = CSS.CSS_FontSize.TextFontSize;
-                        btnChangeScene.IsSelected = false;
-                        btnChangeScene.IsBold = false;
-                        btnChangeGroupControl.IsSelected = true;
-                        btnChangeGroupControl.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
-                        btnChangeGroupControl.IsBold = true;
-                    }
-                };
 
             }
         }
@@ -699,6 +590,11 @@
                     //    }
                     //    Control.Ins.SendWriteCommand(function, d);
                     //}
+                    else if (function.spk == SPK.GroupControl)
+                    {
+                        d.Add("on_off", function.trait_on_off.curValue.ToString());
+                        (function as GroupControl).Control(d);
+                    }
                     else
                     {
                         d.Add("on_off", function.trait_on_off.curValue.ToString());
@@ -888,9 +784,9 @@
                 skipPage.LoadPage(backAction);
                 MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
             };
-            btnMsgBg.MouseUpEventHandler = eventHandler;
-            btnMsgTime.MouseUpEventHandler = eventHandler;
-            btnMsg.MouseUpEventHandler = eventHandler;
+            //btnMsgBg.MouseUpEventHandler = eventHandler;
+            //btnMsgTime.MouseUpEventHandler = eventHandler;
+            //btnMsg.MouseUpEventHandler = eventHandler;
             btnMsgIcon.MouseUpEventHandler = eventHandler;
         }
 
@@ -975,8 +871,8 @@
         void ShowMesBtnState(PushMessageInfo pushMessageInfo, bool allRead)
         {
             if (bodyView == null) return;
-            btnMsg.Text = pushMessageInfo.messageTitle + ": " + pushMessageInfo.messageContent;
-            btnMsgTime.Text = GetUnixToDateTime(pushMessageInfo.createTime);
+            //btnMsg.Text = pushMessageInfo.messageTitle + ": " + pushMessageInfo.messageContent;
+            //btnMsgTime.Text = GetUnixToDateTime(pushMessageInfo.createTime);
             btnMsgIcon.IsSelected = !allRead;
         }
 
@@ -986,8 +882,8 @@
         void ResetMesBtnRead()
         {
             if (bodyView == null) return;
-            btnMsg.Text = "...";
-            btnMsgTime.Text = "00:00";
+            //btnMsg.Text = "...";
+            //btnMsgTime.Text = "00:00";
             btnMsgIcon.IsSelected = false;
         }
 
diff --git a/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs b/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
index dae33b1..c75fe65 100644
--- a/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
+++ b/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
@@ -672,7 +672,7 @@
                 {
                     case ShowFunction.Series:
                         functionCount = FunctionList.List.GetSeries().Count;
-                        functionOnCount = FunctionList.List.GetSeries().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
+                        //functionOnCount = FunctionList.List.GetSeries().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
                         break;
                     case ShowFunction.IpCam:
                         functionCount = FunctionList.List.GetIpCamImouList().Count;
@@ -844,21 +844,29 @@
                         TextAlignment = TextAlignment.CenterLeft,
                         Text = "/" + functionCount,
                     };
-                    functionView.AddChidren(btnFunctionCount);
-                    Button btnOpenCount = new Button()
+                    if (item == ShowFunction.Series)
                     {
-                        X = Application.GetRealWidth(16),
-                        Y = btnName.Bottom,
-                        Width = Application.GetRealWidth(14 * functionCount.ToString().Length),
-                        Height = Application.GetRealHeight(24),
-                        TextColor = CSS_Color.MainColor,
-                        TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                        TextAlignment = TextAlignment.CenterLeft,
-                        Text = functionOnCount.ToString(),
-                        Tag = item + "_onCount",
-                        BorderWidth = 0,
-                    };
-                    functionView.AddChidren(btnOpenCount);
+                        btnFunctionCount.Text = functionCount.ToString();
+                    }
+                    functionView.AddChidren(btnFunctionCount);
+
+                    if (item != ShowFunction.Series)
+                    {
+                        Button btnOpenCount = new Button()
+                        {
+                            X = Application.GetRealWidth(16),
+                            Y = btnName.Bottom,
+                            Width = Application.GetRealWidth(14 * functionCount.ToString().Length),
+                            Height = Application.GetRealHeight(24),
+                            TextColor = CSS_Color.MainColor,
+                            TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                            TextAlignment = TextAlignment.CenterLeft,
+                            Text = functionOnCount.ToString(),
+                            Tag = item + "_onCount",
+                            BorderWidth = 0,
+                        };
+                        functionView.AddChidren(btnOpenCount);
+                    }
                 }
 
 
@@ -876,6 +884,12 @@
                     case ShowFunction.Series:
                         btnName.TextID = StringId.HorseRaceLamp;
                         functionPageTitleId = StringId.HorseRaceLamp;
+                        btnFunctionViewBg.MouseUpEventHandler = (sender, e) => {
+                            var page2 = new UI2.Classification.SeriesFunctionListPage();
+                            MainPage.BasePageView.AddChidren(page2);
+                            page2.LoadPage();
+                            MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                        };
                         break;
                     case ShowFunction.Light:
                         #region Light
@@ -1196,8 +1210,9 @@
                     && item != ShowFunction.SecurityMonitoring
                     && item != ShowFunction.DoorLock
                     && ShowFunction.EnergyMonitoring != item
-                    && ShowFunction.VideoIntercom != item &&
-                    ShowFunction.SecurityCenter != item
+                    && ShowFunction.VideoIntercom != item
+                    && ShowFunction.SecurityCenter != item
+                    && ShowFunction.Series != item
                     && ShowFunction.Acst != item)
                 {
                     btnFunctionViewBg.MouseUpEventHandler = (sender, e) =>
@@ -1437,13 +1452,13 @@
 
                     Inverter.Ins.H5Page.JSToNativeAction = (dictionary) =>
                     {
-                        //var jObj = dictionary;
-                        //JObject jObj = JObject.Parse(Newtonsoft.Json.JsonConvert.SerializeObject(dictionary));
-
+#if __IOS__
+                        JObject jObj = JObject.Parse(Newtonsoft.Json.JsonConvert.SerializeObject(dictionary));
+#else
                         var valuePairs = "";
                         dictionary.TryGetValue("method", out valuePairs);
                         JObject jObj = JObject.Parse(valuePairs);
-
+#endif
 
                         if (!jObj.ContainsKey("method") || !jObj.ContainsKey("data"))
                         {
@@ -1496,7 +1511,7 @@
 
             s1View.Height = s2View.Height = functionContentView.Height = functionContentViewHeight + Application.GetRealWidth(40);
 
-            #endregion
+#endregion
         }
 
        
diff --git a/HDL_ON/UI/UI2/2-Classification/FunctionPage.cs b/HDL_ON/UI/UI2/2-Classification/FunctionPage.cs
index eab9b27..271b160 100644
--- a/HDL_ON/UI/UI2/2-Classification/FunctionPage.cs
+++ b/HDL_ON/UI/UI2/2-Classification/FunctionPage.cs
@@ -164,7 +164,7 @@
 
             if (titleId == StringId.Lights)
             {
-                functionList.AddRange(FunctionList.List.groupControls);
+                //functionList.AddRange(FunctionList.List.groupControls);
                 functionList.AddRange(FunctionList.List.GetLightList());
             }
             else if(titleId == StringId.HorseRaceLamp)
diff --git a/HDL_ON/UI/UI2/2-Classification/RoomPage.cs b/HDL_ON/UI/UI2/2-Classification/RoomPage.cs
index 5158ff5..9d374a2 100644
--- a/HDL_ON/UI/UI2/2-Classification/RoomPage.cs
+++ b/HDL_ON/UI/UI2/2-Classification/RoomPage.cs
@@ -1,5 +1,6 @@
 锘�
 using System;
+using System.Collections.Generic;
 using HDL_ON.Entity;
 using HDL_ON.UI.CSS;
 using Shared;
@@ -89,6 +90,7 @@
 
             var list = room.GetRoomFunctions(false);
 
+
             foreach (var function in list)
             {
                 if (MainPage.RoomNotSupportFunctionList.Contains(function.spk))
diff --git a/HDL_ON/UI/UI2/2-Classification/SeriesFunctionListPage.cs b/HDL_ON/UI/UI2/2-Classification/SeriesFunctionListPage.cs
new file mode 100644
index 0000000..e9b11a2
--- /dev/null
+++ b/HDL_ON/UI/UI2/2-Classification/SeriesFunctionListPage.cs
@@ -0,0 +1,184 @@
+锘縰sing System;
+using System.Collections.Generic;
+using HDL_ON.Entity;
+using HDL_ON.UI.CSS;
+using Shared;
+namespace HDL_ON.UI.UI2.Classification
+{
+    /// <summary>
+    /// 璺戦┈鐏〉闈�
+    /// 搴忓垪椤甸潰
+    /// </summary>
+    public class SeriesFunctionListPage : FrameLayout
+    {
+        FrameLayout bodyView;
+        public SeriesFunctionListPage()
+        {
+            bodyView = this;
+        }
+
+        public void LoadPage()
+        {
+            new TopViewDiv(bodyView, Language.StringByID(StringId.HorseRaceLamp)).LoadTopView();
+            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
+
+            var functionListView = new VerticalScrolViewLayout()
+            {
+                Y = Application.GetRealHeight(64),
+                Height = Application.GetRealHeight(603 - 12),
+            };
+            bodyView.AddChidren(functionListView);
+
+            var waitPage = new Loading();
+            bodyView.AddChidren(waitPage);
+            waitPage.Hide();
+
+            Dictionary<string, List<Button>> dicGroupButtons = new Dictionary<string, List<Button>>();
+
+            List<string> oidList = new List<string>();
+           
+            foreach(var rgb in FunctionList.List.GetLightList())
+            {
+                //if(rgb.spk == SPK.LightRGB)
+                {
+                    var oid = rgb.sid.Substring(0, 16);
+                    if (oidList.Contains(oid))
+                    {
+                        continue;
+                    }
+                    var seriesList = FunctionList.List.GetSeries().FindAll((obj) => obj.sid.StartsWith(oid));
+                    if (seriesList.Count == 0)
+                    {
+                        continue;
+                    }
+                    oidList.Add(oid);
+                    var list = new List<Function>();
+                    List<Button> groupButtons = new List<Button>();
+                    list.AddRange(seriesList);
+                    var groupView = new VerticalScrolViewLayout()
+                    {
+                        Height = Application.GetRealHeight(44 + 51 * list.Count),
+                        BackgroundColor = CSS_Color.MainBackgroundColor,
+                        ScrollEnabled = false,
+                    };
+                    functionListView.AddChidren(groupView);
+
+                    #region title
+                    var titleView = new FrameLayout()
+                    {
+                        Height = Application.GetRealHeight(44),
+                    };
+                    groupView.AddChidren(titleView);
+
+                    var btnTitle = new Button()
+                    {
+                        X = Application.GetRealWidth(16),
+                        TextSize = CSS_FontSize.SubheadingFontSize,
+                        TextAlignment = TextAlignment.CenterLeft,
+                        TextColor = CSS_Color.MainColor,
+                        Text =Language.StringByID( StringId.HorseRaceLampGroup )+ " "+ oidList.Count.ToString(),
+                    };
+                    if(Language.CurrentLanguage == "Chinese")
+                    {
+                        btnTitle.Text = Language.StringByID(StringId.HorseRaceLampGroup) + oidList.Count.ToString();
+                    }
+                    titleView.AddChidren(btnTitle);
+
+                    #endregion
+
+                    foreach (var series in list)
+                    {
+                        groupView.AddChidren(new Button
+                        {
+                            Height = 1,
+                            BackgroundColor = CSS_Color.DividingLineColor,
+                        });
+
+                        var rgbColorfulView = new FrameLayout()
+                        {
+                            Height = Application.GetRealHeight(50),
+                        };
+                        groupView.AddChidren(rgbColorfulView);
+
+                        var btnRgbColorfulTitle = new Button()
+                        {
+                            X = Application.GetRealWidth(16),
+                            TextAlignment = TextAlignment.CenterLeft,
+                            TextSize = CSS_FontSize.TextFontSize,
+                            TextColor = CSS_Color.FirstLevelTitleColor,
+                            Text = series.name == rgb.name ? Language.StringByID(StringId.AutomaticColoring) : series.name,
+                        };
+                        rgbColorfulView.AddChidren(btnRgbColorfulTitle);
+
+                        var btnColorfulSwitch = new Button()
+                        {
+                            X = Application.GetRealWidth(320),
+                            Gravity = Gravity.CenterVertical,
+                            Width = Application.GetMinRealAverage(48),
+                            Height = Application.GetMinRealAverage(36),
+                            UnSelectedImagePath = "Public/Switch.png",
+                            SelectedImagePath = "Public/SwitchOn.png",
+                            Tag = series.sid,
+                        };
+                        rgbColorfulView.AddChidren(btnColorfulSwitch);
+
+                        groupButtons.Add(btnColorfulSwitch);
+
+                        btnColorfulSwitch.MouseUpEventHandler = (sener, e) => {
+                            btnColorfulSwitch.IsSelected = !btnColorfulSwitch.IsSelected;
+                            var state = btnColorfulSwitch.IsSelected ? "on" : "off";
+                            waitPage.Start("");
+                            new System.Threading.Thread(() =>
+                            {
+                                try
+                                {
+                                    var d = new Dictionary<string, string>();
+                                    d.Add("on_off", state);
+                                    DriverLayer.Control.Ins.SendWriteCommand(series, d);
+                                    if (state == "on")
+                                    {
+                                        Application.RunOnMainThread(() =>
+                                        {
+                                            List<Button> updataList = new List<Button>();
+                                            dicGroupButtons.TryGetValue(((Button)sener).Tag.ToString().Substring(0, 16), out updataList);
+                                            foreach (var updataTemp in updataList)
+                                            {
+                                                updataTemp.IsSelected = false;
+                                            }
+                                            btnColorfulSwitch.IsSelected = true;
+                                        });
+                                    }
+                                }
+                                catch (Exception ex)
+                                {
+                                    MainPage.Log($"搴忓垪鎺у埗寮傚父锛歿ex.Message}");
+                                }
+                                finally
+                                {
+                                    Application.RunOnMainThread(() => {
+                                        waitPage.Hide();
+                                    });
+                                }
+                            })
+                            { IsBackground = true }.Start();
+                        };
+
+
+                    }
+                    Console.WriteLine("oid: " + oid);
+                    dicGroupButtons.TryAdd(oid, groupButtons);
+
+                    functionListView.AddChidren(new Button
+                    {
+                        Height = Application.GetRealHeight(8),
+                        BackgroundColor = CSS_Color.DividingLineColor,
+                    });
+
+                }
+            }
+
+        }
+
+
+    }
+}
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
index f4790cf..32662f8 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
@@ -1112,7 +1112,8 @@
                                         string on_off = GetKeyValue("on_off", dicList);
                                         string brightness = GetKeyValue("brightness", dicList);
                                         string cct = GetKeyValue(FunctionAttributeKey.CCT, dicList);
-                                        string colorful = GetKeyValue(FunctionAttributeKey.Colorful, dicList);
+                                        //鑷姩鍖栫粍鎺� 鐐僵鍔熻兘
+                                        //string colorful = GetKeyValue(FunctionAttributeKey.Colorful, dicList);
                                         string rgb = GetKeyValue("rgb", dicList);
 
 
@@ -1138,19 +1139,18 @@
                                             stateStr += "," + Language.StringByID(StringId.ColorTemperature) + cct + "k";
                                         }
 
-                                        if (!string.IsNullOrEmpty(colorful))
-                                        {
-                                            stateStr += "," + Language.StringByID(StringId.ColorfulFunction);
-                                            if (colorful == "on")
-                                            {
-                                                stateStr += Language.StringByID(StringId.onLogic);
-                                            }
-                                            else if (colorful == "off")
-                                            {
-                                                stateStr += Language.StringByID(StringId.offLogic);
-                                            }
-
-                                        }
+                                        //if (!string.IsNullOrEmpty(colorful))
+                                        //{
+                                        //    stateStr += "," + Language.StringByID(StringId.ColorfulFunction);
+                                        //    if (colorful == "on")
+                                        //    {
+                                        //        stateStr += Language.StringByID(StringId.onLogic);
+                                        //    }
+                                        //    else if (colorful == "off")
+                                        //    {
+                                        //        stateStr += Language.StringByID(StringId.offLogic);
+                                        //    }
+                                        //}
 
                                         if (!string.IsNullOrEmpty(rgb) && rgb.Length > 6)
                                         {
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs b/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs
index 9bc1eb7..a161414 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs
@@ -548,10 +548,21 @@
             var perColorful = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Colorful);
             if(perColorful != null)
             {
-                if(perColorful.value == "on")
+                if (perColorful.value == "on")
+                {
                     sceneFunctionInfo += " " + Language.StringByID(StringId.HorseRaceLamp);
+                }
                 else
-                    sceneFunctionInfo = Language.StringByID(StringId.Close) + " " + Language.StringByID(StringId.HorseRaceLamp);
+                {
+                    if (sceneFunction.localFunction.spk == SPK.GroupControl)
+                    {
+                        sceneFunctionInfo += " " + Language.StringByID(StringId.Close) + " " + Language.StringByID(StringId.HorseRaceLamp);
+                    }
+                    else
+                    {
+                        sceneFunctionInfo = Language.StringByID(StringId.Close) + " " + Language.StringByID(StringId.HorseRaceLamp);
+                    }
+                }
             }
 
             return sceneFunctionInfo;
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs b/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs
index 3593598..08bfede 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs
@@ -1905,13 +1905,13 @@
 
             if (sceneFunction.localFunction.spk == SPK.LightRGB || sceneFunction.localFunction.spk == SPK.GroupControl)
             {
-                var colorfulStatus = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Colorful);
-                if (colorfulStatus != null)
-                {
-                    isColorful = true;
-                    LoadColorfulRow(colorfulStatus);
-                    isColorful = colorfulStatus.value == "on";
-                }
+                //var colorfulStatus = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Colorful);
+                //if (colorfulStatus != null)
+                //{
+                //    isColorful = true;
+                //    LoadColorfulRow(colorfulStatus);
+                //    isColorful = colorfulStatus.value == "on";
+                //}
             }
             foreach (var attr in sceneFunction.status)
             {
@@ -1982,7 +1982,18 @@
 
             btnConfrim.MouseUpEventHandler = (sender, e) =>
             {
-                if (sceneFunction.localFunction.spk == SPK.GroupControl) { }
+                if (sceneFunction.localFunction.spk == SPK.GroupControl) {
+                    var colorBegin = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.ColorfulBegin);
+                    if (colorBegin != null)
+                    {
+                        sceneFunction.status.Remove(colorBegin);
+                    }
+                    var colorEnd = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.ColorfulEnd);
+                    if (colorEnd != null)
+                    {
+                        sceneFunction.status.Remove(colorEnd);
+                    }
+                }
                 else
                 {
                     if (isOnStatus)
@@ -2053,6 +2064,7 @@
 
         void UpdataFunctionRow()
         {
+            contentView.RemoveAll();
             for (var i =0;i< functionRowList.Count; i++)
             {
                 try
@@ -2064,6 +2076,11 @@
                         {
                             if (view.Tag != null)
                             {
+                                if (view.Tag.ToString() == FunctionAttributeKey.OnOff)
+                                {
+                                    contentView.AddChidren(view);
+
+                                }
                                 if (isOnStatus)
                                 {
                                     if (view.Tag.ToString() != FunctionAttributeKey.OnOff)
@@ -3183,7 +3200,33 @@
         /// <param name="btn"></param>
         void LoadEditDialog_CCT(SceneFunctionStatus trait, Button btn)
         {
+            if (trait.min == 0)
+            {
+                switch (trait.key)
+                {
+                    case FunctionAttributeKey.SetTemp:
+                        trait.min = 16;
+                        break;
+                    case FunctionAttributeKey.CCT:
+                        trait.min = 2700;
+                        break;
+                }
+            }
+            if (trait.max == 0)
+            {
+                switch (trait.key)
+                {
+                    case FunctionAttributeKey.SetTemp:
+                        trait.max = 30;
+                        break;
+                    case FunctionAttributeKey.CCT:
+                        trait.max = 6500;
+                        break;
+                }
+            }
+
             double temp = trait.min;
+          
             double.TryParse(trait.value, out temp);
             trait.value = temp.ToString();
 
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/AddGroupControlPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/AddGroupControlPage.cs
index 3d6cb2f..b5f70fd 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/AddGroupControlPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/AddGroupControlPage.cs
@@ -92,7 +92,7 @@
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
             if (isAdd)
             {
-                new TopViewDiv(bodyView, Language.StringByID(StringId.CombinedDimming)).LoadTopView();
+                new TopViewDiv(bodyView, Language.StringByID(StringId.GroupControl)).LoadTopView();
             }
             else
             {
@@ -115,7 +115,8 @@
                                         {
                                             if (pack.Code == StateCode.SUCCESS)
                                             {
-                                                FunctionList.List.groupControls.Remove(groupControl);
+                                                var delTemp = FunctionList.List.groupControls.Find((obj) => groupControl.sid == obj.sid);
+                                                FunctionList.List.groupControls.Remove(delTemp);
                                                 //list.Remove(groupControl);
                                                 this.RemoveFromParent();
                                                 delAction?.Invoke();
@@ -478,13 +479,15 @@
                     {
                         try
                         {
-                            var newEditDataString = Newtonsoft.Json.JsonConvert.SerializeObject(this.groupControl);
-                            //娌℃湁鏇存柊鏁版嵁鍒欑洿鎺ラ��鍑�
-                            if (newEditDataString == editDataString)
-                            {
-                                this.RemoveFromParent();
-                                return;
-                            }
+                            //var newEditDataString = Newtonsoft.Json.JsonConvert.SerializeObject(this.groupControl);
+                            //var newEditDataString1 = Newtonsoft.Json.JsonConvert.SerializeObject(groupControlLightList);
+                            //var newEditDataString2 = Newtonsoft.Json.JsonConvert.SerializeObject(this.groupControl.sids);
+                            ////娌℃湁鏇存柊鏁版嵁鍒欑洿鎺ラ��鍑�
+                            //if (newEditDataString == editDataString && newEditDataString1 == newEditDataString2)
+                            //{
+                            //    this.RemoveFromParent();
+                            //    return;
+                            //}
                             groupControl.sids.Clear();
                             foreach (var light in groupControlLightList)
                             {
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/CombinedDimmingListPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/CombinedDimmingListPage.cs
index c4b2d1b..2aaa1dd 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/CombinedDimmingListPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/CombinedDimmingListPage.cs
@@ -21,14 +21,16 @@
         public void LoadPage()
         {
 
-            new TopViewDiv(bodyView, Language.StringByID(StringId.CombinedDimming)).LoadTopView_AddIcon("CombinedDimming",
-                (s,c)=>{
+            new TopViewDiv(bodyView, Language.StringByID(StringId.GroupControl)).LoadTopView_AddIcon("CombinedDimming",
+                (s, c) =>
+                {
                     try
                     {
                         var page = new AddGroupControlPage(null,
-                            (newGC)=> {
+                            (newGC) =>
+                            {
                                 ReadGroupControlList();
-                            },()=> { });
+                            }, () => { });
                         MainPage.BasePageView.AddChidren(page);
                         page.LoadPage();
                         MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
@@ -49,7 +51,7 @@
             #region 
             contentView.AddChidren(new Button() { Height = Application.GetRealHeight(8) });
 
-            
+
 
             #endregion
 
@@ -60,7 +62,8 @@
         private void ReadGroupControlList()
         {
 
-            new System.Threading.Thread(() => {
+            new System.Threading.Thread(() =>
+            {
                 var pack = ApiUtlis.Ins.HttpRequest.GetGroupControlList();
                 if (pack != null)
                 {
@@ -68,10 +71,12 @@
                     {
                         try
                         {
-                            var groupControlList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<GroupControl>>(pack.Data.ToString());
+                            FunctionList.List.groupControls.Clear();
+                            FunctionList.List.groupControls = Newtonsoft.Json.JsonConvert.DeserializeObject<List<GroupControl>>(pack.Data.ToString());
+
                             Application.RunOnMainThread(() =>
                             {
-                                LoadGroupControlView(groupControlList);
+                                LoadGroupControlView();
                             });
                         }
                         catch (Exception ex)
@@ -90,185 +95,171 @@
         }
 
 
-        private void LoadGroupControlView(List<GroupControl> list)
+        private void LoadGroupControlView()
         {
-#if DEBUG
-            if (list.Count == 0)
+            contentView.RemoveAll();
+
+            foreach (var groupControl in FunctionList.List.groupControls)
             {
-                list.Add(new GroupControl()
+                var functionRow = new RowLayout()
                 {
-                    name = "缁勫悎璋冨厜1",
-                    roomIds = new List<string> {},
-                    sid = "00000000000000001",
-                    type = "light",
-                });
+                    Height = Application.GetRealHeight(65),
+                    BackgroundColor = CSS_Color.MainBackgroundColor,
+                    LineColor = 0x00000000
+                };
+                contentView.AddChidren(functionRow);
 
-                list.Add(new GroupControl()
+                var btnRight = new Button()
                 {
-                    name = "缁勫悎璋冨厜2",
-                    roomIds = new List<string> { },//Room.CurrentSpatial.RoomList[0].roomId 
-                    sid = "00000000000000002",
-                    type = "light",
-                });
-            }
+                    X = Application.GetRealWidth(339),
+                    Gravity = Gravity.CenterVertical,
+                    Width = Application.GetMinRealAverage(16),
+                    Height = Application.GetMinRealAverage(16),
+                    UnSelectedImagePath = "Public/Right.png",
+                };
+                functionRow.AddChidren(btnRight);
 
-#endif
-
-            if (list.Count == 0)
-            {
-
-            }
-            else
-            {
-                contentView.RemoveAll();
-
-                foreach (var groupControl in list)
+                var btnFunctionName = new Button()
                 {
-                    var functionRow = new RowLayout()
+                    X = Application.GetRealWidth(16),
+                    Y = Application.GetRealHeight(10),
+                    Width = Application.GetRealWidth(308),
+                    Height = Application.GetRealHeight(24),
+                    TextAlignment = TextAlignment.CenterLeft,
+                    TextSize = CSS_FontSize.SubheadingFontSize,
+                    TextColor = CSS_Color.FirstLevelTitleColor,
+                    Text = groupControl.name,
+                };
+                functionRow.AddChidren(btnFunctionName);
+
+                var btnFunctionLocationInfo = new Button()
+                {
+                    X = Application.GetRealWidth(16),
+                    Y = btnFunctionName.Bottom,
+                    Width = Application.GetRealWidth(308),
+                    Height = Application.GetRealHeight(21),
+                    TextAlignment = TextAlignment.CenterLeft,
+                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                    TextColor = CSS_Color.PromptingColor1,
+                    Text = groupControl.GetRoomListName(),
+                };
+                functionRow.AddChidren(btnFunctionLocationInfo);
+
+
+
+                functionRow.AddChidren(
+                    new Button()
                     {
-                        Height = Application.GetRealHeight(65),
-                        BackgroundColor = CSS_Color.MainBackgroundColor,
-                        LineColor = 0x00000000
-                    };
-                    contentView.AddChidren(functionRow);
+                        Gravity = Gravity.CenterHorizontal,
+                        Y = Application.GetRealHeight(64),
+                        Height = Application.GetRealHeight(1),
+                        Width = Application.GetRealWidth(343),
+                        BackgroundColor = CSS_Color.DividingLineColor,
+                    });
 
-                    var btnRight = new Button()
-                    {
-                        X = Application.GetRealWidth(339),
-                        Gravity = Gravity.CenterVertical,
-                        Width = Application.GetMinRealAverage(16),
-                        Height = Application.GetMinRealAverage(16),
-                        UnSelectedImagePath = "Public/Right.png",
-                    };
-                    functionRow.AddChidren(btnRight);
-
-                    var btnFunctionName = new Button()
-                    {
-                        X = Application.GetRealWidth(16),
-                        Y = Application.GetRealHeight(10),
-                        Width = Application.GetRealWidth(308),
-                        Height = Application.GetRealHeight(24),
-                        TextAlignment = TextAlignment.CenterLeft,
-                        TextSize = CSS_FontSize.SubheadingFontSize,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        Text = groupControl.name,
-                    };
-                    functionRow.AddChidren(btnFunctionName);
-
-                    var btnFunctionLocationInfo = new Button()
-                    {
-                        X = Application.GetRealWidth(16),
-                        Y = btnFunctionName.Bottom,
-                        Width = Application.GetRealWidth(308),
-                        Height = Application.GetRealHeight(21),
-                        TextAlignment = TextAlignment.CenterLeft,
-                        TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                        TextColor = CSS_Color.PromptingColor1,
-                        Text = groupControl.GetRoomListName(),
-                    };
-                    functionRow.AddChidren(btnFunctionLocationInfo);
-
-
-
-                    functionRow.AddChidren(
-                        new Button()
-                        {
-                            Gravity = Gravity.CenterHorizontal,
-                            Y = Application.GetRealHeight(64),
-                            Height = Application.GetRealHeight(1),
-                            Width = Application.GetRealWidth(343),
-                            BackgroundColor = CSS_Color.DividingLineColor,
-                        });
-
-                    EventHandler<MouseEventArgs> eventHandler = (sender, e) => {
-                        var page = new AddGroupControlPage(groupControl,
-                           (newGC) => {
-                               try
+                EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+                {
+                    var page = new AddGroupControlPage(groupControl,
+                       (newGC) =>
+                       {
+                           try
+                           {
+                               if (newGC != null)
                                {
-                                   if (newGC != null)
+                                   Application.RunOnMainThread(() =>
                                    {
-                                       Application.RunOnMainThread(() =>
-                                       {
-                                           groupControl.roomIds = newGC.uids;
-                                           btnFunctionLocationInfo.Text = newGC.GetUidListName();
-                                       });
-                                   }
-                               }catch(Exception ex)
-                               {
-                                   MainPage.Log($"鍒锋柊缇ゆ帶鎴块棿淇℃伅寮傚父:{ex.Message}");
-                               }
-                           },()=> {
-                               LoadGroupControlView(FunctionList.List.groupControls);
-                           });
-                        MainPage.BasePageView.AddChidren(page);
-                        page.LoadPage();
-                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                    };
-                    functionRow.MouseUpEventHandler = eventHandler;
-                    btnRight.MouseUpEventHandler = eventHandler;
-                    btnFunctionName.MouseUpEventHandler = eventHandler;
-                    btnFunctionLocationInfo.MouseUpEventHandler = eventHandler;
+                                           //groupControl.roomIds = newGC.roomIds;
+                                           //groupControl.uids = newGC.uids;
+                                           var localTemp = FunctionList.List.groupControls.Find((obj) => obj.deviceId == newGC.deviceId);
+                                       localTemp.roomIds = newGC.roomIds;
+                                       localTemp.uids = newGC.uids;
+                                       localTemp.sids = newGC.sids;
 
-                    var btnDelGroupControl = new Button()
+                                           btnFunctionLocationInfo.Text = newGC.GetUidListName();
+                                   });
+                               }
+                           }
+                           catch (Exception ex)
+                           {
+                               MainPage.Log($"鍒锋柊缇ゆ帶鎴块棿淇℃伅寮傚父:{ex.Message}");
+                           }
+                       }, () =>
+                       {
+                           LoadGroupControlView();
+                       });
+                    MainPage.BasePageView.AddChidren(page);
+                    page.LoadPage();
+                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                };
+                functionRow.MouseUpEventHandler = eventHandler;
+                btnRight.MouseUpEventHandler = eventHandler;
+                btnFunctionName.MouseUpEventHandler = eventHandler;
+                btnFunctionLocationInfo.MouseUpEventHandler = eventHandler;
+
+                var btnDelGroupControl = new Button()
+                {
+                    TextColor = CSS_Color.MainBackgroundColor,
+                    BackgroundColor = CSS_Color.WarningColor,
+                    TextID = StringId.Del,
+                    TextAlignment = TextAlignment.Center,
+                };
+                functionRow.AddRightView(btnDelGroupControl);
+                btnDelGroupControl.MouseUpEventHandler = (sender1, e1) =>
+                {
+                    var waitPage = new Loading();
+                    this.AddChidren(waitPage);
+                    waitPage.Start("");
+                    new System.Threading.Thread(() =>
                     {
-                        TextColor = CSS_Color.MainBackgroundColor,
-                        BackgroundColor = CSS_Color.WarningColor,
-                        TextID = StringId.Del,
-                        TextAlignment = TextAlignment.Center,
-                    };
-                    functionRow.AddRightView(btnDelGroupControl);
-                    btnDelGroupControl.MouseUpEventHandler = (sender1, e1) => {
-                        var waitPage = new Loading();
-                        this.AddChidren(waitPage);
-                        waitPage.Start("");
-                        new System.Threading.Thread(() =>
+                        try
                         {
-                            try
+                            var pack = ApiUtlis.Ins.HttpRequest.DelGroupControl(groupControl.userDeviceGroupControlId);
+                            if (pack != null)
                             {
-                                var pack = ApiUtlis.Ins.HttpRequest.DelGroupControl(groupControl.userDeviceGroupControlId);
-                                if (pack != null)
+                                Application.RunOnMainThread(() =>
                                 {
-                                    Application.RunOnMainThread(() =>
+                                    try
                                     {
-                                        try
+                                        if (pack.Code == StateCode.SUCCESS)
                                         {
-                                            if (pack.Code == StateCode.SUCCESS)
-                                            {
-                                                list.Remove(groupControl);
-                                                LoadGroupControlView(list);
-                                            }
-                                            else
-                                            {
-                                                IMessageCommon.Current.ShowErrorInfoAlter(pack.Code);
-                                            }
-                                        }catch(Exception ex)
-                                        {
-                                            MainPage.Log($"鍒锋柊缁勬帶鏁版嵁寮傚父:{ex.Message}");
+                                            var delTemp = FunctionList.List.groupControls.Find((obj) => groupControl.sid == obj.sid);
+                                            FunctionList.List.groupControls.Remove(delTemp);
+                                            LoadGroupControlView();
                                         }
-                                    });
-                                }
-                            }catch(Exception ex)
-                            {
-                                MainPage.Log($"鍒犻櫎缁勬帶寮傚父:{ex.Message}");
-                            }
-                            finally
-                            {
-                                Application.RunOnMainThread(() => {
-                                    if (waitPage != null)
+                                        else
+                                        {
+                                            IMessageCommon.Current.ShowErrorInfoAlter(pack.Code);
+                                        }
+                                    }
+                                    catch (Exception ex)
                                     {
-                                        waitPage.Hide();
-                                        waitPage.RemoveFromParent();
-                                        waitPage = null;
+                                        MainPage.Log($"鍒锋柊缁勬帶鏁版嵁寮傚父:{ex.Message}");
                                     }
                                 });
                             }
-                        })
-                        { IsBackground = true }.Start();
-                    };
-
-                }
+                        }
+                        catch (Exception ex)
+                        {
+                            MainPage.Log($"鍒犻櫎缁勬帶寮傚父:{ex.Message}");
+                        }
+                        finally
+                        {
+                            Application.RunOnMainThread(() =>
+                            {
+                                if (waitPage != null)
+                                {
+                                    waitPage.Hide();
+                                    waitPage.RemoveFromParent();
+                                    waitPage = null;
+                                }
+                            });
+                        }
+                    })
+                    { IsBackground = true }.Start();
+                };
 
             }
+
         }
 
 
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
index 60d72bc..a7cd03f 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
@@ -629,7 +629,7 @@
                         {
                             Y = btnResidenceManageIcon.Bottom,
                             Height = Application.GetRealHeight(29),
-                            TextID = StringId.CombinedDimming,
+                            TextID = StringId.GroupControl,
                             TextAlignment = TextAlignment.Center,
                             TextColor = CSS_Color.FirstLevelTitleColor,
                             TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/ColorfulInfoPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/ColorfulInfoPage.cs
index 63cd333..9a24099 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Light/ColorfulInfoPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Light/ColorfulInfoPage.cs
@@ -41,6 +41,80 @@
             };
             bodyView.AddChidren(contentView);
 
+            #region 鐐僵寮�鍏�
+            contentView.AddChidren(new Button
+            {
+                Height = Application.GetRealHeight(10),
+                BackgroundColor = CSS_Color.BackgroundColor,
+            });
+
+            var viewSwitch = new FrameLayout()
+            {
+                Height = Application.GetRealHeight(50),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+            };
+            contentView.AddChidren(viewSwitch);
+
+            var btnSwitchText = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextID = StringId.CulorfulTest,
+            };
+            viewSwitch.AddChidren(btnSwitchText);
+
+            var btnColorfulSwitch = new Button()
+            {
+                X = Application.GetRealWidth(314),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetMinRealAverage(48),
+                Height = Application.GetMinRealAverage(36),
+                UnSelectedImagePath = "Public/Switch.png",
+                SelectedImagePath = "Public/SwitchOn.png",
+                IsSelected = function.GetAttrState(FunctionAttributeKey.Colorful) == "on"
+            };
+            viewSwitch.AddChidren(btnColorfulSwitch);
+
+            btnColorfulSwitch.MouseUpEventHandler = (sender, e) => {
+                btnColorfulSwitch.IsSelected = !btnColorfulSwitch.IsSelected;
+                new System.Threading.Thread(() =>
+                {
+                    try
+                    {
+                        var controlColorfulState = btnColorfulSwitch.IsSelected ? "on" : "off";
+                        function.SetAttrState(FunctionAttributeKey.Colorful, controlColorfulState);
+                        var d = new Dictionary<string, string>();
+                        d.Add(FunctionAttributeKey.Colorful, controlColorfulState);
+                        if (controlColorfulState == "on")
+                        {
+                            var color = function.GetAttrState(FunctionAttributeKey.ColorfulBegin).Split(",");
+                            var sendColorString = color[0] + "," + color[1] + "," + color[2];
+                            d.Add(FunctionAttributeKey.ColorfulBegin, sendColorString);
+                            color = function.GetAttrState(FunctionAttributeKey.ColorfulEnd).Split(",");
+                            sendColorString = color[0] + "," + color[1] + "," + color[2];
+                            d.Add(FunctionAttributeKey.ColorfulEnd, sendColorString);
+                            d.Add(FunctionAttributeKey.ColorfulTime, function.GetAttrState(FunctionAttributeKey.ColorfulTime));
+                        }
+                        Control.Ins.SendWriteCommand(function, d);
+                    }
+                    catch (Exception ex)
+                    {
+                        MainPage.Log($"鎺у埗鐐僵寮�鍏冲紓甯�:{ex.Message}");
+                    }
+                })
+                { IsBackground = true }.Start();
+            };
+
+            contentView.AddChidren(new Button
+            {
+                Height = Application.GetRealHeight(10),
+                BackgroundColor = CSS_Color.BackgroundColor,
+            });
+
+            #endregion
+
             #region 璧峰棰滆壊
             var startView = new FrameLayout()
             {
@@ -87,7 +161,7 @@
             btnStartColor.MouseUpEventHandler = (sender, e) => {
                 Action<uint> action = (color) => {
                     btnStartColor.BackgroundColor = color;
-                    function.SetAttrState(FunctionAttributeKey.ColorfulBegin, color);
+                    //function.SetAttrState(FunctionAttributeKey.ColorfulBegin, color);
                 };
                 var rgbView = new ColorfulSettingPage(function, action,true);
                 MainPage.BasePageView.AddChidren(rgbView);
@@ -197,6 +271,13 @@
             };
             workHoursView.AddChidren(btnWorkHours);
 
+            var time = Convert.ToInt32( function.GetAttrState(FunctionAttributeKey.ColorfulTime));
+
+
+            btnWorkHours.Text = time/ 360 + Language.StringByID(StringId.h);
+            btnWorkHours.Text += time / 60 + Language.StringByID(StringId.m);
+            btnWorkHours.Text += time % 60 + Language.StringByID(StringId.s);
+
             var waitPage = new Loading();
             this.AddChidren(waitPage);
 
@@ -211,11 +292,17 @@
                         {
                             LoadEditDialog(() =>
                             {
+                                if(hour == 0 && minute == 0 && second == 0)
+                                {
+                                    new PublicAssmebly().TipMsg(StringId.Tip, StringId.TimeInvalid);
+                                    return;
+                                }
                                 btnWorkHours.Text = hour + "鏃�";
                                 btnWorkHours.Text += minute + "鍒�";
                                 btnWorkHours.Text += second + "绉�";
                                 new System.Threading.Thread(() => {
-                                    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                                    var d = new Dictionary<string, string>();
+                                    function.SetAttrState(FunctionAttributeKey.ColorfulTime, (hour * 360 + minute * 60 + second).ToString());
                                     d.Add(FunctionAttributeKey.ColorfulTime, (hour * 360 + minute * 60 + second).ToString());
                                     Control.Ins.SendWriteCommand(function, d);
                                 }) { IsBackground = true }.Start();
@@ -235,8 +322,6 @@
             btnWorkHours.MouseUpEventHandler = eventHandler;
             workHoursView.MouseUpEventHandler = eventHandler;
             btnWorkHoursRight.MouseUpEventHandler = eventHandler;
-
-
             #endregion
 
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/ColorfulSettingPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/ColorfulSettingPage.cs
index 8bb2a15..eaec6ee 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Light/ColorfulSettingPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Light/ColorfulSettingPage.cs
@@ -333,26 +333,26 @@
             btnConfrim.MouseUpEventHandler = (sender, e) =>
             {
                 backAction?.Invoke(curColor) ;
-                System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                var d = new System.Collections.Generic.Dictionary<string, string>();
                 if (isSatrtColor)
                 {
                     d.Add(FunctionAttributeKey.ColorfulBegin, redColor + "," + greenColor + "," + blueColor);
                     function.SetAttrState(FunctionAttributeKey.ColorfulBegin, redColor + "," + greenColor + "," + blueColor);
-                    var color = function.GetAttrState(FunctionAttributeKey.ColorfulEnd).Split(",");
-                    var sendColorString = color[0] + "," + color[1] + "," + color[2];
-                    d.Add(FunctionAttributeKey.ColorfulEnd, sendColorString);
-                    d.Add(FunctionAttributeKey.ColorfulTime, function.GetAttrState(FunctionAttributeKey.ColorfulTime));
-
+                    //var color = function.GetAttrState(FunctionAttributeKey.ColorfulEnd).Split(",");
+                    //var sendColorString = color[0] + "," + color[1] + "," + color[2];
+                    //d.Add(FunctionAttributeKey.ColorfulEnd, sendColorString);
+                    //d.Add(FunctionAttributeKey.ColorfulTime, function.GetAttrState(FunctionAttributeKey.ColorfulTime));
                 }
                 else
                 {
-                    var color = function.GetAttrState(FunctionAttributeKey.ColorfulBegin).Split(",");
-                    var sendColorString = color[0] + "," + color[1] + "," + color[2];
-                    d.Add(FunctionAttributeKey.ColorfulBegin, sendColorString);
-                    d.Add(FunctionAttributeKey.ColorfulTime, function.GetAttrState(FunctionAttributeKey.ColorfulTime));
+                    //var color = function.GetAttrState(FunctionAttributeKey.ColorfulBegin).Split(",");
+                    //var sendColorString = color[0] + "," + color[1] + "," + color[2];
+                    //d.Add(FunctionAttributeKey.ColorfulBegin, sendColorString);
+                    //d.Add(FunctionAttributeKey.ColorfulTime, function.GetAttrState(FunctionAttributeKey.ColorfulTime));
                     d.Add(FunctionAttributeKey.ColorfulEnd, redColor + "," + greenColor + "," + blueColor);
                     function.SetAttrState(FunctionAttributeKey.ColorfulEnd, redColor + "," + greenColor + "," + blueColor);
                 }
+                //d.Add(FunctionAttributeKey.Colorful, "off");
                 Control.Ins.SendWriteCommand(function, d);
                 this.RemoveFromParent();
             };
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/GroupControlPage_V2.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/GroupControlPage_V2.cs
index 5ecba87..b05731e 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Light/GroupControlPage_V2.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Light/GroupControlPage_V2.cs
@@ -1,5 +1,7 @@
 锘縰sing System;
 using System.Collections.Generic;
+using HDL_ON.Common;
+using HDL_ON.DriverLayer;
 using HDL_ON.Entity;
 using HDL_ON.UI.CSS;
 using Shared;
@@ -31,8 +33,15 @@
             }
         }
 
+        public override void RemoveFromParent()
+        {
+            base.RemoveFromParent();
+        }
+
         public void LoadPage(Button btnCollectionIcon, Button btnFunctionNameOut, Button btnFromFloorOut)
         {
+            bodyView.RemoveAll();
+
             btnCollection_Out = btnCollectionIcon;
             btnFunctionName_Out = btnFunctionNameOut;
             btnFromFloor_Out = btnFromFloorOut;
@@ -91,9 +100,10 @@
             //};
 
 
+           
 
             //鍥為��鍒锋柊淇℃伅浜嬩欢
-            new TopViewDiv(bodyView, Language.StringByID(StringId.CombinedDimming)).LoadTopView_SettingIcon( () => {
+            new TopViewDiv(bodyView, Language.StringByID(StringId.GroupControl)).LoadTopView_SettingIcon( () => {
                 var page = new AddGroupControlPage(function,
                         (newGC) => {
                             try
@@ -102,9 +112,22 @@
                                 {
                                     if (newGC != null)
                                     {
-                                        btnFunctionName.Text = btnFunctionName_Out.Text = function.name;
-                                        function.roomIds = newGC.uids;
-                                        btnFromFloor_Out.Text = btnFromFoorAndRoom.Text = newGC.GetUidListName();
+                                        var localTemp = FunctionList.List.groupControls.Find((obj) => obj.deviceId == newGC.deviceId);
+                                        if(localTemp!= null)
+                                        {
+                                            try
+                                            {
+                                                localTemp.sids = newGC.sids;
+                                                localTemp.name = newGC.name;
+                                                localTemp.roomIds = newGC.roomIds;
+                                                localTemp.uids = newGC.uids;
+                                            }
+                                            catch { }
+                                            function = newGC;
+                                            btnFunctionName_Out.Text = function.name;
+                                            btnFromFloor_Out.Text = function.GetRoomListName();
+                                            LoadPage(btnCollection, btnFunctionName, btnFunctionName);
+                                        }
                                     }
                                 });
                             }
@@ -116,7 +139,7 @@
                             try
                             {
                                 this.RemoveFromParent();
-                                UI.HomePage.RefreshFunctionView();
+                                UI.HomePage.RefreshGroupControlView();
                                 UI.RoomPage.bodyView?.ReLoadPage();
                                 UI.FunctionPage.bodyView?.ReLoadPage();
                             }
@@ -157,10 +180,12 @@
                         }
                     }
                     hadRGB = true;
+                    hadDimming = true;
                 }
                 else if (temp.spk == SPK.LightCCT)
                 {
                     hadCCT = true;
+                    hadDimming = true;
                 }
                 else if (temp.spk == SPK.LightDimming)
                 {
@@ -174,38 +199,17 @@
             }
 
             //灞炴�ц缃尯鍩�
-            var attrView = new VerticalScrolViewLayout()
+            VerticalScrolViewLayout attrView = new VerticalScrolViewLayout()
             {
                 Y = Application.GetRealHeight(52),
                 Width = Application.GetRealWidth(343),
                 ScrollEnabled = false,
             };
-            //灞炴�ц缃尯鍩熼珮搴�
-            int attrViewHight = Application.GetRealHeight(18 + 22);
-
-
             controlView.AddChidren(attrView);
+
             attrView.AddChidren(new Button() { Height = Application.GetRealHeight(18) });
 
-
-            if (hadRGB)
-            {
-                hadCCT = true;
-                LoadRgbAttrView(hadCCT,hadColorful);
-            }
-            else if (hadCCT)
-            {
-                LoadCctAttrView(attrView);
-            }
-            else if (hadDimming)
-            {
-                LoadDimmingAttrView(attrView);
-            }
-            
-
-
-
-            var btnSwitch = new Button()
+            btnSwitch = new Button()
             {
                 Gravity = Gravity.CenterHorizontal,
                 Y = Application.GetRealHeight(466),
@@ -233,7 +237,59 @@
             };
 
 
+            if (hadRGB)
+            {
+                LoadRgbAttrView(hadCCT,hadColorful);
+            }
+            else if (hadCCT)
+            {
+                LoadCctAttrView(attrView);
+            }
+            else if (hadDimming)
+            {
+                LoadDimmingAttrView(attrView);
+            }
+            else
+            {
+                attrView.AddChidren(new Button() { Height = Application.GetRealHeight(30) });
+                var btnSwitchIcon = new Button()
+                {
+                    Gravity = Gravity.CenterHorizontal,
+                    Y = Application.GetRealHeight(102),
+                    Width = Application.GetRealWidth(168),
+                    Height = Application.GetRealWidth(288),
+                    UnSelectedImagePath = "FunctionIcon/Light/RelayBg.png",
+                    SelectedImagePath = "FunctionIcon/Light/RelayOnBg.png",
+                    IsSelected = function.trait_on_off.curValue.ToString() == "on"
+                };
+                attrView.AddChidren(btnSwitchIcon);
+
+                btnSwitchIcon.MouseUpEventHandler = (sender, e) => {
+                    if (btnSwitchIcon.IsSelected)
+                    {
+                        btnSwitchIcon.IsSelected = btnSwitch.IsSelected = false;
+                        var d = new Dictionary<string, string>();
+                        d.Add(FunctionAttributeKey.OnOff, "off");
+                        function.Control(d);
+                    }
+                    else
+                    {
+                        btnSwitchIcon.IsSelected = btnSwitch.IsSelected = true;
+                        var d = new Dictionary<string, string>();
+                        d.Add(FunctionAttributeKey.OnOff, "on");
+                        function.Control(d);
+                    }
+                };
+                btnSwitch.MouseUpEventHandler += (sender, e) => {
+                    btnSwitchIcon.IsSelected = btnSwitch.IsSelected;
+                };
+            }
+
+
+
+
         }
+        Button btnSwitch;
 
         /// <summary>
         /// 鍔犺浇璋冨厜灞炴�ц缃帶浠�
@@ -241,88 +297,100 @@
         /// <param name="attrView"></param>
         void LoadDimmingAttrView(VerticalScrolViewLayout attrView)
         {
-            var dimmingView = new FrameLayout()
-            {
-                Height = Application.GetRealHeight(54 + 11)
-            };
-            attrView.AddChidren(dimmingView);
 
-            #region 浜害璋冭妭
+
+
+            attrView.AddChidren(new Button
+            {
+                Height = Application.GetRealHeight(50),
+            });
+
+            var dimmerView = new FrameLayout()
+            {
+                Height = Application.GetRealHeight(280)
+            };
+            attrView.AddChidren(dimmerView);
+
+            var dimmerBar = new WaveSeekBarOn()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(168 - 40),
+                Height = Application.GetRealHeight(288 - 16 - 16),
+                BorderColor = 0x00000000,
+                CornerRadius = Application.GetRealWidth(30),
+                BorderWidth = 0,
+                Progress = Convert.ToInt32(function.GetAttrState(FunctionAttributeKey.Brightness)),
+                IsProgressTextShow = false,
+            };
+            dimmerView.AddChidren(dimmerBar);
+
             var btnBrightnessText = new Button()
             {
-                X = Application.GetRealWidth(35),
-                Y = Application.GetRealHeight(1),
-                Width = Application.GetRealWidth(224),
-                Height = Application.GetRealHeight(25),
-                TextAlignment = TextAlignment.CenterLeft,
+                Gravity = Gravity.CenterHorizontal,
+                Y = ((100 - Convert.ToInt32(function.GetAttrState(FunctionAttributeKey.Brightness))) * Application.GetRealHeight(222 - 16) / 100),
+                Width = Application.GetRealWidth(56),
+                Height = Application.GetRealWidth(46),
+                UnSelectedImagePath = "FunctionIcon/Light/BrightnessBg.png",
                 TextColor = CSS_Color.FirstLevelTitleColor,
-                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                TextID = StringId.Brightness,
+                TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+                Text = Convert.ToInt32(function.GetAttrState(FunctionAttributeKey.Brightness)) + "%",
             };
-            btnBrightnessText.Text = Language.StringByID(StringId.Brightness) + " " + function.GetAttrState(FunctionAttributeKey.Brightness) + "%";
-            dimmingView.AddChidren(btnBrightnessText);
+            dimmerView.AddChidren(btnBrightnessText);
 
-
-            var btnMinValuesText = new Button()
-            {
-                X = Application.GetRealWidth(35),
-                Y = btnBrightnessText.Bottom,
-                Width = Application.GetRealWidth(40),
-                Height = Application.GetRealHeight(21),
-                Text = "0%",
-                TextAlignment = TextAlignment.CenterLeft,
-                TextColor = CSS_Color.PromptingColor1,
-                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-            };
-            dimmingView.AddChidren(btnMinValuesText);
-
-            var dimmerBar = new DiyImageSeekBar()
-            {
-                X = Application.GetRealWidth(45 + 10),
-                Y = Application.GetRealHeight(11),
-                Width = Application.GetRealWidth(220),
-                Height = Application.GetRealHeight(54),
-                SeekBarViewHeight = Application.GetRealHeight(8),
-                ThumbImagePath = "Public/ThumbImage.png",
-                ThumbImageHeight = Application.GetRealHeight(54),
-                ProgressTextColor = CSS_Color.FirstLevelTitleColor,
-                ProgressTextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                ProgressBarColor = CSS_Color.AuxiliaryColor1,
-                MaxValue = 100,
-                SeekBarPadding = Application.GetRealWidth(20),
-                IsProgressTextShow = false,
-                ProgressChangeDelayTime = 0,
-            };
-            dimmingView.AddChidren(dimmerBar);
             dimmerBar.OnProgressChangedEvent = (sender, e) =>
             {
-                btnBrightnessText.Text = Language.StringByID(StringId.Brightness) + " " + e + "%";
-            };
-            dimmerBar.OnStopTrackingTouchEvent = (sender, e) =>
-            {
-                btnBrightnessText.Text = Language.StringByID(StringId.Brightness) + " " + e + "%";
-
-                var d = new Dictionary<string, string>();
-                d.Add(FunctionAttributeKey.Brightness, e.ToString());
-                function.Control(d);
-            };
+                if (e == 0 && lastBrightness != 0)
+                {
+                    btnSwitch.IsSelected = false;
+                    lastBrightness = 0;
+                }
+                else
+                {
+                    if (lastBrightness == 0)
+                        lastBrightness = e;
+                    btnSwitch.IsSelected = true;
+                }
+                if (e == 0 || e == 100)
+                {
+                    var d = new Dictionary<string, string>();
+                    d.Add(FunctionAttributeKey.Brightness, e.ToString());
+                    function.Control(d);
+                }
+                else
+                {
+                    if (350 < (DateTime.Now - function.refreshTime).TotalMilliseconds)
+                    {
+                        function.refreshTime = DateTime.Now;
+                        new System.Threading.Thread(() =>
+                        {
+                            var d = new Dictionary<string, string>();
+                            d.Add(FunctionAttributeKey.Brightness, e.ToString());
+                            function.Control(d);
+                        })
+                        { IsBackground = true }.Start();
+                    }
+                }
 
 
-            var btnMaxValuesText = new Button()
-            {
-                X = dimmerBar.Right,
-                Y = btnBrightnessText.Bottom,
-                Width = Application.GetRealWidth(55),
-                Height = Application.GetRealHeight(21),
-                Text = "100%",
-                TextAlignment = TextAlignment.CenterLeft,
-                TextColor = CSS_Color.PromptingColor1,
-                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                btnBrightnessText.Y = ((100 - dimmerBar.Progress) * Application.GetRealHeight(222 - 16) / 100);
+                btnBrightnessText.Text = dimmerBar.Progress + "%";
             };
-            dimmingView.AddChidren(btnMaxValuesText);
-            #endregion
+
+            btnSwitch.MouseUpEventHandler += (sender, e) => {
+                if (btnSwitch.IsSelected)
+                {
+                    dimmerBar.Progress = 100;
+                }
+                else
+                {
+                    dimmerBar.Progress = 0;
+                }
+                btnBrightnessText.Y = ((100 - dimmerBar.Progress) * Application.GetRealHeight(222 - 16) / 100);
+                btnBrightnessText.Text = dimmerBar.Progress + "%";
+            };
 
         }
+        int lastBrightness = 0;
 
         /// <summary>
         /// 鍔犺浇cct灞炴�ц缃帶浠�
@@ -330,6 +398,98 @@
         /// <param name="attrView"></param>
         void LoadCctAttrView(VerticalScrolViewLayout attrView)
         {
+            attrView.AddChidren(new Button
+            {
+                Height = Application.GetRealHeight(20),
+            });
+
+            var dimmerView = new FrameLayout()
+            {
+                Height = Application.GetRealHeight(280)
+            };
+            attrView.AddChidren(dimmerView);
+
+            var dimmerBar = new WaveSeekBarOn()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(168 - 40),
+                Height = Application.GetRealHeight(288 - 16 - 16),
+                BorderColor = 0x00000000,
+                CornerRadius = Application.GetRealWidth(30),
+                BorderWidth = 0,
+                Progress = Convert.ToInt32(function.GetAttrState(FunctionAttributeKey.Brightness)),
+                IsProgressTextShow = false,
+            };
+            dimmerView.AddChidren(dimmerBar);
+
+            var btnBrightnessText = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = ((100 - Convert.ToInt32(function.GetAttrState(FunctionAttributeKey.Brightness))) * Application.GetRealHeight(222 - 16) / 100),
+                Width = Application.GetRealWidth(56),
+                Height = Application.GetRealWidth(46),
+                UnSelectedImagePath = "FunctionIcon/Light/BrightnessBg.png",
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+                Text = Convert.ToInt32(function.GetAttrState(FunctionAttributeKey.Brightness)) + "%",
+            };
+            dimmerView.AddChidren(btnBrightnessText);
+
+            dimmerBar.OnProgressChangedEvent = (sender, e) =>
+            {
+                if (e == 0 && lastBrightness != 0)
+                {
+                    btnSwitch.IsSelected = false;
+                    lastBrightness = 0;
+                }
+                else
+                {
+                    if (lastBrightness == 0)
+                        lastBrightness = e;
+                    btnSwitch.IsSelected = true;
+                }
+
+                if (e == 0 || e == 100)
+                {
+                    var d = new Dictionary<string, string>();
+                    d.Add(FunctionAttributeKey.Brightness, e.ToString());
+                    function.Control(d);
+                }
+                else
+                {
+                    if (350 < (DateTime.Now - function.refreshTime).TotalMilliseconds)
+                    {
+                        function.refreshTime = DateTime.Now;
+                        new System.Threading.Thread(() =>
+                        {
+                            var d = new Dictionary<string, string>();
+                            d.Add(FunctionAttributeKey.Brightness, e.ToString());
+                            function.Control(d);
+                        })
+                        { IsBackground = true }.Start();
+                    }
+                }
+
+
+                btnBrightnessText.Y = ((100 - dimmerBar.Progress) * Application.GetRealHeight(222 - 16) / 100);
+                btnBrightnessText.Text = dimmerBar.Progress + "%";
+            };
+
+            btnSwitch.MouseUpEventHandler += (sender, e) => {
+                if (btnSwitch.IsSelected)
+                {
+                    dimmerBar.Progress = 100;
+                }
+                else
+                {
+                    dimmerBar.Progress = 0;
+                }
+                btnBrightnessText.Y = ((100 - dimmerBar.Progress) * Application.GetRealHeight(222 - 16) / 100);
+                btnBrightnessText.Text = dimmerBar.Progress + "%";
+            };
+
+            //attrView.AddChidren(new Button() { Height = Application.GetRealHeight(10) });
+
             #region 鑹叉俯
             var cctView = new FrameLayout()
             {
@@ -385,6 +545,7 @@
                 Y = Application.GetRealHeight(11),
                 Width = Application.GetRealWidth(220),
                 Height = Application.GetRealHeight(54),
+                Progress = 38,
             };
             barColorTemplatrue.MinValue = 27;
             barColorTemplatrue.MaxValue = 65;
@@ -490,6 +651,52 @@
             btnWhiteRound.Visible = false;
             framePickerBack.AddChidren(btnWhiteRound);
 
+
+            //褰撳墠鐐瑰嚮鐨勩�愮偣銆戞槸鍚︽纭�
+            bool pointIsRight = false;
+            //鍦嗙殑鍗婂緞(鑰冭檻杈圭晫,闇�瑕佽缃畠鐨勫崐寰勬瘮杈冨皬涓�鐐�)
+            int circleR = colorPicker.Width / 2 - Application.GetRealWidth(12);
+            string rgbString = "255,255,255";
+            var rgbTemp = new Light();
+            colorPicker.MouseUpEventHandler = (sender2, e2) =>
+            {
+                var d = new Dictionary<string, string>();
+                d.Add(FunctionAttributeKey.RGB, rgbString);
+                function.Control(d);
+            };
+            colorPicker.ColorChaged += (sender2, e2) =>
+            {
+                rgbString = (e2[0] + "," + e2[1] + "," + e2[2]).ToString();
+                btnCurColor.BackgroundColor = (uint)(0xFF000000 + rgbTemp.GetRGBcolor(rgbString));
+                var d = new Dictionary<string, string>();
+                d.Add(FunctionAttributeKey.RGB, rgbString);
+                function.Control(d);
+            };
+            colorPicker.MouseDownEventHandler += (sender, e) =>
+            {
+                pointIsRight = this.CheckPoint(circleR, colorPicker.Width / 2, colorPicker.Height / 2, (int)e.X, (int)e.Y);
+                if (pointIsRight == false)
+                {
+                    //鐐圭殑鍖哄煙涓嶆槸鍦嗙洏鍐�
+                    return;
+                }
+                //鏄剧ず鐧界偣
+                btnWhiteRound.X = (int)e.X - btnWhiteRound.Width / 2;
+                btnWhiteRound.Y = (int)e.Y - btnWhiteRound.Height / 2;
+                if (btnWhiteRound.Visible == false)
+                {
+                    btnWhiteRound.Visible = true;
+                }
+            };
+
+            colorPicker.MouseMoveEventHandler += (sender, e) =>
+            {
+                //褰撻紶鏍囩偣涓嬩簨浠跺鐞�
+                colorPicker.MouseDownEventHandler(sender, e);
+            };
+
+
+
             #region 浜害璋冭妭
             var btnBrightnessText = new Button()
             {
@@ -535,6 +742,43 @@
             };
             controlView.AddChidren(dimmerBar);
 
+
+            dimmerBar.OnProgressChangedEvent = (sender, e) =>
+            {
+                if (e == 0 && lastBrightness != 0)
+                {
+                    btnSwitch.IsSelected = false;
+                    lastBrightness = 0;
+                }
+                else
+                {
+                    if (lastBrightness == 0)
+                        lastBrightness = e;
+                    btnSwitch.IsSelected = true;
+                }
+                if (e == 0 || e == 100)
+                {
+                    var d = new Dictionary<string, string>();
+                    d.Add(FunctionAttributeKey.Brightness, e.ToString());
+                    function.Control(d);
+                }
+                else
+                {
+                    if (350 < (DateTime.Now - function.refreshTime).TotalMilliseconds)
+                    {
+                        function.refreshTime = DateTime.Now;
+                        new System.Threading.Thread(() =>
+                        {
+                            var d = new Dictionary<string, string>();
+                            d.Add(FunctionAttributeKey.Brightness, e.ToString());
+                            function.Control(d);
+                        })
+                        { IsBackground = true }.Start();
+                    }
+                }
+            };
+
+
             var btnMaxValuesText = new Button()
             {
                 X = dimmerBar.Right,
@@ -547,6 +791,17 @@
                 TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
             };
             controlView.AddChidren(btnMaxValuesText);
+
+            btnSwitch.MouseUpEventHandler += (sender, e) => {
+                if (btnSwitch.IsSelected)
+                {
+                    dimmerBar.Progress = 100;
+                }
+                else
+                {
+                    dimmerBar.Progress = 0;
+                }
+            };
             #endregion
 
             int heightMore = 375 - magriHeight-20;
@@ -612,6 +867,7 @@
                 };
                 barColorTemplatrue.MinValue = 27;
                 barColorTemplatrue.MaxValue = 65;
+                barColorTemplatrue.Progress = 38;
                 barColorTemplatrue.ProgressBarColor = 0x00000000;//鍏ㄩ儴閫忔槑
                 barColorTemplatrue.ProgressBarUnEnableColor = 0x00000000;
                 barColorTemplatrue.SeekBarBackgroundColor = 0x00000000;
@@ -635,7 +891,7 @@
                 //6500K
                 var btnTempClolorMax = new Button();
                 btnTempClolorMax.Y = btnTempClolorMin.Y;
-                btnTempClolorMax.X = barColorTemplatrue.Right - Application.GetRealWidth(30);
+                btnTempClolorMax.X = barColorTemplatrue.Right - Application.GetRealWidth(15);
                 btnTempClolorMax.Width = Application.GetRealWidth(54);
                 btnTempClolorMax.Height = Application.GetRealHeight(21);
                 btnTempClolorMax.Text = "6500K";
@@ -658,7 +914,7 @@
                 var btnGradualChangeText = new Button()
                 {
                     X = Application.GetRealWidth(35),
-                    Y = Application.GetRealHeight(375 + heightMore - magriHeight),
+                    Y = hadCCT ? Application.GetRealHeight(375 + heightMore - magriHeight) : Application.GetRealHeight(heightMore+10),
                     Width = Application.GetRealWidth(224),
                     Height = Application.GetRealHeight(21),
                     TextAlignment = TextAlignment.CenterLeft,
@@ -668,16 +924,17 @@
                 };
                 controlView.AddChidren(btnGradualChangeText);
 
-                var btnGradualChangeMinValuesText = new Button()
+                var btnColorfulEdit = new Button()
                 {
                     X = Application.GetRealWidth(35),
                     Y = btnGradualChangeText.Bottom + Application.GetRealHeight(10),
                     Width = Application.GetRealWidth(22),
                     Height = Application.GetRealHeight(21),
                     UnSelectedImagePath = "Public/Edit.png",
+                    Visible = false,
                 };
-                controlView.AddChidren(btnGradualChangeMinValuesText);
-                btnGradualChangeMinValuesText.MouseUpEventHandler = (sender, e) => {
+                controlView.AddChidren(btnColorfulEdit);
+                btnColorfulEdit.MouseUpEventHandler = (sender, e) => {
                     var rgbView = new ColorfulInfoPage(function);
                     MainPage.BasePageView.AddChidren(rgbView);
                     rgbView.LoadPage();
@@ -686,29 +943,54 @@
 
                 var barColorful = new FrameLayout()
                 {
-                    X = btnGradualChangeMinValuesText.Right + Application.GetRealWidth(15+5),
-                    Y = Application.GetRealHeight(412 + heightMore - magriHeight),
+                    X = btnColorfulEdit.Right + Application.GetRealWidth(15 + 5),
                     Width = Application.GetRealWidth(170),
+                    //X = Application.GetRealWidth(35),
+                    //Width = Application.GetRealWidth(170 + 41),
+                    Y = hadCCT ? Application.GetRealHeight(412 + heightMore - magriHeight) : Application.GetRealHeight(heightMore + 50),
                     Height = Application.GetRealHeight(8),
                     BackgroundImagePath = "FunctionIcon/Light/ColorfulBar.png",
                 };
                 controlView.AddChidren(barColorful);
 
-                var btnGradualChangeMaxValuesText = new Button()
+                var btnColorfulSwitch = new Button()
                 {
                     X = barColorful.Right + Application.GetRealWidth(8),
                     Y = btnGradualChangeText.Bottom + Application.GetRealHeight(10),
                     Width = Application.GetRealWidth(38),
                     Height = Application.GetRealHeight(24),
-                    UnSelectedImagePath = "Public/Switch.png"
+                    UnSelectedImagePath = "Public/Switch.png",
+                    SelectedImagePath = "Public/SwitchOn.png"
                 };
-                controlView.AddChidren(btnGradualChangeMaxValuesText);
+                controlView.AddChidren(btnColorfulSwitch);
+
+
+                btnColorfulSwitch.MouseUpEventHandler = (sender, e) => {
+                    btnColorfulSwitch.IsSelected = !btnColorfulSwitch.IsSelected;
+                    new System.Threading.Thread(() =>
+                    {
+                        try
+                        {
+                            var controlColorfulState = btnColorfulSwitch.IsSelected ? "on" : "off";
+                            function.SetAttrState(FunctionAttributeKey.Colorful, controlColorfulState);
+                            var d = new Dictionary<string, string>();
+                            d.Add(FunctionAttributeKey.Colorful, controlColorfulState);
+                            function.Control(d);
+                        }
+                        catch (Exception ex)
+                        {
+                            MainPage.Log($"鎺у埗鐐僵寮�鍏冲紓甯�:{ex.Message}");
+                        }
+                    })
+                    { IsBackground = true }.Start();
+                };
+
                 #endregion
 
 
             }
 
-         
+
 
         }
 
@@ -742,5 +1024,9 @@
             return false;
         }
 
+
+
+
+
     }
 }
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayMusicPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayMusicPage.cs
index 168d4b0..f932a84 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayMusicPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayMusicPage.cs
@@ -71,7 +71,7 @@
             #endregion
 
             #region   ---鐣岄潰鐐瑰嚮浜嬩欢---
-            playView.collectIconBtn.Visible = false;//鍏堟殏鏃堕殣钘忔敹钘忓姛鑳�
+            //playView.collectIconBtn.Visible = false;//鍏堟殏鏃堕殣钘忔敹钘忓姛鑳�
             //鏀惰棌鍥炬爣浜嬩欢
             playView.collectIconBtn.MouseUpEventHandler += (sender, e) =>
             {
@@ -84,7 +84,7 @@
                 {
                     A31MusicModel.Current.functionMusic.collect = false;
                 }
-
+                A31MusicModel.Current.functionMusic.CollectFunction();
             };
             ///鍒囨崲鎾斁妯″紡鐐瑰嚮浜嬩欢;
             playView.playOrderBtn.MouseUpEventHandler += (sender, e) =>
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs
index 0a5c9a5..e0a89ae 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs
@@ -194,7 +194,7 @@
             musicView.singerBtn.Text = player.functionMusic.GetAttrState(KeyProperty.song_name);
             musicView.songNameBtn.Text = player.functionMusic.GetAttrState(KeyProperty.song_name);
             musicView.musicNameBtn.Text = player.functionMusic.name;
-            musicView.collectIconBtn.Visible = false;//鍏堟殏鏃堕殣钘忔敹钘忓姛鑳�
+            //musicView.collectIconBtn.Visible = false;//鍏堟殏鏃堕殣钘忔敹钘忓姛鑳�
             ///鏀惰棌浜嬩欢
             musicView.collectIconBtn.MouseUpEventHandler += (sender, e) =>
             {
@@ -207,6 +207,7 @@
                 {
                     player.functionMusic.collect = false;
                 }
+                player.functionMusic.CollectFunction();
             };
 
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/UnlockSettingFacePage.cs b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/UnlockSettingFacePage.cs
index f1ee2e9..a9eaf42 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/UnlockSettingFacePage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/UnlockSettingFacePage.cs
@@ -90,6 +90,21 @@
             bodyView.AddChidren(waitPage);
             waitPage.Start("");
 
+            #endregion
+
+            contentView.AddChidren(new Button()
+            {
+                Height = Application.GetRealHeight(8),
+                BackgroundColor = CSS_Color.BackgroundColor,
+            });
+
+            var view = new VerticalScrolViewLayout()
+            {
+                Height = Application.GetRealHeight(300),
+            };
+            contentView.AddChidren(view);
+
+
             btnFaceUnlockSwitchIcon.MouseUpEventHandler = (sender, e) =>
             {
                 waitPage.Start("");
@@ -110,6 +125,7 @@
                             {
                                 //鏇存柊鐣岄潰
                                 btnFaceUnlockSwitchIcon.IsSelected = changeState;
+                                loadSubView(view, faceUnlockSetup);
                             });
                         }
                         else
@@ -145,19 +161,7 @@
                 })
                 { IsBackground = true }.Start();
             };
-            #endregion
 
-            contentView.AddChidren(new Button()
-            {
-                Height = Application.GetRealHeight(8),
-                BackgroundColor = CSS_Color.BackgroundColor,
-            });
-
-            var view = new VerticalScrolViewLayout()
-            {
-                Height = Application.GetRealHeight(300),
-            };
-            contentView.AddChidren(view);
 
             new System.Threading.Thread(() => {
                 try
diff --git a/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorLockPage.cs b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorLockPage.cs
index 2055a86..8becceb 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorLockPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorLockPage.cs
@@ -284,24 +284,27 @@
             recordFL.GetImageButton().UnSelectedImagePath = "FunctionIcon/DoorLock/HistoryList.png";
             recordFL.GetTextButton().TextID = StringId.lishijilu;
 
-            //鐢ㄦ埛绠$悊
-            CustomFrameLayout userManagerView = new CustomFrameLayout(CustomFrameLayout.widthFrameLayout, CustomFrameLayout.heightFrameLayout);
-            whiteFl.AddChidren(userManagerView);
-            userManagerView.Y = heightY;
-            userManagerView.X = recordFL.Right + Application.GetRealWidth(CustomFrameLayout.interval);
-            userManagerView.AddImageView();
-            userManagerView.AddTextButtonView();
-            userManagerView.GetImageButton().UnSelectedImagePath = "FunctionIcon/DoorLock/DoorlockUserManager.png";
-            userManagerView.GetTextButton().TextID = StringId.UserManagement;
+            if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
+            {
+                //鐢ㄦ埛绠$悊
+                CustomFrameLayout userManagerView = new CustomFrameLayout(CustomFrameLayout.widthFrameLayout, CustomFrameLayout.heightFrameLayout);
+                whiteFl.AddChidren(userManagerView);
+                userManagerView.Y = heightY;
+                userManagerView.X = recordFL.Right + Application.GetRealWidth(CustomFrameLayout.interval);
+                userManagerView.AddImageView();
+                userManagerView.AddTextButtonView();
+                userManagerView.GetImageButton().UnSelectedImagePath = "FunctionIcon/DoorLock/DoorlockUserManager.png";
+                userManagerView.GetTextButton().TextID = StringId.UserManagement;
 
-            userManagerView.SetClickListener((fl, btnImage, btnText) => {
-                var page = new VideoDoorlockUserListPage(device);
-                MainPage.BasePageView.AddChidren(page);
-                page.LoadPage();
-                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                userManagerView.SetClickListener((fl, btnImage, btnText) =>
+                {
+                    var page = new VideoDoorlockUserListPage(device);
+                    MainPage.BasePageView.AddChidren(page);
+                    page.LoadPage();
+                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
 
-            });
-
+                });
+            }
             #endregion
 
 
@@ -387,7 +390,29 @@
                 //MainPage.BasePageView.AddChidren(historyPage);
                 //historyPage.LoadPage();
                 //MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                CommonMethod.Current.SkipRecordActivity(this.device.deviceId);
+                var waitPage = new Loading();
+                this.AddChidren(waitPage);
+                waitPage.Start("");
+                new System.Threading.Thread(() =>
+                {
+                    try
+                    {
+                        Application.RunOnMainThread(() =>
+                        {
+                            CommonMethod.Current.SkipRecordActivity(this.device.deviceId);
+                        });
+                    }catch(Exception ex)
+                    {
+
+                    }
+                    finally
+                    {
+                        Application.RunOnMainThread(() => {
+                            waitPage.Hide();
+                        });
+                    }
+                })
+                { IsBackground = true }.Start();
             });
 
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorlockAudioSetupPage.cs b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorlockAudioSetupPage.cs
index cfa8765..3710ade 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorlockAudioSetupPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorlockAudioSetupPage.cs
@@ -12,17 +12,17 @@
         FrameLayout bodyView;
 
         Function device;
-
         /// <summary>
-        /// 闂ㄩ搩绯荤粺闊抽噺
+        /// 闂ㄩ攣绯荤粺闊抽噺
         /// </summary>
-        int doorlockSystemSound = 0;
+        DoorLockSystemSound doorLockSystemSound;
         /// <summary>
         /// 闂ㄩ搩闊抽噺
         /// </summary>
-        int doorbelVol = 0;
+        int doorbellVol = 0;
         public VideoDoorlockAudioSetupPage(Function function)
         {
+            doorLockSystemSound = new DoorLockSystemSound();
             device = function;
             bodyView = this;
         }
@@ -74,7 +74,7 @@
 
             btnDoorlockSystemVolumeText.MouseUpEventHandler = (sender, e) =>
             {
-                LoadEditDialog(StringId.DoorlockSystemVolume, 3-doorlockSystemSound, btnDoorlockSystemVolumeStateText);
+                LoadEditDialog(StringId.DoorlockSystemVolume, btnDoorlockSystemVolumeStateText,true);
             };
             #endregion
 
@@ -124,7 +124,7 @@
 
             btnDoorbellVolumeText.MouseUpEventHandler = (sender, e) =>
             {
-                LoadEditDialog(StringId.DoorbellVolume, doorbelVol, btnDoorbellVolumeStateText);
+                LoadEditDialog(StringId.DoorbellVolume, btnDoorbellVolumeStateText,false);
 
             };
             #endregion
@@ -149,25 +149,21 @@
                         Application.RunOnMainThread(() =>
                         {
                             //鏇存柊鐣岄潰
-                            var doorLockSystemSound = Newtonsoft.Json.JsonConvert.DeserializeObject<DoorLockSystemSound>(pack.Data.ToString());
+                            doorLockSystemSound = Newtonsoft.Json.JsonConvert.DeserializeObject<DoorLockSystemSound>(pack.Data.ToString());
                             if(doorLockSystemSound != null)
                             {
                                 switch (doorLockSystemSound.sound)
                                 {
                                     case 0:
-                                        doorlockSystemSound = 0;
                                         btnDoorlockSystemVolumeStateText.TextID = StringId.Mute;
                                         break;
                                     case 1:
-                                        doorlockSystemSound = 1;
                                         btnDoorlockSystemVolumeStateText.TextID = StringId.Low;
                                         break;
                                     case 2:
-                                        doorlockSystemSound = 2;
                                         btnDoorlockSystemVolumeStateText.TextID = StringId.Moderate;
                                         break;
                                     case 3:
-                                        doorlockSystemSound = 3;
                                         btnDoorlockSystemVolumeStateText.TextID = StringId.High;
                                         break;
                                 }
@@ -205,22 +201,22 @@
                             {
                                 if (doorbellTone.volume == 0)
                                 {
-                                    doorbelVol = 3;
+                                    doorbellVol = 0;
                                     btnDoorbellVolumeStateText.TextID = StringId.Mute;
                                 }
                                 else if (doorbellTone.volume > 0 && doorbellTone.volume < 35)
                                 {
-                                    doorbelVol = 2;
+                                    doorbellVol = 1;
                                     btnDoorbellVolumeStateText.TextID = StringId.Low;
                                 }
                                 else if (doorbellTone.volume > 35 && doorbellTone.volume < 70)
                                 {
-                                    doorbelVol = 1;
+                                    doorbellVol = 2;
                                     btnDoorbellVolumeStateText.TextID = StringId.Moderate;
                                 }
                                 else if (doorbellTone.volume > 70)
                                 {
-                                    doorbelVol = 0;
+                                    doorbellVol = 3;
                                     btnDoorbellVolumeStateText.TextID = StringId.High;
                                 }
                             }
@@ -271,10 +267,10 @@
         /// <summary>
         /// 鍔犺浇鍔熻兘灞炴�ф暟鎹�夋嫨寮圭獥
         /// </summary>
-        void LoadEditDialog(int titleId, int index, Button btn)
+        void LoadEditDialog(int titleId, Button btn,bool isDoorlockSystemVolume)
         {
             Button lastButton = new Button();
-            var lastData = "";
+            
             var lastText = "";
             Dialog dialog = new Dialog();
 
@@ -311,7 +307,7 @@
             {
                 Gravity = Gravity.CenterHorizontal,
                 TextAlignment = TextAlignment.Center,
-                Width = Application.GetRealWidth(100),
+                Width = Application.GetRealWidth(150),
                 TextID = titleId,
                 IsBold = true,
                 TextColor = CSS_Color.FirstLevelTitleColor,
@@ -340,7 +336,7 @@
                 TextID = StringId.Complete,
             };
             topView.AddChidren(btnConfrim);
-            int hei = 1;
+            int index = 1;
             var statusList = new List<string>
             {
                 Language.StringByID(StringId.High),
@@ -353,11 +349,11 @@
             {
                 var row = new FrameLayout()
                 {
-                    Y = Application.GetRealHeight(50 * hei),
+                    Y = Application.GetRealHeight(50 * index),
                     Height = Application.GetRealHeight(50),
                 };
                 optionBaseView.AddChidren(row);
-                if (statusList.Count > hei)
+                if (statusList.Count > index)
                 {
                     optionBaseView.AddChidren(new Button()
                     {
@@ -377,13 +373,76 @@
                     Height = Application.GetMinRealAverage(28),
                     UnSelectedImagePath = "Public/ChooseIcon.png",
                     SelectedImagePath = "Public/ChooseOnIcon.png",
-
+                    Tag = index - 1,
                 };
                 row.AddChidren(btnChoose);
-                if (index == hei - 1)
+                if (isDoorlockSystemVolume) {//璁剧疆闂ㄩ攣绯荤粺闊抽噺
+                    switch (doorLockSystemSound.sound)
+                    {
+                        case 0:
+                            if (index == 3 + 1)
+                            {
+                                lastButton = btnChoose;
+                                btnChoose.IsSelected = true;
+                            }
+                            break;
+                        case 1:
+                            if (index == 2 + 1)
+                            {
+                                lastButton = btnChoose;
+                                btnChoose.IsSelected = true;
+                            }
+                            break;
+                        case 2:
+                            if (index == 1 + 1)
+                            {
+                                lastButton = btnChoose;
+                                btnChoose.IsSelected = true;
+                            }
+                            break;
+                        case 3:
+                            if (index == 0 + 1)
+                            {
+                                lastButton = btnChoose;
+                                btnChoose.IsSelected = true;
+                            }
+                            break;
+                    }
+                }
+                else//璁剧疆闂ㄩ搩闊抽噺
                 {
-                    lastButton = btnChoose;
-                    btnChoose.IsSelected = true;
+                    switch (doorbellVol)
+                    {
+                        case 0:
+                            if (index == 3 + 1)
+                            {
+                                lastButton = btnChoose;
+                                btnChoose.IsSelected = true;
+                            }
+                            break;
+                        case 1:
+                            if (index == 2 + 1)
+                            {
+                                lastButton = btnChoose;
+                                btnChoose.IsSelected = true;
+                            }
+                            break;
+                        case 2:
+                            if (index == 1 + 1)
+                            {
+                                lastButton = btnChoose;
+                                btnChoose.IsSelected = true;
+                            }
+                            break;
+                        case 3:
+                            if (index == 0 + 1)
+                            {
+                                lastButton = btnChoose;
+                                btnChoose.IsSelected = true;
+                            }
+                            break;
+                    }
+
                 }
                 var btnPropertyTitle = new Button()
                 {
@@ -391,22 +450,24 @@
                     TextAlignment = TextAlignment.CenterLeft,
                     TextColor = CSS_Color.FirstLevelTitleColor,
                     TextSize = CSS_FontSize.TextFontSize,
-                    Tag = hei-1,
                     Text = m
                 };
                 row.AddChidren(btnPropertyTitle);
 
                 btnPropertyTitle.MouseUpEventHandler = (sender, e) => {
+                    if (btnChoose.IsSelected)
+                    {
+                        return;
+                    }
                     btnChoose.IsSelected = true;
                     if (lastButton != null)
                     {
                         lastButton.IsSelected = false;
                     }
                     lastButton = btnChoose;
-                    lastData = btnPropertyTitle.Tag.ToString();
                     lastText = btnPropertyTitle.Text;
                 };
-                hei++;
+                index++;
             }
 
 
@@ -423,13 +484,14 @@
             };
             btnConfrim.MouseUpEventHandler = (sender, e) => {
                 dialog.Close();
-                if(titleId == StringId.DoorlockSystemVolume)
+                var lastData = lastButton.Tag.ToString();
+
+                if (isDoorlockSystemVolume)
                 {
 
                     var waitPage = new Loading();
                     bodyView.AddChidren(waitPage);
                     waitPage.Start("");
-
                     new System.Threading.Thread(() => {
                         try
                         {
@@ -462,15 +524,19 @@
                                     switch (sound)
                                     {
                                         case 0:
+                                            doorLockSystemSound.sound = 0;
                                             btn.TextID = StringId.Mute;
                                             break;
                                         case 1:
+                                            doorLockSystemSound.sound = 1;
                                             btn.TextID = StringId.Low;
                                             break;
                                         case 2:
+                                            doorLockSystemSound.sound = 2;
                                             btn.TextID = StringId.Moderate;
                                             break;
                                         case 3:
+                                            doorLockSystemSound.sound = 3;
                                             btn.TextID = StringId.High;
                                             break;
                                     }
@@ -550,15 +616,19 @@
                                     switch (lastData)
                                     {
                                         case "0":
+                                            doorbellVol = 3;
                                             btn.TextID = StringId.High;
                                             break;
                                         case "1":
+                                            doorbellVol = 2;
                                             btn.TextID = StringId.Moderate;
                                             break;
                                         case "2":
+                                            doorbellVol = 1;
                                             btn.TextID = StringId.Low;
                                             break;
                                         case "3":
+                                            doorbellVol = 0;
                                             btn.TextID = StringId.Mute;
                                             break;
                                     }
diff --git a/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorlockBatteryManagementPage.cs b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorlockBatteryManagementPage.cs
index 3491440..7ce49b4 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorlockBatteryManagementPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorlockBatteryManagementPage.cs
@@ -16,22 +16,92 @@
 
         public void LoadPage()
         {
-            new TopViewDiv(bodyView, Language.StringByID(StringId.AudioSetup)).LoadTopView();
-            bodyView.BackgroundColor = CSS_Color.MainBackgroundColor;
+            new TopViewDiv(bodyView, Language.StringByID(StringId.BatteryManagement)).LoadTopView();
+            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
 
-            var btn = new Button()
+
+            var view1 = new FrameLayout()
             {
-                Width = Application.GetRealWidth(343),
+                Y = Application.GetRealHeight(64),
+                Height = Application.GetRealHeight(276),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                BackgroundImagePath = "FunctionIcon/DoorLock/VideoDoorlockBatteryManagementBg.png"//VideoDoorlockBatteryManagementBg
+            };
+            bodyView.AddChidren(view1);
+
+
+            var btnTitle1 = new Button()
+            {
+                Width = Application.GetRealWidth(200),
                 X = Application.GetRealWidth(16),
-                Y = Application.GetRealHeight(64 + 24),
+                Y = Application.GetRealHeight(16),
                 IsMoreLines = true,
                 TextAlignment = TextAlignment.TopLeft,
-                TextSize = CSS_FontSize.TextFontSize,
+                TextSize = CSS_FontSize.HeadlineFontSize,
                 TextColor = CSS_Color.FirstLevelTitleColor,
+                Text = "闂ㄩ攣鐢垫簮",
             };
-            bodyView.AddChidren(btn);
+            view1.AddChidren(btnTitle1);
 
+            var btnMsg1 = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = Application.GetRealHeight(57),
+                Width = Application.GetRealWidth(213),
+                Height = Application.GetRealHeight(200),
+                TextAlignment = TextAlignment.TopLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.TextFontSize,
+                IsMoreLines = true,
+                Text = "鎵撳紑瀹ゅ唴闈㈡澘鐢垫睜鐩栵紝鍙栧嚭閿傜數姹犺繘琛屽厖鐢点�俓r\n璇蜂娇鐢� 5V2A 閫傞厤鍣ㄥ閿傜數姹犺繘琛屽厖鐢点��"
+            };
+            view1.AddChidren(btnMsg1);
 
+            var view2 = new FrameLayout()
+            {
+                Y = Application.GetRealHeight(8) + view1.Bottom,
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                Height = Application.GetRealHeight(170)
+            };
+            bodyView.AddChidren(view2);
+
+            var btnTitle2 = new Button()
+            {
+                Width = Application.GetRealWidth(200),
+                X = Application.GetRealWidth(16),
+                Y = Application.GetRealHeight(16),
+                IsMoreLines = true,
+                TextAlignment = TextAlignment.TopLeft,
+                TextSize = CSS_FontSize.HeadlineFontSize,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                Text = "浣庣數閲忚鏄�",
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+            };
+            view2.AddChidren(btnTitle2);
+
+            var btnMsg2 = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = Application.GetRealHeight(57),
+                Width = Application.GetRealWidth(213),
+                Height = Application.GetRealHeight(110),
+                TextAlignment = TextAlignment.TopLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.TextFontSize,
+                IsMoreLines = true,
+                Text = "璁惧鐢甸噺浣庢椂灏嗚嚜鍔ㄥ叧闂娴嬪敜閱掑姛鑳斤紝浜鸿劯璇嗗埆寮�閿佷负鎵嬪姩瑙﹀彂銆俓r\n 褰撶數閲忎綆浜庢瀬闄愬�兼椂锛屼负淇濊瘉搴旀�ュ紑閿侊紝璁惧灏嗚嚜鍔ㄧ绾垮苟浠呮敮鎸佸紑閿佸姛鑳姐��"
+            };
+            view2.AddChidren(btnMsg2);
+
+            if (Language.CurrentLanguage != "Chinese")
+            {
+                btnTitle1.Text = "Door lock power supply";
+                btnMsg1.Text = "Open the indoor panel battery cover and remove the lithium battery for charging.\r\n" +
+                    "Please use a 5V2A adapter to charge the lithium battery.";
+                btnTitle2.Text = "Low battery description";
+                btnMsg2.Text = "When the device's battery is low, the detection and wake-up function will be automatically turned off, and the facial recognition unlock will be manually triggered.\r\n" +
+                    "When the battery level drops below the limit value, to ensure emergency unlocking, the device will automatically go offline and only support unlocking function.";
+            }
 
         }
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorlockFaceUnlockTriggerSettingPage.cs b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorlockFaceUnlockTriggerSettingPage.cs
index 67cc900..73348c9 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorlockFaceUnlockTriggerSettingPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorlockFaceUnlockTriggerSettingPage.cs
@@ -305,6 +305,7 @@
                 TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                 TextColor = CSS_Color.PromptingColor1,
                 TextID = StringId.FaceUnlockNote,
+                IsMoreLines = true,
             };
             automaitcTipView.AddChidren(btnAutomaitcNote);
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorlockUserListPage.cs b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorlockUserListPage.cs
index f1b120c..624bc38 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorlockUserListPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorlockUserListPage.cs
@@ -30,13 +30,28 @@
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
 
 
+
             contentView = new VerticalScrolViewLayout()
             {
                 Y = Application.GetRealHeight(64),
-                Height = Application.GetRealHeight(667 - 70),
+                Height = Application.GetRealHeight(607 - 70),
             };
             bodyView.AddChidren(contentView);
 
+            var btnTip = new Button()
+            {
+                Y = Application.GetRealHeight(667 - 70),
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealHeight(60),
+                TextAlignment = TextAlignment.TopLeft,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                TextColor = CSS_Color.TextualColor,
+                TextID = StringId.VideoDoorlockManagerTip,
+                IsMoreLines = true,
+            };
+            bodyView.AddChidren(btnTip);
+
             var waitPage = new Loading();
             bodyView.AddChidren(waitPage);
             waitPage.Start("");
diff --git a/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorlockUserManagerPage.cs b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorlockUserManagerPage.cs
index 97ec8e1..6f1f608 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorlockUserManagerPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorlockUserManagerPage.cs
@@ -18,7 +18,7 @@
         VerticalScrolViewLayout contentView;
         FrameLayout userPermissionsView;
 
-        Button btnUserName;
+        //Button btnUserName;
 
         Function device;
         VideoDoorlockUser doorlockUser;
@@ -48,6 +48,8 @@
             };
             bodyView.AddChidren(contentView);
 
+          
+
             #region 鐢ㄦ埛鍚嶇О
             var userNameView = new FrameLayout()
             {
@@ -75,7 +77,7 @@
             };
             userNameView.AddChidren(btnEditUserNameIcon);
 
-            btnUserName = new Button()
+            var btnUserName = new Button()
             {
                 X = Application.GetRealWidth(100),
                 Width = Application.GetRealWidth(230),
@@ -94,12 +96,82 @@
             contentView.AddChidren(new Button() { Height = Application.GetRealHeight(8) });
 
             initOptionView(false);
+
+            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+            {
+                Action<string> callBack = (str) =>
+                {
+                    if (string.IsNullOrEmpty(str))
+                    {
+                        new Tip()
+                        {
+                            CloseTime = 1,
+                            Text = Language.StringByID(StringId.UesrNameCannotBeEmpty),
+                            Direction = AMPopTipDirection.None,
+                        }.Show(bodyView);
+                        return;
+                    }
+                    if (str == UserInfo.Current.userName)
+                    {
+                        return;
+                    }
+                    if (System.Text.Encoding.Default.GetBytes(str).Length > 20)
+                    {
+                        new Tip()
+                        {
+                            CloseTime = 1,
+                            Text = Language.StringByID(StringId.LengthOutOfRange),
+                            Direction = AMPopTipDirection.None,
+                        }.Show(bodyView);
+                        return;
+                    }
+                    waitPage.Start(Language.StringByID(StringId.PleaseWait));
+                    new System.Threading.Thread(() =>
+                    {
+                        try
+                        {
+                            var resultObj = ApiUtlis.Ins.HttpRequest.EditDoorlockUserName(device.deviceId, doorlockUser.extUserId, str);
+                            if (resultObj.Code == StateCode.SUCCESS)
+                            {
+                                Application.RunOnMainThread(() =>
+                                {
+                                    btnUserName.Text = str;
+                                });
+                            }
+                            else
+                            {
+                                //澶辫触鎻愮ず
+                                IMessageCommon.Current.ShowErrorInfoAlter(resultObj.Code);
+                            }
+                        }
+                        catch (Exception ex)
+                        {
+                            MainPage.Log($"update user name error : {ex.Message}");
+                        }
+                        finally
+                        {
+                            Application.RunOnMainThread(() =>
+                            {
+                                waitPage.Hide();
+                            });
+                        }
+                    })
+                    { IsBackground = true }.Start();
+                };
+                var pa = new PublicAssmebly();
+                pa.entryMaxLength = 20;
+                pa.LoadDialog_EditParater(StringId.ChangeName, "", callBack, StringId.UesrNameCannotBeEmpty, 0, new List<string>());
+            };
+            btnUserName.MouseUpEventHandler = eventHandler;
+            btnEditUserNameIcon.MouseUpEventHandler = eventHandler;
+            userNameView.MouseUpEventHandler = eventHandler;
+
         }
 
         void initOptionView(bool isEdit)
         {
             if(doorlockUser.faceCount == 0&&
-                doorlockUser.faceCount == 0 &&
+                doorlockUser.fingerCount == 0 &&
                 doorlockUser.pwdCount == 0 &&
                 doorlockUser.cardCount == 0)
             {
@@ -113,17 +185,17 @@
 
 
             int childrenViewHeight = Application.GetRealWidth(116);
-            int permissionsViewHeight = Application.GetRealHeight(291 + 92);
+            int permissionsViewHeight = Application.GetRealHeight(291 + 92 + 100);
             if (userPermissionsView!= null)
             {
                 userPermissionsView.RemoveAll();
 
                 if (isEdit)
                 {
-                    permissionsViewHeight = Application.GetRealHeight(391 + 50);
+                    permissionsViewHeight = Application.GetRealHeight(391 + 50 + 100);
                     childrenViewHeight = Application.GetRealWidth(156);
                 }
-                userPermissionsView.Height = permissionsViewHeight;
+                userPermissionsView.Height = permissionsViewHeight ;
             }
             else
             {
@@ -629,7 +701,7 @@
             var delUserView = new FrameLayout()
             {
                 Y = unlockOptionView.Bottom,
-                Height = Application.GetRealHeight(110),
+                Height = Application.GetRealHeight(310),
                 BackgroundColor = CSS_Color.BackgroundColor,
             };
             userPermissionsView.AddChidren(delUserView);
@@ -712,60 +784,7 @@
         /// </summary>
         void LoadEvent_EditUserName()
         {
-            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
-            {
-                Action<string> callBack = (str) =>
-                {
-                    if (string.IsNullOrEmpty(str))
-                    {
-                        new Tip()
-                        {
-                            CloseTime = 1,
-                            Text = Language.StringByID(StringId.UesrNameCannotBeEmpty),
-                            Direction = AMPopTipDirection.None,
-                        }.Show(bodyView);
-                        return;
-                    }
-                    if (str == UserInfo.Current.userName)
-                    {
-                        return;
-                    }
-                    waitPage.Start(Language.StringByID(StringId.PleaseWait));
-                    new System.Threading.Thread(() =>
-                    {
-                        try
-                        {
-                            var resultObj = ApiUtlis.Ins.HttpRequest.EditDoorlockUserName(device.deviceId, doorlockUser.extUserId,str);
-                            if (resultObj.Code == StateCode.SUCCESS)
-                            {
-                                Application.RunOnMainThread(() =>
-                                {
-                                    btnUserName.Text = str;
-                                });
-                            }
-                            else
-                            {
-                                //澶辫触鎻愮ず
-                                IMessageCommon.Current.ShowErrorInfoAlter(resultObj.Code);
-                            }
-                        }
-                        catch (Exception ex)
-                        {
-                            MainPage.Log($"update user name error : {ex.Message}");
-                        }
-                        finally
-                        {
-                            Application.RunOnMainThread(() =>
-                            {
-                                waitPage.Hide();
-                            });
-                        }
-                    })
-                    { IsBackground = true }.Start();
-                };
-                new PublicAssmebly().LoadDialog_EditParater(StringId.ChangeName, doorlockUser.lockUserName, callBack, StringId.UesrNameCannotBeEmpty, 0, new System.Collections.Generic.List<string>());
-            };
-            btnUserName.MouseUpEventHandler = eventHandler;
+            //btnUserName.MouseUpEventHandler = eventHandler;
         }
 
 
diff --git a/SiriIntents/Server/HttpUtil.cs b/SiriIntents/Server/HttpUtil.cs
index 8d4483c..dc7aca0 100644
--- a/SiriIntents/Server/HttpUtil.cs
+++ b/SiriIntents/Server/HttpUtil.cs
@@ -16,8 +16,8 @@
         /// 鍥哄畾鍩熷悕,姝e紡鐜
         /// 鍏叡鍩熷悕灏辫繎瑙f瀽
         /// </summary>
-        public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
-        //public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";
+        //public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
+        public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";
         const string APP_KEY = "HDL-HOME-APP-TEST";
         const string SECRET_KEY = "WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss";
         //public const string GlobalRequestHttpsHost = "http://59.41.255.150:7777";//mmmm
diff --git a/SiriIntents/SiriIntents.csproj b/SiriIntents/SiriIntents.csproj
index 1be1162..afb5d87 100644
--- a/SiriIntents/SiriIntents.csproj
+++ b/SiriIntents/SiriIntents.csproj
@@ -18,7 +18,7 @@
     <DefineConstants>DEBUG;</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <CodesignKey>iPhone Developer</CodesignKey>
+    <CodesignKey>Apple Development: xuebiao huang (4P32GXQWWK)</CodesignKey>
     <MtouchDebug>true</MtouchDebug>
     <MtouchNoSymbolStrip>true</MtouchNoSymbolStrip>
     <MtouchFastDev>true</MtouchFastDev>
@@ -28,6 +28,7 @@
     <MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
     <DeviceSpecificBuild>false</DeviceSpecificBuild>
     <MtouchVerbosity></MtouchVerbosity>
+    <CodesignProvision>OnProSiri230605-1-Dev</CodesignProvision>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
     <DebugType>pdbonly</DebugType>
@@ -67,7 +68,7 @@
     <DefineConstants>DEBUG;</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <CodesignKey>iPhone Developer: xuebiao huang (4P32GXQWWK)</CodesignKey>
+    <CodesignKey>Apple Development: xuebiao huang (4P32GXQWWK)</CodesignKey>
     <DeviceSpecificBuild>true</DeviceSpecificBuild>
     <MtouchDebug>true</MtouchDebug>
     <MtouchNoSymbolStrip>true</MtouchNoSymbolStrip>
@@ -79,6 +80,7 @@
     <MtouchArch>ARM64</MtouchArch>
     <MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
     <MtouchVerbosity></MtouchVerbosity>
+    <CodesignProvision>OnProSiri230630-1-Dev</CodesignProvision>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
diff --git a/SiriIntentsUI/SiriIntentsUI.csproj b/SiriIntentsUI/SiriIntentsUI.csproj
index 77abe25..4d07b7f 100644
--- a/SiriIntentsUI/SiriIntentsUI.csproj
+++ b/SiriIntentsUI/SiriIntentsUI.csproj
@@ -18,7 +18,7 @@
     <DefineConstants>DEBUG;</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <CodesignKey>iPhone Developer</CodesignKey>
+    <CodesignKey>Apple Development: xuebiao huang (4P32GXQWWK)</CodesignKey>
     <MtouchDebug>true</MtouchDebug>
     <MtouchNoSymbolStrip>true</MtouchNoSymbolStrip>
     <MtouchFastDev>true</MtouchFastDev>
@@ -29,6 +29,7 @@
     <DeviceSpecificBuild>false</DeviceSpecificBuild>
     <MtouchVerbosity></MtouchVerbosity>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <CodesignProvision>OnProSiriUI230605-1-Dev</CodesignProvision>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
     <DebugType>pdbonly</DebugType>
@@ -70,7 +71,7 @@
     <DefineConstants>DEBUG;</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <CodesignKey>iPhone Developer: xuebiao huang (4P32GXQWWK)</CodesignKey>
+    <CodesignKey>Apple Development: xuebiao huang (4P32GXQWWK)</CodesignKey>
     <DeviceSpecificBuild>true</DeviceSpecificBuild>
     <MtouchDebug>true</MtouchDebug>
     <MtouchNoSymbolStrip>true</MtouchNoSymbolStrip>
@@ -83,6 +84,7 @@
     <MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
     <MtouchVerbosity></MtouchVerbosity>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <CodesignProvision>OnProSiriUI230630-1-Dev</CodesignProvision>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />

--
Gitblit v1.8.0