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
|
{
|
|
|
/// <summary>
|
/// 智能音箱列表
|
|
/// </summary>
|
public class SmartSpeakerListPage : FrameLayout
|
{
|
FrameLayout bodyView;
|
/// <summary>
|
///
|
/// </summary>
|
FrameLayout emptyTipFrameLayout;
|
/// <summary>
|
/// 当前
|
/// </summary>
|
VerticalScrolViewLayout bodyScrolView;
|
/// <summary>
|
/// 内容为空提示View
|
/// </summary>
|
FrameLayout emptyTipView;
|
|
/// 目前对接的音箱类型
|
/// 小度=DuerOS
|
/// Google Home = Google
|
/// Alexa Echo = Alexa
|
/// Alice = Alice
|
/// 天猫精灵=Aligenie
|
/// 思必驰=AISpeech
|
|
|
|
/// <summary>
|
///
|
/// </summary>
|
public SmartSpeakerListPage()
|
{
|
bodyView = this;
|
bodyView.BackgroundColor = CSS_Color.BackgroundColor;
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
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);
|
}
|
|
/// <summary>
|
/// 添加内容为空提示页面
|
/// </summary>
|
void AddEmptyTipView()
|
{
|
emptyTipView = new FrameLayout()
|
{
|
Height = bodyScrolView.Height,
|
Width = bodyScrolView.Width,
|
};
|
bodyScrolView.AddChidren(emptyTipView);
|
|
var tipView = new EmptyTipView()
|
{
|
Gravity = Gravity.Center
|
};
|
emptyTipView.AddChidren(tipView);
|
}
|
|
/// <summary>
|
/// 加载音箱列表
|
/// </summary>
|
/// <param name="VerticalScrolViewMiddle"></param>
|
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<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
|
{
|
Application.RunOnMainThread(() =>
|
{
|
AddEmptyTipView();
|
});
|
}
|
}
|
else
|
{
|
Application.RunOnMainThread(() =>
|
{
|
AddEmptyTipView();
|
});
|
//提示错误
|
IMessageCommon.Current.ShowErrorInfoAlter(revertObj.Code);
|
}
|
}
|
catch
|
{
|
|
}
|
finally
|
{
|
Application.RunOnMainThread(() =>
|
{
|
if (waitPage != null)
|
{
|
waitPage.RemoveFromParent();
|
waitPage = null;
|
}
|
});
|
}
|
});
|
}
|
|
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="speakerInfo"></param>
|
/// <param name="VerticalScrolViewMiddle"></param>
|
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<string> renameAction = (newName) =>
|
{
|
RenameAlexaRemark(newName, speakerInfo, btnNickname);
|
};
|
|
btnNickname.MouseUpEventHandler += (sender, e) =>
|
{
|
new PublicAssmebly().LoadDialog_EditParater(StringId.Remarks, speakerInfo.remark, renameAction, StringId.RemarksCannotBeBlank, 0, new List<string>());
|
|
//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<MouseEventArgs> 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
|
|
|
|
}
|
|
/// <summary>
|
/// 请求修改备注
|
/// </summary>
|
/// <param name="newName"></param>
|
/// <param name="speakerInfo"></param>
|
/// <param name="btnName"></param>
|
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;
|
}
|
});
|
}
|
});
|
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="platformName"></param>
|
/// <returns></returns>
|
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;
|
}
|
|
/// <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;
|
}
|
}
|
|
|
|
}
|