using System;
using System.Collections.Generic;
using System.Threading;
using HDL_ON.DAL.Server;
using HDL_ON.DriverLayer;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using Shared;
namespace HDL_ON.UI
{
public class AddGroupControlPage : FrameLayout
{
#region 控件列表
///
/// 当前窗体
///
FrameLayout bodyView;
///
/// 楼层选择下拉图标
///
Button btnFloorDownIcon;
///
/// 楼层显示
///
Button btnFloor;
///
/// 全选按钮
///
Button btnChooseAll;
///
/// 功能列表集合显示区域
///
VerticalScrolViewLayout functionListView;
///
/// 完成按钮
///
Button btnConfrim;
#endregion
///
/// 功能列表
///
List groupControlLightList;
///
/// 本地的灯光列表
///
List lightList;
///
/// 回调刷新
///
Action backActon;
GroupControl groupControl;
public AddGroupControlPage(List functions, GroupControl groupControl, Action action)
{
bodyView = this;
groupControlLightList = functions;
backActon = action;
lightList = FunctionList.List.GetLightList();
this.groupControl = groupControl;
}
public void LoadPage()
{
bodyView.BackgroundColor = CSS_Color.BackgroundColor;
new TopViewDiv(bodyView, Language.StringByID(StringId.CombinedDimming)).LoadTopView();
var contentView = new FrameLayout()
{
Y = Application.GetRealHeight(64),
Height = Application.GetRealHeight(550),
};
bodyView.AddChidren(contentView);
#region 组名称
FrameLayout groupNameView;
groupNameView = new FrameLayout()
{
Height = Application.GetRealHeight(50),
BackgroundColor = CSS_Color.MainBackgroundColor,
};
contentView.AddChidren(groupNameView);
Button btnGroupNameTitle = new Button()
{
X = Application.GetRealWidth(16),
Width = Application.GetRealWidth(78),
TextID = StringId.GroupNmae,
TextAlignment = TextAlignment.CenterLeft,
TextSize = CSS_FontSize.SubheadingFontSize,
TextColor = CSS_Color.FirstLevelTitleColor,
};
groupNameView.AddChidren(btnGroupNameTitle);
var etGroupName = new EditText()
{
X = Application.GetRealWidth(155),
Width = Application.GetRealWidth(200),
PlaceholderText = Language.StringByID(StringId.PlsEntry),
TextSize = CSS_FontSize.TextFontSize,
TextAlignment = TextAlignment.CenterRight,
TextColor = CSS_Color.TextualColor,
};
groupNameView.AddChidren(etGroupName);
groupNameView.AddChidren(
new Button()
{
Gravity = Gravity.CenterHorizontal,
Y = Application.GetRealHeight(49),
Height = Application.GetRealHeight(1),
Width = Application.GetRealWidth(343),
BackgroundColor = CSS_Color.DividingLineColor,
});
#endregion
#region 位置管理
var locationMagtView = new FrameLayout()
{
Y = Application.GetRealHeight(50),
Height = Application.GetRealHeight(50),
BackgroundColor = CSS_Color.MainBackgroundColor,
};
contentView.AddChidren(locationMagtView);
var btnLocationMagtTitle = new Button()
{
X = Application.GetRealWidth(16),
Width = Application.GetRealWidth(160),
TextAlignment = TextAlignment.CenterLeft,
TextColor = CSS_Color.FirstLevelTitleColor,
TextSize = CSS_FontSize.SubheadingFontSize,
TextID = StringId.LocationManagement,
};
locationMagtView.AddChidren(btnLocationMagtTitle);
var btnLocationValues = new Button()
{
X = Application.GetRealWidth(86),
Width = Application.GetRealWidth(237),
TextAlignment = TextAlignment.CenterRight,
TextColor = CSS_Color.PromptingColor1,
TextSize = CSS_FontSize.TextFontSize,
Text = groupControl.GetRoomListName(),
};
locationMagtView.AddChidren(btnLocationValues);
var btnLocationInfoRight = new Button()
{
X = Application.GetRealWidth(339),
Gravity = Gravity.CenterVertical,
Width = Application.GetMinRealAverage(16),
Height = Application.GetMinRealAverage(16),
UnSelectedImagePath = "Public/RightIcon.png",
};
locationMagtView.AddChidren(btnLocationInfoRight);
EventHandler eventHandler = (sender, e) =>
{
//修改功能所属房间之后的回调事件
Action chooseRoomBackAction = () => {
try
{
btnLocationValues.Text = groupControl.GetRoomListName();
}
catch { }
};
var view = new GroupChooseRoomPage(groupControl, chooseRoomBackAction);
MainPage.BasePageView.AddChidren(view);
view.LoadPage();
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
};
btnLocationInfoRight.MouseUpEventHandler = eventHandler;
btnLocationValues.MouseUpEventHandler = eventHandler;
//locationMagtView.AddChidren(
// new Button()
// {
// Y = Application.GetRealHeight(49),
// Gravity = Gravity.CenterHorizontal,
// BackgroundColor = CSS_Color.DividingLineColor,
// Width = Application.GetRealWidth(343),
// Height = Application.GetRealHeight(1)
// });
#endregion
//contentView.AddChidren(new Button()
//{
// Y = Application.GetRealHeight(164),
// BackgroundColor = CSS_Color.BackgroundColor,
//});
///
/// 房间内容显示区域
///
var roomFloorChangeView = new FrameLayout()
{
Y = Application.GetRealHeight(172),
Height = Application.GetRealHeight(52),
BackgroundColor = CSS_Color.BackgroundColor,
};
bodyView.AddChidren(roomFloorChangeView);
#region 房间顶部切换显示区域
btnFloorDownIcon = new Button()
{
Width = Application.GetMinRealAverage(16),
Height = Application.GetMinRealAverage(16),
X = Application.GetRealWidth(16),
Y = Application.GetRealHeight(18),
UnSelectedImagePath = "Public/DownIcon.png",
};
roomFloorChangeView.AddChidren(btnFloorDownIcon);
btnFloor = new Button()
{
X = btnFloorDownIcon.Right,
Width = Application.GetRealWidth(200),
TextColor = CSS_Color.FirstLevelTitleColor,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
TextAlignment = TextAlignment.CenterLeft,
Text = DB_ResidenceData.Instance.CurFloor.roomName,
};
roomFloorChangeView.AddChidren(btnFloor);
btnChooseAll = new Button()
{
X = Application.GetRealWidth(245),
Width = Application.GetRealWidth(109),
TextAlignment = TextAlignment.CenterRight,
TextSize = CSS_FontSize.TextFontSize,
TextColor = CSS_Color.FirstLevelTitleColor,
TextID = StringId.SelectedAll,
};
if (groupControlLightList.Count > 0)
{
btnChooseAll.TextID = StringId.Cancel;
}
roomFloorChangeView.AddChidren(btnChooseAll);
btnChooseAll.MouseUpEventHandler = (sender, e) => {
if (groupControlLightList.Count > 0)
{
groupControlLightList.Clear();
btnChooseAll.TextID = StringId.SelectAll;
btnConfrim.IsSelected = false;
}
else
{
groupControlLightList.AddRange(lightList);
btnChooseAll.TextID = StringId.Cancel;
btnConfrim.IsSelected = true;
}
LoadLightRow(lightList);
};
#endregion
functionListView = new VerticalScrolViewLayout()
{
Y = Application.GetRealHeight(220),
Height = Application.GetRealHeight(640 - 12 - 52 - 100 -100),
};
bodyView.AddChidren(functionListView);
LoadLightRow(lightList);
functionListView.AddChidren(new Button()
{
Height = Application.GetRealHeight(10),
});
#region 底部view
var bottomView = new FrameLayout()
{
Y = Application.GetRealHeight(591),
Height = Application.GetRealHeight(100),
BackgroundColor = CSS_Color.MainBackgroundColor,
Radius = (uint)Application.GetRealWidth(12),
};
this.AddChidren(bottomView);
btnConfrim = new Button()
{
Y = Application.GetRealHeight(12),
Gravity = Gravity.CenterHorizontal,
Width = Application.GetRealWidth(220),
Height = Application.GetRealHeight(44),
Radius = (uint)Application.GetRealHeight(22),
TextAlignment = TextAlignment.Center,
TextColor = CSS_Color.MainBackgroundColor,
BackgroundColor = CSS_Color.BackgroundColor,
TextID = StringId.Confirm,
TextSize = CSS_FontSize.SubheadingFontSize,
SelectedTextColor = CSS_Color.MainBackgroundColor,
SelectedBackgroundColor = CSS_Color.MainColor,
};
bottomView.AddChidren(btnConfrim);
btnConfrim.MouseUpEventHandler = (sender, e) => {
if (btnConfrim.IsSelected)
{
//保存群控数据
var name = etGroupName.Text.Trim();
if (string.IsNullOrEmpty(name))
{
new PublicAssmebly().TipMsg(StringId.Tip, StringId.PlsEntryGroupName);
return;
}
groupControl.name = name;
groupControl.sids.Clear();
foreach (var light in groupControlLightList)
{
try
{
var gc = new GroupControlFunction();
gc.sid = light.sid;
gc.spk = light.spk;
groupControl.sids.Add(gc);
}
catch (Exception ex)
{
MainPage.Log($"新增群控转换数据异常:{ex.Message}");
}
}
try
{
var http = new HttpServerRequest();
var pack = http.AddGroupControl(new List() { groupControl });
if (pack != null)
{
if(pack.Code == StateCode.SUCCESS)
{
backActon?.Invoke();
this.RemoveFromParent();
}
else
{
IMessageCommon.Current.ShowErrorInfoAlter(pack.Code);
}
}
}
catch (Exception ex)
{
MainPage.Log($"新增群控异常:{ex.Message}");
}
}
};
#endregion
//加载功能筛选组件
LoadDialog_ChangeFloor();
}
///
/// 显示的设备的总数
///
int showCount = 0;
///
/// 加载功能row
///
///
void LoadLightRow(List functions, bool isAppend = false)
{
var waitPage = new Loading();
bodyView.AddChidren(waitPage);
waitPage.Start("");
new Thread(() =>
{
try
{
Application.RunOnMainThread(() =>
{
if (!isAppend)
{
showCount = 0;
functionListView.RemoveAll();
}
int i = 0;
foreach (var function in functions)
{
i++;
if (i > 100)
{
break;
}
showCount++;
var functionDiv = new LightRow(function)
{
Gravity = Gravity.CenterHorizontal,
//Width = Application.GetRealWidth(343),
Height = Application.GetRealHeight(62),
BorderColor = 0x00FFFFFF,
BorderWidth = 1,
BackgroundColor = CSS_Color.MainBackgroundColor,
Tag = function.spk + function.sid
};
functionDiv.AddChidren(new Button()
{
Y = Application.GetRealHeight(61),
Gravity = Gravity.CenterHorizontal,
Width = Application.GetRealWidth(343),
Height = Application.GetRealWidth(1),
BackgroundColor = CSS_Color.DividingLineColor,
});
Action setAction = () =>
{
if (groupControlLightList.Count > 0)
{
btnConfrim.IsSelected = true;
}
else
{
btnConfrim.IsSelected = false;
}
};
functionDiv.LoadDiv(groupControlLightList, setAction);
functionListView.AddChidren(functionDiv);
}
if (functions.Count > showCount)
{
var btnAppend = new Button()
{
Height = Application.GetRealHeight(60),
TextAlignment = TextAlignment.Center,
TextSize = CSS_FontSize.SubheadingFontSize,
TextColor = CSS_Color.FirstLevelTitleColor,
Text = "加载更多",
};
if (Language.CurrentLanguage != "Chinese")
{
btnAppend.Text = "Load more";
}
functionListView.AddChidren(btnAppend);
btnAppend.MouseUpEventHandler = (sender, e) =>
{
btnAppend.RemoveFromParent();
LoadLightRow(functions, true);
};
}
});
}
catch (Exception ex)
{
MainPage.Log("ShowFunctionRowError : " + ex.Message);
}
finally
{
Application.RunOnMainThread(() =>
{
if (waitPage != null)
{
waitPage.RemoveFromParent();
waitPage = null;
}
});
}
})
{ IsBackground = true }.Start();
}
///
/// 住宅列表点击事件
///
void LoadDialog_ChangeFloor()
{
string nowSelectId = null;
btnFloor.MouseUpEventHandler += (sender, e) =>
{
//显示下拉列表
var form = new FloorRoomSelectPopupView();
form.ShowDeviceFunctionView(btnFloor, this.lightList, (selectId, listFunc) =>
{
btnChooseAll.MouseUpEventHandler = (sender2, e2) => {
if (groupControlLightList.Count > 0)
{
groupControlLightList.Clear();
btnChooseAll.TextID = StringId.SelectAll;
btnConfrim.IsSelected = false;
}
else
{
groupControlLightList.AddRange(listFunc);
btnChooseAll.TextID = StringId.Cancel;
btnConfrim.IsSelected = true;
}
LoadLightRow(listFunc);
};
nowSelectId = selectId;
//重新加载界面
LoadLightRow(listFunc);
}, nowSelectId);
};
}
}
//public class LightRow : FrameLayout
//{
// #region 区域控件
// static FrameLayout bodyDiv;
// ///
// /// 功能/场景icon
// ///
// Button btnIcon;
// ///
// /// 功能名称/场景名称
// ///
// Button btnName;
// ///
// /// 楼层信息显示按钮
// ///
// Button btnFromFloor;
// ///
// /// 选中按钮
// ///
// Button btnSelect;
// #endregion
// #region 区域变量
// Function function;
// #endregion
// public LightRow(Function func)
// {
// bodyDiv = this;
// bodyDiv.Tag = func.sid;
// function = func;
// }
// ///
// /// 加载控制卡片区域
// ///
// public void LoadDiv(List functions, Action action)
// {
// btnIcon = new Button()
// {
// X = Application.GetRealWidth(10),
// Y = Application.GetRealHeight(15),
// Width = Application.GetRealWidth(32),
// Height = Application.GetRealWidth(32),
// UnSelectedImagePath = $"FunctionIcon/Icon/{function.IconName}.png"
// };
// 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);
// btnSelect = new Button()
// {
// X = Application.GetRealWidth(303),
// Gravity = Gravity.CenterVertical,
// Width = Application.GetRealWidth(32),
// Height = Application.GetRealWidth(32),
// UnSelectedImagePath = "FunctionIcon/Light/LightScene/CheckIcon.png",
// SelectedImagePath = "FunctionIcon/Light/LightScene/CheckOnIcon.png",
// IsSelected = functions.Find((obj) => obj.deviceId == function.deviceId) != null
// };
// bodyDiv.AddChidren(btnSelect);
// btnSelect.MouseUpEventHandler = (sender, e) => {
// btnSelect.IsSelected = !btnSelect.IsSelected;
// if (btnSelect.IsSelected)
// {
// var addTemp = functions.Find((obj) => obj.deviceId == function.deviceId);
// if (addTemp == null)
// {
// functions.Add(function);
// }
// }
// else
// {
// var removeTemp = functions.Find((obj) => obj.deviceId == function.deviceId);
// if (removeTemp != null)
// {
// functions.Remove(removeTemp);
// }
// }
// ///刷新界面
// if (functions.Count == 0 || functions.Count == 1)
// {
// action();
// }
// };
// }
//}
/////
///// 灯光场景编辑弹窗
/////
//public class LightSceneEditDialog : Dialog
//{
// Dictionary d = new Dictionary();
// List listSwitch = new List();
// List lightDimming = new List();
// List lightCCT = new List();
// List lightRGB = new List();
// ///
// /// 传入的灯光列表
// /// 加入场景控制功能列表
// ///
// List lights;
// ///
// /// 临时灯光对象
// /// 处理灯光方法
// ///
// Light tempLight = new Light();
// //发送数据收集
// Dictionary commandDic = new Dictionary();
// Scene scene;
// Action backAction;
// public LightSceneEditDialog(List functions, Scene inParScene, Action action)
// {
// lights = functions;
// scene = inParScene;
// backAction = action;
// }
// public void ShowDialog()
// {
// commandDic.Clear();
// commandDic.Add(FunctionAttributeKey.OnOff, "off");
// listSwitch = lights.FindAll((obj) => obj.spk == SPK.LightSwitch);
// lightDimming = lights.FindAll((obj) => obj.spk == SPK.LightDimming);
// lightCCT = lights.FindAll((obj) => obj.spk == SPK.LightCCT);
// lightRGB = lights.FindAll((obj) => obj.spk == SPK.LightRGB);
// var hadDimming = lightDimming.Count > 0;
// var hadCCT = lightCCT.Count > 0;
// var hadRGB = lightRGB.Count > 0;
// if (hadRGB)
// {
// commandDic.Add(FunctionAttributeKey.RGB, lightRGB[0].GetAttrState(FunctionAttributeKey.RGB));
// commandDic.Add(FunctionAttributeKey.Brightness, lightRGB[0].GetAttrState(FunctionAttributeKey.Brightness));
// }
// if (hadCCT)
// {
// commandDic.Add(FunctionAttributeKey.CCT, lightCCT[0].GetAttrState(FunctionAttributeKey.CCT));
// if (!commandDic.ContainsKey(FunctionAttributeKey.Brightness))
// {
// commandDic.Add(FunctionAttributeKey.Brightness, lightCCT[0].GetAttrState(FunctionAttributeKey.Brightness));
// }
// }
// if (hadDimming)
// {
// if (!commandDic.ContainsKey(FunctionAttributeKey.Brightness))
// {
// commandDic.Add(FunctionAttributeKey.Brightness, lightDimming[0].GetAttrState(FunctionAttributeKey.Brightness));
// }
// }
// var bodyView = new FrameLayout();
// this.AddChidren(bodyView);
// bodyView.MouseUpEventHandler = (sender, e) => {
// this.Close();
// };
// var contentView = new FrameLayout()
// {
// BackgroundColor = CSS_Color.MainBackgroundColor,
// Width = Application.GetRealWidth(343),
// Radius = (uint)Application.GetRealWidth(12),
// };
// bodyView.AddChidren(contentView);
// #region 标题区
// var titleView = new FrameLayout()
// {
// Width = Application.GetRealWidth(343),
// Height = Application.GetRealHeight(52),
// };
// contentView.AddChidren(titleView);
// var btnTitle = new Button()
// {
// Height = Application.GetRealHeight(52),
// Gravity = Gravity.Center,
// TextSize = CSS_FontSize.SubheadingFontSize,
// TextColor = CSS_Color.MainColor,
// TextID = StringId.CombinedDimming,
// TextAlignment = TextAlignment.Center,
// };
// if (btnTitle.GetTextWidth() > Application.GetRealWidth(197))//247
// {
// btnTitle.Width = Application.GetRealWidth(197);
// btnTitle.IsMoreLines = true;
// }
// else
// {
// btnTitle.Width = btnTitle.GetTextWidth() + Application.GetRealWidth(10);
// btnTitle.IsMoreLines = false;
// }
// titleView.AddChidren(btnTitle);
// var btnEditIcon = new Button()
// {
// Width = Application.GetRealWidth(24),
// Height = Application.GetRealWidth(24),
// X = Application.GetRealWidth(12) + btnTitle.Right,
// Gravity = Gravity.CenterVertical,
// UnSelectedImagePath = "Public/Edit.png",
// };
// if (string.IsNullOrEmpty(scene.userSceneId))
// {
// titleView.AddChidren(btnEditIcon);
// }
// else
// {
// btnTitle.Text = scene.name;
// btnTitle.Width = btnTitle.GetTextWidth() + Application.GetRealWidth(10);
// btnTitle.Gravity = Gravity.Center;
// }
// Action callBack = (str) =>
// {
// //名称不能为空
// if (string.IsNullOrEmpty(str))
// {
// new Tip()
// {
// CloseTime = 1,
// Text = Language.StringByID(StringId.NameCannotBeEmpty),
// Direction = AMPopTipDirection.None,
// }.Show(bodyView);
// return;
// }
// btnTitle.Text = str;
// scene.name = str;
// if (btnTitle.GetTextWidth() > Application.GetRealWidth(197))//247
// {
// btnTitle.Width = Application.GetRealWidth(197);
// }
// else
// {
// btnTitle.Width = btnTitle.GetTextWidth();
// }
// };
// EventHandler eventHandler = (sender, e) =>
// {
// List sceneNameList = new List();
// foreach (var tempScene in FunctionList.List.scenes)
// {
// sceneNameList.Add(tempScene.name);
// }
// new PublicAssmebly().LoadDialog_EditParater(StringId.SceneName, scene.name, callBack, StringId.SceneNameCannotBeEmpty, StringId.SceneNameAlreadyExists, sceneNameList);
// };
// btnTitle.MouseUpEventHandler = eventHandler;
// btnEditIcon.MouseUpEventHandler = eventHandler;
// titleView.AddChidren(new Button() { Height = 1, BackgroundColor = CSS_Color.DividingLineColor, Y = Application.GetRealHeight(51) });
// #endregion
// //var dimmingLight = lights.Find((obj) => obj.spk == SPK.LightDimming);
// //var cctLight = lights.Find((obj) => obj.spk == SPK.LightCCT);
// //var rgbLight = lights.Find((obj) => obj.spk == SPK.LightRGB);
// var dimmingLight = scene.functions.Find((obj) => obj.localFunction.spk == SPK.LightDimming);
// var cctLight = scene.functions.Find((obj) => obj.localFunction.spk == SPK.LightCCT);
// var rgbLight = scene.functions.Find((obj) => obj.localFunction.spk == SPK.LightRGB);
// var brightnessValue = 0;
// var cctValue = 27;
// //if(rgbLight!= null)
// //{
// // int.TryParse(rgbLight.status.Find((obj) => obj.key == FunctionAttributeKey.Brightness).value, out brightnessValue);
// //}
// //if (cctLight != null)
// //{
// // int.TryParse(cctLight.status.Find((obj) => obj.key == FunctionAttributeKey.Brightness).value, out brightnessValue);
// // int.TryParse(cctLight.status.Find((obj) => obj.key == FunctionAttributeKey.CCT).value, out cctValue);
// //}
// //if(dimmingLight!=null)
// //{
// // int.TryParse(cctLight.status.Find((obj) => obj.key == FunctionAttributeKey.CCT).value, out brightnessValue);
// //}
// //属性设置区域
// var attrView = new VerticalScrolViewLayout()
// {
// Y = Application.GetRealHeight(52),
// Width = Application.GetRealWidth(343),
// ScrollEnabled = false,
// };
// //属性设置区域高度
// int attrViewHight = Application.GetRealHeight(18 + 22);
// //只有继电器
// if (!hadDimming && !hadCCT && !hadRGB)
// {
// attrViewHight += Application.GetRealHeight(50);
// attrView.Height = attrViewHight;
// contentView.AddChidren(attrView);
// attrView.AddChidren(new Button() { Height = Application.GetRealHeight(18) });
// var view = new FrameLayout()
// {
// Width = Application.GetRealWidth(343),
// Height = Application.GetRealHeight(50),
// };
// attrView.AddChidren(view);
// var btnClose = new Button()
// {
// X = Application.GetRealWidth(50),
// Gravity = Gravity.CenterVertical,
// Width = Application.GetRealWidth(98),
// Height = Application.GetRealHeight(40),
// TextColor = CSS_Color.TextualColor,
// SelectedBackgroundColor = CSS_Color.MainColor,
// SelectedTextColor = CSS_Color.MainBackgroundColor,
// BackgroundColor = CSS_Color.DividingLineColor,
// TextID = StringId.OFF,
// TextSize = CSS_FontSize.TextFontSize,
// Radius = (uint)Application.GetRealWidth(5),
// IsSelected = true,
// //BorderWidth = 1,
// //BorderColor = 0x00000000
// };
// view.AddChidren(btnClose);
// var btnOpen = new Button()
// {
// X = Application.GetRealWidth(100 + 98),
// Gravity = Gravity.CenterVertical,
// Width = Application.GetRealWidth(98),
// Height = Application.GetRealHeight(40),
// TextColor = CSS_Color.TextualColor,
// SelectedBackgroundColor = CSS_Color.MainColor,
// SelectedTextColor = CSS_Color.MainBackgroundColor,
// BackgroundColor = CSS_Color.DividingLineColor,
// TextID = StringId.On,
// TextSize = CSS_FontSize.TextFontSize,
// Radius = (uint)Application.GetRealWidth(5),
// };
// view.AddChidren(btnOpen);
// btnClose.MouseUpEventHandler = (sender, e) =>
// {
// btnClose.IsSelected = true;
// btnOpen.IsSelected = false;
// commandDic[FunctionAttributeKey.OnOff] = "off";
// d.Clear();
// d.Add(FunctionAttributeKey.OnOff, "off");
// foreach (var light in lights)
// {
// Control.Ins.SendWriteCommand(light, d);
// }
// };
// btnOpen.MouseUpEventHandler = (sender, e) =>
// {
// btnClose.IsSelected = false;
// btnOpen.IsSelected = true;
// commandDic[FunctionAttributeKey.OnOff] = "on";
// d.Clear();
// d.Add(FunctionAttributeKey.OnOff, "on");
// foreach (var light in lights)
// {
// Control.Ins.SendWriteCommand(light, d);
// }
// };
// }
// else
// {
// if (hadRGB)
// {
// attrViewHight += Application.GetRealHeight(248);
// hadDimming = true;
// }
// if (hadCCT)
// {
// attrViewHight += Application.GetRealHeight(54 + 11);
// hadDimming = true;
// }
// if (hadDimming)
// {
// attrViewHight += Application.GetRealHeight(54 + 11);
// }
// attrView.Height = attrViewHight;
// contentView.AddChidren(attrView);
// attrView.AddChidren(new Button() { Height = Application.GetRealHeight(18) });
// if (hadDimming)
// {
// LoadDimmingAttrView(attrView);
// }
// if (hadCCT)
// {
// LoadCctAttrView(attrView);
// }
// if (hadRGB)
// {
// LoadRgbAttrView(attrView);
// }
// }
// contentView.Height = Application.GetRealHeight(52 + 44) + attrViewHight;
// contentView.Gravity = Gravity.Center;
// #region bottom View
// var bottomView = new FrameLayout()
// {
// Y = Application.GetRealHeight(52) + attrViewHight,
// Height = Application.GetRealHeight(46),
// };
// contentView.AddChidren(bottomView);
// bottomView.AddChidren(new Button() { Height = 1, BackgroundColor = CSS_Color.DividingLineColor });
// if (string.IsNullOrEmpty(scene.userSceneId))
// {
// var btnCacel = new Button()
// {
// Width = Application.GetRealWidth(172),
// Height = Application.GetRealHeight(44),
// TextAlignment = TextAlignment.Center,
// TextSize = CSS_FontSize.SubheadingFontSize,
// TextColor = CSS_Color.TextualColor,
// TextID = StringId.Cancel,
// };
// bottomView.AddChidren(btnCacel);
// var btnSave = new Button()
// {
// X = Application.GetRealWidth(172),
// Width = Application.GetRealWidth(172),
// Height = Application.GetRealHeight(46),
// BackgroundColor = CSS_Color.MainColor,
// TextColor = CSS_Color.MainBackgroundColor,
// TextAlignment = TextAlignment.Center,
// TextSize = CSS_FontSize.SubheadingFontSize,
// TextID = StringId.Save
// };
// bottomView.AddChidren(btnSave);
// //例:右下圆角 大小为50
// int mRectCornerID = HDLUtils.RectCornerBottomRight;
// btnSave.SetCornerWithSameRadius((uint)Application.GetRealWidth(14), mRectCornerID);
// btnCacel.MouseUpEventHandler = (sender, e) =>
// {
// this.Close();
// //var waitPage = new Loading();
// //MainPage.BaseView.AddChidren(waitPage);
// //waitPage.Start(Language.StringByID(StringId.PleaseWait));
// //new Thread(() =>
// //{
// // try
// // {
// // foreach (var light in lights)
// // {
// // Dictionary sendDate = new Dictionary();
// // //赋值场景功能数据
// // foreach (var attr in light.GetAttributes())
// // {
// // if (commandDic.ContainsKey(attr))
// // {
// // try
// // {
// // sendDate.Add(attr, commandDic[attr]);
// // }
// // catch { }
// // }
// // }
// // Control.Ins.SendWriteCommand(light, sendDate);
// // Thread.Sleep(50);
// // }
// // }
// // catch
// // { }
// // finally
// // {
// // Application.RunOnMainThread(() =>
// // {
// // waitPage.Hide();
// // new PublicAssmebly().TipMsgAutoClose("组合控制已执行", true);
// // if (waitPage != null)
// // {
// // //backAction(null);
// // waitPage.RemoveFromParent();
// // }
// // });
// // }
// //})
// //{ IsBackground = true }.Start();
// };
// btnSave.MouseUpEventHandler = (sender, e) =>
// {
// if (string.IsNullOrEmpty(scene.name))
// {
// new Tip()
// {
// CloseTime = 1,
// Text = Language.StringByID(StringId.NameCannotBeEmpty),
// Direction = AMPopTipDirection.None,
// }.Show(bodyView);
// return;
// }
// foreach (var tempRoom in FunctionList.List.scenes)
// {
// if (scene.name == tempRoom.name)
// {
// new PublicAssmebly().TipMsg(StringId.Tip, StringId.NameAlreadyExists);
// return;
// }
// }
// var waitPage = new Loading();
// MainPage.BaseView.AddChidren(waitPage);
// waitPage.Start(Language.StringByID(StringId.PleaseWait));
// new Thread(() =>
// {
// try
// {
// var serverScene = new Scene();
// for (int i = 0; i < lights.Count; i++)
// {
// var light = lights[i];
// //赋值场景功能数据
// foreach (var attr in light.GetAttributes())
// {
// if (commandDic.ContainsKey(attr))
// {
// try
// {
// light.SetAttrState(attr, commandDic[attr]);
// }
// catch { }
// }
// }
// //转换场景的功能对象
// var sceneFunction = light.ConvertSceneFunction();
// //查询有没有存在
// var temp = scene.functions.Find((obj) => obj.sid == sceneFunction.sid);
// //赋值
// if (temp != null)
// {
// temp = sceneFunction;
// }
// else
// {
// scene.functions.Add(sceneFunction);
// }
// }
// var result = FunctionList.List.AddScene(scene, out serverScene);
// Application.RunOnMainThread(() =>
// {
// if (result == StateCode.SUCCESS)
// {
// scene.userSceneId = serverScene.userSceneId;
// FunctionList.List.scenes.Add(scene);
// backAction?.Invoke(scene);
// this.Close();
// }
// else
// {
// if (result == "124005")
// IMessageCommon.Current.ShowErrorInfoAlter(Language.StringByID(StringId.GatewayOffline));
// else
// IMessageCommon.Current.ShowErrorInfoAlter(result);
// }
// });
// }
// catch { }
// finally
// {
// Application.RunOnMainThread(() =>
// {
// waitPage.Hide();
// waitPage.RemoveFromParent();
// });
// }
// })
// { IsBackground = true, Priority = ThreadPriority.AboveNormal }.Start();
// };
// }
// else
// {
// var btnCacel = new Button()
// {
// Height = Application.GetRealHeight(44),
// TextAlignment = TextAlignment.Center,
// TextSize = CSS_FontSize.SubheadingFontSize,
// TextColor = CSS_Color.TextualColor,
// TextID = StringId.Close,
// };
// bottomView.AddChidren(btnCacel);
// //例:右下圆角 大小为50
// //int mRectCornerID = HDLUtils.RectCornerBottomRight;
// //btnSave.SetCornerWithSameRadius((uint)Application.GetRealWidth(14), mRectCornerID);
// btnCacel.MouseUpEventHandler = (sender, e) =>
// {
// this.Close();
// };
// }
// #endregion
// this.Show();
// }
// ///
// /// 加载调光属性设置控件
// ///
// ///
// void LoadDimmingAttrView(VerticalScrolViewLayout attrView)
// {
// string briValue = "";
// commandDic.TryGetValue(FunctionAttributeKey.Brightness, out briValue);
// var dimmingView = new FrameLayout()
// {
// Height = Application.GetRealHeight(54 + 11)
// };
// attrView.AddChidren(dimmingView);
// #region 亮度调节
// var btnBrightnessText = new Button()
// {
// X = Application.GetRealWidth(35),
// Y = Application.GetRealHeight(1),
// Width = Application.GetRealWidth(224),
// Height = Application.GetRealHeight(25),
// TextAlignment = TextAlignment.CenterLeft,
// TextColor = CSS_Color.FirstLevelTitleColor,
// TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
// TextID = StringId.Brightness,
// };
// btnBrightnessText.Text = Language.StringByID(StringId.Brightness) + " " + commandDic[FunctionAttributeKey.Brightness] + "%";
// dimmingView.AddChidren(btnBrightnessText);
// var btnMinValuesText = new Button()
// {
// X = Application.GetRealWidth(35),
// Y = btnBrightnessText.Bottom,
// Width = Application.GetRealWidth(40),
// Height = Application.GetRealHeight(21),
// Text = "0%",
// TextAlignment = TextAlignment.CenterLeft,
// TextColor = CSS_Color.PromptingColor1,
// TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
// };
// dimmingView.AddChidren(btnMinValuesText);
// var dimmerBar = new DiyImageSeekBar()
// {
// X = Application.GetRealWidth(45 + 10),
// Y = Application.GetRealHeight(11),
// Width = Application.GetRealWidth(220),
// 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 = CSS_Color.AuxiliaryColor1,
// MaxValue = 100,
// Progress = Convert.ToInt32(commandDic[FunctionAttributeKey.Brightness]),
// SeekBarPadding = Application.GetRealWidth(20),
// IsProgressTextShow = false,
// ProgressChangeDelayTime = 0,
// };
// dimmingView.AddChidren(dimmerBar);
// dimmerBar.OnProgressChangedEvent = (sender, e) => {
// btnBrightnessText.Text = Language.StringByID(StringId.Brightness) + " " + e + "%";
// };
// dimmerBar.OnStopTrackingTouchEvent = (sender, e) => {
// commandDic[FunctionAttributeKey.Brightness] = dimmerBar.Progress.ToString();
// btnBrightnessText.Text = Language.StringByID(StringId.Brightness) + " " + e + "%";
// foreach (var light in lights)
// {
// if (light.spk == SPK.LightSwitch)
// {
// d.Clear();
// d.Add(FunctionAttributeKey.OnOff, e > 0 ? "on" : "off");
// Control.Ins.SendWriteCommand(light, d);
// }
// else
// {
// d.Clear();
// d.Add(FunctionAttributeKey.Brightness, e.ToString());
// Control.Ins.SendWriteCommand(light, d);
// }
// }
// };
// var btnMaxValuesText = new Button()
// {
// X = dimmerBar.Right,
// Y = btnBrightnessText.Bottom,
// Width = Application.GetRealWidth(55),
// Height = Application.GetRealHeight(21),
// Text = "100%",
// TextAlignment = TextAlignment.CenterLeft,
// TextColor = CSS_Color.PromptingColor1,
// TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
// };
// dimmingView.AddChidren(btnMaxValuesText);
// #endregion
// }
// ///
// /// 加载cct属性设置控件
// ///
// ///
// void LoadCctAttrView(VerticalScrolViewLayout attrView)
// {
// #region 色温
// string valueStr = "2700";
// commandDic.TryGetValue(FunctionAttributeKey.CCT, out valueStr);
// int value = Convert.ToInt32(valueStr) / 100;
// var cctView = new FrameLayout()
// {
// Height = Application.GetRealHeight(54 + 11)
// };
// attrView.AddChidren(cctView);
// //色温
// var btnTempClolor = new Button();
// btnTempClolor.X = Application.GetRealWidth(35);
// btnTempClolor.Y = Application.GetRealHeight(1);
// btnTempClolor.Width = Application.GetRealWidth(224);
// btnTempClolor.Height = Application.GetRealHeight(21);
// btnTempClolor.TextAlignment = TextAlignment.CenterLeft;
// btnTempClolor.TextColor = CSS_Color.FirstLevelTitleColor;
// btnTempClolor.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
// btnTempClolor.TextID = StringId.ColorTemperature;
// cctView.AddChidren(btnTempClolor);
// //2700K
// var btnTempClolorMin = new Button()
// {
// X = Application.GetRealWidth(35),
// Y = btnTempClolor.Bottom,
// Width = Application.GetRealWidth(40),
// Height = Application.GetRealHeight(21),
// };
// btnTempClolorMin.Width = Application.GetRealWidth(54);
// btnTempClolorMin.Height = Application.GetRealHeight(21);
// btnTempClolorMin.Text = "2700K";
// btnTempClolorMin.TextAlignment = TextAlignment.CenterLeft;
// btnTempClolorMin.TextColor = CSS_Color.PromptingColor1;
// btnTempClolorMin.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
// cctView.AddChidren(btnTempClolorMin);
// //滑动条的背景图片
// var btnColorTemplatrueBack = new Button()
// {
// X = Application.GetRealWidth(55 + 22 + 15),
// Y = Application.GetRealHeight(11),
// Width = Application.GetRealWidth(180),
// Height = Application.GetRealHeight(54),
// };
// btnColorTemplatrueBack.UnSelectedImagePath = "FunctionIcon/Light/ColorTemperatureBar.png";
// btnColorTemplatrueBack.Height = Application.GetRealHeight(8);
// btnColorTemplatrueBack.Gravity = Gravity.CenterHorizontal;
// cctView.AddChidren(btnColorTemplatrueBack);
// //滑动条控件
// var barColorTemplatrue = new CCTSeekBarControl()
// {
// X = Application.GetRealWidth(55 + 22),
// Y = Application.GetRealHeight(11),
// Width = Application.GetRealWidth(220),
// Height = Application.GetRealHeight(54),
// };
// barColorTemplatrue.MinValue = 27;
// barColorTemplatrue.MaxValue = 65;
// barColorTemplatrue.ProgressBarColor = 0x00000000;//全部透明
// barColorTemplatrue.ProgressBarUnEnableColor = 0x00000000;
// barColorTemplatrue.SeekBarBackgroundColor = 0x00000000;
// cctView.AddChidren(barColorTemplatrue);
// barColorTemplatrue.Y = btnTempClolorMin.Y - (barColorTemplatrue.Height - btnTempClolorMin.Height) / 2;
// barColorTemplatrue.Progress = value;
// //设置初始值
// btnTempClolor.Text = Language.StringByID(StringId.ColorTemperature) + " " + (barColorTemplatrue.Progress * 100 + "K");
// barColorTemplatrue.OnProgressChangedEvent = (sender, e) =>
// {
// btnTempClolor.Text = Language.StringByID(StringId.ColorTemperature) + " " + (barColorTemplatrue.Progress * 100 + "K");
// };
// barColorTemplatrue.OnStopTrackingTouchEvent = (sender, e) =>
// {
// commandDic[FunctionAttributeKey.CCT] = (barColorTemplatrue.Progress * 100).ToString();
// d.Clear();
// d.Add(FunctionAttributeKey.CCT, (barColorTemplatrue.Progress * 100).ToString());
// foreach (var light in lightCCT)
// {
// if (light.spk == SPK.LightCCT)
// {
// Control.Ins.SendWriteCommand(light, d);
// }
// }
// };
// //变更背景图的Y轴坐标
// btnColorTemplatrueBack.Y = barColorTemplatrue.Y + (barColorTemplatrue.Height - btnColorTemplatrueBack.Height) / 2;
// //6500K
// var btnTempClolorMax = new Button();
// btnTempClolorMax.Y = btnTempClolorMin.Y;
// btnTempClolorMax.X = barColorTemplatrue.Right - Application.GetRealWidth(30);
// btnTempClolorMax.Width = Application.GetRealWidth(54);
// btnTempClolorMax.Height = Application.GetRealHeight(21);
// btnTempClolorMax.Text = "6500K";
// btnTempClolorMax.TextAlignment = TextAlignment.CenterRight;
// btnTempClolorMax.TextColor = CSS_Color.PromptingColor1;
// btnTempClolorMax.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
// cctView.AddChidren(btnTempClolorMax);
// #endregion
// }
// ///
// /// 加载rgb属性设置控件
// ///
// ///
// void LoadRgbAttrView(VerticalScrolViewLayout attrView)
// {
// #region RGB
// string value = "255,255,255";
// commandDic.TryGetValue(FunctionAttributeKey.RGB, out value);
// var rgbView = new FrameLayout()
// {
// Height = Application.GetRealHeight(248)
// };
// attrView.AddChidren(rgbView);
// var btnCurColor = new Button()
// {
// X = Application.GetRealWidth(24),
// Y = Application.GetRealHeight(10),
// Width = Application.GetMinRealAverage(24),
// Height = Application.GetMinRealAverage(24),
// Radius = (uint)Application.GetMinRealAverage(8),
// BorderColor = CSS_Color.PromptingColor2,
// BorderWidth = 1,
// BackgroundColor = (uint)(0xFF000000 + tempLight.GetRGBcolor(commandDic[FunctionAttributeKey.RGB]))
// };
// rgbView.AddChidren(btnCurColor);
// //色盘的桌布控件(限制那个白色滑动球使用)
// var framePickerBack = new FrameLayout();
// framePickerBack.Gravity = Gravity.CenterHorizontal;
// framePickerBack.Y = Application.GetRealHeight(20);
// framePickerBack.Width = Application.GetMinRealAverage(198);
// framePickerBack.Height = Application.GetMinRealAverage(198);
// rgbView.AddChidren(framePickerBack);
// var colorPicker = new ColorPicker()
// {
// ColorImagePath = "FunctionIcon/Light/ColorWheel.png",
// };
// framePickerBack.AddChidren(colorPicker);
// //白点控件
// var 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);
// //当前点击的【点】是否正确
// bool pointIsRight = false;
// //圆的半径(考虑边界,需要设置它的半径比较小一点)
// int circleR = colorPicker.Width / 2 - Application.GetRealWidth(12);
// colorPicker.MouseUpEventHandler = (sender2, e) => {
// d.Clear();
// d.Add(FunctionAttributeKey.RGB, commandDic[FunctionAttributeKey.RGB]);
// foreach (var light in lightCCT)
// {
// if (light.spk == SPK.LightCCT)
// {
// Control.Ins.SendWriteCommand(light, d);
// }
// }
// };
// colorPicker.ColorChaged += (sender2, e2) => {
// string rgbString = (e2[0] + "," + e2[1] + "," + e2[2]).ToString();
// commandDic[FunctionAttributeKey.RGB] = rgbString;
// btnCurColor.BackgroundColor = (uint)(0xFF000000 + tempLight.GetRGBcolor(rgbString));
// foreach (var rgbTemp in lightRGB)
// {
// rgbTemp.SetAttrState(FunctionAttributeKey.RGB, rgbString);
// }
// };
// colorPicker.MouseDownEventHandler += (sender, e) =>
// {
// pointIsRight = this.CheckPoint(circleR, colorPicker.Width / 2, colorPicker.Height / 2, (int)e.X, (int)e.Y);
// if (pointIsRight == false)
// {
// //点的区域不是圆盘内
// return;
// }
// //显示白点
// btnWhiteRound.X = (int)e.X - btnWhiteRound.Width / 2;
// btnWhiteRound.Y = (int)e.Y - btnWhiteRound.Height / 2;
// if (btnWhiteRound.Visible == false)
// {
// btnWhiteRound.Visible = true;
// }
// };
// colorPicker.MouseUpEventHandler = (sender, e) => {
// foreach (var rgbTemp in lightRGB)
// {
// Dictionary d = new Dictionary();
// d.Add(FunctionAttributeKey.RGB, tempLight.GetRGBcolorString(rgbTemp));
// Control.Ins.SendWriteCommand(rgbTemp, d, false, 0);
// }
// };
// colorPicker.MouseMoveEventHandler += (sender, e) =>
// {
// //当鼠标点下事件处理
// colorPicker.MouseDownEventHandler(sender, e);
// };
// #endregion
// }
// ///
// /// 检测点击点
// ///
// /// 圆的半径
// /// 圆心X轴
// /// 圆心Y轴
// /// 点击点的X轴
// /// 点击点的Y轴
// ///
// private bool CheckPoint(int circleR, int circleX, int circleY, int pointX, int pointY)
// {
// int dwidth = circleX - pointX;
// if (dwidth < 0) { dwidth *= -1; }
// int dHeight = circleY - pointY;
// if (dHeight < 0) { dHeight *= -1; }
// //根据三角函数,求三角形的斜边长
// int dlength = dwidth * dwidth + dHeight * dHeight;
// //半径长度(不开方,所以是按平方算)
// circleR *= circleR;
// if (dlength < circleR)
// {
// //如果组成的三角形并没有长过半径,则代表还在圆内(不允许点边界)
// return true;
// }
// return false;
// }
//}
}