From db45c85a6ddebc5018b32a9d9dc04f839db3fa76 Mon Sep 17 00:00:00 2001 From: wei <kaede@kaededeMacBook-Air.local> Date: 星期二, 28 九月 2021 15:59:34 +0800 Subject: [PATCH] 组合调光 --- HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs | 1042 ++++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 732 insertions(+), 310 deletions(-) diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs index a14cbfe..4e22ef5 100644 --- a/HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs +++ b/HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs @@ -1,5 +1,8 @@ 锘縰sing 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; @@ -25,21 +28,43 @@ /// 鍔熻兘鍒楄〃闆嗗悎鏄剧ず鍖哄煙 /// </summary> static VerticalScrolViewLayout functionListView; - #endregion + /// <summary> + /// 瀹屾垚鎸夐挳 + /// </summary> + Button btnConfrim; + #endregion + /// <summary> + /// 鍦烘櫙閲岄潰鐨勫姛鑳藉垪琛� + /// </summary> List<Function> sceneLishtList; - Scene lightScene; - public AddLightScene(List<Function> functions,Scene scene) + /// <summary> + /// 鏈湴鐨勭伅鍏夊垪琛� + /// </summary> + List<Function> lightList; + /// <summary> + /// 鍦烘櫙瀵硅薄 + /// </summary> + Scene scene; + /// <summary> + /// 鍥炶皟鍒锋柊 + /// </summary> + Action<Scene> backActon; + + public AddLightScene(List<Function> functions,Scene inParscene, Action<Scene> action) { bodyView = this; sceneLishtList = functions; - lightScene = scene; + scene = inParscene; + backActon = action; + lightList = FunctionList.List.GetLightList(); } public void LoadPage() { bodyView.BackgroundColor = CSS_Color.BackgroundColor; new TopViewDiv(bodyView, Language.StringByID(StringId.CombinedDimming)).LoadTopView(); + scene.name = Language.StringByID(StringId.CombinedDimming); /// <summary> /// 鎴块棿鍐呭鏄剧ず鍖哄煙 @@ -78,13 +103,68 @@ functionListView = new VerticalScrolViewLayout() { Y = Application.GetRealHeight(64 + 52), - Height = Application.GetRealHeight(603 - 12 - 52), + Height = Application.GetRealHeight(640 - 12 - 52 -100), }; bodyView.AddChidren(functionListView); - var lightList = FunctionList.List.GetLightList(); - foreach (var function in lightList) + LoadLightRow(lightList); + + #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) + { + Action<Scene> action = (objScene) => + { + backActon(objScene); + this.RemoveFromParent(); + }; + + var lightSceneDialog = new LightSceneEditDialog(sceneLishtList, scene, action); + lightSceneDialog.ShowDialog(); + } + }; + + #endregion + + //鍔犺浇鍔熻兘绛涢�夌粍浠� + LoadDialog_ChangeFloor(); + } + + /// <summary> + /// 鍔犺浇鍔熻兘row + /// </summary> + /// <param name="lightList"></param> + void LoadLightRow(List<Function> functions) + { + functionListView.RemoveAll(); + + foreach (var function in functions) { var functionDiv = new LightRow(function) { @@ -97,42 +177,45 @@ BackgroundColor = CSS_Color.MainBackgroundColor, Tag = function.spk + function.sid }; - functionDiv.LoadDiv(sceneLishtList); + + Action setAction = () => + { + if (sceneLishtList.Count > 0) + { + btnConfrim.IsSelected = true; + } + else + { + btnConfrim.IsSelected = false; + } + }; + + functionDiv.LoadDiv(sceneLishtList,setAction); functionListView.AddChidren(functionDiv); functionListView.AddChidren(new Button() { Height = Application.GetRealHeight(12) }); } + } - #region 搴曢儴view - var bottomView = new FrameLayout() + + /// <summary> + /// 浣忓畢鍒楄〃鐐瑰嚮浜嬩欢 + /// </summary> + void LoadDialog_ChangeFloor() + { + string nowSelectId = null; + btnFloor.MouseUpEventHandler += (sender, e) => { - Y = Application.GetRealHeight(591), - Height = Application.GetRealHeight(100), - BackgroundColor = CSS_Color.MainBackgroundColor, - Radius = (uint)Application.GetRealWidth(12), + //鏄剧ず涓嬫媺鍒楄〃 + var form = new FloorRoomSelectPopupView(); + form.ShowDeviceFunctionView(btnFloor, this.lightList, (selectId, listFunc) => + { + nowSelectId = selectId; + //閲嶆柊鍔犺浇鐣岄潰 + LoadLightRow(listFunc); + }, nowSelectId); }; - this.AddChidren(bottomView); - - var 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.MainColor, - TextID = StringId.Confirm, - }; - bottomView.AddChidren(btnConfrim); - btnConfrim.MouseUpEventHandler = (sender, e) => { - var lightSceneDialog = new LightSceneEditDialog(sceneLishtList,lightScene); - lightSceneDialog.ShowDialog(); - }; - - #endregion } } @@ -174,7 +257,7 @@ /// <summary> /// 鍔犺浇鎺у埗鍗$墖鍖哄煙 /// </summary> - public void LoadDiv(List<Function> functions) + public void LoadDiv(List<Function> functions,Action action) { btnIcon = new Button() { @@ -242,6 +325,11 @@ functions.Remove(removeTemp); } } + ///鍒锋柊鐣岄潰 + if (functions.Count == 0 || functions.Count == 1) + { + action(); + } }; } @@ -254,19 +342,33 @@ /// </summary> public class LightSceneEditDialog :Dialog { + /// <summary> + /// 浼犲叆鐨勭伅鍏夊垪琛� + /// 鍔犲叆鍦烘櫙鎺у埗鍔熻兘鍒楄〃 + /// </summary> List<Function> lights; + /// <summary> + /// 涓存椂鐏厜瀵硅薄 + /// 澶勭悊鐏厜鏂规硶 + /// </summary> + Light tempLight = new Light(); + //鍙戦�佹暟鎹敹闆� + Dictionary<string, string> commandDic = new Dictionary<string, string>(); - Scene editScene; - - public LightSceneEditDialog(List<Function> functions,Scene scene) + Scene scene; + Action<Scene> backAction; + public LightSceneEditDialog(List<Function> functions,Scene inParScene,Action<Scene> action) { lights = functions; - editScene = scene; + scene = inParScene; + backAction = action; } public void ShowDialog() { + commandDic.Add(FunctionAttributeKey.OnOff, "off"); + var hadDimming = lights.Find((obj) => obj.spk == SPK.LightDimming) != null; var hadCCT = lights.Find((obj) => obj.spk == SPK.LightCCT) != null; var hadRGB = lights.Find((obj) => obj.spk == SPK.LightRGB) != null; @@ -285,7 +387,6 @@ bodyView.AddChidren(contentView); #region 鏍囬鍖� - bool inEdit = false;//鏄惁鍦ㄧ紪杈戞爣棰� var titleView = new FrameLayout() { Width = Application.GetRealWidth(343), @@ -321,48 +422,74 @@ X = Application.GetRealWidth(12) + btnTitle.Right, Gravity = Gravity.CenterVertical, UnSelectedImagePath = "Public/Edit.png", - SelectedImagePath = "Public/HookIcon.png" + //SelectedImagePath = "Public/HookIcon.png" }; titleView.AddChidren(btnEditIcon); - EventHandler<MouseEventArgs> dd = (sender, e) => - { - inEdit = !inEdit; - btnEditIcon.IsSelected = inEdit; - - if (inEdit) + Action<string> callBack = (str) => { - btnTitle.Width = btnTitle.GetTextWidth(); - } - else - { - if (btnTitle.GetTextWidth() > Application.GetRealWidth(197))//247 + //鍚嶇О涓嶈兘涓虹┖ + 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(); } - editScene.name = btnTitle.Text.Trim(); + + }; + EventHandler<MouseEventArgs> eventHandler = (sender, e) => + { + List<string> sceneNameList = new List<string>(); + 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 = dd; - btnEditIcon.MouseUpEventHandler = dd; + btnTitle.MouseUpEventHandler = eventHandler; + btnEditIcon.MouseUpEventHandler = eventHandler; titleView.AddChidren(new Button() { Height = 1, BackgroundColor = CSS_Color.DividingLineColor, Y = Application.GetRealHeight(51) }); #endregion - var dimmingLight = editScene.functions.Find((obj) => obj.localFunction.spk == SPK.LightDimming); - var cctLight = editScene.functions.Find((obj) => obj.localFunction.spk == SPK.LightCCT); - var rgbLight = editScene.functions.Find((obj) => obj.localFunction.spk == SPK.LightRGB); + //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 cctValue); } @@ -372,83 +499,113 @@ { Y = Application.GetRealHeight(52), Width = Application.GetRealWidth(343), + ScrollEnabled = false, }; //灞炴�ц缃尯鍩熼珮搴� - int attrViewHight = Application.GetRealHeight(27 + 22); - attrView.AddChidren(new Button() { Height = Application.GetRealHeight(27) }); + int attrViewHight = Application.GetRealHeight(18 + 22); - if (hadDimming) + + //鍙湁缁х數鍣� + if (!hadDimming && !hadCCT && !hadRGB) { - attrViewHight += Application.GetRealHeight(54 + 11); - var dimmingView = new FrameLayout(); - attrView.AddChidren(dimmingView); + attrViewHight += Application.GetRealHeight(50); + attrView.Height = attrViewHight; + contentView.AddChidren(attrView); + attrView.AddChidren(new Button() { Height = Application.GetRealHeight(18) }); - - #region 浜害璋冭妭 - var btnBrightnessText = new Button() + var view = new FrameLayout() { - X = Application.GetRealWidth(35), - Y = Application.GetRealHeight(1), - Width = Application.GetRealWidth(224), - Height = Application.GetRealHeight(21), - TextAlignment = TextAlignment.CenterLeft, - TextColor = CSS_Color.FirstLevelTitleColor, - TextSize = CSS_FontSize.PromptFontSize_FirstLevel, - TextID = StringId.Brightness, - BackgroundColor = 0xFFFF0000 + Width = Application.GetRealWidth(343), + Height = Application.GetRealHeight(50), }; - dimmingView.AddChidren(btnBrightnessText); + attrView.AddChidren(view); + - var btnMinValuesText = new Button() + var btnClose = 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, + 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 }; - dimmingView.AddChidren(btnMinValuesText); + view.AddChidren(btnClose); - var dimmerBar = new DiyImageSeekBar() + var btnOpen = new Button() { - X = Application.GetRealWidth(35 + 22), - Y = Application.GetRealHeight(11), - 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 = CSS_Color.AuxiliaryColor1, - MaxValue = 100, - Progress = brightnessValue, - SeekBarPadding = Application.GetRealWidth(20), + 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), }; - //dimmingView.AddChidren(dimmerBar); + view.AddChidren(btnOpen); - var btnMaxValuesText = new Button() + btnClose.MouseUpEventHandler = (sender, e) => { - 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, + btnClose.IsSelected = true; + btnOpen.IsSelected = false; + commandDic[FunctionAttributeKey.OnOff] = "off"; }; - dimmingView.AddChidren(btnMaxValuesText); - #endregion - + btnOpen.MouseUpEventHandler = (sender, e) => + { + btnClose.IsSelected = false; + btnOpen.IsSelected = true; + commandDic[FunctionAttributeKey.OnOff] = "on"; + }; } - attrView.Height = attrViewHight; - contentView.AddChidren(attrView); + 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; @@ -459,9 +616,10 @@ var bottomView = new FrameLayout() { Y = Application.GetRealHeight(52) + attrViewHight, - Height = Application.GetRealHeight(44), + Height = Application.GetRealHeight(46), }; contentView.AddChidren(bottomView); + bottomView.AddChidren(new Button() { Height = 1, BackgroundColor = CSS_Color.DividingLineColor }); var btnSave = new Button() { @@ -489,212 +647,476 @@ //渚嬶細鍙充笅鍦嗚 澶у皬涓�50 int mRectCornerID = HDLUtils.RectCornerBottomRight; - btnComplete.SetCornerWithSameRadius((uint)Application.GetMinRealAverage(12), mRectCornerID); - - bottomView.AddChidren(new Button() { Height = 1, BackgroundColor = CSS_Color.DividingLineColor }); + btnComplete.SetCornerWithSameRadius((uint)Application.GetRealWidth(14), mRectCornerID); - btnSave.MouseUpEventHandler = (sender, e) => { - this.Close(); - - - }; btnComplete.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<string, string> sendDate = new Dictionary<string, string>(); + //璧嬪�煎満鏅姛鑳芥暟鎹� + 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(); + 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.SceneNameCannotBeEmpty), + Direction = AMPopTipDirection.None, + }.Show(bodyView); + return; + } + foreach (var tempRoom in FunctionList.List.scenes) + { + if (scene.name == tempRoom.name) + { + new PublicAssmebly().TipMsg(StringId.Tip, StringId.SceneNameAlreadyExists); + 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 = serverScene; + FunctionList.List.scenes.Add(scene); + backAction(scene); + this.Close(); + } + else + { + IMessageCommon.Current.ShowErrorInfoAlter(result); + } + }); + } + catch { } + finally + { + Application.RunOnMainThread(() => { + waitPage.Hide(); + waitPage.RemoveFromParent(); + }); + } + }) + { IsBackground = true, Priority = ThreadPriority.AboveNormal }.Start(); + }; + + + + #endregion this.Show(); - return; - //鍙湁璋冨厜鍣� - if (!hadDimming&&!hadCCT&&!hadRGB) - { - contentView.Height = Application.GetRealHeight(520); - contentView.Width = Application.GetRealWidth(343); - contentView.Gravity = Gravity.Center; - contentView.Radius = (uint)Application.GetRealWidth(12); - contentView.AddChidren(titleView); - } - else if (hadCCT && hadRGB)// - { - contentView.Height = Application.GetRealHeight(520); - contentView.Width = Application.GetRealWidth(343); - contentView.Gravity = Gravity.Center; - contentView.Radius = (uint)Application.GetRealWidth(12); - contentView.AddChidren(titleView); - #region 浜害璋冭妭 - var btnBrightnessText = new Button() - { - X = Application.GetRealWidth(35), - Y = Application.GetRealHeight(82), - Width = Application.GetRealWidth(224), - Height = Application.GetRealHeight(21), - TextAlignment = TextAlignment.CenterLeft, - TextColor = CSS_Color.FirstLevelTitleColor, - TextSize = CSS_FontSize.PromptFontSize_FirstLevel, - TextID = StringId.Brightness, - }; - contentView.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, - }; - contentView.AddChidren(btnMinValuesText); - - var 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 = CSS_Color.AuxiliaryColor1 , - MaxValue = 100, - Progress = brightnessValue, - SeekBarPadding = Application.GetRealWidth(20), - }; - contentView.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, - }; - contentView.AddChidren(btnMaxValuesText); - #endregion - - - - #region 鑹叉俯 - //鑹叉俯 - var btnTempClolor = new Button(); - btnTempClolor.X = Application.GetRealWidth(35); - btnTempClolor.Y = Application.GetRealHeight(159); - 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; - contentView.AddChidren(btnTempClolor); - - //2700K - var btnTempClolorMin = new Button(); - btnTempClolorMin.Y = btnTempClolor.Bottom + Application.GetRealHeight(9); - btnTempClolorMin.Width = Application.GetRealWidth(54); - btnTempClolorMin.Height = Application.GetRealHeight(21); - btnTempClolorMin.Text = "2700K"; - btnTempClolorMin.TextAlignment = TextAlignment.CenterRight; - btnTempClolorMin.TextColor = CSS_Color.PromptingColor1; - btnTempClolorMin.TextSize = CSS_FontSize.PromptFontSize_FirstLevel; - contentView.AddChidren(btnTempClolorMin); - - //婊戝姩鏉$殑鑳屾櫙鍥剧墖 - var btnColorTemplatrueBack = new Button(); - //闇�瑕佸噺鎺夋粦鍔ㄦ潯鐨勫乏鍙抽棿璺� - btnColorTemplatrueBack.Width = Application.GetRealWidth(210 - 20 * 2); - btnColorTemplatrueBack.Height = Application.GetRealHeight(8); - btnColorTemplatrueBack.Gravity = Gravity.CenterHorizontal; - btnColorTemplatrueBack.UnSelectedImagePath = "FunctionIcon/Light/ColorTemperatureBar.png"; - contentView.AddChidren(btnColorTemplatrueBack); - //婊戝姩鏉℃帶浠� - var barColorTemplatrue = new CCTSeekBarControl(); - barColorTemplatrue.X = btnTempClolorMin.Right; - barColorTemplatrue.Y = Application.GetRealHeight(340); - barColorTemplatrue.MinValue = 27; - barColorTemplatrue.MaxValue = 65; - barColorTemplatrue.ProgressBarColor = 0x00000000;//鍏ㄩ儴閫忔槑 - barColorTemplatrue.ProgressBarUnEnableColor = 0x00000000; - barColorTemplatrue.SeekBarBackgroundColor = 0x00000000; - contentView.AddChidren(barColorTemplatrue); - barColorTemplatrue.Y = btnTempClolorMin.Y - (barColorTemplatrue.Height - btnTempClolorMin.Height) / 2; - //鏄剧ず涓婃柟鐨凾xt - barColorTemplatrue.ShowCustomTextView(Application.GetRealWidth(50), CSS_FontSize.PromptFontSize_FirstLevel, CSS_Color.FirstLevelTitleColor); - var cct = 27; - int.TryParse(cctLight.status.Find((obj)=>obj.key == FunctionAttributeKey.CCT).value, out cct); - barColorTemplatrue.Progress = cct; - //璁剧疆鍒濆鍊� - barColorTemplatrue.SetCustomText(barColorTemplatrue.Progress * 100 + "K"); - - //鍙樻洿鑳屾櫙鍥剧殑Y杞村潗鏍� - btnColorTemplatrueBack.Y = barColorTemplatrue.Y + (barColorTemplatrue.Height - btnColorTemplatrueBack.Height) / 2; - - //6500K - var btnTempClolorMax = new Button(); - btnTempClolorMax.Y = btnTempClolorMin.Y; - btnTempClolorMax.X = barColorTemplatrue.Right; - btnTempClolorMax.Width = Application.GetRealWidth(54); - btnTempClolorMax.Height = Application.GetRealHeight(21); - btnTempClolorMax.Text = "6500K"; - btnTempClolorMax.TextAlignment = TextAlignment.CenterLeft; - btnTempClolorMax.TextColor = CSS_Color.PromptingColor1; - btnTempClolorMax.TextSize = CSS_FontSize.PromptFontSize_FirstLevel; - contentView.AddChidren(btnTempClolorMax); - - #endregion - - #region RGB - - var btnCurColor = new Button() - { - X = Application.GetRealWidth(24), - Y = Application.GetRealHeight(241), - Width = Application.GetMinRealAverage(24), - Height = Application.GetMinRealAverage(24), - Radius = (uint)Application.GetMinRealAverage(8), - BorderColor = CSS_Color.PromptingColor2, - BorderWidth = 1, - BackgroundColor = (uint)(0xFF000000 + new Light().GetRGBcolor(new Function(),rgbLight.status.Find((obj) => obj.key == FunctionAttributeKey.RGB).value)) - }; - contentView.AddChidren(btnCurColor); - - //鑹茬洏鐨勬甯冩帶浠�(闄愬埗閭d釜鐧借壊婊戝姩鐞冧娇鐢�) - var framePickerBack = new FrameLayout(); - framePickerBack.Gravity = Gravity.CenterHorizontal; - framePickerBack.Y = Application.GetRealHeight(249); - framePickerBack.Width = Application.GetMinRealAverage(198); - framePickerBack.Height = Application.GetMinRealAverage(198); - contentView.AddChidren(framePickerBack); - - var colorPicker = new ColorPicker() - { - ColorImagePath = "FunctionIcon/Light/ColorWheel.png", - }; - framePickerBack.AddChidren(colorPicker); - #endregion - } - else if (hadDimming && !hadCCT && !hadRGB) - { - contentView.Height = Application.GetRealHeight(211); - contentView.Width = Application.GetRealWidth(343); - contentView.Gravity = Gravity.Center; - contentView.Radius = (uint)Application.GetRealWidth(12); - contentView.AddChidren(titleView); - } + } + + /// <summary> + /// 鍔犺浇璋冨厜灞炴�ц缃帶浠� + /// </summary> + /// <param name="attrView"></param> + void LoadDimmingAttrView(VerticalScrolViewLayout attrView) + { + + commandDic.TryAdd(FunctionAttributeKey.Percent, "0"); + + 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.Percent] + "%"; + 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.Percent]), + 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.Percent] = dimmerBar.Progress.ToString(); + btnBrightnessText.Text = Language.StringByID(StringId.Brightness) + " " + e + "%"; + }; + + + 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 + + } + + /// <summary> + /// 鍔犺浇cct灞炴�ц缃帶浠� + /// </summary> + /// <param name="attrView"></param> + void LoadCctAttrView(VerticalScrolViewLayout attrView) + { + #region 鑹叉俯 + + 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; + var cct = 27; + //int.TryParse(cctLight.status.Find((obj) => obj.key == FunctionAttributeKey.CCT).value, out cct); + barColorTemplatrue.Progress = cct; + //璁剧疆鍒濆鍊� + 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(); + }; + //鍙樻洿鑳屾櫙鍥剧殑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 + + + } + + /// <summary> + /// 鍔犺浇rgb灞炴�ц缃帶浠� + /// </summary> + /// <param name="attrView"></param> + void LoadRgbAttrView(VerticalScrolViewLayout attrView) + { + + #region RGB + commandDic.TryAdd(FunctionAttributeKey.RGB, "255,255,255"); + + 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); + + //鑹茬洏鐨勬甯冩帶浠�(闄愬埗閭d釜鐧借壊婊戝姩鐞冧娇鐢�) + 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.ColorChaged += (sender2, e2) => { + string rgbString = (e2[0] + "," + e2[1] + "," + e2[2]).ToString(); + commandDic[FunctionAttributeKey.RGB] = rgbString; + btnCurColor.BackgroundColor = (uint)(0xFF000000 + tempLight.GetRGBcolor(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.MouseMoveEventHandler += (sender, e) => + { + //褰撻紶鏍囩偣涓嬩簨浠跺鐞� + colorPicker.MouseDownEventHandler(sender, e); + }; + + + #endregion + + } + + + /// <summary> + /// 妫�娴嬬偣鍑荤偣 + /// </summary> + /// <param name="circleR">鍦嗙殑鍗婂緞</param> + /// <param name="circleX">鍦嗗績X杞�</param> + /// <param name="circleY">鍦嗗績Y杞�</param> + /// <param name="pointX">鐐瑰嚮鐐圭殑X杞�</param> + /// <param name="pointY">鐐瑰嚮鐐圭殑Y杞�</param> + /// <returns></returns> + 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; + } + } } \ No newline at end of file -- Gitblit v1.8.0