using System;
|
using HDL_ON.Entity;
|
using HDL_ON.UI.CSS;
|
using Shared;
|
|
namespace HDL_ON.UI
|
{
|
public partial class FunctionControlZone : FrameLayout
|
{
|
#region 区域控件
|
FunctionControlZone bodyDiv;
|
/// <summary>
|
/// 功能/场景icon
|
/// </summary>
|
Button btnIcon;
|
/// <summary>
|
/// 功能名称/场景名称
|
/// </summary>
|
Button btnName;
|
/// <summary>
|
/// 楼层信息显示按钮
|
/// </summary>
|
Button btnFromFloor;
|
/// <summary>
|
/// 收藏按钮
|
/// </summary>
|
Button btnCollectionIcon;
|
/// <summary>
|
/// 离线文本
|
/// </summary>
|
Button btnOffline;
|
|
#endregion
|
|
#region 区域变量
|
Function function;
|
/// <summary>
|
/// 是否在调光
|
/// </summary>
|
bool onDimmerBar;
|
/// <summary>
|
/// 删除设备后回调给界面刷新
|
/// </summary>
|
Action action;
|
|
#endregion
|
public FunctionControlZone(Function func,Action action)
|
{
|
bodyDiv = this;
|
bodyDiv.Tag = func.sid;
|
function = func;
|
this.action = action;
|
}
|
|
public override void RemoveFromParent()
|
{
|
base.RemoveFromParent();
|
bodyDiv = null;
|
}
|
|
/// <summary>
|
/// 加载功能类型控制卡片
|
/// </summary>
|
public void LoadFunctionDiv()
|
{
|
if (function == null)
|
{
|
this.RemoveFromParent();
|
return;
|
}
|
//if (function.spk == SPK.IpCam_Imou)
|
//{
|
// InitIpCamDiv();
|
//}
|
//else
|
{
|
LoadDiv();
|
}
|
|
btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/{function.IconName}.png";
|
if (SPK.CurtainSpkList().Contains(function.spk))
|
{//窗帘没有开关按钮
|
CurtainFragment();
|
}
|
else
|
{
|
#region 加载开关按钮
|
|
/// <summary>
|
/// 开关按钮
|
/// </summary>
|
Button btnSwitch;
|
if (function.spk == SPK.LightRGBW || function.spk == SPK.LightCCT || function.spk == SPK.LightRGB || function.spk == SPK.LightDimming)
|
{
|
btnSwitch = new Button()
|
{
|
X = Application.GetRealWidth(303),
|
Y = Application.GetRealHeight(78),
|
Width = Application.GetMinRealAverage(32),
|
Height = Application.GetMinRealAverage(32),
|
UnSelectedImagePath = "Public/PowerClose.png",
|
SelectedImagePath = "Public/PowerOpen.png",
|
IsSelected = function.trait_on_off.curValue.ToString() == "on",
|
Tag = function.sid + "_Switch",
|
};
|
bodyDiv.AddChidren(btnSwitch);
|
//加载开关按钮事件
|
LoadEvent_SwitchFunction(btnSwitch, function.attributes.Find((obj) => obj.key == FunctionAttributeKey.FadeTime));
|
}
|
else
|
{
|
btnSwitch = new Button()
|
{
|
X = Application.GetRealWidth(303),
|
Y = Application.GetRealHeight(58),
|
Width = Application.GetMinRealAverage(32),
|
Height = Application.GetMinRealAverage(32),
|
UnSelectedImagePath = "Public/PowerClose.png",
|
SelectedImagePath = "Public/PowerOpen.png",
|
IsSelected = function.trait_on_off.curValue.ToString() == "on",
|
Tag = function.sid + "_Switch",
|
};
|
bodyDiv.AddChidren(btnSwitch);
|
//加载开关按钮事件
|
LoadEvent_SwitchFunction(btnSwitch);
|
}
|
|
if (SPK.AcSpkList().Contains(function.spk) ||
|
SPK.FhSpkList().Contains(function.spk))
|
{
|
LoadLastStatesButton();
|
}
|
else if (SPK.LightSpkList().Contains(function.spk))
|
{
|
btnSwitch.IsSelected = function.trait_on_off.curValue.ToString() == "on";
|
LoadLightControl();
|
}
|
#endregion
|
}
|
|
LoadEvent_DivSkipEvent();
|
LoadEvent_FunctionCollection();
|
|
|
}
|
/// <summary>
|
/// 加载ip摄像头卡片
|
/// </summary>
|
private void InitIpCamDiv()
|
{
|
btnIcon = new Button()
|
{
|
X = Application.GetRealWidth(10),
|
Y = Application.GetRealHeight(15),
|
Width = Application.GetRealWidth(32),
|
Height = Application.GetRealWidth(32),
|
};
|
bodyDiv.AddChidren(btnIcon);
|
|
btnName = new Button()
|
{
|
X = Application.GetRealWidth(8 + 10 + 32),
|
Y = Application.GetRealHeight(10),
|
Width = Application.GetRealWidth(200),
|
Height = Application.GetRealHeight(24),
|
Text = function.name,
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = CSS_Color.FirstLevelTitleColor,
|
TextSize = CSS_FontSize.TextFontSize,
|
};
|
bodyDiv.AddChidren(btnName);
|
|
btnFromFloor = new Button()
|
{
|
X = Application.GetRealWidth(8 + 10 + 32),
|
Y = Application.GetRealHeight(10 + 24),
|
Width = Application.GetRealWidth(200),
|
Height = Application.GetRealHeight(18),
|
Text = function.GetRoomListName(),
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = CSS_Color.PromptingColor1,
|
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
|
};
|
bodyDiv.AddChidren(btnFromFloor);
|
|
btnCollectionIcon = new Button()
|
{
|
X = Application.GetRealWidth(299),
|
Y = Application.GetRealHeight(10),
|
Width = Application.GetMinRealAverage(40),
|
Height = Application.GetMinRealAverage(40),
|
SelectedImagePath = "Collection/CollectionIcon.png",
|
UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
|
IsSelected = function.collect
|
};
|
|
}
|
|
/// <summary>
|
/// 加载控制卡片区域
|
/// </summary>
|
void LoadDiv()
|
{
|
btnIcon = new Button()
|
{
|
X = Application.GetRealWidth(10),
|
Y = Application.GetRealHeight(15),
|
Width = Application.GetRealWidth(32),
|
Height = Application.GetRealWidth(32),
|
};
|
bodyDiv.AddChidren(btnIcon);
|
|
btnName = new Button()
|
{
|
X = Application.GetRealWidth(8 +10 + 32),
|
Y = Application.GetRealHeight(10),
|
Width = Application.GetRealWidth(200),
|
Height = Application.GetRealHeight(24),
|
Text = function.name,
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = CSS_Color.FirstLevelTitleColor,
|
TextSize = CSS_FontSize.TextFontSize,
|
};
|
bodyDiv.AddChidren(btnName);
|
|
btnFromFloor = new Button()
|
{
|
X = Application.GetRealWidth(8 + 10 + 32),
|
Y = Application.GetRealHeight(10 + 24),
|
Width = Application.GetRealWidth(200),
|
Height = Application.GetRealHeight(18),
|
Text = function.GetRoomListName(),
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = CSS_Color.PromptingColor1,
|
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
|
};
|
bodyDiv.AddChidren(btnFromFloor);
|
|
btnCollectionIcon = new Button()
|
{
|
X = Application.GetRealWidth(299),
|
Y = Application.GetRealHeight(10),
|
Width = Application.GetMinRealAverage(40),
|
Height = Application.GetMinRealAverage(40),
|
SelectedImagePath = "Collection/CollectionIcon.png",
|
UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
|
IsSelected = function.collect
|
};
|
if (!function.isOnline())
|
{
|
bodyDiv.BackgroundColor = CSS_Color.PromptingColor2;
|
btnOffline = new Button()
|
{
|
X = Application.GetRealWidth(8 + 10 + 32),
|
Y = Application.GetRealHeight(28 + 24),
|
Height = Application.GetRealHeight(30),
|
TextID = StringId.DeviceOffline,
|
TextColor = CSS_Color.WarningColor,
|
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
|
TextAlignment = TextAlignment.CenterLeft
|
};
|
bodyDiv.AddChidren(btnOffline);
|
}
|
}
|
|
/// <summary>
|
/// 加载灯光功能控制卡片
|
/// </summary>
|
void LoadLightControl()
|
{
|
switch (function.spk)
|
{
|
case SPK.LightDimming:
|
case SPK.LightRGBW:
|
case SPK.LightRGB:
|
case SPK.LightCCT:
|
#region Dimmer
|
var btnDimmerMinValues = new Button()
|
{
|
X = Application.GetRealWidth(14),
|
Y = Application.GetRealHeight(85),
|
Width = Application.GetRealWidth(30),
|
Height = Application.GetRealHeight(21),
|
Text = "0%",
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = CSS_Color.PromptingColor1,
|
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
|
};
|
bodyDiv.AddChidren(btnDimmerMinValues);
|
|
var dimmerControlBar = new DiyImageSeekBar()
|
{
|
X = Application.GetRealWidth(14 + 22),
|
Y = Application.GetRealHeight(68),//91,设计数据
|
Width = Application.GetRealWidth(180),
|
Height = Application.GetRealHeight(54),
|
SeekBarViewHeight = Application.GetRealHeight(8),
|
ThumbImagePath = "Public/ThumbImage.png",
|
ThumbImageHeight = Application.GetRealHeight(54),
|
ProgressBarColor = function.trait_on_off.curValue.ToString() == "on" ? CSS_Color.AuxiliaryColor1 : CSS_Color.PromptingColor2,
|
ProgressTextColor = CSS_Color.FirstLevelTitleColor,
|
ProgressTextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
|
MaxValue = 100,
|
Progress = Convert.ToInt32(function.GetAttrState(FunctionAttributeKey.Brightness)),
|
Tag = function.sid + "_DimmerBar",
|
SeekBarPadding = Application.GetRealWidth(20),
|
};
|
bodyDiv.AddChidren(dimmerControlBar);
|
|
var btnDimmerMaxValues = new Button()
|
{
|
X = Application.GetRealWidth(14 + 22+180),
|
Y = Application.GetRealHeight(85),
|
Width = Application.GetRealWidth(45),
|
Height = Application.GetRealHeight(21),
|
Text = "100%",
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = CSS_Color.PromptingColor1,
|
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
|
};
|
bodyDiv.AddChidren(btnDimmerMaxValues);
|
//加载调光事件
|
LoadEvent_LightDimming(dimmerControlBar);
|
#endregion
|
break;
|
}
|
}
|
|
/// <summary>
|
/// 加载窗帘功能控制卡片
|
/// </summary>
|
void CurtainFragment()
|
{
|
var onoffString = function.GetAttrState(FunctionAttributeKey.OnOff);
|
var percent = onoffString == "off" ? 0 : 100;
|
if (function.GetAttributes().Contains(FunctionAttributeKey.Percent))
|
{
|
string percentString = function.GetAttrState(FunctionAttributeKey.Percent);
|
int.TryParse(percentString, out percent);
|
}
|
|
#region Curtain
|
var btnCurtainClose = new Button()
|
{
|
X = Application.GetRealWidth(163),
|
Y = Application.GetRealHeight(58),
|
Width = Application.GetMinRealAverage(32),
|
Height = Application.GetMinRealAverage(32),
|
UnSelectedImagePath = "FunctionIcon/Curtain/CurtainCloseIcon.png",
|
SelectedImagePath = "FunctionIcon/Curtain/CurtainCloseOnIcon.png",
|
IsSelected = percent == 0,
|
Tag = function.sid + "_off"
|
};
|
bodyDiv.AddChidren(btnCurtainClose);
|
if(function.spk == SPK.CurtainRoller)
|
{
|
btnCurtainClose.UnSelectedImagePath = "FunctionIcon/Curtain/CurtainDownIcon.png";
|
btnCurtainClose.SelectedImagePath = "FunctionIcon/Curtain/CurtainDownIconOn.png";
|
}
|
|
var btnCurtainStop = new Button()
|
{
|
X = Application.GetRealWidth(233),
|
Y = Application.GetRealHeight(58),
|
Width = Application.GetMinRealAverage(32),
|
Height = Application.GetMinRealAverage(32),
|
UnSelectedImagePath = "FunctionIcon/Curtain/CurtainStopIcon.png",
|
SelectedImagePath = "FunctionIcon/Curtain/CurtainStopOnIcon.png",
|
Tag = function.sid + "_stop",
|
};
|
bodyDiv.AddChidren(btnCurtainStop);
|
|
var btnCurtainOpen = new Button()
|
{
|
X = Application.GetRealWidth(303),
|
Y = Application.GetRealHeight(58),
|
Width = Application.GetMinRealAverage(32),
|
Height = Application.GetMinRealAverage(32),
|
UnSelectedImagePath = "FunctionIcon/Curtain/CurtainOpenIcon.png",
|
SelectedImagePath = "FunctionIcon/Curtain/CurtainOpenOnIcon.png",
|
Tag = function.sid + "_on",
|
IsSelected = percent != 0,
|
};
|
bodyDiv.AddChidren(btnCurtainOpen);
|
if (function.spk == SPK.CurtainRoller)
|
{
|
btnCurtainOpen.UnSelectedImagePath = "FunctionIcon/Curtain/CurtainUpIcon.png";
|
btnCurtainOpen.SelectedImagePath = "FunctionIcon/Curtain/CurtainUpIconOn.png";
|
}
|
LoadEvent_ControlCurtain(btnCurtainStop, btnCurtainOpen, btnCurtainClose);
|
#endregion
|
}
|
|
/// <summary>
|
/// 排序事件
|
/// </summary>
|
public Action OrderEvent;
|
|
|
/// <summary>
|
/// 加载功能状态信息按钮
|
/// </summary>
|
void LoadLastStatesButton()
|
{
|
if(function.spk == SPK.LightSwitch)
|
{
|
return;
|
}
|
var btnLastStates = new Button()
|
{
|
X = Application.GetRealWidth(10 + 32 + 8),
|
Y = Application.GetRealHeight(10 + 24 + 18),
|
Width = Application.GetRealWidth(200),
|
Height = Application.GetRealHeight(18),
|
Text = function.lastState,
|
TextAlignment = TextAlignment.CenterLeft,
|
SelectedTextColor = CSS_Color.PromptingColor1,
|
TextColor = 0x00000000,
|
TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
|
Tag = function.spk + "_laststates_" + function.sid,
|
IsSelected = function.trait_on_off.curValue.ToString() == "on"
|
};
|
bodyDiv.AddChidren(btnLastStates);
|
}
|
|
|
|
}
|
}
|