using System;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using HDL_ON.UI.Music;
using Shared;
namespace HDL_ON.UI
{
public partial class FunctionControlZone : FrameLayout
{
#region 区域控件
static FrameLayout bodyDiv;
///
/// 功能/场景icon
///
Button btnIcon;
///
/// 功能名称/场景名称
///
Button btnName;
///
/// 楼层信息显示按钮
///
Button btnFromFloor;
///
/// 收藏按钮
///
Button btnCollectionIcon;
#endregion
#region 区域变量
Function function;
///
/// 是否在调光
///
bool onDimmerBar;
#endregion
public FunctionControlZone(Function func)
{
bodyDiv = this;
bodyDiv.Tag = func.sid;
function = func;
}
public override void RemoveFromParent()
{
base.RemoveFromParent();
bodyDiv = null;
}
///
/// 加载功能类型控制卡片
///
public void LoadFunctionDiv()
{
if (function == null)
{
this.RemoveFromParent();
return;
}
LoadDiv();
if (function.functionCategory == FunctionCategory.Curtain || function.functionCategory == FunctionCategory.Music || function.functionCategory == FunctionCategory.Scene)//窗帘没有开关按钮
{
switch (function.functionCategory)
{
case FunctionCategory.Curtain:
btnIcon.UnSelectedImagePath = "FunctionIcon/Curtain/CurtainThinIcon.png";
CurtainFragment();
break;
case FunctionCategory.Music:
btnIcon.UnSelectedImagePath = "FunctionIcon/Music/MusicThinIcon.png";
MusicFragment();
break;
case FunctionCategory.Scene:
btnIcon.UnSelectedImagePath = "FunctionIcon/Scene/SceneIcon.png";
if ((function as Scene).sceneType == SceneType.MovieScene)
{
var movieIcon = new Button()
{
X = Application.GetRealWidth(52),
Y = Application.GetRealHeight(14),
Width = Application.GetRealWidth(16),
Height = Application.GetRealWidth(16),
UnSelectedImagePath = "FunctionIcon/Scene/MovieMark.png",
};
bodyDiv.AddChidren(movieIcon);
btnName.X = Application.GetRealWidth(52 + 16);
}
//加载场景控制事件
LoadEvent_ControlScene();
break;
}
}
else
{
#region 加载开关按钮
///
/// 开关按钮
///
Button btnSwitch;
if (function.functionType == FunctionType.RGB || function.functionType == FunctionType.Dimmer)
{
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.value.ToString() == "on",
Tag = function.sid + "_Switch",
};
bodyDiv.AddChidren(btnSwitch);
}
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.value.ToString() == "on",
Tag = function.sid + "_Switch",
};
bodyDiv.AddChidren(btnSwitch);
}
//加载开关按钮事件
LoadEvent_SwitchFunction(btnSwitch);
switch (function.functionCategory)
{
case FunctionCategory.Thermostat:
switch (function.functionType)
{
case FunctionType.AC:
btnIcon.UnSelectedImagePath = "FunctionIcon/AC/AcThinIcon1.png";
LoadLastStatesButton();
break;
case FunctionType.FloorHeating:
btnIcon.UnSelectedImagePath = "FunctionIcon/FloorHeating/FloorHeatingThinIcon.png";
LoadLastStatesButton();
break;
}
break;
case FunctionCategory.Light:
btnIcon.UnSelectedImagePath = "FunctionIcon/Light/LightThinIcon.png";
btnSwitch.IsSelected = function.trait_on_off.value.ToString() == "on";
LoadLightControl();
break;
case FunctionCategory.SwitchDevice:
switch (function.functionType)
{
case FunctionType.Socket:
btnIcon.UnSelectedImagePath = "FunctionIcon/Socket/SocketThinIcon.png";
break;
}
btnSwitch.IsSelected = function.trait_on_off.value.ToString() == "on";
break;
case FunctionCategory.Electrical:
switch (function.functionType)
{
case FunctionType.Fan:
btnIcon.UnSelectedImagePath = "FunctionIcon/Electrical/FanThinIcon.png";
break;
case FunctionType.TV:
btnIcon.UnSelectedImagePath = "FunctionIcon/Electrical/TVThinIcon.png";
break;
}
btnSwitch.IsSelected = function.trait_on_off.value.ToString() == "on";
break;
}
#endregion
}
if (function.functionCategory != FunctionCategory.Scene)
{
LoadEvent_DivSkipEvent();
}
LoadEvent_FunctionCollection();
}
///
/// 加载控制卡片区域
///
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.collection
};
bodyDiv.AddChidren(btnCollectionIcon);
}
///
/// 加载灯光功能控制卡片
///
void LoadLightControl()
{
switch (function.functionType)
{
case FunctionType.Dimmer:
case FunctionType.RGB:
#region Dimmer
var btnDimmerMinValues = new Button()
{
X = Application.GetRealWidth(14),
Y = Application.GetRealHeight(85),
Width = Application.GetRealWidth(22),
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.value.ToString() == "on" ? CSS_Color.AuxiliaryColor1 : CSS_Color.PromptingColor2,
ProgressTextColor = CSS_Color.FirstLevelTitleColor,
ProgressTextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
MaxValue = 100,
Progress = (function as Light).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(35),
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;
}
}
///
/// 加载窗帘功能控制卡片
///
void CurtainFragment()
{
#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",
Tag = function.functionType + "_off_" + function.sid
};
bodyDiv.AddChidren(btnCurtainClose);
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",
};
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.functionType + "_on_" + function.sid
};
bodyDiv.AddChidren(btnCurtainOpen);
LoadEvent_ControlCurtain(btnCurtainStop, btnCurtainOpen, btnCurtainClose, function as Curtain);
#endregion
}
///
/// 加载音乐功能控制卡片
///
void MusicFragment()
{
#region Music
var btnPrev = new Button()
{
X = Application.GetRealWidth(163),
Y = Application.GetRealHeight(58),
Width = Application.GetMinRealAverage(32),
Height = Application.GetMinRealAverage(32),
UnSelectedImagePath = "MusicIcon/prev.png",
SelectedImagePath = "MusicIcon/prevSeletced.png",
};
bodyDiv.AddChidren(btnPrev);
var btnPlay = new Button()
{
X = Application.GetRealWidth(233),
Y = Application.GetRealHeight(58),
Width = Application.GetMinRealAverage(32),
Height = Application.GetMinRealAverage(32),
UnSelectedImagePath = "MusicIcon/pause.png",
SelectedImagePath = "MusicIcon/play.png",
IsSelected = (function as A31MusicModel).A31PlayStatus.status == "play" ,
Tag = function.functionType + "_State_" + function.sid
};
bodyDiv.AddChidren(btnPlay);
var btnNext = new Button()
{
X = Application.GetRealWidth(303),
Y = Application.GetRealHeight(58),
Width = Application.GetMinRealAverage(32),
Height = Application.GetMinRealAverage(32),
UnSelectedImagePath = "MusicIcon/next.png",
SelectedImagePath = "MusicIcon/nextSelected.png",
};
bodyDiv.AddChidren(btnNext);
LoadEvent_ControlMusic(btnPlay, btnNext, btnPrev, function as A31MusicModel);
#endregion
}
///
/// 加载功能状态信息按钮
///
void LoadLastStatesButton()
{
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.functionType + "_laststates_" + function.sid,
IsSelected = function.trait_on_off.value.ToString() == "on"
};
bodyDiv.AddChidren(btnLastStates);
}
}
}