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 ();
});
}
});
}
}
}