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