using System; using Shared; using HDL_ON.UI.CSS; using System.Collections.Generic; using HDL_ON.DAL.Server; namespace HDL_ON.UI { /// /// 智能音箱列表 /// public class SmartSpeakerListPage : FrameLayout { FrameLayout bodyView; /// /// /// FrameLayout emptyTipFrameLayout; /// /// 当前 /// VerticalScrolViewLayout bodyScrolView; /// /// 内容为空提示View /// FrameLayout emptyTipView; /// 目前对接的音箱类型 /// 小度=DuerOS /// Google Home = Google /// Alexa Echo = Alexa /// Alice = Alice /// 天猫精灵=Aligenie /// 思必驰=AISpeech /// /// /// public SmartSpeakerListPage() { bodyView = this; bodyView.BackgroundColor = CSS_Color.BackgroundColor; } /// /// 加载视图 /// public void LoadPage() { new TopViewDiv(bodyView, Language.StringByID(StringId.SmartSpeaker)).LoadTopView(); int bodyY = Application.GetRealHeight(64); bodyScrolView = new VerticalScrolViewLayout() { Y = bodyY, Height = bodyView.Height - bodyY, BackgroundColor = CSS_Color.BackgroundColor, }; bodyView.AddChidren(bodyScrolView); LoadSmartSpeakertListView(bodyScrolView); } /// /// 添加内容为空提示页面 /// void AddEmptyTipView() { emptyTipView = new FrameLayout() { Height = bodyScrolView.Height, Width = bodyScrolView.Width, }; bodyScrolView.AddChidren(emptyTipView); var tipView = new EmptyTipView() { Gravity = Gravity.Center }; emptyTipView.AddChidren(tipView); } /// /// 加载音箱列表 /// /// void LoadSmartSpeakertListView(VerticalScrolViewLayout VerticalScrolViewMiddle) { VerticalScrolViewMiddle.RemoveAll(); var waitPage = new Loading(); bodyView.AddChidren(waitPage); waitPage.Start(Language.StringByID(StringId.PleaseWait)); System.Threading.Tasks.Task.Run(() => { try { var revertObj = new HttpServerRequest().GetSpeakerList(); if (revertObj.Code == StateCode.SUCCESS) { var speakerListRes = Newtonsoft.Json.JsonConvert.DeserializeObject(revertObj.Data.ToString()); if (speakerListRes != null && speakerListRes.list != null && speakerListRes.list.Count > 0) { Application.RunOnMainThread(() => { foreach (var speaker in speakerListRes.list) { AddRowView(speaker, VerticalScrolViewMiddle); } }); } else { Application.RunOnMainThread(() => { AddEmptyTipView(); }); } } else { Application.RunOnMainThread(() => { AddEmptyTipView(); }); //提示错误 IMessageCommon.Current.ShowErrorInfoAlter(revertObj.Code); } } catch { } finally { Application.RunOnMainThread(() => { if (waitPage != null) { waitPage.RemoveFromParent(); waitPage = null; } }); } }); } /// /// /// /// /// void AddRowView(SpeakerInfo speakerInfo, VerticalScrolViewLayout VerticalScrolViewMiddle) { //透明填充分割view var lineView = new FrameLayout() { Height = Application.GetRealWidth(12), }; VerticalScrolViewMiddle.AddChidren(lineView); var rowView = new FrameLayout() { Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth(343), Height = Application.GetRealWidth(200), BackgroundColor = CSS_Color.MainBackgroundColor, Radius = (uint)Application.GetRealWidth(12), BorderColor = 0x00000000, BorderWidth = 0, }; VerticalScrolViewMiddle.AddChidren(rowView); #region 音箱类型 var view1 = new FrameLayout() { Height = Application.GetRealWidth(49), }; rowView.AddChidren(view1); var btnSpeakerNameTitle = new Button() { X = Application.GetRealWidth(16), Width = Application.GetRealWidth(200), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.TextFontSize, Text = GetSpeakerTypeString(speakerInfo.platformName) }; view1.AddChidren(btnSpeakerNameTitle); Button line1 = new Button() { Y = view1.Bottom, Gravity = Gravity.CenterHorizontal, Height = Application.GetRealWidth(1), Width = Application.GetRealWidth(311), BackgroundColor = CSS_Color.DividingLineColor, }; rowView.AddChidren(line1); #endregion #region 备注 var view2 = new FrameLayout() { Y = line1.Bottom, Height = Application.GetRealWidth(49), }; rowView.AddChidren(view2); var btnNicknameTitle = new Button() { X = Application.GetRealWidth(16), Width = Application.GetRealWidth(200), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.TextFontSize, TextID = StringId.Remarks, }; view2.AddChidren(btnNicknameTitle); var btnNickname = new Button() { Width = Application.GetRealWidth(295), TextAlignment = TextAlignment.CenterRight, TextColor = CSS_Color.PromptingColor1, TextSize = CSS_FontSize.TextFontSize, Text = speakerInfo.remark }; view2.AddChidren(btnNickname); if (string.IsNullOrEmpty(speakerInfo.remark)) { btnNickname.TextID = StringId.SmartSpeaker; } var btnNicknameRight = new Button() { X = Application.GetRealWidth(311), Gravity = Gravity.CenterVertical, Width = Application.GetMinRealAverage(16), Height = Application.GetMinRealAverage(16), UnSelectedImagePath = "Public/Right.png", }; view2.AddChidren(btnNicknameRight); Button line2 = new Button() { Y = view2.Bottom, Gravity = Gravity.CenterHorizontal, Height = Application.GetRealWidth(1), Width = Application.GetRealWidth(311), BackgroundColor = CSS_Color.DividingLineColor, }; rowView.AddChidren(line2); //保存事件 Action renameAction = (newName) => { RenameAlexaRemark(newName, speakerInfo, btnNickname); }; btnNickname.MouseUpEventHandler += (sender, e) => { new PublicAssmebly().LoadDialog_EditParater(StringId.Remarks, speakerInfo.remark, renameAction, StringId.RemarksCannotBeBlank, 0, new List(),false, Language.StringByID(StringId.Save)); }; #endregion #region 数据管理 var view3 = new FrameLayout() { Y = line2.Bottom, Height = Application.GetRealWidth(49), }; rowView.AddChidren(view3); var btnDataTitle = new Button() { X = Application.GetRealWidth(16), Width = Application.GetRealWidth(200), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.TextFontSize, TextID = StringId.DataManagement, }; view3.AddChidren(btnDataTitle); var btnDataRight = new Button() { X = Application.GetRealWidth(311), Gravity = Gravity.CenterVertical, Width = Application.GetMinRealAverage(16), Height = Application.GetMinRealAverage(16), UnSelectedImagePath = "Public/Right.png", }; view3.AddChidren(btnDataRight); Button line3 = new Button() { Y = view3.Bottom, Gravity = Gravity.CenterHorizontal, Height = Application.GetRealWidth(1), Width = Application.GetRealWidth(311), BackgroundColor = CSS_Color.DividingLineColor, }; rowView.AddChidren(line3); EventHandler eHandler = (sender, e) => { //跳转数据管理房间列表 GotoPage(speakerInfo); }; view3.MouseUpEventHandler += eHandler; btnDataTitle.MouseUpEventHandler += eHandler; btnDataRight.MouseUpEventHandler += eHandler; #endregion #region 解除绑定 var view4 = new FrameLayout() { Y = line3.Bottom, Height = Application.GetRealWidth(49), }; rowView.AddChidren(view4); var btnUnbindTitle = new Button() { X = Application.GetRealWidth(16), Width = Application.GetRealWidth(200), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.TextFontSize, TextID = StringId.Unbind, }; view4.AddChidren(btnUnbindTitle); var btnUnbindRight = new Button() { X = Application.GetRealWidth(311), Gravity = Gravity.CenterVertical, Width = Application.GetMinRealAverage(16), Height = Application.GetMinRealAverage(16), UnSelectedImagePath = "Public/Right.png", }; view4.AddChidren(btnUnbindRight); EventHandler 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 } /// /// 请求修改备注 /// /// /// /// void RenameAlexaRemark(string newName, SpeakerInfo speakerInfo, Button btnName) { //显示loading动画效果 var waitPage = new Loading(); bodyView.AddChidren(waitPage); waitPage.Start(Language.StringByID(StringId.PleaseWait)); System.Threading.Tasks.Task.Run(() => { try { var updateSpeakerRemarkObj = new UpdateSpeakerRemarkObj() { homeId = speakerInfo.homeId, tokenId = speakerInfo.tokenId, remark = newName }; var revertObj = new HttpServerRequest().UpdateSpeakerRemark(updateSpeakerRemarkObj); if (revertObj.Code == StateCode.SUCCESS) { //AmendTheSuccess 修改成功 Application.RunOnMainThread(() => { speakerInfo.remark = newName; btnName.Text = newName; Utlis.ShowTip(Language.StringByID(StringId.ModifySuccess)); //Utlis.ShowAlertOnMainThread(Language.StringByID(R.MyInternationalizationString.AmendTheSuccess)); }); } else { //提示错误 IMessageCommon.Current.ShowErrorInfoAlter(revertObj.Code); } } catch { } finally { Application.RunOnMainThread(() => { if (waitPage != null) { waitPage.RemoveFromParent(); waitPage = null; } }); } }); } /// /// /// /// /// string GetSpeakerTypeString(string platformName){ //1.platformName判空 if (string.IsNullOrEmpty(platformName)) { return ""; } //2.先赋云端返回的默认值 var name = platformName; if (platformName == SpeakerType.DuerOS.ToString()) { if (Language.CurrentLanguage == "Chinese") { name = "小度"; } //2.1当前语言不是中文的话,直接等于云端返回的platformName音箱类型 } else if (platformName == SpeakerType.Google.ToString()){ name = "Google Home"; } else if (platformName == SpeakerType.Alexa.ToString()) { name = "Alexa Echo"; } else if (platformName == SpeakerType.Alice.ToString()) { name = "Alice"; } else if (platformName == SpeakerType.Aligenie.ToString()) { if (Language.CurrentLanguage == "Chinese") { name = "天猫精灵"; } //2.1当前语言不是中文的话,直接等于云端返回的platformName音箱类型 } else if (platformName == SpeakerType.AISpeech.ToString()) { if (Language.CurrentLanguage == "Chinese") { name = "思必驰"; } //2.1当前语言不是中文的话,直接等于云端返回的platformName 英文音箱类型 } return name; } /// /// 请求解绑音箱 /// /// 音箱参数 /// 音箱rowView /// 填充的lineView void UnbindSpeaker(SpeakerInfo speakerInfo, FrameLayout rowView, FrameLayout lineView) { if (speakerInfo == null || string.IsNullOrEmpty(speakerInfo.tokenId)) { Utlis.ShowTip(Language.StringByID(StringId.RequestFailedParameterException) + "(-3)"); } 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; } }); } }); } /// /// 跳转页面 /// void GotoPage(SpeakerInfo speakerInfo) { var page = new SmartSpeakerRoomListPage(speakerInfo); MainPage.BasePageView.AddChidren(page); page.LoadPage(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; } } }