using System;
using System.Collections.Generic;
using System.Globalization;
using Shared.Common;
using Shared.Phone.UserCenter;
using ZigBee.Device;
namespace Shared.Phone.Device.CommonForm
{
public class DeviceDetailInfo : FrameLayout
{
#region ◆ 变量____________________________
///
/// bodyFrameLayout
///
private FrameLayout bodyFrameLayout;
///
/// 所属区域
///
private string roomName;
///
/// action
///
public Action EditAction;
///
/// curRoom
///
private Common.Room curRoom;
///
/// curRoom
///
private Common.Room befRoom;
///
/// sharedRow
///
private DeviceInfoRow sharedRow;
///
/// functionTypeRow
///
private DeviceInfoRow functionTypeRow;
#endregion
#region ◆ 移除____________________________
///
/// RemoveFromParent
///
public override void RemoveFromParent()
{
EditAction = null;
base.RemoveFromParent();
}
#endregion
#region ◆ 构造方法_________________________
///
/// DeviceDetailInfo
///
public DeviceDetailInfo()
{
BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
}
#endregion
#region ◆ 显示界面_________________________
///
/// Show
///
///
///
public void Show(DeviceUI device, Common.Room room)
{
Init(device);
AddTop();
AddBodyView(device,room);
}
#endregion
#region Add____________________________________
///
/// AddTop
///
public void AddTop()
{
var top = new TopFrameLayout();
AddChidren(top);
top.InitTopview();
top.SetTopTitle(R.MyInternationalizationString.FunctionSetting);
top.backButton.MouseUpEventHandler += (sender, e) =>
{
RemoveFromParent();
};
}
///
/// AddBodyView
///
public void AddBodyView(DeviceUI device, Common.Room room)
{
bodyFrameLayout = new FrameLayout()
{
Y = Application.GetRealHeight(184),
Height = Application.GetRealHeight(1737),
BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor,
};
AddChidren(bodyFrameLayout);
var deviceBG = new Button()
{
Y = Application.GetRealHeight(118),
Width = Application.GetMinRealAverage(207),
Height = Application.GetMinRealAverage(207),
Gravity = Gravity.CenterHorizontal,
BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor,
Radius = (uint)Application.GetMinRealAverage(207/2)
};
bodyFrameLayout.AddChidren(deviceBG);
var deviceBG2 = new Button()
{
Y = Application.GetRealHeight(130),
Width = Application.GetMinRealAverage(184),
Height = Application.GetMinRealAverage(184),
Gravity = Gravity.CenterHorizontal,
BackgroundColor = ZigbeeColor.Current.GXCSelectedBackgroundColor,
Radius = (uint)Application.GetMinRealAverage(184/2)
};
bodyFrameLayout.AddChidren(deviceBG2);
var deviceIMG = new Button()
{
Y = Application.GetRealHeight(161),
Width = Application.GetMinRealAverage(124),
Height = Application.GetMinRealAverage(124),
UnSelectedImagePath = device.IconPath,
Gravity = Gravity.CenterHorizontal
};
bodyFrameLayout.AddChidren(deviceIMG);
var info = Common.LocalDevice.Current.GetDeviceBelongEnumInfo(device.CommonDevice);
var deviceTypeName = new Button()
{
Y = Application.GetRealHeight(360),
Width = Application.GetRealWidth(900),
Height = Application.GetRealHeight(80),
TextColor = ZigbeeColor.Current.GXCTextBlackColor,
TextID = info.BeloneTextId,
Gravity = Gravity.CenterHorizontal,
TextSize = 15
};
bodyFrameLayout.AddChidren(deviceTypeName);
var infoFL = new FrameLayout
{
Y = Application.GetRealHeight(540),
Height = Application.GetRealHeight(1195),
BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
};
bodyFrameLayout.AddChidren(infoFL);
var rectCornerID = HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight;
infoFL.SetCornerWithSameRadius(Application.GetRealHeight(58), rectCornerID);
var tipBtn = new Button
{
X = Application.GetRealWidth(CommonFormResouce.X_Left),
Y = Application.GetRealHeight(81),
Width = Application.GetRealWidth(500),
Height = Application.GetRealHeight(60),
TextColor = ZigbeeColor.Current.GXCTextDeepBlackColor,
TextAlignment = TextAlignment.CenterLeft,
TextSize = 15,
TextID = R.MyInternationalizationString.EditInfo
};
infoFL.AddChidren(tipBtn);
var infoScrolView = new VerticalScrolViewLayout
{
Y = Application.GetRealHeight(170-12),
Height = Application.GetRealHeight(600),
ScrollEnabled = false,
VerticalScrollBarEnabled = false
};
infoFL.AddChidren(infoScrolView);
var nameFL = new FrameLayout
{
Height = Application.GetRealHeight(127 + 12)
};
infoScrolView.AddChidren(nameFL);
var nameRow = new DeviceInfoEditRow(12);
nameRow.Init();
nameRow.SetTipTitle($"{Language.StringByID(R.MyInternationalizationString.FunctionName)} : ");
nameRow.SetTitle(string.IsNullOrEmpty(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice)) ? Language.StringByID(R.MyInternationalizationString.UNKnown) : Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice));
nameFL.AddChidren(nameRow);
var zoneFL = new FrameLayout
{
Height = Application.GetRealHeight(127 + 12)
};
if (room != null && room.IsLove == false)
{
infoScrolView.AddChidren(zoneFL);
}
var zoneRow = new DeviceInfoRow(12);
zoneRow.Init();
zoneRow.SetTipTitle($"{Language.StringByID(R.MyInternationalizationString.BelongZone)} : ");
zoneRow.SetTitle(roomName);
zoneFL.AddChidren(zoneRow);
var modelFL = new FrameLayout
{
Height = Application.GetRealHeight(127 + 12)
};
infoScrolView.AddChidren(modelFL);
var modelRow = new DeviceInfoRow(12);
modelRow.Init();
modelRow.SetTipTitle($"{Language.StringByID(R.MyInternationalizationString.BelongModel)} : ");
modelRow.SetTitle(string.IsNullOrEmpty(device.CommonDevice.DeviceName) ? Language.StringByID(R.MyInternationalizationString.UNKnown) : device.CommonDevice.DeviceName);
modelRow.HideNext(true);
modelFL.AddChidren(modelRow);
if (device.CommonDevice.Type==DeviceType.OnOffOutput || device.CommonDevice.Type==DeviceType.AirSwitch)
{
var typeFL = new FrameLayout
{
Height = Application.GetRealHeight(127 + 12)
};
infoScrolView.AddChidren(typeFL);
functionTypeRow = new DeviceInfoRow(12);
functionTypeRow.Init();
functionTypeRow.SetTipTitle($"{Language.StringByID(R.MyInternationalizationString.FunctionType)} : ");
//functionTypeRow.SetTitle(device.CommonDevice.DfunctionType);
typeFL.AddChidren(functionTypeRow);
var dfunctionType = device.CommonDevice.DfunctionType;
//功能类型的翻译名字
string strT = string.Empty;
if (dfunctionType == DeviceFunctionType.A灯光)
{
strT = Language.StringByID(R.MyInternationalizationString.uLight);
}
else if (dfunctionType == DeviceFunctionType.A开关)
{
strT = Language.StringByID(R.MyInternationalizationString.uSwitch);
}
else if (dfunctionType == DeviceFunctionType.A插座)
{
strT = Language.StringByID(R.MyInternationalizationString.uSocket1);
}
functionTypeRow.SetTitle(strT);
functionTypeRow.ClickBtn.MouseUpEventHandler += (sender, e) =>
{
var DfunctionType = device.CommonDevice.DfunctionType;
//功能类型的翻译名字
int nowSelectNo = 1;
string strType = string.Empty;
if (DfunctionType == DeviceFunctionType.A灯光)
{
strType = Language.StringByID(R.MyInternationalizationString.uLight);
nowSelectNo = 1;
}
else if (DfunctionType == DeviceFunctionType.A开关)
{
strType = Language.StringByID(R.MyInternationalizationString.uSwitch);
nowSelectNo = 0;
}
else if (DfunctionType == DeviceFunctionType.A插座)
{
strType = Language.StringByID(R.MyInternationalizationString.uSocket1);
nowSelectNo = 2;
}
//显示列表
var listText = new List();
listText.Add(Language.StringByID(R.MyInternationalizationString.uSwitch));//开关
listText.Add(Language.StringByID(R.MyInternationalizationString.uLight));//灯光
listText.Add(Language.StringByID(R.MyInternationalizationString.uSocket1));//插座
//标题:选择功能类型
var title = Language.StringByID(R.MyInternationalizationString.uSelectFunctionType);
var form = new BottomItemSelectForm();
form.AddForm(title, listText, nowSelectNo);
form.FinishSelectEvent += (selectNo) =>
{
functionTypeRow.NameText.Text = listText[selectNo];
nowSelectNo = selectNo;
//记录起当前选择的功能类型
if (selectNo == 0)
{
device.CommonDevice.DfunctionType = DeviceFunctionType.A开关;
}
else if (selectNo == 1)
{
device.CommonDevice.DfunctionType = DeviceFunctionType.A灯光;
}
else
{
device.CommonDevice.DfunctionType = DeviceFunctionType.A插座;
}
};
};
}
var confirmBtn = new CommonForm.CompleteButton(962, 900, 127);
confirmBtn.SetTitle(R.MyInternationalizationString.Save);
infoFL.AddChidren(confirmBtn);
#region event
EventHandler selectZoneEvent = (sender, e) =>
{
var zone = new SelectZone();
zone.Init();
zone.ZoneAction += (selectRoom) =>
{
curRoom = selectRoom;
zoneRow.SetTitle(selectRoom.GetZoneName());
};
};
zoneRow.ClickBtn.MouseUpEventHandler += selectZoneEvent;
EventHandler selectDeviceIconEvent = (sender, e) =>
{
var localPic = new DeviceIconSelectedIMGByLocal();
UserView.HomePage.Instance.AddChidren(localPic);
UserView.HomePage.Instance.PageIndex += 1;
localPic.Show();
localPic.action = (unSelectedImagePath, selectedImagePath) =>
{
deviceIMG.UnSelectedImagePath = unSelectedImagePath;
deviceIMG.SelectedImagePath = selectedImagePath;
device.CommonDevice.IsCustomizeImage = true;
};
};
deviceIMG.MouseUpEventHandler += selectDeviceIconEvent;
confirmBtn.MouseUpEventHandler += (sender, e) =>
{
try
{
CommonPage.Loading.Start();
if (device.CommonDevice == null)
{
CommonFormResouce.ShowTip(Language.StringByID(R.MyInternationalizationString.FailedPleaseTryAgain));
return;
}
if (device.CommonDevice.Type == DeviceType.OnOffOutput || device.CommonDevice.Type == DeviceType.AirSwitch)
{
if (device.IsCustomizeImage == false)
{
if (device.CommonDevice.DfunctionType == DeviceFunctionType.A开关)
{
device.CommonDevice.IconPath = "Device/Switch.png";
}
else if (device.CommonDevice.DfunctionType == DeviceFunctionType.A插座)
{
device.CommonDevice.IconPath = "Device/Socket1.png";
}
else if (device.CommonDevice.DfunctionType == DeviceFunctionType.A灯光)
{
device.CommonDevice.IconPath = "Device/Light.png";
}
}
else
{
//改图片
device.CommonDevice.IconPath = deviceIMG.UnSelectedImagePath;
}
}
else
{
//改图片
device.CommonDevice.IconPath = deviceIMG.UnSelectedImagePath;
}
bool result;
new System.Threading.Thread(async () =>
{
result = await LocalDevice.Current.ReName(device.CommonDevice, nameRow.NameText.Text.Trim());
Application.RunOnMainThread(() =>
{
CommonPage.Loading.Hide();
if (result)
{
//改房间
Shared.Common.Room.CurrentRoom.ChangedRoom(device.CommonDevice, curRoom.Id);
device.CommonDevice.ReSave();
EditAction?.Invoke(device, curRoom);
RemoveFromParent();
}
else
{
CommonFormResouce.ShowTip(Language.StringByID(R.MyInternationalizationString.FailedPleaseTryAgain));
}
});
})
{ IsBackground = true }.Start();
}
catch
{
CommonPage.Loading.Hide();
}
};
#endregion
}
///
/// Init
///
///
public void Init(DeviceUI device)
{
roomName = device.GetZone();
befRoom = Common.Room.CurrentRoom.GetRoomByDevice(device.CommonDevice);
curRoom = Common.Room.CurrentRoom.GetRoomByDevice(device.CommonDevice);
}
#endregion
}
}