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