using System;
|
using System.Collections.Generic;
|
using Shared;
|
|
namespace Shared.SimpleControl.Phone
|
{
|
/// <summary>
|
/// 加载云端的设备列表
|
/// </summary>
|
public class AlexaSettingDevicePage : Dialog
|
{
|
//List<string> showList = new List<string> ();
|
VerticalScrolViewLayout deviceScrolView;
|
VerticalScrolViewLayout typeLayout;
|
string selectedDeviceType = "All";
|
|
/// <summary>
|
/// 设备、场景列表
|
/// </summary>
|
List<TargetInfo> targetInfoList = new List<TargetInfo> ();
|
|
int show = 99;
|
FrameLayout bodyView;
|
public AlexaSettingDevicePage (List<TargetInfo> list)
|
{
|
targetInfoList = new List<TargetInfo>(list);
|
|
bodyView = new FrameLayout () {
|
BackgroundColor = SkinStyle.Current.MainColor,
|
};
|
AddChidren (bodyView);
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="action"></param>
|
/// <param name="saveAction"></param>
|
public void ShowPage (Action<List<TargetInfo>> saveAction)
|
{
|
#region ---TopView---
|
var topView = new RowLayout () {
|
Y = Application.GetRealHeight (36),
|
Height = Application.GetRealHeight (90),
|
Width = Application.GetRealWidth (640),
|
BackgroundColor = SkinStyle.Current.MainColor,
|
};
|
bodyView.AddChidren (topView);
|
|
var back = new Button () {
|
Height = Application.GetRealHeight (90),
|
Width = Application.GetRealWidth (85),
|
UnSelectedImagePath = "Item/Back.png",
|
SelectedImagePath = "Item/BackSelected.png",
|
};
|
topView.AddChidren (back);
|
back.MouseUpEventHandler += (sender, e) => {
|
this.Close ();
|
};
|
|
Button NameButton = new Button () {
|
Width = Application.GetRealWidth (400),
|
Height = Application.GetMinReal (90),
|
TextID = R.MyInternationalizationString.AddNewDevice,
|
//Text = MainPage.SoftTitle,
|
SelectedTextColor = SkinStyle.Current.TextColor1,
|
TextColor = SkinStyle.Current.TextColor1,
|
Gravity = Gravity.CenterHorizontal,
|
TextAlignment = TextAlignment.Center,
|
TextSize = 19,
|
};
|
topView.AddChidren (NameButton);
|
|
#endregion
|
#region type view
|
var chooseTypeView = new RowLayout () {
|
Y = topView.Bottom,
|
Height = Application.GetRealHeight (110),
|
BackgroundColor = SkinStyle.Current.ViewColor,
|
};
|
bodyView.AddChidren (chooseTypeView);
|
Button btnEquipmentIcon = new Button () {
|
Width = Application.GetRealHeight (65),
|
Height = Application.GetRealHeight (65),
|
UnSelectedImagePath = "Item/LogicModule.png",
|
X = Application.GetRealWidth (30),
|
Gravity = Gravity.CenterVertical,
|
};
|
chooseTypeView.AddChidren (btnEquipmentIcon);
|
Button btnDrodIcon = new Button () {
|
X = Application.GetRealWidth (540),
|
Height = Application.GetRealHeight (46),
|
Width = Application.GetRealWidth (47),
|
UnSelectedImagePath = "Item/Down.png",
|
SelectedImagePath = "Item/DownSelected.png",
|
Gravity = Gravity.CenterVertical,
|
};
|
chooseTypeView.AddChidren (btnDrodIcon);
|
Button btnEquipmentType = new Button () {
|
Width = Application.GetRealHeight (460),
|
X = btnEquipmentIcon.Right + Application.GetRealWidth (20),
|
TextAlignment = TextAlignment.CenterLeft,
|
Text = Language.StringByID (R.MyInternationalizationString.All),
|
TextColor = SkinStyle.Current.TextColor1,
|
SelectedTextColor = SkinStyle.Current.DialogTextColor
|
};
|
chooseTypeView.AddChidren (btnEquipmentType);
|
typeLayout = new VerticalScrolViewLayout () {
|
Y = chooseTypeView.Bottom,
|
Height = Application.GetRealHeight (0),
|
BackgroundColor = SkinStyle.Current.ViewColor
|
};
|
//EventHandler<MouseEventArgs> chooseTypeMethod = (sender, e) => {
|
// if (show == 99) {//第一次需要先初始化选择设备类型界面
|
// InitEquipmentTypeView (btnEquipmentType, btnEquipmentIcon, chooseTypeView);
|
// show = 0;
|
// } else if (show == 0) {
|
// typeLayout.Height = Application.GetRealHeight (1136 - 126 - 90);
|
// chooseTypeView.BackgroundColor = SkinStyle.Current.MainColor;
|
// show = 1;
|
// } else if (show == 1) {
|
// typeLayout.Height = 0;
|
// chooseTypeView.BackgroundColor = SkinStyle.Current.ViewColor;
|
// show = 0;
|
// }
|
//};
|
//btnEquipmentType.MouseUpEventHandler += chooseTypeMethod;
|
//btnDrodIcon.MouseUpEventHandler += chooseTypeMethod;
|
//chooseTypeView.MouseUpEventHandler += chooseTypeMethod;
|
#endregion
|
|
deviceScrolView = new VerticalScrolViewLayout () {
|
Y = chooseTypeView.Bottom,
|
Height = Application.GetRealHeight (1136 - 126 - 110 - 89),
|
BackgroundColor = SkinStyle.Current.ViewColor,
|
};
|
bodyView.AddChidren (deviceScrolView);
|
|
|
|
var btnClose = new Button () {
|
Height = Application.GetRealHeight (90),
|
Y = deviceScrolView.Bottom,
|
BackgroundColor = SkinStyle.Current.MainColor,
|
//Text = "OK",
|
TextID = R.MyInternationalizationString.Confrim,
|
TextColor = SkinStyle.Current.TextColor1,
|
TextAlignment = TextAlignment.Center,
|
TextSize = 16,
|
};
|
bodyView.AddChidren (btnClose);
|
btnClose.MouseUpEventHandler += (sender, e) => {
|
saveAction?.Invoke (targetInfoList); ;
|
this.Close ();
|
};
|
|
GetDeviceList ();
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
void GetDeviceList () {
|
System.Threading.Tasks.Task.Run (() => {
|
try {
|
Application.RunOnMainThread (() => {
|
MainPage.Loading.Start (Language.StringByID (R.MyInternationalizationString.load));
|
});
|
|
var revertObj = HttpServerRequest.Current.GetDeviceList ();
|
|
if (revertObj.Code == StateCode.SUCCESS) {
|
var devcieFunctionRes = Newtonsoft.Json.JsonConvert.DeserializeObject<DevcieFunctionRes> (revertObj.Data.ToString ());
|
Application.RunOnMainThread (() => {
|
if (devcieFunctionRes != null && devcieFunctionRes.list != null && devcieFunctionRes.list.Count > 0) {
|
CommonConfig.Current.FunctionList = devcieFunctionRes.list;
|
} else {
|
CommonConfig.Current.FunctionList = new List<Function> ();
|
}
|
CommonConfig.Current.Save ();
|
RefreshListView ();
|
});
|
} else {
|
//提示错误
|
IMessageCommon.Current.ShowErrorInfoAlter (revertObj.Code);
|
}
|
} catch {
|
|
} finally {
|
Application.RunOnMainThread (() => {
|
MainPage.Loading.Hide ();
|
});
|
}
|
});
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
void RefreshListView ()
|
{
|
deviceScrolView.RemoveAll ();
|
foreach (Function function in CommonConfig.Current.FunctionList) {
|
//过滤通用开关不允许显示和添加
|
if (function.spk == SPK.UniversalDevice) continue;
|
|
AddRowView (function);
|
}
|
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="function"></param>
|
void AddRowView (Function function) {
|
|
var deviceRow = new RowLayout () {
|
Height = Application.GetRealHeight (120),
|
};
|
deviceScrolView.AddChidren (deviceRow);
|
|
var btnPoint = new Button () {
|
Width = Application.GetMinRealAverage (10),
|
Height = Application.GetMinRealAverage (10),
|
Radius = (uint)Application.GetMinRealAverage (5),
|
X = Application.GetRealWidth (50),
|
Gravity = Gravity.CenterVertical,
|
BackgroundColor = SkinStyle.Current.TextColor1,
|
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
|
};
|
deviceRow.AddChidren (btnPoint);
|
|
Button btnEquipment = new Button () {
|
X = btnPoint.Right + Application.GetRealWidth (30),
|
Width = Application.GetRealWidth (310),
|
TextAlignment = TextAlignment.CenterLeft,
|
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
|
SelectedTextColor = SkinStyle.Current.DialogTextColor,
|
TextColor = SkinStyle.Current.TextColor1,
|
Text = function.name,
|
Tag = function.deviceId,
|
};
|
deviceRow.AddChidren (btnEquipment);
|
|
//if (selectedDeviceType != "Scene") {
|
// //2020-01-10 隐藏修改按钮
|
// //return;
|
// var btnEdit = new Button () {
|
// X = btnEquipment.Right + Application.GetRealWidth (80),
|
// Width = Application.GetMinRealAverage (75),
|
// Height = Application.GetMinRealAverage (72),
|
// Gravity = Gravity.CenterVertical,
|
// UnSelectedImagePath = "CrabtreeAdd/Edit.png",
|
// SelectedImagePath = "CrabtreeAdd/EditOn.png",
|
// };
|
// deviceRow.AddChidren (btnEdit);
|
|
// btnEdit.MouseUpEventHandler += (sd, ds) => {
|
// //Action successAction = () => {
|
// // GenericDialog.Current.RefreshRemark (commonDevice);
|
// // if (!roomDeviceFilePathList.Contains (filePath)) {
|
// // roomDeviceFilePathList.Add (filePath);
|
// // }
|
// //};
|
// //GenericDialog.Current.ShowModifyRemarksDialog (commonDevice, commonBytes, btnEquipment, successAction);
|
// };
|
//}
|
|
var btnChoose = new Button () {
|
X = Application.GetRealWidth (472 + 80),
|
Width = Application.GetMinRealAverage (75),
|
Height = Application.GetMinRealAverage (72),
|
Gravity = Gravity.CenterVertical,
|
UnSelectedImagePath = "CrabtreeAdd/Choose.png",
|
SelectedImagePath = "CrabtreeAdd/ChooseOn.png",
|
|
};
|
|
deviceRow.AddChidren (btnChoose);
|
|
var sceneData1 = targetInfoList.Find ((obj) => obj.targetId == function.deviceId);
|
btnChoose.IsSelected = sceneData1 != null;
|
|
|
btnChoose.MouseUpEventHandler += (sendere, ee) => {
|
btnChoose.IsSelected = !btnChoose.IsSelected;
|
if (btnChoose.IsSelected) {
|
var sceneData = targetInfoList.Find ((obj) => obj.targetId == function.deviceId);
|
if (sceneData == null) {
|
targetInfoList.Add (new TargetInfo () {
|
targetId = function.deviceId,
|
targetName = function.name,
|
isDevice = true
|
});
|
}
|
|
} else {
|
var sceneData = targetInfoList.Find ((obj) => obj.targetId == function.deviceId);
|
if (sceneData != null) {
|
targetInfoList.Remove (sceneData);
|
}
|
}
|
};
|
}
|
|
|
|
void InitEquipmentTypeView (Button btnEquipmentType, Button btnEquipmentIcon, RowLayout chooseTypeView)
|
{
|
bodyView.AddChidren (typeLayout);
|
|
//下拉列表的数据源(选项为设备类型有关)
|
List<string> typeTemp = new List<string>{
|
Language.StringByID(R.MyInternationalizationString.All),
|
};
|
|
foreach (string typeName in typeTemp) {
|
var dialogRow = new RowLayout () {
|
Height = Application.GetRealHeight (110),
|
};
|
typeLayout.AddChidren (dialogRow);
|
var btnPoint = new Button () {
|
Width = Application.GetMinRealAverage (10),
|
Height = Application.GetMinRealAverage (10),
|
Radius = (uint)Application.GetMinRealAverage (5),
|
X = Application.GetRealWidth (70),
|
Gravity = Gravity.CenterVertical,
|
BackgroundColor = SkinStyle.Current.TextColor1,
|
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
|
};
|
dialogRow.AddChidren (btnPoint);
|
|
Button btnTypeName = new Button () {
|
Width = Application.GetRealHeight (400),
|
X = btnPoint.Right + Application.GetRealWidth (30),
|
Text = typeName,
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
dialogRow.AddChidren (btnTypeName);
|
EventHandler<MouseEventArgs> typeEvent = (sender1, e1) => {
|
typeLayout.Height = 0;
|
btnEquipmentType.Text = typeName;
|
//if (typeName == Language.StringByID (R.MyInternationalizationString.Lights)) {
|
// btnEquipmentIcon.UnSelectedImagePath = "Item/Light.png";
|
// selectedDeviceType = "Light";
|
//} else if (typeName == Language.StringByID (R.MyInternationalizationString.Curtains)) {
|
// btnEquipmentIcon.UnSelectedImagePath = "Curtain/Curtain.png";
|
// selectedDeviceType = "Curtain";
|
//} else if (typeName == Language.StringByID (R.MyInternationalizationString.AC)) {
|
// btnEquipmentIcon.UnSelectedImagePath = "AC/AC.png";
|
// selectedDeviceType = "AC";
|
//} else if (typeName == Language.StringByID (R.MyInternationalizationString.FoolHeat)) {
|
// btnEquipmentIcon.UnSelectedImagePath = "Item/FloorHeating.png";
|
// selectedDeviceType = "FoolHeat";
|
//} else if (typeName == Language.StringByID (R.MyInternationalizationString.DryContactPanel)) {
|
// btnEquipmentIcon.UnSelectedImagePath = "Item/DryContact.png";
|
// selectedDeviceType = "DryContact";
|
//} else if (typeName == Language.StringByID (R.MyInternationalizationString.MusicModel)) {
|
// btnEquipmentIcon.UnSelectedImagePath = "Item/Music.png";
|
// selectedDeviceType = "Music";
|
//} else if (typeName == Language.StringByID (R.MyInternationalizationString.InfraredMode)) {
|
// btnEquipmentIcon.UnSelectedImagePath = "Item/InfraredTV.png";
|
// selectedDeviceType = "InfraredMode";
|
//} else if (typeName == Language.StringByID (R.MyInternationalizationString.TV)) {
|
// btnEquipmentIcon.UnSelectedImagePath = "Item/InfraredTV.png";
|
// selectedDeviceType = "InfraredMode";
|
//} else if (typeName == Language.StringByID (R.MyInternationalizationString.ElectricalControl)) {
|
// btnEquipmentIcon.UnSelectedImagePath = "Light/Socket.png";
|
// selectedDeviceType = "EC";//电器控制
|
//} else if (typeName == Language.StringByID (R.MyInternationalizationString.Fan)) {
|
// btnEquipmentIcon.UnSelectedImagePath = "Fan/Fan.png";
|
// selectedDeviceType = "Fan";
|
// //} else if (typeName == Language.StringByID (R.MyInternationalizationString.LogicModule)) {
|
// // btnEquipmentIcon.UnSelectedImagePath = "Item/PointBig.png";
|
// // selectedDeviceType = "LogicModule";
|
//} else
|
if (typeName == Language.StringByID (R.MyInternationalizationString.Scenes)) {
|
btnEquipmentIcon.UnSelectedImagePath = "Scene/Scene.png";
|
selectedDeviceType = "Scene";
|
}
|
//else if (typeName == Language.StringByID (R.MyInternationalizationString.UniversalDevice)) {
|
// btnEquipmentIcon.UnSelectedImagePath = "UniversalDevice/UniversalDevice.png";
|
// selectedDeviceType = "UniversalDevice";
|
//} else if (typeName == Language.StringByID (R.MyInternationalizationString.Sensor)) {
|
// btnEquipmentIcon.UnSelectedImagePath = "UniversalDevice/UniversalDevice.png";
|
// selectedDeviceType = "Sensor";
|
//} else if (typeName == Language.StringByID (R.MyInternationalizationString.FreshAir)) {
|
// btnEquipmentIcon.UnSelectedImagePath = "FreshAir/FreshAir.png";
|
// selectedDeviceType = "FreshAir";
|
//}
|
else {
|
btnEquipmentIcon.UnSelectedImagePath = "Item/LogicModule.png";
|
selectedDeviceType = "All";
|
}
|
chooseTypeView.BackgroundColor = SkinStyle.Current.ViewColor;
|
GetDeviceList ();
|
};
|
dialogRow.MouseUpEventHandler += typeEvent;
|
btnTypeName.MouseUpEventHandler += typeEvent;
|
}
|
}
|
}
|
|
|
}
|