using System; using System.Collections.Generic; namespace Shared.SimpleControl.Phone { /// /// 智能音箱列表 /// public class SmartSpeakertListPage : BasePage { public SmartSpeakertListPage () { BackgroundColor = SkinStyle.Current.MainColor; } /// /// 显示页面 /// public override void ShowPage () { #region ---TopView--- base.ShowPage (); this.topTitleBtn.Text = "Smart speaker"; this.topItemButton.RemoveFromParent (); #endregion VerticalScrolViewLayout VerticalScrolViewMiddle = new VerticalScrolViewLayout (); BaseContentView.AddChidren (VerticalScrolViewMiddle); //加载音箱列表 LoadSmartSpeakertListView (VerticalScrolViewMiddle); } /// /// 加载音箱列表 /// /// void LoadSmartSpeakertListView (VerticalScrolViewLayout VerticalScrolViewMiddle) { VerticalScrolViewMiddle.RemoveAll (); MainPage.Loading.Start (Language.StringByID (R.MyInternationalizationString.load)); System.Threading.Tasks.Task.Run (() => { try { var revertObj = HttpServerRequest.Current.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 { //提示错误 IMessageCommon.Current.ShowErrorInfoAlter (revertObj.Code); } } catch { } finally { Application.RunOnMainThread (() => { MainPage.Loading.Hide (); }); } }); } ///// ///// 获取alexa语音音箱配置地址 ///// ///// //string GetAlexaRegionUrl () //{ // return string.IsNullOrEmpty (MainPage.LoginUser.alexaRegionUrl) ? HttpUtil.MiddleeastRegionUrl : MainPage.LoginUser.alexaRegionUrl; //} /// /// /// /// /// void AddRowView (SpeakerInfo speakerInfo, VerticalScrolViewLayout VerticalScrolViewMiddle) { var rowView = new RowLayout () { Height = Application.GetRealHeight (110), }; VerticalScrolViewMiddle.AddChidren (rowView); Button btnRowLine = new Button () { Y = Application.GetRealHeight (107), Height = Application.GetRealHeight (3), BackgroundColor = SkinStyle.Current.Black50Transparent }; rowView.AddChidren (btnRowLine); var btnPoint = new Button () { Width = Application.GetMinRealAverage (10), Height = Application.GetMinRealAverage (10), X = Application.GetRealWidth (50), Gravity = Gravity.CenterVertical, UnSelectedImagePath = "Item/Point.png", SelectedImagePath = "Item/Point.png", }; rowView.AddChidren (btnPoint); var btnName = new Button () { Width = Application.GetRealWidth (350), //Text = home, TextAlignment = TextAlignment.CenterLeft, X = Application.GetRealWidth (90), TextColor = SkinStyle.Current.TextColor1, }; rowView.AddChidren (btnName); if (string.IsNullOrEmpty (speakerInfo.remark)) { btnName.Text = speakerInfo.platformName; } else { btnName.Text = speakerInfo.remark; } Button rightButton1 = new Button () { X = Application.GetRealWidth (550), Width = Application.GetMinRealAverage (28), Height = Application.GetMinRealAverage (40), Gravity = Gravity.CenterVertical, UnSelectedImagePath = "Item/Right.png", SelectedImagePath = "Item/RightSelected.png", }; rowView.AddChidren (rightButton1); EventHandler eHandler = (sender, e) => { //跳转页面 GotoSpeakerManagementPage (speakerInfo); }; rowView.MouseUpEventHandler += eHandler; rightButton1.MouseUpEventHandler += eHandler; btnName.MouseUpEventHandler += eHandler; #region 重命名 var btnRename = new Button () { TextID = R.MyInternationalizationString.rename, BackgroundColor = SkinStyle.Current.TitileView, TextSize = 11, }; //保存事件 Action renameAction = (newName) => { RenameAlexaRemark (newName, speakerInfo, btnName, rowView); }; btnRename.MouseUpEventHandler += (sender, e) => { CommonUtlis.Current.ShowEditTextDialog (speakerInfo.remark, renameAction, Language.StringByID (R.MyInternationalizationString.rename)); }; rowView.AddRightView (btnRename); #endregion #region 删除 var btnDelete = new Button () { TextID = R.MyInternationalizationString.Delete, BackgroundColor = SkinStyle.Current.DelColor, TextSize = 11, }; //删除事件 Action deleteAction = () => { UnbindSpeaker (speakerInfo, rowView); }; btnDelete.MouseUpEventHandler += (sender, e) => { CommonUtlis.Current.ShowActionAlert (Language.StringByID (R.MyInternationalizationString.DoYouWantToUnbind), deleteAction); }; rowView.AddRightView (btnDelete); #endregion } /// /// 请求修改备注 /// /// /// /// void RenameAlexaRemark (string newName, SpeakerInfo speakerInfo, Button btnName, RowLayout rowView) { MainPage.Loading.Start (Language.StringByID (R.MyInternationalizationString.load)); System.Threading.Tasks.Task.Run (() => { try { var updateSpeakerRemarkObj = new UpdateSpeakerRemarkObj () { homeId = speakerInfo.homeId, tokenId = speakerInfo.tokenId, remark = newName }; var revertObj = HttpServerRequest.Current.UpdateSpeakerRemark(updateSpeakerRemarkObj); if (revertObj.Code == StateCode.SUCCESS) { //AmendTheSuccess 修改成功 Application.RunOnMainThread (() => { speakerInfo.remark = newName; btnName.Text = newName; rowView.HideRightMenu (); Utlis.ShowAlertOnMainThread (Language.StringByID (R.MyInternationalizationString.AmendTheSuccess)); }); } else { //提示错误 IMessageCommon.Current.ShowErrorInfoAlter (revertObj.Code); } } catch { } finally { Application.RunOnMainThread (() => { MainPage.Loading.Hide (); }); } }); } /// /// 跳转AlexaDeviceListPage页面 /// /// void GotoSpeakerManagementPage (SpeakerInfo speakerInfo) { //没绑定忘记提示先绑定网关,禁止跳转 if (!UserConfig.Instance.CheckWhetherGatewayIdNotNull()) { Utlis.ShowAlertOnMainThread (Language.StringByID (R.MyInternationalizationString.PleaseBindTheGatewayFirst)); return; } //跳转Alexa管理页面 AlexaDeviceListPage speakerInfoDeviceListPage = new AlexaDeviceListPage (speakerInfo); UserMiddle.SettingPageView.AddChidren (speakerInfoDeviceListPage); speakerInfoDeviceListPage.ShowPage (); UserMiddle.SettingPageView.PageIndex = UserMiddle.SettingPageView.ChildrenCount - 1; } /// /// 请求解绑音箱 /// /// 音箱参数 /// 音箱rowView void UnbindSpeaker (SpeakerInfo speakerInfo, RowLayout rowView) { if (speakerInfo == null || string.IsNullOrEmpty (speakerInfo.tokenId)) { Utlis.ShowTip (Language.StringByID (R.MyInternationalizationString.RequestFailedParameterException) + "(-3)"); } MainPage.Loading.Start (Language.StringByID (R.MyInternationalizationString.load)); System.Threading.Tasks.Task.Run (() => { try { var revertObj = HttpServerRequest.Current.UnbindSpeaker (speakerInfo.tokenId); if (revertObj.Code == StateCode.SUCCESS) { //解绑成功 Application.RunOnMainThread (() => { //rowView if (rowView != null) { rowView.RemoveFromParent (); } //提示解绑成功 Utlis.ShowTip (Language.StringByID (R.MyInternationalizationString.UnbindSuccessfully)); }); } else { //提示错误 IMessageCommon.Current.ShowErrorInfoAlter (revertObj.Code); } } catch { } finally { Application.RunOnMainThread (() => { MainPage.Loading.Hide (); }); } }); } } }