From 6d73bf6e816570291865674bef8bce8972e4de3f Mon Sep 17 00:00:00 2001 From: xm <1271024303@qq.com> Date: 星期三, 01 十二月 2021 16:32:57 +0800 Subject: [PATCH] 2021-12-01-01 --- HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs | 304 +++++++++++++++++++++++++++++++++++++------------- 1 files changed, 222 insertions(+), 82 deletions(-) diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs index 15c1c32..8281d85 100644 --- a/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs +++ b/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs @@ -9,32 +9,54 @@ /// <summary> /// 鏇存柊鍔熻兘鐘舵�� /// </summary> - public static void UpdataStates(Light uFunction) + public static void UpdataStates(Function updateTemp) { - Application.RunOnMainThread(() => + Application.RunOnMainThread((() => { try { if (bodyView == null) return; - if (uFunction.functionType == bodyView.light.functionType && uFunction.sid == bodyView.light.sid) + if (updateTemp.spk == bodyView.function.spk && updateTemp.sid == bodyView.function.sid) { - if (!bodyView.onDimmerBar) + + if (updateTemp.trait_on_off.curValue.ToString() == "on") { - bodyView.dimmerBar.Progress = uFunction.brightness; - } - if (uFunction.trait_on_off.curValue.ToString() == "on") - { - bodyView.colorPicker.ColorImagePath = "FunctionIcon/Light/ColorWheel.png"; + //瑙e喅閮ㄥ垎瀹夊崜鎵嬫満锛屽埛鏂板浘鐗囨椂浼氬彉灏忛棶棰� + if (bodyView.colorPicker.ColorImagePath != "FunctionIcon/Light/ColorWheel.png") + { + bodyView.colorPicker.ColorImagePath = "FunctionIcon/Light/ColorWheel.png"; + } bodyView.dimmerBar.ProgressBarColor = CSS.CSS_Color.AuxiliaryColor1; bodyView.btnSwitch.IsSelected = true; - bodyView.btnCurColor.BackgroundColor = (uint)(0xFF000000 + bodyView.light.GetRGBcolor()); + if (!bodyView.onDimmerBar) + { + bodyView.dimmerBar.Progress = Convert.ToInt32(updateTemp.GetAttrState(FunctionAttributeKey.Brightness)); + } + } + //鐘舵�佷竴鏍锋椂,涓嶅啀鍒锋柊瑙嗗浘 + else if (updateTemp.trait_on_off.curValue.ToString() == "off" && bodyView.btnSwitch.IsSelected == true) + { + //瑙e喅閮ㄥ垎瀹夊崜鎵嬫満锛屽埛鏂板浘鐗囨椂浼氬彉灏忛棶棰� + if (bodyView.colorPicker.ColorImagePath != "FunctionIcon/Light/ColorWheelGray.png") + { + bodyView.colorPicker.ColorImagePath = "FunctionIcon/Light/ColorWheelGray.png"; + } + //bodyView.colorPicker.ColorImagePath = "FunctionIcon/Light/ColorWheelGray.png"; + bodyView.dimmerBar.ProgressBarColor = CSS.CSS_Color.PromptingColor2; + bodyView.btnSwitch.IsSelected = false; + //鑹茬洏鐨勫渾鐐归殣钘� + bodyView.btnWhiteRound.Visible = false; + } + bodyView.btnCurColor.BackgroundColor = (uint)(0xFF000000 + bodyView.lightTemp.GetRGBcolor(updateTemp.GetAttrState(FunctionAttributeKey.RGB))); + bodyView.lastColor = bodyView.lightTemp.GetRGBbytes(updateTemp); + if (bodyView.lightTemp.GetRGBcolor(updateTemp.GetAttrState(FunctionAttributeKey.RGB)) == 16777215 && bodyView.btnCurColor.BorderColor != 0x00000000) + { + bodyView.btnCurColor.BorderColor = CSS.CSS_Color.PromptingColor2; } else { - bodyView.colorPicker.ColorImagePath = "FunctionIcon/Light/ColorWheelGray.png"; - bodyView.dimmerBar.ProgressBarColor = CSS.CSS_Color.PromptingColor2; - bodyView.btnSwitch.IsSelected = false; + bodyView.btnCurColor.BorderColor = 0x00000000; } } } @@ -42,7 +64,7 @@ { MainPage.Log($"{bodyView.GetType().Name } UpdataStates error : {ex.Message}"); } - }); + })); } @@ -56,9 +78,8 @@ LoadEvet_ChangeFadeTime(); //鍥為��鍒锋柊淇℃伅浜嬩欢 actionRefresh = () => { - btnFunctionName.Text = btnFunctionName_Out.Text = light.name; - btnFromFloor_Out.Text = btnFromFoorAndRoom.Text = light.GetRoomListName(); - //light.SaveFunctionData(true); + btnFunctionName.Text = btnFunctionName_Out.Text = function.name; + btnFromFloor_Out.Text = btnFromFoorAndRoom.Text = function.GetRoomListName(); }; } @@ -68,29 +89,102 @@ void LoadColorChangeEvent() { DateTime colorChangeTime = DateTime.MinValue; + //bool send = false; + + //褰撳墠鐐瑰嚮鐨勩�愮偣銆戞槸鍚︽纭� + bool pointIsRight = false; + //鍦嗙殑鍗婂緞(鑰冭檻杈圭晫,闇�瑕佽缃畠鐨勫崐寰勬瘮杈冨皬涓�鐐�) + int circleR = colorPicker.Width / 2 - Application.GetRealWidth(12); + colorPicker.ColorChaged += (sender2, e2) => { - if(light.trait_on_off.curValue.ToString() == "off") + if (function.trait_on_off.curValue.ToString() == "off" || pointIsRight == false) + { + //pointIsRight:鐐圭殑鍖哄煙涓嶆槸鍦嗙洏鍐� + return; + } + //if (send) + //{ + lastColor = e2; + // send = false; + //} + }; + + //colorPicker.MouseUpEventHandler += (sender, e) => { + // send = true; + //}; + + colorPicker.MouseDownEventHandler += (sender, e) => + { + if (function.trait_on_off.curValue.ToString() == "off") { return; } - if ((DateTime.Now - colorChangeTime).TotalMilliseconds > 200) + pointIsRight = this.CheckPoint(circleR, colorPicker.Width / 2, colorPicker.Height / 2, (int)e.X, (int)e.Y); + if (pointIsRight == false) { - light.SetRGBcolor(e2); - colorChangeTime = DateTime.Now; - btnCurColor.BackgroundColor = (uint)(0xFF000000 + light.GetRGBcolor()); - //Control.Send(CommandType_A.write, this.light); - System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); - d.Add(FunctionAttributeKey.RGB, light.GetRGBcolorString()); - Control.Ins.SendWriteCommand(light, d); + //鐐圭殑鍖哄煙涓嶆槸鍦嗙洏鍐� + 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) => + + colorPicker.MouseMoveEventHandler += (sender, e) => { - var ss = btnCurColor.BackgroundColor; + //褰撻紶鏍囩偣涓嬩簨浠跺鐞� + colorPicker.MouseDownEventHandler(sender, e); + //if (function.trait_on_off.curValue.ToString() == "off") + //{ + // return; + //} + //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; + //} + //btnCurColor.BackgroundColor = (uint)(0xFF000000 + lightTemp.GetRGBcolor(function)); }; - } + var colorChangeEvent = new System.Threading.Thread(() => { + while (this.Parent != null) + { + if (function.trait_on_off.curValue.ToString() == "off" || pointIsRight == false) + { + //pointIsRight:鐐圭殑鍖哄煙涓嶆槸鍦嗙洏鍐� + continue; + } + for (int i = 0; i < 3; i++) + { + if (lightTemp.GetRGBbytes(function)[i].ToString() != lastColor[i].ToString()) + { + function.SetAttrState(FunctionAttributeKey.RGB, lastColor); + lightTemp.SetRGBcolor(lastColor, function); + System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); + d.Add(FunctionAttributeKey.RGB, lightTemp.GetRGBcolorString(function)); + Control.Ins.SendWriteCommand(function, d,false,0); + break; + } + } + System.Threading.Thread.Sleep(200); + } + }); + colorChangeEvent.IsBackground = true; + colorChangeEvent.Start(); + } /// <summary> /// 鏀惰棌鍔熻兘鎸夐挳浜嬩欢 @@ -98,8 +192,8 @@ void LoadCollectionEvent() { btnCollection.MouseUpEventHandler += (sender, e) => { - btnCollection.IsSelected = light.collect = btnCollection_Out.IsSelected = !btnCollection.IsSelected; - light.SaveFunctionData(true); + btnCollection.IsSelected = function.collect = btnCollection_Out.IsSelected = !btnCollection.IsSelected; + function.CollectFunction(); }; } @@ -113,52 +207,51 @@ }; dimmerBar.OnStopTrackingTouchEvent = (sender, e) => { new System.Threading.Thread(() => { - System.Threading.Thread.Sleep(100); + System.Threading.Thread.Sleep(200); onDimmerBar = false; }) { IsBackground = true }.Start(); - light.brightness = dimmerBar.Progress; + function.SetAttrState(FunctionAttributeKey.Brightness, dimmerBar.Progress); System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); - d.Add(FunctionAttributeKey.Brightness, light.brightness.ToString()); - Control.Ins.SendWriteCommand(light, d); - light.fadeTime = barFadeTime.Progress; + d.Add(FunctionAttributeKey.Brightness, dimmerBar.Progress.ToString()); + + Control.Ins.SendWriteCommand(function, d); }; dimmerBar.OnProgressChangedEvent = (sender, e) => { - light.fadeTime = 0; - if (!btnSwitch.IsSelected) - { - dimmerBar.ProgressBarColor = CSS.CSS_Color.AuxiliaryColor1; - } - btnSwitch.IsSelected = e > 0 ? true : false; - light.brightness = e; - light.trait_on_off.curValue = e > 0 ? "on" : "off"; + //function.fadeTime = 0; + //if (!btnSwitch.IsSelected) + //{ + // dimmerBar.ProgressBarColor = CSS.CSS_Color.AuxiliaryColor1; + //} + //btnSwitch.IsSelected = e > 0 ? true : false; + //function.brightness = e; + //function.trait_on_off.curValue = e > 0 ? "on" : "off"; - if (e == 0 || e == 100) - { - //Control.Send(CommandType_A.write, this.light); - System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); - d.Add(FunctionAttributeKey.Brightness, light.brightness.ToString()); - Control.Ins.SendWriteCommand(light, d); - } - else - { - if (200 < (DateTime.Now - light.refreshTime).TotalMilliseconds) - { - light.refreshTime = DateTime.Now; - new System.Threading.Thread(() => - { - //Control.Send(CommandType_A.write, light); - System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); - d.Add(FunctionAttributeKey.Brightness, light.brightness.ToString()); - Control.Ins.SendWriteCommand(light, d); - }) - { IsBackground = true }.Start(); - } - else - { - MainPage.Log("skip dimmer control!!"); - } - } + //if (e == 0 || e == 100) + //{ + // System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); + // d.Add(FunctionAttributeKey.Brightness, function.brightness.ToString()); + // Control.Ins.SendWriteCommand(function, d); + //} + //else + //{ + // if (200 < (DateTime.Now - function.refreshTime).TotalMilliseconds) + // { + // function.refreshTime = DateTime.Now; + // new System.Threading.Thread(() => + // { + // //Control.Send(CommandType_A.write, function); + // System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); + // d.Add(FunctionAttributeKey.Brightness, function.brightness.ToString()); + // Control.Ins.SendWriteCommand(function, d); + // }) + // { IsBackground = true }.Start(); + // } + // else + // { + // MainPage.Log("skip dimmer control!!"); + // } + //} }; } @@ -167,11 +260,14 @@ /// </summary> void LoadEvet_ChangeFadeTime() { - barFadeTime.MouseUpEventHandler = (sender, e) => + if (function.GetAttribute(FunctionAttributeKey.FadeTime) != null) { - light.fadeTime = barFadeTime.Progress; - light.SaveFunctionData(true); - }; + barFadeTime.OnStopTrackingTouchEvent = (sender, e) => + { + function.SetAttrState(FunctionAttributeKey.FadeTime, e.ToString()); + function.SaveFunctionFile(); + }; + } } /// <summary> /// 鍔犺浇寮�鍏充簨浠� @@ -182,20 +278,26 @@ { btnSwitch.IsSelected = !btnSwitch.IsSelected; dimmerBar.ProgressBarColor = btnSwitch.IsSelected ? CSS.CSS_Color.AuxiliaryColor1 : CSS.CSS_Color.PromptingColor2; + bodyView.colorPicker.ColorImagePath = btnSwitch.IsSelected ? "FunctionIcon/Light/ColorWheel.png" : "FunctionIcon/Light/ColorWheelGray.png"; new System.Threading.Thread(() => { - light.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off"; + function.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off"; System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); - d.Add(FunctionAttributeKey.OnOff, light.trait_on_off.curValue.ToString()); + d.Add(FunctionAttributeKey.OnOff, function.trait_on_off.curValue.ToString()); if (btnSwitch.IsSelected) { - d.Add(FunctionAttributeKey.Brightness, light.lastBrightness.ToString()); + if(function.lastBrightness == 0) + { + function.lastBrightness = 100; + dimmerBar.Progress = 100; + } + d.Add(FunctionAttributeKey.Brightness, function.lastBrightness.ToString()); } else { - light.lastBrightness = light.brightness; + function.lastBrightness = Convert.ToInt32(function.GetAttrState(FunctionAttributeKey.Brightness)); } - Control.Ins.SendWriteCommand(light, d); + Control.Ins.SendWriteCommand(function, d); }) { IsBackground = true }.Start(); }; @@ -207,12 +309,50 @@ { btnRestoredPoint.MouseUpEventHandler = (sender, e) => { - light.SetRGBcolor(new byte[] { 255, 255, 255 }); + if(function.trait_on_off.curValue.ToString() == "off") + { + return; + } + btnWhiteRound.Visible = true; + btnWhiteRound.Gravity = Gravity.Center; + + lightTemp.SetRGBcolor(new byte[] { 255, 255, 255 },function); btnCurColor.BackgroundColor = 0xFFFFFFFF; + btnCurColor.BorderColor = CSS.CSS_Color.PromptingColor2; System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); - d.Add(FunctionAttributeKey.RGB, light.GetRGBcolorString()); - Control.Ins.SendWriteCommand(light, d); + d.Add(FunctionAttributeKey.RGB, lightTemp.GetRGBcolorString(function)); + Control.Ins.SendWriteCommand(function, d); + lastColor = new byte[] { 255, 255, 255 }; }; } + + /// <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; + } } } -- Gitblit v1.8.0