From a7debf97f52b5f473c3316ecd06bf48f44b65406 Mon Sep 17 00:00:00 2001 From: wxr <464027401@qq.com> Date: 星期三, 09 八月 2023 18:03:04 +0800 Subject: [PATCH] 温度类型,炫彩起始颜色 --- HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs | 980 ++++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 751 insertions(+), 229 deletions(-) diff --git a/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs b/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs index cb55326..0974ade 100644 --- a/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs +++ b/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs @@ -13,10 +13,17 @@ Button btnOnText; Button btnBrightnessText; + List<FrameLayout> functionRowList = new List<FrameLayout>(); + + Scene scene; Action refreshAction; SceneFunction sceneFunction; + + bool isColorful = false; + SceneFunction rgbColorful; + bool isOnStatus = false; public SceneFunctionInfoEditPage(Scene s, SceneFunction fc,Action action) { @@ -29,11 +36,13 @@ { var temp = fc.status.Find((obj) => obj.key == ll.key); if (temp != null) + { ll.value = temp.value; + //ll.UintString = temp.UintString; + } } catch { } } - //sceneFunction = fc; refreshAction = action; } @@ -51,8 +60,23 @@ }; bodyView.AddChidren(contentView); - LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff)); + var onOffStatus = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff); + if(onOffStatus.value == "on") + { + isOnStatus = true; + } + LoadFunctionRow(onOffStatus); + if (sceneFunction.localFunction.spk == SPK.LightRGB || sceneFunction.localFunction.spk == SPK.GroupControl) + { + //var colorfulStatus = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Colorful); + //if (colorfulStatus != null) + //{ + // isColorful = true; + // LoadColorfulRow(colorfulStatus); + // isColorful = colorfulStatus.value == "on"; + //} + } foreach (var attr in sceneFunction.status) { switch (attr.key) @@ -61,7 +85,6 @@ LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.SetTemp)); break; case FunctionAttributeKey.Mode: - LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Mode)); break; case FunctionAttributeKey.FanSpeed: @@ -91,41 +114,11 @@ } } - //鍔犺浇寮�鍏砇ow - //LoadFunctionRow(sceneFunction.localFunction.trait_on_off); - //switch (sceneFunction.localFunction.functionType) - //{ - // case SPK.AcStandard: - // LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "set_temp")); - // LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "mode")); - // LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "fan")); - // break; - // case SPK.FloorHeatStandard: - // LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "set_temp")); - // LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "mode")); - // break; - // case SPK.CurtainSwitch: - // //鏃犳搷浣� - // break; - // case SPK.CurtainTrietex: - // case SPK.CurtainRoller: - // LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "percent")); - // break; - // case SPK.LightSwitch: - // //鏃犳搷浣� - // break; - // case SPK.LightDimming: - // case SPK.LightRGB: - // LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "brightness")); - // break; - //} - if (DB_ResidenceData.Instance.GatewayType != 0) { //鍔犺浇寤舵椂Row LoadDelayRow(); } - var bottomView = new FrameLayout() { Y = Application.GetRealHeight(591), @@ -153,43 +146,156 @@ btnConfrim.MouseUpEventHandler = (sender, e) => { - var temp = scene.functions.Find((obj) => obj.sid == sceneFunction.sid); - - if (temp != null) - { - temp.delay = sceneFunction.delay; - foreach(var attr in sceneFunction.status) + if (sceneFunction.localFunction.spk == SPK.GroupControl) { + var colorBegin = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.ColorfulBegin); + if (colorBegin != null) { - var keva = temp.status.Find((obj) => obj.key == attr.key); - if (keva != null) - { - keva.value = attr.value; - } + sceneFunction.status.Remove(colorBegin); + } + var colorEnd = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.ColorfulEnd); + if (colorEnd != null) + { + sceneFunction.status.Remove(colorEnd); } } else { - scene.functions.Add(sceneFunction); - } - if (!string.IsNullOrEmpty(scene.userSceneId)) - { - var result = scene.UpdateScene(); - if (result == DAL.Server.StateCode.SUCCESS) + if (isOnStatus) { - refreshAction(); - this.RemoveFromParent(); + if (isColorful) + { + sceneFunction.status.Clear(); + sceneFunction.status.Add(new SceneFunctionStatus() { key = FunctionAttributeKey.OnOff, value = "on" }); + sceneFunction.status.Add(new SceneFunctionStatus() { key = FunctionAttributeKey.Colorful, value = "on" }); + } + else + { + var isHasColorful = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Colorful); + if (isHasColorful != null) + { + sceneFunction.status.Remove(isHasColorful); + } + } } else { - DAL.Server.IMessageCommon.Current.ShowErrorInfoAlter(result); + sceneFunction.status.Clear(); + sceneFunction.status.Add(new SceneFunctionStatus() { key = FunctionAttributeKey.OnOff, value = "off" }); } } - else + var temp = scene.functions.Find((obj) => obj.sid == sceneFunction.sid); + + try { - refreshAction(); - this.RemoveFromParent(); + if (temp != null) + { + //temp.delay = sceneFunction.delay; + //foreach (var attr in sceneFunction.status) + //{ + // var keva = temp.status.Find((obj) => obj.key == attr.key); + // if (keva != null) + // { + // keva.value = attr.value; + // } + //} + //temp = sceneFunction; + scene.functions.Remove(temp); + } + //else + { + scene.functions.Insert(0, sceneFunction); + } + if (!string.IsNullOrEmpty(scene.userSceneId)) + { + var result = scene.UpdateScene(); + if (result == DAL.Server.StateCode.SUCCESS) + { + refreshAction(); + this.RemoveFromParent(); + } + else + { + DAL.Server.IMessageCommon.Current.ShowErrorInfoAlter(result); + } + } + else + { + try + { + refreshAction(); + this.RemoveFromParent(); + } + catch + { + MainPage.Log($"xxxxxx123"); + } + } + } + catch + { + MainPage.Log($"xxxxxx1234"); } }; + + + UpdataFunctionRow(); + } + + void UpdataFunctionRow() + { + contentView.RemoveAll(); + for (var i =0;i< functionRowList.Count; i++) + { + try + { + var view = functionRowList[i]; + if(view!= null) + { + if(view.GetType() == typeof(FrameLayout)) + { + if (view.Tag != null) + { + if (view.Tag.ToString() == FunctionAttributeKey.OnOff) + { + contentView.AddChidren(view); + + } + if (isOnStatus) + { + if (view.Tag.ToString() != FunctionAttributeKey.OnOff) + { + if (isColorful && sceneFunction.localFunction.spk == SPK.LightRGB) + { + if(view.Tag.ToString() != FunctionAttributeKey.Colorful) + { + view.RemoveFromParent(); + } + else + { + contentView.AddChidren(view); + } + } + else + { + contentView.AddChidren(view); + } + } + } + else + { + if (view.Tag.ToString() != FunctionAttributeKey.OnOff) + { + view.RemoveFromParent(); + } + } + } + } + } + }catch(Exception ex) + { + MainPage.Log($"UpdataFuntionRow error:{ex.Message}"); + } + } } @@ -198,6 +304,217 @@ /// </summary> void LoadFunctionRow(SceneFunctionStatus sceneStatus) { + try + { + if (sceneStatus == null) + return; + #region Row code + var row = new FrameLayout() + { + Height = Application.GetRealHeight(50), + BackgroundColor = CSS_Color.MainBackgroundColor, + Tag = sceneStatus.key, + }; + contentView.AddChidren(row); + var view = functionRowList.Find((obj) => obj.Tag.ToString() == sceneStatus.key); + if (view == null) + { + functionRowList.Add(row); + } + + + if (sceneStatus.key != FunctionAttributeKey.OnOff) + { + row.AddChidren(new Button() { X = Application.GetRealWidth(16), Height = Application.GetRealHeight(1), Width = Application.GetRealWidth(343), BackgroundColor = CSS_Color.DividingLineColor }); + } + else + { + if (sceneStatus.value == "stop") + { + sceneStatus.value = "on"; + } + } + Button btnRight = new Button() + { + X = Application.GetRealWidth(339), + Gravity = Gravity.CenterVertical, + Width = Application.GetMinRealAverage(16), + Height = Application.GetMinRealAverage(16), + UnSelectedImagePath = "Public/Right.png", + }; + row.AddChidren(btnRight); + + + var showCode = ""; + + if (sceneStatus.key == FunctionAttributeKey.Mode) + { + if (DB_ResidenceData.Instance.GatewayType == 0) + { + if (SPK.AcSpkList().Contains(sceneFunction.localFunction.spk)) + { + //0 鍒跺喎1鍒剁儹锛�2閫氶锛�3鑷姩锛�4闄ゆ箍 + switch (sceneStatus.value) + { + case "0": + showCode = "cool"; + break; + case "1": + showCode = "heat"; + break; + case "2": + showCode = "fan"; + break; + case "3": + showCode = "auto"; + break; + case "4": + showCode = "dry"; + break; + } + } + else if (SPK.FhSpkList().Contains(sceneFunction.localFunction.spk)) + { + //1:鏅��,2:鐧藉ぉ,3:澶滄櫄,4:绂诲紑,5:鏃堕棿 + switch (sceneStatus.value) + { + case "5": + showCode = "timer"; + break; + case "1": + showCode = "normal"; + break; + case "2": + showCode = "day"; + break; + case "3": + showCode = "night"; + break; + case "4": + showCode = "away"; + break; + } + } + } + } + + var btnFunctionText = new Button() + { + Width = Application.GetRealWidth(330), + TextAlignment = TextAlignment.CenterRight, + TextColor = CSS_Color.PromptingColor1, + TextSize = CSS_FontSize.PromptFontSize_FirstLevel, + Text = sceneStatus.GetValueText(showCode) + sceneStatus.GetUintString() + }; + row.AddChidren(btnFunctionText); + if (sceneStatus.key == FunctionAttributeKey.RGB) + { + btnFunctionText.Width = Application.GetRealWidth(28); + btnFunctionText.Height = Application.GetRealWidth(28); + btnFunctionText.X = Application.GetRealWidth(330 - 28); + btnFunctionText.Gravity = Gravity.CenterVertical; + btnFunctionText.Radius = (uint)Application.GetRealWidth(8); + btnFunctionText.Text = ""; + btnFunctionText.BackgroundColor = (uint)(0xFF000000 + new Light().GetRGBcolor(sceneStatus.value)); + } + + + + if (sceneStatus.key == FunctionAttributeKey.OnOff) + { + btnOnText = btnFunctionText; + } + else if (sceneStatus.key == FunctionAttributeKey.Brightness || sceneStatus.key == FunctionAttributeKey.Percent) + { + int outT = 0; + int.TryParse(sceneStatus.value, out outT); + if (outT < 0) + sceneStatus.value = "0"; + btnBrightnessText = btnFunctionText; + } + + var btnFunctionName = new Button() + { + X = Application.GetRealWidth(16), + TextAlignment = TextAlignment.CenterLeft, + TextColor = CSS_Color.FirstLevelTitleColor, + TextSize = CSS_FontSize.SubheadingFontSize, + Text = sceneStatus.GetNameText() + }; + row.AddChidren(btnFunctionName); + btnFunctionName.MouseUpEventHandler = (sender, e) => + { + switch (sceneStatus.key) + { + case FunctionAttributeKey.Security: + LoadEditDialog_Security(sceneStatus, btnFunctionText); + break; + case FunctionAttributeKey.OnOff: + LoadEditDialog_OnOff(sceneStatus, btnFunctionText); + break; + case FunctionAttributeKey.Brightness: + LoadEditDialog_Percent(sceneStatus, btnFunctionText); + break; + case FunctionAttributeKey.Mode: + var statusList = new List<string>(); + var tr = sceneFunction.localFunction.attributes.Find((obj) => obj.key == FunctionAttributeKey.Mode); + foreach (var t in tr.value) + { + statusList.Add(t); + } + LoadEditDialog_FunctionPar(sceneStatus, btnFunctionText, statusList); + break; + case FunctionAttributeKey.FanSpeed: + var fanStatusList = new List<string>(); + var tr1 = sceneFunction.localFunction.attributes.Find((obj) => obj.key == FunctionAttributeKey.FanSpeed); + foreach (var t in tr1.value) + { + fanStatusList.Add(t); + } + LoadEditDialog_FunctionPar(sceneStatus, btnFunctionText, fanStatusList); + break; + case FunctionAttributeKey.SetTemp: + LoadEditDialog_Temp(sceneStatus, btnFunctionText); + break; + case FunctionAttributeKey.FadeTime: + + break; + case "angle": + //鍛堢幇鐨勫脊绐� + LoadEditDialog_Angle(sceneStatus, btnFunctionText); + + break; + case "cct": + LoadEditDialog_CCT(sceneStatus, btnFunctionText); + break; + case FunctionAttributeKey.RGB: + btnFunctionText.Width = Application.GetRealWidth(28); + btnFunctionText.Height = Application.GetRealWidth(28); + btnFunctionText.X = Application.GetRealWidth(330 - 28); + btnFunctionText.Gravity = Gravity.CenterVertical; + btnFunctionText.Radius = (uint)Application.GetRealWidth(8); + btnFunctionText.Text = ""; + + LoadEditDialog_RGB_V2(sceneStatus, btnFunctionText); + break; + case FunctionAttributeKey.Percent: + LoadEditDialog_Percent(sceneStatus, btnFunctionText); + break; + } + }; + + #endregion + }catch(Exception ex) + { + MainPage.Log($"鍦烘櫙鍔犺浇璁惧灞炴�у紓甯革細{ex.Message}"); + } + } + + /// <summary> + /// 鍔犺浇鍔熻兘Row + /// </summary> + void LoadColorfulRow(SceneFunctionStatus sceneStatus) + { if (sceneStatus == null) return; #region Row code @@ -205,21 +522,17 @@ { Height = Application.GetRealHeight(50), BackgroundColor = CSS_Color.MainBackgroundColor, + Tag = sceneStatus.key }; contentView.AddChidren(row); - - - if (sceneStatus.key != FunctionAttributeKey.OnOff) + var view = functionRowList.Find((obj) => obj.Tag.ToString() == sceneStatus.key); + if (view == null) { - row.AddChidren(new Button() { X = Application.GetRealWidth(16), Height = Application.GetRealHeight(1), Width = Application.GetRealWidth(343), BackgroundColor = CSS_Color.DividingLineColor }); + functionRowList.Add(row); } - else - { - if(sceneStatus.value == "stop") - { - sceneStatus.value = "on"; - } - } + + row.AddChidren(new Button() { X = Application.GetRealWidth(16), Height = Application.GetRealHeight(1), Width = Application.GetRealWidth(343), BackgroundColor = CSS_Color.DividingLineColor }); + Button btnRight = new Button() { X = Application.GetRealWidth(339), @@ -233,91 +546,15 @@ var showCode = ""; - if (sceneStatus.key == FunctionAttributeKey.Mode) - { - if (DB_ResidenceData.Instance.GatewayType == 0) - { - if (SPK.AcSpkList().Contains(sceneFunction.localFunction.spk)) - { - //0 鍒跺喎1鍒剁儹锛�2閫氶锛�3鑷姩锛�4闄ゆ箍 - switch (sceneStatus.value) - { - case "0": - showCode = "cool"; - break; - case "1": - showCode = "heat"; - break; - case "2": - showCode = "fan"; - break; - case "3": - showCode = "auto"; - break; - case "4": - showCode = "dry"; - break; - } - } - else if (SPK.FhSpkList().Contains(sceneFunction.localFunction.spk)) - { - //1:鏅��,2:鐧藉ぉ,3:澶滄櫄,4:绂诲紑,5:鏃堕棿 - switch (sceneStatus.value) - { - case "5": - showCode = "timer"; - break; - case "1": - showCode = "normal"; - break; - case "2": - showCode = "day"; - break; - case "3": - showCode = "night"; - break; - case "4": - showCode = "away"; - break; - } - } - } - } - var btnFunctionText = new Button() { Width = Application.GetRealWidth(330), TextAlignment = TextAlignment.CenterRight, TextColor = CSS_Color.PromptingColor1, TextSize = CSS_FontSize.PromptFontSize_FirstLevel, - Text = sceneStatus.GetValueText(showCode) + sceneStatus.GetUintString() + Text = sceneStatus.GetValueText(showCode) }; row.AddChidren(btnFunctionText); - if (sceneStatus.key == FunctionAttributeKey.RGB) - { - btnFunctionText.Width = Application.GetRealWidth(28); - btnFunctionText.Height = Application.GetRealWidth(28); - btnFunctionText.X = Application.GetRealWidth(330 - 28); - btnFunctionText.Gravity = Gravity.CenterVertical; - btnFunctionText.Radius = (uint)Application.GetRealWidth(8); - btnFunctionText.Text = ""; - btnFunctionText.BackgroundColor = (uint)(0xFF000000 + new Light().GetRGBcolor(sceneStatus.value)); - } - - - - if (sceneStatus.key == FunctionAttributeKey.OnOff) - { - btnOnText = btnFunctionText; - } - else if (sceneStatus.key == FunctionAttributeKey.Brightness || sceneStatus.key == FunctionAttributeKey.Percent) - { - int outT = 0; - int.TryParse(sceneStatus.value, out outT); - if (outT < 0) - sceneStatus.value = "0"; - btnBrightnessText = btnFunctionText; - } var btnFunctionName = new Button() { @@ -325,73 +562,53 @@ TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.SubheadingFontSize, - Text = sceneStatus.GetNameText() + TextID = StringId.ColorfulFunction }; row.AddChidren(btnFunctionName); btnFunctionName.MouseUpEventHandler = (sender, e) => { - switch (sceneStatus.key) - { - case FunctionAttributeKey.Security: - LoadEditDialog_Security(sceneStatus, btnFunctionText); - break; - case FunctionAttributeKey.OnOff: - LoadEditDialog_OnOff(sceneStatus, btnFunctionText); - break; - case FunctionAttributeKey.Brightness: - LoadEditDialog_Percent(sceneStatus, btnFunctionText); - break; - case FunctionAttributeKey.Mode: - var statusList = new List<string>(); - var tr = sceneFunction.localFunction.attributes.Find((obj) => obj.key == FunctionAttributeKey.Mode); - foreach(var t in tr.value) - { - statusList.Add(t); - } - LoadEditDialog_FunctionPar(sceneStatus, btnFunctionText,statusList); - break; - case FunctionAttributeKey.FanSpeed: - var fanStatusList = new List<string>(); - var tr1 = sceneFunction.localFunction.attributes.Find((obj) => obj.key == FunctionAttributeKey.FanSpeed); - foreach (var t in tr1.value) - { - fanStatusList.Add(t); - } - LoadEditDialog_FunctionPar(sceneStatus, btnFunctionText, fanStatusList); - break; - case FunctionAttributeKey.SetTemp: - LoadEditDialog_Temp(sceneStatus, btnFunctionText); - break; - case FunctionAttributeKey.FadeTime: + LoadEditDialog_OnOff(sceneStatus, btnFunctionText); + //var colorfulModePage = new SetSceneRgbColorfulModePage(); + //colorfulModePage.backAction = (selectedSerise,status) => { + // if (selectedSerise == null) + // { + // if (status == "on") + // { + // isColorful = true; + // } + // else + // { + // isColorful = false; + // } + // } + // else + // { + // isColorful = true; + // rgbColorful = selectedSerise.ConvertSceneFunction(); + // } + // if (isColorful) + // { + // btnFunctionText.TextID = StringId.On; + // if (selectedSerise != null) + // { + // btnFunctionText.Text = selectedSerise.name; + // } + // } + // else + // { + // btnFunctionText.TextID = StringId.OFF; + // } + // UpdataFunctionRow(); + //}; + //MainPage.BasePageView.AddChidren(colorfulModePage); + //colorfulModePage.LoadPage(sceneFunction.localFunction.sid.Substring(0,16)); + //MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; - break; - case "angle": - //鍛堢幇鐨勫脊绐� - LoadEditDialog_Angle(sceneStatus, btnFunctionText); - break; - case "cct": - LoadEditDialog_CCT(sceneStatus, btnFunctionText); - break; - case FunctionAttributeKey.RGB: - btnFunctionText.Width = Application.GetRealWidth(28); - btnFunctionText.Height = Application.GetRealWidth(28); - btnFunctionText.X = Application.GetRealWidth(330 - 28); - btnFunctionText.Gravity = Gravity.CenterVertical; - btnFunctionText.Radius = (uint)Application.GetRealWidth(8); - btnFunctionText.Text = ""; - - LoadEditDialog_RGB(sceneStatus, btnFunctionText); - break; - case FunctionAttributeKey.Percent: - LoadEditDialog_Percent(sceneStatus, btnFunctionText); - break; - } }; #endregion } - #region 鍔犺浇鍔熻兘鍦烘櫙鏁版嵁璋冭妭鐣岄潰 /// <summary> @@ -403,9 +620,15 @@ FrameLayout delayRow = new FrameLayout() { Height = Application.GetRealWidth(50), - BackgroundColor = CSS_Color.MainBackgroundColor + BackgroundColor = CSS_Color.MainBackgroundColor, + Tag = "delay" }; contentView.AddChidren(delayRow); + var view = functionRowList.Find((obj) => obj.Tag.ToString() == "delay"); + if (view == null) + { + functionRowList.Add(delayRow); + } delayRow.AddChidren(new Button() { X = Application.GetRealWidth(16), Height = Application.GetRealHeight(1), Width = Application.GetRealWidth(343), BackgroundColor = CSS_Color.DividingLineColor }); Button btnDelayRight = new Button() @@ -536,51 +759,128 @@ dialog.Show(); - pView.MouseUpEventHandler = (sender, e) => { + pView.MouseUpEventHandler = (sender, e) => + { dialog.Close(); }; - btnCancel.MouseUpEventHandler = (sender, e) => { + btnCancel.MouseUpEventHandler = (sender, e) => + { dialog.Close(); }; - btnOn.MouseUpEventHandler = (sender, e) => { + btnOn.MouseUpEventHandler = (sender, e) => + { dialog.Close(); trait.value = "on"; - sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff).value = "on"; - btn.Text = trait.GetValueText() + trait.GetUintString(); - - var temp = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Brightness); - if (temp == null) + isOnStatus = true; + try { - temp = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Percent); + sceneFunction.status.Find((obj) => obj.key == trait.key).value = "on"; } - if (temp != null) + catch (Exception ex) { - if (temp.value == "0") + MainPage.Log($"鍦烘櫙閰嶇疆寮傚父锛歿ex.Message}"); + } + + try + { + btn.Text = trait.GetValueText() + trait.GetUintString(); + if (trait.key == FunctionAttributeKey.OnOff) { - temp.value = "100"; + var temp = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Brightness); + if (temp == null) + { + temp = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Percent); + } + if (temp != null) + { + if (temp.value == "0") + { + temp.value = "100"; + } + if (btnBrightnessText != null) + { + btnBrightnessText.Text = temp.GetValueText() + "%"; + } + } } - btnBrightnessText.Text = temp.GetValueText() + "%"; + } + catch (Exception ex) + { + MainPage.Log($"鍦烘櫙閰嶇疆寮傚父2锛歿ex.Message}"); + } + try + { + if (trait.key == FunctionAttributeKey.Colorful) + { + isColorful = true; + } + else if (trait.key == FunctionAttributeKey.OnOff) + { + isOnStatus = true; + } + UpdataFunctionRow(); + } + catch (Exception ex) + { + MainPage.Log($"鍦烘櫙閰嶇疆寮傚父3锛歿ex.Message}"); } }; - btnOff.MouseUpEventHandler = (sender,e) =>{ + btnOff.MouseUpEventHandler = (sender, e) => + { dialog.Close(); trait.value = "off"; - sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff).value = "off"; - btn.Text= trait.GetValueText() + trait.GetUintString(); - - var temp = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Brightness); - if(temp == null) + try { - temp = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Percent); + sceneFunction.status.Find((obj) => obj.key == trait.key).value = "off"; } - if (temp != null) + catch (Exception ex) { - if (temp.value != "0") + MainPage.Log($"鍦烘櫙閰嶇疆寮傚父锛歿ex.Message}"); + } + + try + { + btn.Text = trait.GetValueText() + trait.GetUintString(); + if (trait.key == FunctionAttributeKey.OnOff) { - temp.value = "0"; + isOnStatus = false; + var temp = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Brightness); + if (temp == null) + { + temp = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Percent); + } + if (temp != null) + { + if (temp.value != "0") + { + temp.value = "0"; + } + if (btnBrightnessText != null) + btnBrightnessText.Text = temp.GetValueText() + "%"; + } } - btnBrightnessText.Text = temp.GetValueText() + "%"; + } + catch (Exception ex) + { + MainPage.Log($"鍦烘櫙閰嶇疆寮傚父2锛歿ex.Message}"); + } + + try + { + if (trait.key == FunctionAttributeKey.Colorful) + { + isColorful = false; + } + else if (trait.key == FunctionAttributeKey.OnOff) + { + isOnStatus = false; + } + UpdataFunctionRow(); + } + catch (Exception ex) + { + MainPage.Log($"鍦烘櫙閰嶇疆寮傚父3锛歿ex.Message}"); } }; @@ -778,6 +1078,7 @@ if (pickerItems.Contains(trait.value + trait.GetUintString())) { selectItem = trait.value.ToString() + trait.GetUintString(); + uIPickerView.setCurrentItems(pickerItems.IndexOf(selectItem),0,0); } dialog.Show(); @@ -1079,7 +1380,33 @@ /// <param name="btn"></param> void LoadEditDialog_CCT(SceneFunctionStatus trait, Button btn) { + if (trait.min == 0) + { + switch (trait.key) + { + case FunctionAttributeKey.SetTemp: + trait.min = 16; + break; + case FunctionAttributeKey.CCT: + trait.min = 2700; + break; + } + } + if (trait.max == 0) + { + switch (trait.key) + { + case FunctionAttributeKey.SetTemp: + trait.max = 30; + break; + case FunctionAttributeKey.CCT: + trait.max = 6500; + break; + } + } + double temp = trait.min; + double.TryParse(trait.value, out temp); trait.value = temp.ToString(); @@ -1157,7 +1484,7 @@ uIPickerView.setCurrentItems(pickerItems.IndexOf(trait.value.ToString()), 4, 5); string selectItem = pickerItems[0]; - if (pickerItems.Contains(trait.value + trait.GetUintString())) + if (pickerItems.Contains(trait.value + trait.GetUintString())) { selectItem = trait.value.ToString() + trait.GetUintString(); } @@ -1393,6 +1720,198 @@ /// <summary> + /// 鍔犺浇rgb閫夋嫨寮圭獥 + /// </summary> + /// <param name="function"></param> + /// <param name="btn"></param> + void LoadEditDialog_RGB_V2(SceneFunctionStatus trait, Button btn) + { + string rgbString = trait.value; + + Light tempLight = new Light(); + + if (trait == null) + { + return; + } + + Dialog dialog = new Dialog() { + Height = Application.GetRealHeight(647), + }; + + var bodyView = new FrameLayout(); + dialog.AddChidren(bodyView); + + var contentView = new FrameLayout() + { + Gravity = Gravity.BottomCenter, + BackgroundColor = CSS_Color.MainBackgroundColor, + Width = Application.GetRealWidth(343), + Height = Application.GetRealHeight(300), + 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, + Text = "RGB", + TextAlignment = TextAlignment.Center, + }; + titleView.AddChidren(btnTitle); + titleView.AddChidren(new Button() { Height = 1, BackgroundColor = CSS_Color.DividingLineColor, Y = Application.GetRealHeight(51) }); + + #endregion + + int attrViewHight = Application.GetRealHeight(245); + //灞炴�ц缃尯鍩� + var attrView = new FrameLayout() + { + Y = Application.GetRealHeight(52), + Width = Application.GetRealWidth(343), + Height = attrViewHight + }; + contentView.AddChidren(attrView); + attrView.AddChidren(new Button() { Height = Application.GetRealHeight(18) }); + + #region RGB + var rgbView = new FrameLayout() + { + Height = Application.GetRealHeight(248) + }; + attrView.AddChidren(rgbView); + + var btnCurColor = new Button() + { + X = Application.GetRealWidth(16), + 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(trait.value)) + }; + 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) => { + rgbString = (e2[0] + "," + e2[1] + "," + e2[2]).ToString(); + //trait.value = 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 + + #region + var btnCancel = new Button() + { + X = Application.GetRealWidth(20), + Width = Application.GetRealWidth(100), + Height = Application.GetRealHeight(44), + TextAlignment = TextAlignment.CenterLeft, + TextSize = CSS_FontSize.TextFontSize, + TextColor = CSS_Color.TextualColor, + TextID = StringId.Cancel, + }; + titleView.AddChidren(btnCancel); + btnCancel.MouseUpEventHandler = (sender, e) => { + dialog.Close(); + }; + + var btnComplete = new Button() + { + X = Application.GetRealWidth(223), + Width = Application.GetRealWidth(100), + Height = Application.GetRealHeight(46), + TextColor = CSS_Color.MainColor, + TextAlignment = TextAlignment.CenterRight, + TextSize = CSS_FontSize.TextFontSize, + TextID = StringId.Complete + }; + titleView.AddChidren(btnComplete); + + //渚嬶細鍙充笅鍦嗚 澶у皬涓�50 + int mRectCornerID = HDLUtils.RectCornerBottomRight; + btnComplete.SetCornerWithSameRadius((uint)Application.GetRealWidth(14), mRectCornerID); + btnComplete.MouseUpEventHandler = (sender, e) => { + dialog.Close(); + trait.value = rgbString; + btn.BackgroundColor = (uint)(0xFF000000 + tempLight.GetRGBcolor(rgbString)); + }; + + #endregion + + + dialog.Show(); + + } + + + /// <summary> /// 妫�娴嬬偣鍑荤偣 /// </summary> /// <param name="circleR">鍦嗙殑鍗婂緞</param> @@ -1576,8 +2095,8 @@ void LoadEditDialog_FunctionPar(SceneFunctionStatus trait, Button btn,List<string> statusList) { Button lastButton = new Button(); - var lastData = ""; - var lastText = ""; + var lastData = trait.value; + var lastText = btn.Text; Dialog dialog = new Dialog(); if(DB_ResidenceData.Instance.GatewayType == 0) @@ -1786,3 +2305,6 @@ } } + + + \ No newline at end of file -- Gitblit v1.8.0