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; // } //} }