From 6992b9bc927550ed3ec82eff8ec4a5aa65e6fa63 Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期一, 12 四月 2021 17:39:14 +0800
Subject: [PATCH] 2021-04-12 1.完善智能音箱功能。
---
HDL-ON_Android/Assets/Language.ini | 2
HDL_ON/HDL_ON.projitems | 3
HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerSelectDevicesPage (副本).cs | 422 ++++++++++++++++++
HDL-ON_iOS/Resources/Language.ini | 2
HDL_ON/DAL/Server/NewAPI.cs | 4
HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerRoomListPage.cs | 309 +++++++++++++
HDL_ON/DAL/Server/NewApiRes.cs | 27
HDL_ON/UI/UI0-Public/PublicAssmebly.cs | 9
HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerSelectDevicesPage.cs | 437 +++++++++++++++++++
HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs | 1
HDL_ON/Common/R.cs | 5
HDL_ON/DAL/Server/HttpServerRequest.cs | 12
.vs/HDL_APP_Project/xs/UserPrefs.xml | 21
HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerListPage.cs | 117 ++++-
14 files changed, 1,330 insertions(+), 41 deletions(-)
diff --git a/.vs/HDL_APP_Project/xs/UserPrefs.xml b/.vs/HDL_APP_Project/xs/UserPrefs.xml
index 21f286a..c5a8a47 100644
--- a/.vs/HDL_APP_Project/xs/UserPrefs.xml
+++ b/.vs/HDL_APP_Project/xs/UserPrefs.xml
@@ -1,29 +1,32 @@
锘�<Properties StartupConfiguration="{D998E133-F0DD-4760-BE3C-461632F54DA4}|Default">
<MonoDevelop.Ide.ItemProperties.HDL-ON__iOS PreferredExecutionTarget="MonoDevelop.IPhone.IPhoneDeviceTarget.00008030-00014C392121802E" />
- <MonoDevelop.Ide.Workbench ActiveDocument="HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPageBLL.cs">
+ <MonoDevelop.Ide.Workbench ActiveDocument="HDL_ON/UI/BindingResidence/BindingResidencePage.cs">
<Files>
- <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerListPage.cs" Line="194" Column="15" />
- <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs" Line="1" Column="1" />
- <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPageBLL.cs" Line="315" Column="17" />
+ <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerSelectDevicesPage.cs" Line="84" Column="51" />
+ <File FileName="HDL_ON/DAL/Server/HttpServerRequest.cs" />
+ <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPageBLL.cs" />
+ <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs" />
+ <File FileName="HDL_ON/UI/BindingResidence/BindingResidencePage.cs" Line="121" Column="42" />
+ <File FileName="HDL_ON/UI/BindingResidence/WellcomToHomeForm.cs" />
</Files>
<Pads>
<Pad Id="ProjectPad">
<State name="__root__">
<Node name="HDL_APP_Project" expanded="True">
<Node name="HDL_ON" expanded="True">
- <Node name="Common" expanded="True" />
<Node name="DAL" expanded="True">
<Node name="Server" expanded="True" />
</Node>
<Node name="UI" expanded="True">
+ <Node name="BindingResidence" expanded="True">
+ <Node name="BindingResidencePage.cs" selected="True" />
+ </Node>
<Node name="UI2" expanded="True">
- <Node name="4-PersonalCenter" expanded="True">
- <Node name="SmartSpeaker" expanded="True" />
- <Node name="PersonalCenterPageBLL.cs" selected="True" />
- </Node>
+ <Node name="4-PersonalCenter" expanded="True" />
</Node>
</Node>
</Node>
+ <Node name="HDL-ON_Android" expanded="True" />
</Node>
</State>
</Pad>
diff --git a/HDL-ON_Android/Assets/Language.ini b/HDL-ON_Android/Assets/Language.ini
index cd221c8..a86efe6 100644
--- a/HDL-ON_Android/Assets/Language.ini
+++ b/HDL-ON_Android/Assets/Language.ini
@@ -741,6 +741,7 @@
9065=Data management
9066=Remarks
9067=Remarks cannot be blank.
+9068=Do you want to unbind?
10000=Invalid password, please log in again.
10001=Fail to request server, please try again later.
@@ -1630,6 +1631,7 @@
9065=鏁版嵁绠$悊
9066=澶囨敞
9067=澶囨敞涓嶈兘涓虹┖
+9068=鏄惁瑙i櫎缁戝畾锛�
10000=鏃犳晥鐧诲綍瀵嗛挜锛岃閲嶆柊鐧诲綍锛�
10001=璇锋眰鏈嶅姟鍣ㄥけ璐ワ紝璇风◢鍚庡啀璇曪紒
diff --git a/HDL-ON_iOS/Resources/Language.ini b/HDL-ON_iOS/Resources/Language.ini
index cd221c8..a86efe6 100644
--- a/HDL-ON_iOS/Resources/Language.ini
+++ b/HDL-ON_iOS/Resources/Language.ini
@@ -741,6 +741,7 @@
9065=Data management
9066=Remarks
9067=Remarks cannot be blank.
+9068=Do you want to unbind?
10000=Invalid password, please log in again.
10001=Fail to request server, please try again later.
@@ -1630,6 +1631,7 @@
9065=鏁版嵁绠$悊
9066=澶囨敞
9067=澶囨敞涓嶈兘涓虹┖
+9068=鏄惁瑙i櫎缁戝畾锛�
10000=鏃犳晥鐧诲綍瀵嗛挜锛岃閲嶆柊鐧诲綍锛�
10001=璇锋眰鏈嶅姟鍣ㄥけ璐ワ紝璇风◢鍚庡啀璇曪紒
diff --git a/HDL_ON/Common/R.cs b/HDL_ON/Common/R.cs
index 5c4ed77..0f45347 100644
--- a/HDL_ON/Common/R.cs
+++ b/HDL_ON/Common/R.cs
@@ -1329,7 +1329,10 @@
/// 澶囨敞涓嶈兘涓虹┖
/// </summary>
public const int RemarksCannotBeBlank = 9067;
-
+ /// <summary>
+ /// 鏄惁瑙i櫎缁戝畾锛�
+ /// </summary>
+ public const int DoYouWantToUnbind = 9068;
diff --git a/HDL_ON/DAL/Server/HttpServerRequest.cs b/HDL_ON/DAL/Server/HttpServerRequest.cs
index b23c8ad..837ee79 100644
--- a/HDL_ON/DAL/Server/HttpServerRequest.cs
+++ b/HDL_ON/DAL/Server/HttpServerRequest.cs
@@ -2274,6 +2274,18 @@
}
/// <summary>
+ /// 瑙i櫎闊崇缁戝畾
+ /// </summary>
+ /// <returns></returns>
+ public ResponsePackNew UnbindSpeaker(string tokenId)
+ {
+ Dictionary<string, object> d = new Dictionary<string, object>();
+ d.Add("tokenId", tokenId);
+ var requestJson = HttpUtil.GetSignRequestJson(d);
+ return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Speaker_Unbind, requestJson);
+ }
+
+ /// <summary>
/// 鑾峰彇闊崇鍒嗛厤鐨勮澶囧拰鍦烘櫙鍒楄〃
/// </summary>
/// <param name="getType">0 鏄煡璇㈠叏閮� 1鏄煡璇㈣澶� 2鏄煡璇㈠満鏅�</param>
diff --git a/HDL_ON/DAL/Server/NewAPI.cs b/HDL_ON/DAL/Server/NewAPI.cs
index fbce795..dcbc5df 100644
--- a/HDL_ON/DAL/Server/NewAPI.cs
+++ b/HDL_ON/DAL/Server/NewAPI.cs
@@ -245,6 +245,10 @@
/// </summary>
public const string API_POST_Speaker_Remark_Update = "/smart-footstone/app/token/update";
/// <summary>
+ /// 瑙g粦闊崇
+ /// </summary>
+ public const string API_POST_Speaker_Unbind = "/smart-footstone/app/token/delete";
+ /// <summary>
/// 鑾峰彇闊崇鍒嗛厤鐨勮澶囧拰鍦烘櫙鍒楄〃
/// </summary>
public const string API_POST_Speaker_DeviceList_Get = "/home-wisdom/app/tokenRelation/list";
diff --git a/HDL_ON/DAL/Server/NewApiRes.cs b/HDL_ON/DAL/Server/NewApiRes.cs
index 21f66ff..0418fa7 100644
--- a/HDL_ON/DAL/Server/NewApiRes.cs
+++ b/HDL_ON/DAL/Server/NewApiRes.cs
@@ -1546,10 +1546,10 @@
}
/// <summary>
- ///
+ /// 閰嶇疆鐨勮闊宠澶囧拰鍦烘櫙鏁版嵁
/// </summary>
[System.Serializable]
- public class TargetInfo
+ public class SpeakerTargetInfo
{
/// <summary>
/// 鎺у埗鐨勭洰鏍嘔d锛屼簯绔殑璁惧Id鎴栬�呭満鏅疘d
@@ -1563,19 +1563,32 @@
/// 鐩爣鍚嶇О
/// </summary>
public string targetName;
+ /// <summary>
+ /// 鎵╁睍鍙傛暟褰撳墠rowview鏄惁閫変腑
+ /// </summary>
+ public bool IsSelect;
}
+ //[System.Serializable]
+ //public class SpeakerTargetInfoRow: SpeakerTargetInfo
+ //{
+ // /// <summary>
+ // /// 褰撳墠rowview鏄惁閫変腑
+ // /// </summary>
+ // public bool isSelect;
+ //}
- /// <summary>
- /// 鏇存柊闊崇鎺у埗鐨勮澶囧拰鍦烘櫙鐩爣
- /// </summary>
- [System.Serializable]
+
+ /// <summary>
+ /// 鏇存柊闊崇鎺у埗鐨勮澶囧拰鍦烘櫙鐩爣
+ /// </summary>
+ [System.Serializable]
public class UpdateSpeakerDeviceListObj : SpeakerObj
{
/// <summary>
/// 澶囨敞
/// </summary>
- public List<TargetInfo> targetInfos;
+ public List<SpeakerTargetInfo> targetInfos;
}
/// <summary>
diff --git a/HDL_ON/HDL_ON.projitems b/HDL_ON/HDL_ON.projitems
index 4406018..080bd88 100644
--- a/HDL_ON/HDL_ON.projitems
+++ b/HDL_ON/HDL_ON.projitems
@@ -396,6 +396,9 @@
<Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Video\VideoMainView.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Video\ObjectClass.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\SmartSpeaker\SmartSpeakerListPage.cs" />
+ <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\SmartSpeaker\SmartSpeakerSelectDevicesPage.cs" />
+ <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\SmartSpeaker\SmartSpeakerRoomListPage.cs" />
+ <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\SmartSpeaker\SmartSpeakerSelectDevicesPage %28鍓湰%29.cs" />
</ItemGroup>
<ItemGroup>
<Folder Include="$(MSBuildThisFileDirectory)DAL\" />
diff --git a/HDL_ON/UI/UI0-Public/PublicAssmebly.cs b/HDL_ON/UI/UI0-Public/PublicAssmebly.cs
index e81f6c7..c688774 100644
--- a/HDL_ON/UI/UI0-Public/PublicAssmebly.cs
+++ b/HDL_ON/UI/UI0-Public/PublicAssmebly.cs
@@ -77,7 +77,7 @@
/// 淇濆瓨鎸夐挳浜嬩欢闇�瑕佸皢
/// </summary>
/// <param name="callBackAction">鍥炶皟鍑芥暟</param>
- public void LoadDialog_EditParater(int titleId, string editParater, Action<string> callBackAction, int errorId_IsNullOrEmpty, int errorId_ContainsPar, List<string> baseList, bool encryption = false)
+ public void LoadDialog_EditParater(int titleId, string editParater, Action<string> callBackAction, int errorId_IsNullOrEmpty, int errorId_ContainsPar, List<string> baseList, bool encryption = false, string confirmText = "")
{
Dialog dialog = new Dialog()
{
@@ -210,6 +210,13 @@
TextID = StringId.Confirm,
};
contentView.AddChidren(btnConfirm);
+
+ //鑷畾涔塨tnConfirm鏍囬
+ if (!string.IsNullOrEmpty(confirmText))
+ {
+ btnConfirm.Text = confirmText;
+ }
+
int mRectCornerID = HDLUtils.RectCornerBottomRight;
btnConfirm.SetCornerWithSameRadius((uint)Application.GetMinRealAverage(10), mRectCornerID);
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
index 17c99a0..19c3e2b 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
@@ -237,6 +237,7 @@
contentView = new VerticalScrolViewLayout()
{
Y = Application.GetRealHeight(8) + personalInfoView.Bottom,
+
Height = Application.GetRealHeight(400),
ScrollEnabled = false
};
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerListPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerListPage.cs
index 1292090..c704948 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerListPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerListPage.cs
@@ -2,16 +2,13 @@
using Shared;
using HDL_ON.UI.CSS;
using System.Collections.Generic;
-using System.Threading;
using HDL_ON.DAL.Server;
namespace HDL_ON.UI
{
-
/// <summary>
/// 鏅鸿兘闊崇鍒楄〃
-
/// </summary>
public class SmartSpeakerListPage : FrameLayout
{
@@ -61,6 +58,7 @@
Y = bodyY,
Height = bodyView.Height - bodyY,
BackgroundColor = CSS_Color.BackgroundColor,
+
};
bodyView.AddChidren(bodyScrolView);
@@ -243,7 +241,8 @@
};
view2.AddChidren(btnNickname);
- if (string.IsNullOrEmpty(speakerInfo.remark)) {
+ if (string.IsNullOrEmpty(speakerInfo.remark))
+ {
btnNickname.TextID = StringId.SmartSpeaker;
}
@@ -276,9 +275,7 @@
btnNickname.MouseUpEventHandler += (sender, e) =>
{
- new PublicAssmebly().LoadDialog_EditParater(StringId.Remarks, speakerInfo.remark, renameAction, StringId.RemarksCannotBeBlank, 0, new List<string>());
-
- //HDLCommon.Current.ShowEditTextDialog(speakerInfo.remark, renameAction, Language.StringByID(R.MyInternationalizationString.rename));
+ new PublicAssmebly().LoadDialog_EditParater(StringId.Remarks, speakerInfo.remark, renameAction, StringId.RemarksCannotBeBlank, 0, new List<string>(),false, Language.StringByID(StringId.Save));
};
#endregion
@@ -323,8 +320,8 @@
EventHandler<MouseEventArgs> eHandler = (sender, e) =>
{
- //璺宠浆椤甸潰
- GotoSpeakerManagementPage(speakerInfo);
+ //璺宠浆鏁版嵁绠$悊鎴块棿鍒楄〃
+ GotoPage(speakerInfo);
};
view3.MouseUpEventHandler += eHandler;
btnDataTitle.MouseUpEventHandler += eHandler;
@@ -360,6 +357,19 @@
};
view4.AddChidren(btnUnbindRight);
+ EventHandler<MouseEventArgs> eHandler4 = (sender, e) =>
+ {
+ Action okAction = () =>
+ {
+ //瑙g粦闊崇
+ UnbindSpeaker(speakerInfo, rowView, lineView);
+ };
+ new ConfirmDialog().ShowDialog(StringId.Tip, StringId.DoYouWantToUnbind, okAction, null, StringId.Cancel, StringId.Confirm);
+
+ };
+ view4.MouseUpEventHandler += eHandler4;
+ btnUnbindTitle.MouseUpEventHandler += eHandler4;
+ btnUnbindRight.MouseUpEventHandler += eHandler4;
#endregion
@@ -464,25 +474,86 @@
}
/// <summary>
- /// 璺宠浆AlexaDeviceListPage椤甸潰
+ /// 璇锋眰瑙g粦闊崇
/// </summary>
- /// <param name="speakerInfo"></param>
- void GotoSpeakerManagementPage(SpeakerInfo speakerInfo)
+ /// <param name="speakerInfo">闊崇鍙傛暟</param>
+ /// <param name="rowView">闊崇rowView</param>
+ /// <param name="lineView">濉厖鐨刲ineView</param>
+ void UnbindSpeaker(SpeakerInfo speakerInfo, FrameLayout rowView, FrameLayout lineView)
{
- ////娌$粦瀹氬繕璁版彁绀哄厛缁戝畾缃戝叧锛岀姝㈣烦杞�
- //if (!UserConfig.Instance.CheckWhetherGatewayIdNotNull())
- //{
- // Utlis.ShowAlertOnMainThread(Language.StringByID(R.MyInternationalizationString.PleaseBindTheGatewayFirst));
- // return;
- //}
+ if (speakerInfo == null || string.IsNullOrEmpty(speakerInfo.tokenId)) {
+ Utlis.ShowTip(Language.StringByID(StringId.RequestFailedParameterException) + "(-3)");
+ }
- ////璺宠浆Alexa绠$悊椤甸潰
- //AlexaDeviceListPage speakerInfoDeviceListPage = new AlexaDeviceListPage(speakerInfo);
- //UserMiddle.SettingPageView.AddChidren(speakerInfoDeviceListPage);
- //speakerInfoDeviceListPage.ShowPage();
- //UserMiddle.SettingPageView.PageIndex = UserMiddle.SettingPageView.ChildrenCount - 1;
+ var waitPage = new Loading();
+ bodyView.AddChidren(waitPage);
+ waitPage.Start(Language.StringByID(StringId.PleaseWait));
+
+ System.Threading.Tasks.Task.Run(() =>
+ {
+ try
+ {
+ var revertObj = new HttpServerRequest().UnbindSpeaker(speakerInfo.tokenId);
+ if (revertObj.Code == StateCode.SUCCESS)
+ {
+ //瑙g粦鎴愬姛
+ Application.RunOnMainThread(() =>
+ {
+ //lineView
+ if (lineView != null)
+ {
+ lineView.RemoveFromParent();
+ }
+
+ //绉婚櫎rowView
+ if (rowView != null)
+ {
+ rowView.RemoveFromParent();
+ }
+
+ //鎻愮ず瑙g粦鎴愬姛
+ Utlis.ShowTip(Language.StringByID(StringId.UnbindEmailSuccess));
+
+ });
+ }
+ else
+ {
+ //鎻愮ず閿欒
+ IMessageCommon.Current.ShowErrorInfoAlter(revertObj.Code);
+ }
+ }
+ catch
+ {
+
+ }
+ finally
+ {
+ Application.RunOnMainThread(() =>
+ {
+ if (waitPage != null)
+ {
+ waitPage.RemoveFromParent();
+ waitPage = null;
+ }
+ });
+ }
+ });
+
}
+
+
+ /// <summary>
+ ///
+ /// </summary>
+ void GotoPage(SpeakerInfo speakerInfo)
+ {
+ var page = new SmartSpeakerRoomListPage(speakerInfo);
+ MainPage.BasePageView.AddChidren(page);
+ page.LoadPage();
+ MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+ }
+
}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerRoomListPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerRoomListPage.cs
new file mode 100644
index 0000000..e1895fa
--- /dev/null
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerRoomListPage.cs
@@ -0,0 +1,309 @@
+锘縰sing System;
+using Shared;
+using HDL_ON.UI.CSS;
+using System.Collections.Generic;
+using System.Threading;
+using HDL_ON.DAL.Server;
+using HDL_ON.Entity;
+
+namespace HDL_ON.UI
+{
+
+ /// <summary>
+ /// 鎴块棿鍒楄〃
+ /// </summary>
+ public class SmartSpeakerRoomListPage : FrameLayout
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ FrameLayout bodyView;
+
+ /// <summary>
+ /// 褰撳墠
+ /// </summary>
+ VerticalScrolViewLayout bodyScrolView;
+ /// <summary>
+ /// 闊崇鍙傛暟
+ /// </summary>
+ SpeakerInfo speakerInfo;
+
+ /// <summary>
+ ///
+ /// </summary>
+ public SmartSpeakerRoomListPage(SpeakerInfo speakerInfo)
+ {
+ bodyView = this;
+ bodyView.BackgroundColor = CSS_Color.BackgroundColor;
+ this.speakerInfo = speakerInfo;
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public void LoadPage()
+ {
+ new TopViewDiv(bodyView, Language.StringByID(StringId.DataManagement)).LoadTopView();
+
+ int bodyY = Application.GetRealHeight(64);
+ bodyScrolView = new VerticalScrolViewLayout()
+ {
+ Y = bodyY,
+ Height = bodyView.Height - bodyY,
+ BackgroundColor = CSS_Color.BackgroundColor,
+
+ };
+ bodyView.AddChidren(bodyScrolView);
+
+
+ //LoadSmartSpeakertListView(bodyScrolView);
+ ShowRoomListView();
+ }
+
+ /// <summary>
+ /// 鍔犺浇鎴块棿鍒楄〃,缁熻鍒嗕韩鐨勬暟鎹�
+ /// </summary>
+ void ShowRoomListView()
+ {
+ bodyScrolView.RemoveAll();
+
+ var titleView = new FrameLayout()
+ {
+ BackgroundColor = CSS_Color.MainBackgroundColor,
+ Height = Application.GetRealWidth(44),
+ };
+ bodyScrolView.AddChidren(titleView);
+
+ var btnTitle = new Button()
+ {
+ X = Application.GetRealWidth(16),
+ TextAlignment = TextAlignment.CenterLeft,
+ TextColor = CSS_Color.FirstLevelTitleColor,
+ TextSize = CSS_FontSize.SubheadingFontSize,
+ TextID = StringId.UseArea,
+ };
+ titleView.AddChidren(btnTitle);
+
+ var btnLine = new Button()
+ {
+ X = Application.GetRealWidth(16),
+ Y = titleView.Height - Application.GetRealHeight(2),
+ Width = Application.GetRealWidth(360),
+ Height = Application.GetRealHeight(1),
+ BackgroundColor = CSS_Color.DividingLineColor,
+ };
+ titleView.AddChidren(btnLine);
+
+ //---------------------------------------------
+ //鏈垎閰嶅尯鍩熺殑鍔熻兘
+ List<Function> allFunctionList = FunctionList.List.GetDeviceFunctionList();
+ //鏈垎閰嶅尯鍩熺殑鍔熻兘
+ List<Function> unallocatedList = new List<Function>();
+ //
+ foreach (var function in allFunctionList)
+ {
+ function.roomIds.Remove(null);
+ if (function.roomIds.Count > 0)
+ {
+ //allocatedList.Add(function);
+ }
+ else
+ {
+ unallocatedList.Add(function);
+ }
+ }
+
+ //鎵�鏈夊満鏅�
+ List<Scene> allSceneList = FunctionList.List.scenes;
+ //鍏ㄥ眬鍦烘櫙鍦烘櫙
+ List<Scene> globalSceneList = new List<Scene>();
+ //鎵惧嚭鎵�鏈夌殑鍏ㄥ眬鍦烘櫙
+ foreach (var mScene in allSceneList)
+ {
+
+ //roomIds澶т簬0 浠h〃鍒嗛厤鍒版埧闂�
+ mScene.roomIds.Remove(null);
+ if (mScene.roomIds.Count > 0)
+ {
+ //allocatedList.Add(function);
+ }
+ else
+ {
+ globalSceneList.Add(mScene);
+ }
+ }
+
+
+ try
+ {
+ //閬嶅巻鍔犺浇鎴块棿鍒嗕韩涓暟缁熻鐘舵�丷owLayout
+ foreach (var room in SpatialInfo.CurrentSpatial.RoomList)
+ {
+ AddRoomFunctionRowLayout(room);
+ }
+ //2020-12-16 鍔犺浇鏈垎閰嶅尯鍩熷姛鑳絉owLayout
+ AddNoAreaFunctionRowLayout(unallocatedList, globalSceneList);
+ }
+ catch
+ {
+ Utlis.WriteLine("AddRoomFunctionRowLayout error");
+ }
+ }
+
+
+ /// <summary>
+ /// 娣诲姞鎴块棿鍒楄〃
+ /// </summary>
+ /// <param name="mRoom"></param>
+ void AddRoomFunctionRowLayout(Room mRoom)
+ {
+ ShowBaseRoomFunOrNoAreaFunRowLayout(mRoom, null, null);
+ }
+
+ /// <summary>
+ /// 娣诲姞鏃犲尯鍩熺殑鍔熻兘
+ /// </summary>
+ /// <param name="unallocatedList">鏈垎閰嶇殑鎵�鏈夊姛鑳藉垪琛�</param>
+ /// <param name="globalSceneList">鍏ㄥ尯鍩熺殑鍦烘櫙</param>
+ void AddNoAreaFunctionRowLayout(List<Function> unallocatedList, List<Scene> globalSceneList)
+ {
+ ShowBaseRoomFunOrNoAreaFunRowLayout(null, unallocatedList, globalSceneList);
+ }
+
+ /// <summary>
+ /// 2020-12-17 閲嶆柊璋冩暣
+ /// 娣诲姞鎴块棿鍒嗕韩鎴栬�呮棤鍖哄煙鍒嗛厤 涓暟缁熻鐘舵�佺殑RowLayout
+ /// </summary>
+ /// <param name="room">濡傛灉鎴块棿涓虹┖锛屼唬琛ㄧ鐞嗘棤鍒嗛厤鍖哄煙</param>
+ /// <param name="unallocatedList">绠$悊鏃犲垎閰嶅尯鍩熸墠鏈夋晥</param>
+ /// <param name="globalSceneList">鍏ㄥ眬鍦烘櫙</param>
+ void ShowBaseRoomFunOrNoAreaFunRowLayout(Room mRoom, List<Function> unallocatedList, List<Scene> globalSceneList)
+ {
+ /// 鎴块棿鎵�鏈夊姛鑳藉拰鑰呭満鏅垪琛�
+ List<SpeakerTargetInfo> roomFunctionOrSceneList = new List<SpeakerTargetInfo>();
+
+ var roomView = new RowLayout()
+ {
+ Height = Application.GetRealWidth(50),
+ BackgroundColor = CSS_Color.MainBackgroundColor,
+ LineColor = CSS_Color.MainBackgroundColor,
+ };
+ bodyScrolView.AddChidren(roomView);
+
+ var btnRoomName = new Button()
+ {
+ X = Application.GetRealWidth(16),
+ Y = Application.GetRealWidth(10),
+ Width = Application.GetRealWidth(330),
+ Height = Application.GetRealWidth(30),
+ TextAlignment = TextAlignment.CenterLeft,
+ TextColor = CSS_Color.FirstLevelTitleColor,
+ TextSize = CSS_FontSize.TextFontSize,
+ //Text = room.roomName,
+ };
+ roomView.AddChidren(btnRoomName);
+
+ var btnRight = new Button()
+ {
+ X = Application.GetRealWidth(351),
+ Gravity = Gravity.CenterVertical,
+ Width = Application.GetMinRealAverage(16),
+ Height = Application.GetMinRealAverage(16),
+ UnSelectedImagePath = "Public/Right.png",
+ };
+ roomView.AddChidren(btnRight);
+
+ //濡傛灉鎴块棿涓虹┖锛屼唬琛ㄧ鐞嗘棤鍒嗛厤鍖哄煙
+ if (mRoom != null)
+ {
+ //鏄剧ず鎴块棿鍚�
+ btnRoomName.Text = mRoom.roomName;
+ var mRoomFunctionList = mRoom.GetRoomFunctions(false);
+ var mRoomSceneList = mRoom.GetRoomScenes(true);
+ //閬嶅巻鎵�鏈夊姛鑳藉垪琛�
+ if (mRoomFunctionList != null)
+ {
+ foreach (var fun in mRoomFunctionList)
+ {
+ roomFunctionOrSceneList.Add(new SpeakerTargetInfo()
+ {
+ targetId = fun.deviceId,
+ targetName = fun.name,
+ isDevice = true
+ });
+ }
+ }
+
+ //閬嶅巻鎵�鏈夊満鏅垪琛�
+ if (mRoomSceneList != null)
+ {
+ foreach (var roomScene in mRoomSceneList)
+ {
+ roomFunctionOrSceneList.Add(new SpeakerTargetInfo()
+ {
+ targetId = roomScene.userSceneId,
+ targetName = roomScene.name,
+ isDevice = false
+ });
+ }
+ }
+
+ //roomId = mRoom.roomId;
+ //娣诲姞鍒嗗壊绾�
+ var lineView = new LineView(roomView.Height - Application.GetRealHeight(1));
+ roomView.AddChidren(lineView);
+ }
+ else
+ {
+ //鏄剧ず鏃犲尯鍩熷姛鑳�
+ btnRoomName.TextID = StringId.NoAreaFunction;
+
+ //閬嶅巻鎵�鏈夊姛鑳藉垪琛�
+ if (unallocatedList != null)
+ {
+ foreach (var fun in unallocatedList)
+ {
+ roomFunctionOrSceneList.Add(new SpeakerTargetInfo()
+ {
+ targetId = fun.deviceId,
+ targetName = fun.name,
+ isDevice = true
+ });
+ }
+ }
+
+ //閬嶅巻鎵�鏈夊満鏅垪琛�
+ if (globalSceneList != null)
+ {
+ foreach (var roomScene in globalSceneList)
+ {
+ roomFunctionOrSceneList.Add(new SpeakerTargetInfo()
+ {
+ targetId = roomScene.userSceneId,
+ targetName = roomScene.name,
+ isDevice = false
+ });
+ }
+ }
+ }
+
+
+ //鐐瑰嚮璋冩暣浜嬩欢
+ EventHandler<MouseEventArgs> eHandler = (sender, e) =>
+ {
+ var page = new SmartSpeakerSelectDevicesPage(speakerInfo, roomFunctionOrSceneList);
+ MainPage.BasePageView.AddChidren(page);
+ page.LoadPage();
+ MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+ };
+ roomView.MouseUpEventHandler = eHandler;
+ btnRoomName.MouseUpEventHandler = eHandler;
+ btnRight.MouseUpEventHandler = eHandler;
+
+ }
+
+ }
+
+
+
+}
diff --git "a/HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerSelectDevicesPage \050\345\211\257\346\234\254\051.cs" "b/HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerSelectDevicesPage \050\345\211\257\346\234\254\051.cs"
new file mode 100644
index 0000000..91f1cee
--- /dev/null
+++ "b/HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerSelectDevicesPage \050\345\211\257\346\234\254\051.cs"
@@ -0,0 +1,422 @@
+锘�//using System;
+//using Shared;
+//using HDL_ON.UI.CSS;
+//using System.Collections.Generic;
+//using System.Threading;
+//using HDL_ON.DAL.Server;
+
+//namespace HDL_ON.UI
+//{
+
+// /// <summary>
+// /// 绠$悊閰嶇疆缁欓煶绠辩殑璁惧鍒楄〃
+// /// </summary>
+// public class SmartSpeakerSelectDevicesPage : FrameLayout
+// {
+// /// <summary>
+// ///
+// /// </summary>
+// FrameLayout bodyView;
+// /// <summary>
+// /// 鍏ㄩ�夋寜閽�
+// /// </summary>
+// Button btnChooseAll;
+// /// <summary>
+// /// 褰撳墠
+// /// </summary>
+// VerticalScrolViewLayout bodyScrolView;
+// ///// <summary>
+// ///// 搴曢儴淇濆瓨鎿嶄綔鎸夐挳
+// ///// </summary>
+// //Button btnSave;
+
+// /// <summary>
+// /// 闊崇鍙傛暟
+// /// </summary>
+// SpeakerInfo speakerInfo;
+
+// /// <summary>
+// /// 璁惧銆佸満鏅垪琛�
+// /// </summary>
+// List<SpeakerTargetInfo> targetInfoList = new List<SpeakerTargetInfo>();
+// ///// <summary>
+// ///// 绠$悊褰撳墠閫夋嫨閫夌殑璁惧銆佸満鏅垪琛�
+// ///// </summary>
+// //List<SpeakerTargetInfo> selectInfoList = new List<SpeakerTargetInfo>();
+
+// /// <summary>
+// /// 褰撳墠鎴块棿鐨勮澶囧拰鍦烘櫙
+// /// </summary>
+// List<SpeakerTargetInfo> roomFunctionOrSceneList = new List<SpeakerTargetInfo>();
+
+// /// <summary>
+// ///
+// /// </summary>
+// /// <param name="speakerInfo"></param>
+// /// <param name="roomFunctionOrSceneList"></param>
+// public SmartSpeakerSelectDevicesPage(SpeakerInfo speakerInfo, List<SpeakerTargetInfo> roomFunctionOrSceneList)
+// {
+// bodyView = this;
+// bodyView.BackgroundColor = CSS_Color.MainBackgroundColor;
+// this.speakerInfo = speakerInfo;
+// this.roomFunctionOrSceneList = roomFunctionOrSceneList;
+// }
+
+// /// <summary>
+// ///
+// /// </summary>
+// public void LoadPage()
+// {
+// new TopViewDiv(bodyView, Language.StringByID(StringId.DataManagement)).LoadTopView();
+
+// //椤堕儴鍏ㄩ�夋寜閽�
+// var allRoomView = new FrameLayout()
+// {
+// Y = Application.GetRealHeight(64),
+// Height = Application.GetRealHeight(50),
+// BackgroundColor = CSS_Color.MainBackgroundColor,
+// };
+// bodyView.AddChidren(allRoomView);
+
+// Button btnAllRoomText = new Button()
+// {
+// X = Application.GetRealWidth(16),
+// Width = Application.GetRealWidth(280),
+// TextID = StringId.SelectedAll,
+// TextSize = CSS_FontSize.SubheadingFontSize,
+// TextColor = CSS_Color.FirstLevelTitleColor,
+// TextAlignment = TextAlignment.CenterLeft,
+// };
+// allRoomView.AddChidren(btnAllRoomText);
+
+// btnChooseAll = new Button()
+// {
+// X = Application.GetRealWidth(331),
+// Gravity = Gravity.CenterVertical,
+// Width = Application.GetMinRealAverage(28),
+// Height = Application.GetMinRealAverage(28),
+// UnSelectedImagePath = "Public/ChooseIcon.png",
+// SelectedImagePath = "Public/ChooseOnIcon.png",
+// IsSelected = true,
+// };
+// allRoomView.AddChidren(btnChooseAll);
+
+// allRoomView.AddChidren(new Button()
+// {
+// Gravity = Gravity.CenterHorizontal,
+// Y = Application.GetRealHeight(49),
+// Height = Application.GetMinReal(1),
+// Width = Application.GetRealWidth(343),
+// BackgroundColor = CSS_Color.DividingLineColor,
+// });
+
+// bodyScrolView = new VerticalScrolViewLayout()
+// {
+// Y = allRoomView.Bottom,
+// Height = Application.GetRealHeight(450),
+// };
+// bodyView.AddChidren(bodyScrolView);
+
+// var btnSave = new ConfirmButton()
+// {
+// Y = Application.GetRealHeight(519 + 64),
+// TextID = StringId.Save
+// };
+// bodyView.AddChidren(btnSave);
+
+// //鍏ㄩ�夋寜閽偣鍑讳簨浠�
+// LoadEvent_AllSharedDataChange(allRoomView, btnChooseAll);
+// LoadEvent_Save(btnSave);
+
+// GetDeviceAndSceneList();
+// }
+
+
+// /// <summary>
+// /// 鍏ㄩ�夋寜閽偣鍑讳簨浠�
+// /// </summary>
+// void LoadEvent_AllSharedDataChange(FrameLayout allRoomView, Button btnChooseAll)
+// {
+// EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+// {
+// btnChooseAll.IsSelected = !btnChooseAll.IsSelected;
+// if(selectInfoList == null)
+// {
+// selectInfoList = new List<SpeakerTargetInfo>();
+// }
+
+// if (btnChooseAll.IsSelected)
+// {
+// foreach (var info in roomFunctionOrSceneList)
+// {
+// selectInfoList.Add(info);
+// }
+// }
+// RefreshListView();
+// };
+// btnChooseAll.MouseUpEventHandler = eventHandler;
+// allRoomView.MouseUpEventHandler = eventHandler;
+
+// }
+
+// /// <summary>
+// /// 淇濆瓨鎸夐挳鐐瑰嚮浜嬩欢
+// /// </summary>
+// /// <param name="btnSave"></param>
+// void LoadEvent_Save(Button btnSave)
+// {
+// EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+// {
+// AddDevicesSceneList(targetInfoList);
+// };
+
+// btnSave.MouseUpEventHandler = eventHandler;
+// }
+
+// /// <summary>
+// ///
+// /// </summary>
+// /// <param name="updateList"></param>
+// void AddDevicesSceneList(List<SpeakerTargetInfo> updateList)
+// {
+// var waitPage = new Loading();
+// bodyView.AddChidren(waitPage);
+// waitPage.Start(Language.StringByID(StringId.PleaseWait));
+
+// System.Threading.Tasks.Task.Run(() =>
+// {
+// try
+// {
+// var updateSpeakerDeviceListObj = new UpdateSpeakerDeviceListObj()
+// {
+// homeId = speakerInfo.homeId,
+// tokenId = speakerInfo.tokenId,
+// targetInfos = updateList
+// };
+
+// var revertObj = new HttpServerRequest().UpdateSpeakerDeviceList(updateSpeakerDeviceListObj);
+// if (revertObj.Code == StateCode.SUCCESS)
+// {
+// Application.RunOnMainThread(() =>
+// {
+// //淇濆瓨鎴愬姛銆侀〉闈㈠叧闂�
+// Utlis.ShowTip(Language.StringByID(StringId.SavedSuccessfully));
+// if (bodyView != null)
+// {
+// bodyView.RemoveFromParent();
+// }
+// });
+
+// }
+// else
+// {
+// //鎻愮ず閿欒
+// IMessageCommon.Current.ShowErrorInfoAlter(revertObj.Code);
+// }
+// }
+// catch
+// {
+
+// }
+// finally
+// {
+// Application.RunOnMainThread(() =>
+// {
+// if (waitPage != null)
+// {
+// waitPage.RemoveFromParent();
+// waitPage = null;
+// }
+// });
+// }
+// });
+// }
+
+// /// <summary>
+// /// 鍔犺浇鎴块棿鐨勮澶囧拰鍦烘櫙鍒楄〃
+// /// </summary>
+// void GetDeviceAndSceneList()
+// {
+// bodyScrolView.RemoveAll();
+
+// var waitPage = new Loading();
+// bodyView.AddChidren(waitPage);
+// waitPage.Start(Language.StringByID(StringId.PleaseWait));
+
+// System.Threading.Tasks.Task.Run(() =>
+// {
+// try
+// {
+// var revertObj = new HttpServerRequest().GetSpeakerDeviceList(0, speakerInfo.tokenId);
+// if (revertObj.Code == StateCode.SUCCESS)
+// {
+// var list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<SpeakerTargetInfo>>(revertObj.Data.ToString());
+// Application.RunOnMainThread(() => {
+// if (list != null && list.Count > 0)
+// {
+// targetInfoList = list;
+// }
+// else
+// {
+// targetInfoList = new List<SpeakerTargetInfo>();
+// }
+// RefreshListView();
+// });
+
+// }
+// else
+// {
+// //鎻愮ず閿欒
+// IMessageCommon.Current.ShowErrorInfoAlter(revertObj.Code);
+// }
+// }
+// catch
+// {
+
+// }
+// finally
+// {
+// Application.RunOnMainThread(() =>
+// {
+// if (waitPage != null)
+// {
+// waitPage.RemoveFromParent();
+// waitPage = null;
+// }
+// });
+// }
+// });
+// }
+
+// /// <summary>
+// ///
+// /// </summary>
+// void RefreshListView()
+// {
+// bodyScrolView.RemoveAll();
+
+// if (roomFunctionOrSceneList == null) return;
+
+// foreach (var roomData in roomFunctionOrSceneList)
+// {
+// AddRowView(roomData);
+// }
+
+
+// }
+
+
+// /// <summary>
+// ///
+// /// </summary>
+// /// <param name="info"></param>
+// void AddRowView(SpeakerTargetInfo info)
+// {
+
+// var roomView = new FrameLayout()
+// {
+// Height = Application.GetRealHeight(50),
+// BackgroundColor = CSS_Color.MainBackgroundColor,
+// Tag = "row"
+// };
+// bodyScrolView.AddChidren(roomView);
+
+// Button btnRoomText = new Button()
+// {
+// X = Application.GetRealWidth(16),
+// Width = Application.GetRealWidth(280),
+// TextSize = CSS_FontSize.SubheadingFontSize,
+// TextColor = CSS_Color.FirstLevelTitleColor,
+// TextAlignment = TextAlignment.CenterLeft,
+// Text = info.targetName,
+// };
+// roomView.AddChidren(btnRoomText);
+
+// Button btnChoose = new Button()
+// {
+// X = Application.GetRealWidth(331),
+// Gravity = Gravity.CenterVertical,
+// Width = Application.GetMinRealAverage(28),
+// Height = Application.GetMinRealAverage(28),
+// UnSelectedImagePath = "Public/ChooseIcon.png",
+// SelectedImagePath = "Public/ChooseOnIcon.png",
+// Tag = "ChooseIcon"
+// };
+// roomView.AddChidren(btnChoose);
+
+// var targetData = selectInfoList.Find((obj) => obj.targetId == info.targetId);
+// if (targetData != null)
+// {
+// btnChoose.IsSelected = true;
+// //鍒锋柊灞炰簬褰撳墠鎴块棿鐨勫垎浜粺璁�
+// //funs_New.Add(shareData);
+// }
+// else
+// {
+// if (btnChooseAll.IsSelected)
+// btnChooseAll.IsSelected = false;
+// }
+
+
+// var btnLine = new Button()
+// {
+// Gravity = Gravity.CenterHorizontal,
+// //Y = Application.GetRealHeight(49),
+// Height = Application.GetRealHeight(1),
+// Width = Application.GetRealWidth(343),
+// BackgroundColor = CSS_Color.DividingLineColor,
+// };
+// bodyScrolView.AddChidren(btnLine);
+
+
+// EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+// {
+// btnChoose.IsSelected = !btnChoose.IsSelected;
+// var sd = selectInfoList.Find((obj) => obj.targetId == info.targetId);
+// if (btnChoose.IsSelected)
+// {
+// try
+// {
+// if (null == sd)
+// {
+// selectInfoList.Add(info);
+// }
+// btnChooseAll.IsSelected = true;
+
+// foreach (var f in roomFunctionOrSceneList)
+// {
+// if (selectInfoList.Find((obj) => obj.targetId == f.targetId) == null)
+// {
+// btnChooseAll.IsSelected = false;
+// break;
+// }
+// }
+// }
+// catch (Exception ex)
+// {
+// MainPage.Log($"Evhaaa {ex.Message}");
+// }
+// }
+// else
+// {
+// if (null != sd)
+// {
+// selectInfoList.Remove(sd);
+// }
+// btnChooseAll.IsSelected = false;
+// }
+// };
+
+// btnChoose.MouseUpEventHandler = eventHandler;
+// roomView.MouseUpEventHandler = eventHandler;
+// btnRoomText.MouseUpEventHandler = eventHandler;
+
+
+// }
+
+
+// }
+
+
+
+//}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerSelectDevicesPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerSelectDevicesPage.cs
new file mode 100644
index 0000000..b06bea9
--- /dev/null
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerSelectDevicesPage.cs
@@ -0,0 +1,437 @@
+锘縰sing System;
+using Shared;
+using HDL_ON.UI.CSS;
+using System.Collections.Generic;
+using System.Threading;
+using HDL_ON.DAL.Server;
+
+namespace HDL_ON.UI
+{
+
+ /// <summary>
+ /// 绠$悊閰嶇疆缁欓煶绠辩殑璁惧鍒楄〃
+ /// </summary>
+ public class SmartSpeakerSelectDevicesPage : FrameLayout
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ FrameLayout bodyView;
+ /// <summary>
+ /// 鍏ㄩ�夋寜閽�
+ /// </summary>
+ Button btnChooseAll;
+ /// <summary>
+ /// 褰撳墠
+ /// </summary>
+ VerticalScrolViewLayout bodyScrolView;
+ ///// <summary>
+ ///// 搴曢儴淇濆瓨鎿嶄綔鎸夐挳
+ ///// </summary>
+ //Button btnSave;
+
+ /// <summary>
+ /// 闊崇鍙傛暟
+ /// </summary>
+ SpeakerInfo speakerInfo;
+
+ /// <summary>
+ /// 璁惧銆佸満鏅垪琛�
+ /// </summary>
+ List<SpeakerTargetInfo> targetInfoList = new List<SpeakerTargetInfo>();
+
+ /// <summary>
+ /// 褰撳墠鎴块棿鐨勮澶囧拰鍦烘櫙
+ /// </summary>
+ List<SpeakerTargetInfo> roomFunctionOrSceneList = new List<SpeakerTargetInfo>();
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="speakerInfo"></param>
+ /// <param name="roomFunctionOrSceneList"></param>
+ public SmartSpeakerSelectDevicesPage(SpeakerInfo speakerInfo, List<SpeakerTargetInfo> roomFunctionOrSceneList)
+ {
+ bodyView = this;
+ bodyView.BackgroundColor = CSS_Color.MainBackgroundColor;
+ this.speakerInfo = speakerInfo;
+ this.roomFunctionOrSceneList = roomFunctionOrSceneList;
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public void LoadPage()
+ {
+ new TopViewDiv(bodyView, Language.StringByID(StringId.DataManagement)).LoadTopView();
+
+ //椤堕儴鍏ㄩ�夋寜閽�
+ var allRoomView = new FrameLayout()
+ {
+ Y = Application.GetRealHeight(64),
+ Height = Application.GetRealHeight(50),
+ BackgroundColor = CSS_Color.MainBackgroundColor,
+ };
+ bodyView.AddChidren(allRoomView);
+
+ Button btnAllRoomText = new Button()
+ {
+ X = Application.GetRealWidth(16),
+ Width = Application.GetRealWidth(280),
+ TextID = StringId.SelectedAll,
+ TextSize = CSS_FontSize.SubheadingFontSize,
+ TextColor = CSS_Color.FirstLevelTitleColor,
+ TextAlignment = TextAlignment.CenterLeft,
+ };
+ allRoomView.AddChidren(btnAllRoomText);
+
+ btnChooseAll = new Button()
+ {
+ X = Application.GetRealWidth(331),
+ Gravity = Gravity.CenterVertical,
+ Width = Application.GetMinRealAverage(28),
+ Height = Application.GetMinRealAverage(28),
+ UnSelectedImagePath = "Public/ChooseIcon.png",
+ SelectedImagePath = "Public/ChooseOnIcon.png",
+ //IsSelected = true,
+ };
+ allRoomView.AddChidren(btnChooseAll);
+
+ allRoomView.AddChidren(new Button()
+ {
+ Gravity = Gravity.CenterHorizontal,
+ Y = Application.GetRealHeight(49),
+ Height = Application.GetMinReal(1),
+ Width = Application.GetRealWidth(343),
+ BackgroundColor = CSS_Color.DividingLineColor,
+ });
+
+ bodyScrolView = new VerticalScrolViewLayout()
+ {
+ Y = allRoomView.Bottom,
+ Height = Application.GetRealHeight(450),
+ };
+ bodyView.AddChidren(bodyScrolView);
+
+ var btnSave = new ConfirmButton()
+ {
+ Y = Application.GetRealHeight(519 + 64),
+ TextID = StringId.Save
+ };
+ bodyView.AddChidren(btnSave);
+
+ //鍏ㄩ�夋寜閽偣鍑讳簨浠�
+ LoadEvent_AllSharedDataChange(allRoomView, btnChooseAll);
+ LoadEvent_Save(btnSave);
+
+ GetDeviceAndSceneList();
+ }
+
+
+ /// <summary>
+ /// 鍏ㄩ�夋寜閽偣鍑讳簨浠�
+ /// </summary>
+ void LoadEvent_AllSharedDataChange(FrameLayout allRoomView, Button btnChooseAll)
+ {
+ EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+ {
+ btnChooseAll.IsSelected = !btnChooseAll.IsSelected;
+ var IsSelected = btnChooseAll.IsSelected;
+
+ foreach (var info in roomFunctionOrSceneList)
+ {
+ info.IsSelect = IsSelected;
+ }
+
+ RefreshListView();
+ };
+ btnChooseAll.MouseUpEventHandler = eventHandler;
+ allRoomView.MouseUpEventHandler = eventHandler;
+
+ }
+
+ /// <summary>
+ /// 淇濆瓨鎸夐挳鐐瑰嚮浜嬩欢
+ /// </summary>
+ /// <param name="btnSave"></param>
+ void LoadEvent_Save(Button btnSave)
+ {
+ EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+ {
+ AddDevicesSceneList(targetInfoList);
+ };
+
+ btnSave.MouseUpEventHandler = eventHandler;
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="updateList"></param>
+ void AddDevicesSceneList(List<SpeakerTargetInfo> updateList)
+ {
+ var waitPage = new Loading();
+ bodyView.AddChidren(waitPage);
+ waitPage.Start(Language.StringByID(StringId.PleaseWait));
+
+ System.Threading.Tasks.Task.Run(() =>
+ {
+ try
+ {
+ //鏌ユ壘闇�瑕侀�変腑鐨勭洰鏍�
+ foreach (var info in roomFunctionOrSceneList)
+ {
+ var targetData = updateList.Find((obj) => obj.targetId == info.targetId);
+ if (info.IsSelect)
+ {
+ if (targetData == null)
+ {
+ updateList.Add(info);
+ }
+
+ }
+ else
+ {
+ if (targetData != null)
+ {
+ updateList.Remove(targetData);
+ }
+ }
+
+
+ }
+
+
+ var updateSpeakerDeviceListObj = new UpdateSpeakerDeviceListObj()
+ {
+ homeId = speakerInfo.homeId,
+ tokenId = speakerInfo.tokenId,
+ targetInfos = updateList
+ };
+
+ var revertObj = new HttpServerRequest().UpdateSpeakerDeviceList(updateSpeakerDeviceListObj);
+ if (revertObj.Code == StateCode.SUCCESS)
+ {
+ Application.RunOnMainThread(() =>
+ {
+ //淇濆瓨鎴愬姛銆侀〉闈㈠叧闂�
+ Utlis.ShowTip(Language.StringByID(StringId.SavedSuccessfully));
+ if (bodyView != null)
+ {
+ bodyView.RemoveFromParent();
+ }
+ });
+
+ }
+ else
+ {
+ //鎻愮ず閿欒
+ IMessageCommon.Current.ShowErrorInfoAlter(revertObj.Code);
+ }
+ }
+ catch
+ {
+
+ }
+ finally
+ {
+ Application.RunOnMainThread(() =>
+ {
+ if (waitPage != null)
+ {
+ waitPage.RemoveFromParent();
+ waitPage = null;
+ }
+ });
+ }
+ });
+ }
+
+ /// <summary>
+ /// 鍔犺浇鎴块棿鐨勮澶囧拰鍦烘櫙鍒楄〃
+ /// </summary>
+ void GetDeviceAndSceneList()
+ {
+ bodyScrolView.RemoveAll();
+
+ var waitPage = new Loading();
+ bodyView.AddChidren(waitPage);
+ waitPage.Start(Language.StringByID(StringId.PleaseWait));
+
+ System.Threading.Tasks.Task.Run(() =>
+ {
+ try
+ {
+ var revertObj = new HttpServerRequest().GetSpeakerDeviceList(0, speakerInfo.tokenId);
+ if (revertObj.Code == StateCode.SUCCESS)
+ {
+ var list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<SpeakerTargetInfo>>(revertObj.Data.ToString());
+ if (list != null && list.Count > 0)
+ {
+ targetInfoList = list;
+ }
+ else
+ {
+ targetInfoList = new List<SpeakerTargetInfo>();
+ }
+
+ //榛樿鍏ㄩ��
+ bool isSelectAll = true;
+ //鏌ユ壘闇�瑕侀�変腑鐨勭洰鏍�
+ foreach (var info in roomFunctionOrSceneList)
+ {
+ var targetData = targetInfoList.Find((obj) => obj.targetId == info.targetId);
+ if(targetData == null)
+ {
+ info.IsSelect = false;
+ //鏈変竴涓病閫夋嫨鍒欏叏閫夎缃负false
+ isSelectAll = false;
+ }
+ else
+ {
+ info.IsSelect = true;
+ }
+ }
+
+ Application.RunOnMainThread(() => {
+ //璁剧疆褰撳墠鍏ㄩ��
+ btnChooseAll.IsSelected = isSelectAll;
+ RefreshListView();
+ });
+
+ }
+ else
+ {
+ //鎻愮ず閿欒
+ IMessageCommon.Current.ShowErrorInfoAlter(revertObj.Code);
+ }
+ }
+ catch
+ {
+
+ }
+ finally
+ {
+ Application.RunOnMainThread(() =>
+ {
+ if (waitPage != null)
+ {
+ waitPage.RemoveFromParent();
+ waitPage = null;
+ }
+ });
+ }
+ });
+ }
+
+ /// <summary>
+ /// RefreshListView
+ /// </summary>
+ void RefreshListView()
+ {
+ bodyScrolView.RemoveAll();
+
+ if (roomFunctionOrSceneList == null) return;
+
+ foreach (var roomData in roomFunctionOrSceneList)
+ {
+ AddRowView(roomData);
+ }
+
+ }
+
+
+ /// <summary>
+ /// AddRowView
+ /// </summary>
+ /// <param name="info"></param>
+ void AddRowView(SpeakerTargetInfo info)
+ {
+
+ var roomView = new FrameLayout()
+ {
+ Height = Application.GetRealHeight(50),
+ BackgroundColor = CSS_Color.MainBackgroundColor,
+ Tag = "row"
+ };
+ bodyScrolView.AddChidren(roomView);
+
+ Button btnRoomText = new Button()
+ {
+ X = Application.GetRealWidth(16),
+ Width = Application.GetRealWidth(280),
+ TextSize = CSS_FontSize.SubheadingFontSize,
+ TextColor = CSS_Color.FirstLevelTitleColor,
+ TextAlignment = TextAlignment.CenterLeft,
+ Text = info.targetName,
+ };
+ roomView.AddChidren(btnRoomText);
+
+ Button btnChoose = new Button()
+ {
+ X = Application.GetRealWidth(331),
+ Gravity = Gravity.CenterVertical,
+ Width = Application.GetMinRealAverage(28),
+ Height = Application.GetMinRealAverage(28),
+ UnSelectedImagePath = "Public/ChooseIcon.png",
+ SelectedImagePath = "Public/ChooseOnIcon.png",
+ Tag = "ChooseIcon"
+ };
+ roomView.AddChidren(btnChoose);
+
+ btnChoose.IsSelected = info.IsSelect;
+
+ var btnLine = new Button()
+ {
+ Gravity = Gravity.CenterHorizontal,
+ //Y = Application.GetRealHeight(49),
+ Height = Application.GetRealHeight(1),
+ Width = Application.GetRealWidth(343),
+ BackgroundColor = CSS_Color.DividingLineColor,
+ };
+ bodyScrolView.AddChidren(btnLine);
+
+
+ EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+ {
+ btnChoose.IsSelected = !btnChoose.IsSelected;
+ info.IsSelect = btnChoose.IsSelected;
+ //1.濡傛灉鐐瑰嚮閫夋嫨锛屽垽鏂槸鍚﹂渶瑕佽缃叏閫�
+ if (btnChoose.IsSelected)
+ {
+ //1.1 榛樿鍏ㄩ��
+ bool isSelectAll = true;
+ foreach (var targetInfo in roomFunctionOrSceneList)
+ {
+ if(targetInfo.IsSelect == false)
+ {
+ //1.2 鏈変竴涓繕娌¢�変腑灏遍��鍑猴紝鏃犻渶閫変腑鍏ㄩ�夋寜閽�
+ isSelectAll = false;
+ break;
+ }
+ }
+
+ if (isSelectAll)
+ {
+ btnChooseAll.IsSelected = true;
+ }
+ }
+ else
+ {
+ //鍙栨秷鍏ㄩ��
+ if (btnChooseAll.IsSelected)
+ {
+ btnChooseAll.IsSelected = false;
+ }
+ }
+
+ };
+
+ btnChoose.MouseUpEventHandler = eventHandler;
+ roomView.MouseUpEventHandler = eventHandler;
+ btnRoomText.MouseUpEventHandler = eventHandler;
+ }
+
+
+ }
+}
--
Gitblit v1.8.0