.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> 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=æ¯å¦è§£é¤ç»å®ï¼ 10000=æ æç»å½å¯é¥ï¼è¯·éæ°ç»å½ï¼ 10001=è¯·æ±æå¡å¨å¤±è´¥ï¼è¯·ç¨ååè¯ï¼ 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=æ¯å¦è§£é¤ç»å®ï¼ 10000=æ æç»å½å¯é¥ï¼è¯·éæ°ç»å½ï¼ 10001=è¯·æ±æå¡å¨å¤±è´¥ï¼è¯·ç¨ååè¯ï¼ HDL_ON/Common/R.cs
@@ -1329,7 +1329,10 @@ /// 夿³¨ä¸è½ä¸ºç©º /// </summary> public const int RemarksCannotBeBlank = 9067; /// <summary> /// æ¯å¦è§£é¤ç»å®ï¼ /// </summary> public const int DoYouWantToUnbind = 9068; HDL_ON/DAL/Server/HttpServerRequest.cs
@@ -2274,6 +2274,18 @@ } /// <summary> /// è§£é¤é³ç®±ç»å® /// </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> 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> /// è§£ç»é³ç®± /// </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"; HDL_ON/DAL/Server/NewApiRes.cs
@@ -1546,10 +1546,10 @@ } /// <summary> /// /// é ç½®çè¯é³è®¾å¤ååºæ¯æ°æ® /// </summary> [System.Serializable] public class TargetInfo public class SpeakerTargetInfo { /// <summary> /// æ§å¶çç®æ Idï¼äºç«¯ç设å¤Idæè åºæ¯Id @@ -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> 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\" /> 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); //èªå®ä¹btnConfirmæ é¢ if (!string.IsNullOrEmpty(confirmText)) { btnConfirm.Text = confirmText; } int mRectCornerID = HDLUtils.RectCornerBottomRight; btnConfirm.SetCornerWithSameRadius((uint)Application.GetMinRealAverage(10), mRectCornerID); 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 }; 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 = () => { //è§£ç»é³ç®± 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é¡µé¢ /// 请æ±è§£ç»é³ç®± /// </summary> /// <param name="speakerInfo"></param> void GotoSpeakerManagementPage(SpeakerInfo speakerInfo) /// <param name="speakerInfo">é³ç®±åæ°</param> /// <param name="rowView">é³ç®±rowView</param> /// <param name="lineView">å¡«å çlineView</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) { //è§£ç»æå Application.RunOnMainThread(() => { //lineView if (lineView != null) { lineView.RemoveFromParent(); } //ç§»é¤rowView if (rowView != null) { rowView.RemoveFromParent(); } //æç¤ºè§£ç»æå 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; } } HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerRoomListPage.cs
New file @@ -0,0 +1,309 @@ using 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 代表åé å°æ¿é´ mScene.roomIds.Remove(null); if (mScene.roomIds.Count > 0) { //allocatedList.Add(function); } else { globalSceneList.Add(mScene); } } try { //éåå è½½æ¿é´å享个æ°ç»è®¡ç¶æRowLayout foreach (var room in SpatialInfo.CurrentSpatial.RoomList) { AddRoomFunctionRowLayout(room); } //2020-12-16 å è½½æªåé åºååè½RowLayout 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; } } } HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerSelectDevicesPage (¸±±¾).cs
New file @@ -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; // } // } //} HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerSelectDevicesPage.cs
New file @@ -0,0 +1,437 @@ 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> 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; } } }