From 5eeafe3af80bfd88306bd8ad9e76c8f4b51ca35f Mon Sep 17 00:00:00 2001 From: hxb <hxb@hdlchina.com.cn> Date: 星期四, 17 十二月 2020 14:16:20 +0800 Subject: [PATCH] 增加本地发送的重发机制 --- HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs | 318 +++++++++++++++++++++++++++++------------------------ 1 files changed, 174 insertions(+), 144 deletions(-) diff --git a/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs b/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs index 4504b63..3485bdd 100644 --- a/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs +++ b/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs @@ -10,25 +10,25 @@ { FrameLayout bodyView; VerticalScrolViewLayout contentView; + Button btnOnText; Scene scene; Action refreshAction; - Function function; - public SceneFunctionInfoEditPage(Scene s,Function fc,Action action) + SceneFunction sceneFunction; + public SceneFunctionInfoEditPage(Scene s, SceneFunction fc,Action action) { bodyView = this; scene = s; - function = fc; + sceneFunction = fc; refreshAction = action; } - public void LoadPage() { bodyView.BackgroundColor = CSS_Color.BackgroundColor; - new TopViewDiv(bodyView, function.name).LoadTopView(); + new TopViewDiv(bodyView, sceneFunction.localFunction.name).LoadTopView(); contentView = new VerticalScrolViewLayout() { @@ -38,35 +38,58 @@ }; bodyView.AddChidren(contentView); - //鍔犺浇寮�鍏砇ow - LoadFunctionRow(function.trait_on_off); + LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff)); - switch (function.functionType) + foreach (var attr in sceneFunction.status) { - case FunctionType.AC: - LoadFunctionRow(function.function.Find((obj) => obj.key == "set_temperature")); - LoadFunctionRow(function.function.Find((obj) => obj.key == "mode")); - LoadFunctionRow(function.function.Find((obj) => obj.key == "fan")); - break; - case FunctionType.FloorHeating: - LoadFunctionRow(function.function.Find((obj) => obj.key == "set_temperature")); - LoadFunctionRow(function.function.Find((obj) => obj.key == "mode")); - break; - case FunctionType.Curtain: - //鏃犳搷浣� - break; - case FunctionType.MotorCurtain: - case FunctionType.RollingShutter: - LoadFunctionRow(function.function.Find((obj) => obj.key == "percent")); - break; - case FunctionType.Relay: - //鏃犳搷浣� - break; - case FunctionType.Dimmer: - case FunctionType.RGB: - LoadFunctionRow(function.function.Find((obj) => obj.key == "brightness")); - break; + switch (attr.key) + { + case FunctionAttributeKey.SetTemp: + 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: + LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.FanSpeed)); + break; + case FunctionAttributeKey.Percent: + LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Percent)); + break; + case FunctionAttributeKey.Brightness: + LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Brightness)); + break; + } } + + //鍔犺浇寮�鍏砇ow + //LoadFunctionRow(sceneFunction.localFunction.trait_on_off); + //switch (sceneFunction.localFunction.functionType) + //{ + // case FunctionType.AC: + // 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 FunctionType.FloorHeating: + // LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "set_temp")); + // LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "mode")); + // break; + // case FunctionType.Curtain: + // //鏃犳搷浣� + // break; + // case FunctionType.MotorCurtain: + // case FunctionType.RollingShutter: + // LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "percent")); + // break; + // case FunctionType.Relay: + // //鏃犳搷浣� + // break; + // case FunctionType.Dimmer: + // case FunctionType.RGB: + // LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "brightness")); + // break; + //} //鍔犺浇寤舵椂Row LoadDelayRow(); @@ -98,17 +121,28 @@ btnConfrim.MouseUpEventHandler = (sender, e) => { - var temp = scene.sceneFunctionList.Find((obj) => obj.sid == function.sid); - if (temp!=null) + var temp = scene.functions.Find((obj) => obj.sid == sceneFunction.sid); + if (temp != null) { - temp = function; + temp = sceneFunction; } else { - scene.sceneFunctionList.Add(function); + scene.functions.Add(sceneFunction); } - refreshAction(); - this.RemoveFromParent(); + 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); + } + } }; } @@ -116,9 +150,9 @@ /// <summary> /// 鍔犺浇鍔熻兘Row /// </summary> - void LoadFunctionRow(FunctionAttributes trait) + void LoadFunctionRow(SceneFunctionStatus sceneStatus) { - if (trait == null) + if (sceneStatus == null) return; #region Row code var row = new FrameLayout() @@ -127,7 +161,7 @@ BackgroundColor = CSS_Color.MainBackgroundColor, }; contentView.AddChidren(row); - if (trait.key != "on_off") + 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 }); } @@ -147,9 +181,11 @@ TextAlignment = TextAlignment.CenterRight, TextColor = CSS_Color.PromptingColor1, TextSize = CSS_FontSize.PromptFontSize_FirstLevel, - Text = trait.GetCurValueText() + trait.uintString + Text = FunctionList.List.GetValueText(sceneStatus.key,sceneStatus.value) + FunctionList.List.GetUintString(sceneStatus.key) }; row.AddChidren(btnFunctionText); + if (sceneStatus.key == FunctionAttributeKey.OnOff) + btnOnText = btnFunctionText; var btnFunctionName = new Button() { @@ -157,62 +193,48 @@ TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.SubheadingFontSize, - Text = trait.name_text + Text = FunctionList.List.GetNameText(sceneStatus.key) }; row.AddChidren(btnFunctionName); btnFunctionName.MouseUpEventHandler = (sender, e) => { - switch (trait.key) + switch (sceneStatus.key) { - case "on_off": - LoadEditDialog_OnOff(trait, btnFunctionText); + case FunctionAttributeKey.OnOff: + LoadEditDialog_OnOff(sceneStatus, btnFunctionText); break; - case "brightness": - LoadEditDialog_Percent(trait, btnFunctionText); + case FunctionAttributeKey.Brightness: + LoadEditDialog_Percent(sceneStatus, btnFunctionText); break; - //case "color": - // break; - case "mode": - LoadEditDialog_FunctionPar(trait, btnFunctionText); + 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 "fan": - LoadEditDialog_FunctionPar(trait, btnFunctionText); + 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 "set_temperature": - LoadEditDialog_Temp(trait, btnFunctionText); + case FunctionAttributeKey.SetTemp: + LoadEditDialog_Temp(sceneStatus, btnFunctionText); break; case "delay": break; case "cct": break; - //case "fade_time": - case "percent": - LoadEditDialog_Percent(trait, btnFunctionText); + case FunctionAttributeKey.Percent: + LoadEditDialog_Percent(sceneStatus, btnFunctionText); break; - //case "lock": - //case "ico": - //case "swing": - //case "set_ point": - //case "pm25": - //case "volume": - //case "vol_step": - //case "source": - //case "treble": - //case "bass": - //case "playlist": - //case "song_name": - //case "current_status": - //case "enable": - //case "lux": - //case "adjust_value": - //case "range": - //case "humidity": - //case "type": - //case "state": - //case "sensitivity": - //case "pm25value": } - //LoadEditDialog_Temp(trait, btnFunctionText); }; #endregion @@ -250,7 +272,7 @@ TextAlignment = TextAlignment.CenterRight, TextColor = CSS_Color.PromptingColor1, TextSize = CSS_FontSize.PromptFontSize_FirstLevel, - Text = scene.delayText + Text = FunctionList.List.GetDelayText( sceneFunction.delay) }; delayRow.AddChidren(btnDelayInfo); @@ -266,10 +288,12 @@ btnSceneDelayTitle.MouseUpEventHandler = (sender, e) => { - new PublicAssmebly().SetSceneDelayDialog(function, btnDelayInfo); + Action<string> action = (obj) => { + sceneFunction.delay = obj; + btnDelayInfo.Text = FunctionList.List.GetDelayText(obj); + }; + new PublicAssmebly().SetSceneDelayDialog(action,sceneFunction.delay); }; - - #endregion @@ -282,7 +306,7 @@ /// </summary> /// <param name="function"></param> /// <param name="btn"></param> - void LoadEditDialog_OnOff(FunctionAttributes trait, Button btn) + void LoadEditDialog_OnOff(SceneFunctionStatus trait, Button btn) { Dialog dialog = new Dialog(); @@ -320,7 +344,7 @@ SelectedTextColor = CSS_Color.MainColor, TextSize = CSS_FontSize.SubheadingFontSize, TextID = StringId.On, - IsSelected = function.trait_on_off.curValue.ToString() == "on" + IsSelected = trait.value.ToString() == "on" }; optionView.AddChidren(btnOn); @@ -334,7 +358,7 @@ SelectedTextColor = CSS_Color.MainColor, TextSize = CSS_FontSize.SubheadingFontSize, TextID = StringId.OFF, - IsSelected = function.trait_on_off.curValue.ToString() == "off" + IsSelected = trait.value.ToString() == "off" }; optionView.AddChidren(btnOff); @@ -363,13 +387,15 @@ }; btnOn.MouseUpEventHandler = (sender, e) => { dialog.Close(); - trait.curValue = "on"; - btn.Text = trait.GetCurValueText() + trait.uintString; + trait.value = "on"; + sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff).value = "on"; + btn.Text = FunctionList.List.GetValueText(trait.key, trait.value) + FunctionList.List.GetUintString(trait.key); }; btnOff.MouseUpEventHandler = (sender,e) =>{ dialog.Close(); - trait.curValue = "off"; - btn.Text= trait.GetCurValueText() + trait.uintString; + trait.value = "off"; + sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff).value = "off"; + btn.Text= FunctionList.List.GetValueText(trait.key,trait.value) + FunctionList.List.GetUintString(trait.key); }; } @@ -379,8 +405,12 @@ /// </summary> /// <param name="function"></param> /// <param name="btn"></param> - void LoadEditDialog_Temp(FunctionAttributes trait, Button btn) + void LoadEditDialog_Temp(SceneFunctionStatus trait, Button btn) { + double temp = 16; + double.TryParse(trait.value, out temp); + trait.value = temp.ToString(); + List<string> pickerItems = new List<string>(); if(trait == null) { @@ -446,33 +476,19 @@ Height = Application.GetRealHeight(210), Radius = (uint)Application.GetRealWidth(12), }; - if(trait!=null) + for (int i = 16; i <= 32; i += 1) { - if (trait.data_type == "float") - { - for (double i = trait.min; i <= trait.max; i += 0.5) - { - pickerItems.Add(i.ToString() + trait.uintString); - } - } - else - { - for (int i = trait.min; i <= trait.max; i += 1) - { - pickerItems.Add(i.ToString() + trait.uintString); - } - } - }else - { - for (int i = 16; i <= 32; i += 1) - { - pickerItems.Add(i.ToString() + trait.uintString); - } + pickerItems.Add(i.ToString() + FunctionList.List.GetUintString(trait.key)); } uIPickerView.setNPicker(pickerItems, null, null); optionBaseView.AddChidren(uIPickerView); - uIPickerView.setCurrentItems(pickerItems.IndexOf(trait.curValue.ToString()), 4, 5); - string selectItem = trait.curValue.ToString() + trait.uintString; + uIPickerView.setCurrentItems(pickerItems.IndexOf(trait.value.ToString()), 4, 5); + + string selectItem = pickerItems[0]; + if (pickerItems.Contains(trait.value + FunctionList.List.GetUintString(trait.key))) + { + selectItem = trait.value.ToString() + FunctionList.List.GetUintString(trait.key); + } dialog.Show(); @@ -489,18 +505,18 @@ btnConfrim.MouseUpEventHandler = (sender, e) => { dialog.Close(); btn.Text = selectItem; - trait.curValue = selectItem.Replace(trait.uintString,""); + //sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff).value = trait.value.ToString() ; + trait.value = selectItem.Replace(FunctionList.List.GetUintString(trait.key),""); }; } - /// <summary> /// 鍔犺浇浜害閫夋嫨寮圭獥 /// </summary> /// <param name="function"></param> /// <param name="btn"></param> - void LoadEditDialog_Percent(FunctionAttributes trait, Button btn) + void LoadEditDialog_Percent(SceneFunctionStatus trait, Button btn) { if (trait == null) { @@ -539,13 +555,12 @@ optionBaseView.AddChidren(topView); topView.AddChidren(new Button() { Y = Application.GetRealHeight(39), Height = Application.GetRealHeight(1), BackgroundColor = CSS_Color.DividingLineColor }); - var btnTitle = new Button() { Gravity = Gravity.CenterHorizontal, TextAlignment = TextAlignment.Center, Width = Application.GetRealWidth(100), - Text = trait.name_text, + Text = FunctionList.List.GetNameText(trait.key), IsBold = true, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.SubheadingFontSize, @@ -573,8 +588,6 @@ }; topView.AddChidren(btnConfrim); - - Button btnMinusSignIcon = new Button() { X = Application.GetRealWidth(26), @@ -598,7 +611,7 @@ ProgressTextColor = CSS_Color.FirstLevelTitleColor, ProgressTextSize = CSS_FontSize.PromptFontSize_FirstLevel, MaxValue = 100, - Progress = trait.curValue.ToString().Replace("{}", "") == "" ? 0 : Convert.ToInt32( trait.curValue), + Progress = trait.value.ToString().Replace("{}", "") == "" ? 0 : Convert.ToInt32(trait.value.Replace("{}", "")), SeekBarPadding = Application.GetRealWidth(20), }; optionBaseView.AddChidren(controlBar); @@ -613,35 +626,51 @@ }; optionBaseView.AddChidren(btnPlusSgnIcon); - btnMinusSignIcon.MouseUpEventHandler = (sender, e) => { + btnMinusSignIcon.MouseUpEventHandler = (sender, e) => + { controlBar.Progress--; }; - btnPlusSgnIcon.MouseUpEventHandler = (sender, e) => { + btnPlusSgnIcon.MouseUpEventHandler = (sender, e) => + { controlBar.Progress++; }; - dialog.Show(); - pView.MouseUpEventHandler = (sender, e) => { + pView.MouseUpEventHandler = (sender, e) => + { dialog.Close(); }; - btnCancel.MouseUpEventHandler = (sender, e) => { + btnCancel.MouseUpEventHandler = (sender, e) => + { dialog.Close(); }; - btnConfrim.MouseUpEventHandler = (sender, e) => { + btnConfrim.MouseUpEventHandler = (sender, e) => + { dialog.Close(); - trait.curValue = controlBar.Progress; - btn.Text = trait.curValue + trait.uintString; + trait.value = controlBar.Progress.ToString(); + btn.Text = trait.value + FunctionList.List.GetUintString(trait.key); + + var temp = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff); + if (temp != null) + { + if (controlBar.Progress > 0) + { + temp.value = "on"; + } + else + { + temp.value = "off"; + } + btnOnText.Text = FunctionList.List.GetValueText(temp.key, temp.value); + } }; } - - - + /// <summary> /// 鍔犺浇鍔熻兘灞炴�ф暟鎹�夋嫨寮圭獥 /// </summary> - void LoadEditDialog_FunctionPar(FunctionAttributes trait, Button btn) + void LoadEditDialog_FunctionPar(SceneFunctionStatus trait, Button btn,List<string> statusList) { Button lastButton = new Button(); var lastData = ""; @@ -656,10 +685,10 @@ var optionBaseView = new FrameLayout() { - Y = Application.GetRealHeight(579 - 50 * trait.value.Count), + Y = Application.GetRealHeight(579 - 50 * statusList.Count), Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth(343), - Height = Application.GetRealHeight(50 * trait.value.Count + 50), + Height = Application.GetRealHeight(50 * statusList.Count + 50), AnimateSpeed = 0.3f, Animate = Animate.DownToUp, BackgroundColor = CSS_Color.MainBackgroundColor, @@ -682,7 +711,7 @@ Gravity = Gravity.CenterHorizontal, TextAlignment = TextAlignment.Center, Width = Application.GetRealWidth(100), - Text = trait.name_text, + Text = FunctionList.List.GetNameText(trait.key), IsBold = true, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.SubheadingFontSize, @@ -710,7 +739,7 @@ }; topView.AddChidren(btnConfrim); int hei = 1; - foreach (var m in trait.value) + foreach (var m in statusList) { var row = new FrameLayout() { @@ -718,7 +747,7 @@ Height = Application.GetRealHeight(50), }; optionBaseView.AddChidren(row); - if (trait.value.Count > hei) + if (statusList.Count > hei) { optionBaseView.AddChidren(new Button() { @@ -742,7 +771,7 @@ }; row.AddChidren(btnChoose); - if (trait.curValue.ToString() == m) + if (trait.value == m) { lastButton = btnChoose; btnChoose.IsSelected = true; @@ -754,7 +783,7 @@ TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.TextFontSize, Tag = m, - Text = trait.GetValueText(m) + Text = FunctionList.List.GetValueText(trait.key, m) }; row.AddChidren(btnPropertyTitle); @@ -784,7 +813,8 @@ }; btnConfrim.MouseUpEventHandler = (sender, e) => { dialog.Close(); - trait.curValue = lastData; + trait.value = lastData; + //sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff).value = trait.curValue.ToString() ; btn.Text = lastText; }; -- Gitblit v1.8.0