using System;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using Shared;
namespace HDL_ON.UI
{
public partial class RGBPage : FrameLayout
{
#region 控件集合
static RGBPage bodyView;
///
/// 颜色选择区域
///
ColorPicker colorPicker;
///
/// 显示当前选中颜色的按钮
///
Button btnCurColor;
///
/// 功能名称
///
Button btnFunctionName;
///
/// 功能所属楼层、房间
///
Button btnFromFoorAndRoom;
///
/// 收藏按钮
///
Button btnCollection;
///
/// k开关按钮
///
Button btnSwitch;
///
/// 恢复默认颜色
///
Button btnRestoredPoint;
///
/// 调光进度条
///
DiyImageSeekBar dimmerBar;
///
/// 渐变时间进度条
///
DiyImageSeekBar barFadeTime;
///
/// 色盘里面那个会滑动的球
///
Button btnWhiteRound;
#endregion
#region 区域变量
Light lightTemp;
Button btnCollection_Out;
Button btnFunctionName_Out;
Button btnFromFloor_Out;
bool onDimmerBar = false;
Function function;
///
/// 最后打开的颜色
///
byte[] lastColor = new byte[3] { 255, 255, 255 };
///
/// 刷新显示信息
///
Action actionRefresh;
#endregion
public RGBPage(Function func)
{
bodyView = this;
function = func;
lightTemp = new Light();
}
public void LoadPage(Button btnCollectionIcon, Button btnFunctionNameOut, Button btnFromFloorOut)
{
btnCollection_Out = btnCollectionIcon;
btnFunctionName_Out = btnFunctionNameOut;
btnFromFloor_Out = btnFromFloorOut;
bodyView.BackgroundColor = CSS_Color.BackgroundColor;
//new TopViewDiv(bodyView, Language.StringByID(StringId.Lights)).LoadTopView(function,null);
//new PublicAssmebly().LoadTopView(bodyView, Language.StringByID(StringId.Lights), function);
FrameLayout controlView = new FrameLayout()
{
Gravity = Gravity.CenterHorizontal,
Y = Application.GetRealHeight(88),
Width = Application.GetRealWidth(327),
Height = Application.GetRealHeight(526),
BackgroundImagePath = "Public/Fragmentbg.png",
};
bodyView.AddChidren(controlView);
btnFunctionName = new Button()
{
X = Application.GetRealWidth(16),
Y = Application.GetRealHeight(14),
Width = Application.GetRealWidth(270),
Height = Application.GetRealHeight(37),
TextColor = CSS_Color.FirstLevelTitleColor,
TextAlignment = TextAlignment.CenterLeft,
TextSize = CSS_FontSize.EmphasisFontSize_FirstLevel,
Text = function.name,
};
controlView.AddChidren(btnFunctionName);
btnFromFoorAndRoom = new Button()
{
X = Application.GetRealWidth(16),
Y = btnFunctionName.Bottom,
Width = Application.GetRealWidth(270),
Height = Application.GetRealHeight(21),
TextColor = CSS_Color.PromptingColor1,
TextAlignment = TextAlignment.CenterLeft,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
Text = function.GetRoomListName()
};
controlView.AddChidren(btnFromFoorAndRoom);
btnCurColor = new Button()
{
X = Application.GetRealWidth(16),
Y = btnFromFoorAndRoom.Bottom,
Width = Application.GetMinRealAverage(24),
Height = Application.GetMinRealAverage(24),
Radius = (uint)Application.GetMinRealAverage(8),
BorderColor = CSS_Color.PromptingColor2,
BorderWidth = 1,
BackgroundColor = (uint)(0xFF000000 + lightTemp.GetRGBcolor(function.GetAttrState(FunctionAttributeKey.RGB)))
};
controlView.AddChidren(btnCurColor);
btnCollection = new Button()
{
X = Application.GetRealWidth(273),
Y = Application.GetRealHeight(14),
Width = Application.GetMinRealAverage(40),
Height = Application.GetMinRealAverage(40),
SelectedImagePath = "Collection/CollectionIcon.png",
UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
IsSelected = function.collect
};
controlView.AddChidren(btnCollection);
//2020-12-16 如果是成员隐藏收藏功能
//if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
//{
// controlView.AddChidren(btnCollection);
//}
//色盘的桌布控件(限制那个白色滑动球使用)
var framePickerBack = new FrameLayout();
framePickerBack.Gravity = Gravity.CenterHorizontal;
framePickerBack.Y = btnFromFoorAndRoom.Bottom + Application.GetRealHeight(1);
framePickerBack.Width = Application.GetMinRealAverage(216);
framePickerBack.Height = Application.GetMinRealAverage(216);
controlView.AddChidren(framePickerBack);
colorPicker = new ColorPicker()
{
ColorImagePath = "FunctionIcon/Light/ColorWheel.png",
};
framePickerBack.AddChidren(colorPicker);
if(function.trait_on_off.curValue.ToString() == "off")
{
colorPicker.ColorImagePath = "FunctionIcon/Light/ColorWheelGray.png";
}
//colorPicker.MouseDownEventHandler = (sender, e) => {
// MainPage.BasePageView.ScrollEnabled = false;
//};
//colorPicker.MouseUpEventHandler = (sender, e) => {
// MainPage.BasePageView.ScrollEnabled = true;
//};
//白点控件
this.btnWhiteRound = new Button();
btnWhiteRound.Width = Application.GetRealWidth(24);
btnWhiteRound.Height = Application.GetRealWidth(24);
btnWhiteRound.UnSelectedImagePath = "FunctionIcon/Light/ColorWheelTip.png";
btnWhiteRound.Visible = false;
framePickerBack.AddChidren(btnWhiteRound);
#region 亮度调节
var btnBrightnessText = new Button()
{
X = Application.GetRealWidth(35),
Y = Application.GetRealHeight(308),
Width = Application.GetRealWidth(224),
Height = Application.GetRealHeight(21),
TextAlignment = TextAlignment.CenterLeft,
TextColor = CSS_Color.FirstLevelTitleColor,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
TextID = StringId.Brightness,
};
controlView.AddChidren(btnBrightnessText);
var btnMinValuesText = new Button()
{
X = Application.GetRealWidth(35),
Y = btnBrightnessText.Bottom,
Width = Application.GetRealWidth(30),
Height = Application.GetRealHeight(21),
Text = "0%",
TextAlignment = TextAlignment.CenterLeft,
TextColor = CSS_Color.PromptingColor1,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
};
controlView.AddChidren(btnMinValuesText);
dimmerBar = new DiyImageSeekBar()
{
X = Application.GetRealWidth(35 + 22),
Y = Application.GetRealHeight(312),
Width = Application.GetRealWidth(210),
Height = Application.GetRealHeight(54),
SeekBarViewHeight = Application.GetRealHeight(8),
ThumbImagePath = "Public/ThumbImage.png",
ThumbImageHeight = Application.GetRealHeight(54),
ProgressTextColor = CSS_Color.FirstLevelTitleColor,
ProgressTextSize = CSS_FontSize.PromptFontSize_FirstLevel,
ProgressBarColor = function.trait_on_off.curValue.ToString() == "on" ? CSS_Color.AuxiliaryColor1 : CSS_Color.DividingLineColor,
MaxValue = 100,
Progress = Convert.ToInt32(function.GetAttrState(FunctionAttributeKey.Brightness)),
SeekBarPadding = Application.GetRealWidth(20),
};
controlView.AddChidren(dimmerBar);
var btnMaxValuesText = new Button()
{
X = dimmerBar.Right,
Y = btnBrightnessText.Bottom,
Width = Application.GetRealWidth(45),
Height = Application.GetRealHeight(21),
Text = "100%",
TextAlignment = TextAlignment.CenterLeft,
TextColor = CSS_Color.PromptingColor1,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
};
controlView.AddChidren(btnMaxValuesText);
#endregion
if (function.GetAttribute(FunctionAttributeKey.FadeTime) != null)
{
#region 渐变时间调节
var btnGradualChangeText = new Button()
{
X = Application.GetRealWidth(35),
Y = Application.GetRealHeight(375),
Width = Application.GetRealWidth(224),
Height = Application.GetRealHeight(21),
TextAlignment = TextAlignment.CenterLeft,
TextColor = CSS_Color.FirstLevelTitleColor,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
TextID = StringId.SpeedOfChange,
Visible = function.GetAttribute(FunctionAttributeKey.FadeTime) != null,
Enable = function.GetAttribute(FunctionAttributeKey.FadeTime) != null,
};
controlView.AddChidren(btnGradualChangeText);
var btnGradualChangeMinValuesText = new Button()
{
X = Application.GetRealWidth(35),
Y = btnGradualChangeText.Bottom + Application.GetRealHeight(10),
Width = Application.GetRealWidth(22),
Height = Application.GetRealHeight(21),
Text = "0s",
TextAlignment = TextAlignment.CenterLeft,
TextColor = CSS_Color.PromptingColor1,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
Visible = function.GetAttribute(FunctionAttributeKey.FadeTime) != null,
Enable = function.GetAttribute(FunctionAttributeKey.FadeTime) != null,
};
controlView.AddChidren(btnGradualChangeMinValuesText);
barFadeTime = new DiyImageSeekBar()
{
X = btnGradualChangeMinValuesText.Right,
Y = Application.GetRealHeight(412 - 21),
Width = Application.GetRealWidth(210),
Height = Application.GetRealHeight(54),
SeekBarViewHeight = Application.GetRealHeight(8),
ThumbImagePath = "Public/ThumbImage.png",
ThumbImageHeight = Application.GetRealHeight(54),
ProgressBarColor = CSS_Color.MainColor,
//SeekBarBackgroundColor = CSS_Color.MainColor,
ProgressTextColor = CSS_Color.FirstLevelTitleColor,
ProgressTextSize = CSS_FontSize.PromptFontSize_FirstLevel,
ProgressBarUnitSring = "s",
MaxValue = 10,
Progress = Convert.ToInt32(function.GetAttrState(FunctionAttributeKey.FadeTime)),
SeekBarPadding = Application.GetRealWidth(20),
Visible = function.GetAttribute(FunctionAttributeKey.FadeTime) != null,
Enable = function.GetAttribute(FunctionAttributeKey.FadeTime) != null,
};
controlView.AddChidren(barFadeTime);
barFadeTime.OnStopTrackingTouchEvent = (sender, e) =>
{
function.SetAttrState(FunctionAttributeKey.FadeTime, barFadeTime.Progress);
function.UpdataFuncitonInfo();
};
var btnGradualChangeMaxValuesText = new Button()
{
X = barFadeTime.Right,
Y = btnGradualChangeText.Bottom + Application.GetRealHeight(10),
Width = Application.GetRealWidth(35),
Height = Application.GetRealHeight(21),
Text = "10s",
TextAlignment = TextAlignment.CenterLeft,
TextColor = CSS_Color.PromptingColor1,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
Visible = function.GetAttribute(FunctionAttributeKey.FadeTime) != null,
Enable = function.GetAttribute(FunctionAttributeKey.FadeTime) != null,
};
controlView.AddChidren(btnGradualChangeMaxValuesText);
#endregion
}
btnRestoredPoint = new Button()
{
X = Application.GetRealWidth(116),
Y = Application.GetRealHeight(466),
Width = Application.GetMinRealAverage(32),
Height = Application.GetMinRealAverage(32),
UnSelectedImagePath = "Public/Restored_Shadow.png",
SelectedImagePath = "Public/Restored_Shadow.png",
};
controlView.AddChidren(btnRestoredPoint);
btnSwitch = new Button()
{
X = btnRestoredPoint.Right + Application.GetRealWidth(32),
Y = Application.GetRealHeight(466),
Width = Application.GetMinRealAverage(32),
Height = Application.GetMinRealAverage(32),
UnSelectedImagePath = "Public/PowerClose.png",
SelectedImagePath = "Public/PowerOpen.png",
IsSelected = function.trait_on_off.curValue.ToString() == "on"
};
controlView.AddChidren(btnSwitch);
LoadEventList();
new TopViewDiv(bodyView, Language.StringByID(StringId.Lights)).LoadTopView_FunctionTop(function, actionRefresh);
new System.Threading.Thread(() =>
{
DriverLayer.Control.Ins.SendReadCommand(function);
})
{ IsBackground = true }.Start();
}
}
}