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
{
///
/// 智能音箱列表
///
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);
//AddEmptyTipView();
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());
//HDLCommon.Current.ShowEditTextDialog(speakerInfo.remark, renameAction, Language.StringByID(R.MyInternationalizationString.rename));
};
#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) =>
{
//跳转页面
GotoSpeakerManagementPage(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);
#endregion
}
///
/// 请求修改备注
///
///
///
///
void RenameAlexaRemark(string newName, SpeakerInfo speakerInfo, Button btnName)
{
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){
var name = platformName;
if (platformName == SpeakerType.DuerOS.ToString())
{
name = "小度";
}
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())
{
name = "天猫精灵";
}
else if (platformName == SpeakerType.AISpeech.ToString())
{
name = "思必驰";
}
return name;
}
///
/// 跳转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;
}
}
}