using System;
|
using System.Collections.Generic;
|
|
namespace Shared.SimpleControl.Phone
|
{
|
/// <summary>
|
/// 智能音箱列表
|
/// </summary>
|
public class SmartSpeakertListPage : BasePage
|
{
|
|
public SmartSpeakertListPage ()
|
{
|
BackgroundColor = SkinStyle.Current.MainColor;
|
}
|
|
/// <summary>
|
/// 显示页面
|
/// </summary>
|
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);
|
}
|
|
/// <summary>
|
/// 加载音箱列表
|
/// </summary>
|
/// <param name="VerticalScrolViewMiddle"></param>
|
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<SpeakerListRes> (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 ();
|
});
|
}
|
});
|
}
|
|
///// <summary>
|
///// 获取alexa语音音箱配置地址
|
///// </summary>
|
///// <returns></returns>
|
//string GetAlexaRegionUrl ()
|
//{
|
// return string.IsNullOrEmpty (MainPage.LoginUser.alexaRegionUrl) ? HttpUtil.MiddleeastRegionUrl : MainPage.LoginUser.alexaRegionUrl;
|
//}
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="speakerInfo"></param>
|
/// <param name="VerticalScrolViewMiddle"></param>
|
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<MouseEventArgs> 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<string> 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
|
|
}
|
|
/// <summary>
|
/// 请求修改备注
|
/// </summary>
|
/// <param name="newName"></param>
|
/// <param name="speakerInfo"></param>
|
/// <param name="btnName"></param>
|
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 ();
|
});
|
}
|
});
|
|
}
|
|
|
/// <summary>
|
/// 跳转AlexaDeviceListPage页面
|
/// </summary>
|
/// <param name="speakerInfo"></param>
|
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;
|
}
|
|
/// <summary>
|
/// 请求解绑音箱
|
/// </summary>
|
/// <param name="speakerInfo">音箱参数</param>
|
/// <param name="rowView">音箱rowView</param>
|
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 ();
|
});
|
}
|
});
|
|
}
|
|
}
|
}
|