From bb6ad792b598927a5459a5fb6f6c27fb1aa9e94e Mon Sep 17 00:00:00 2001 From: wei <kaede@kaededeMacBook-Air.local> Date: 星期四, 17 十二月 2020 14:06:36 +0800 Subject: [PATCH] 20201217-1 --- HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs | 332 ++++++++++++++++++++++++++++-------------------------- 1 files changed, 171 insertions(+), 161 deletions(-) diff --git a/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs b/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs index b91a9ea..3131df6 100644 --- a/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs +++ b/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs @@ -10,21 +10,19 @@ { FrameLayout bodyView; VerticalScrolViewLayout contentView; + Button btnOnText; Scene scene; Action refreshAction; SceneFunction sceneFunction; - //Function localFunction; public SceneFunctionInfoEditPage(Scene s, SceneFunction fc,Action action) { bodyView = this; scene = s; - //localFunction = fc; sceneFunction = fc; refreshAction = action; } - public void LoadPage() { @@ -40,57 +38,58 @@ }; bodyView.AddChidren(contentView); - //鍔犺浇寮�鍏砇ow - LoadFunctionRow(sceneFunction.localFunction.trait_on_off); + LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff)); - //foreach(var attr in sceneFunction.status) - //{ - // switch (attr.key) - // { - // case "set_temperature": - // LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "set_temperature")); - // break; - // case "mode": - // LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "mode")); - // break; - // case "fan": - // LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "fan")); - // break; - // case "percent": - // LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "percent")); - // break; - // case "brightness": - // LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "brightness")); - // break; - // } - //} - - switch (sceneFunction.localFunction.functionType) + foreach (var attr in sceneFunction.status) { - case FunctionType.AC: - LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "set_temperature")); - 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_temperature")); - 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; + 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(); @@ -122,7 +121,6 @@ btnConfrim.MouseUpEventHandler = (sender, e) => { - //var temp = localFunction.ConvertSceneFunction(); var temp = scene.functions.Find((obj) => obj.sid == sceneFunction.sid); if (temp != null) { @@ -132,8 +130,24 @@ { 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); + } + } + else + { + refreshAction(); + this.RemoveFromParent(); + } }; } @@ -141,9 +155,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() @@ -152,7 +166,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 }); } @@ -172,9 +186,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() { @@ -182,62 +198,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 @@ -275,7 +277,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); @@ -291,10 +293,12 @@ btnSceneDelayTitle.MouseUpEventHandler = (sender, e) => { - new PublicAssmebly().SetSceneDelayDialog(scene, btnDelayInfo); + Action<string> action = (obj) => { + sceneFunction.delay = obj; + btnDelayInfo.Text = FunctionList.List.GetDelayText(obj); + }; + new PublicAssmebly().SetSceneDelayDialog(action,sceneFunction.delay); }; - - #endregion @@ -307,7 +311,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(); @@ -345,7 +349,7 @@ SelectedTextColor = CSS_Color.MainColor, TextSize = CSS_FontSize.SubheadingFontSize, TextID = StringId.On, - IsSelected = trait.curValue.ToString() == "on" + IsSelected = trait.value.ToString() == "on" }; optionView.AddChidren(btnOn); @@ -359,7 +363,7 @@ SelectedTextColor = CSS_Color.MainColor, TextSize = CSS_FontSize.SubheadingFontSize, TextID = StringId.OFF, - IsSelected = trait.curValue.ToString() == "off" + IsSelected = trait.value.ToString() == "off" }; optionView.AddChidren(btnOff); @@ -388,13 +392,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); }; } @@ -404,8 +410,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) { @@ -471,33 +481,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(); @@ -514,18 +510,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) { @@ -564,13 +560,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, @@ -598,8 +593,6 @@ }; topView.AddChidren(btnConfrim); - - Button btnMinusSignIcon = new Button() { X = Application.GetRealWidth(26), @@ -623,7 +616,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); @@ -638,35 +631,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 = ""; @@ -681,10 +690,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, @@ -707,7 +716,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, @@ -735,7 +744,7 @@ }; topView.AddChidren(btnConfrim); int hei = 1; - foreach (var m in trait.value) + foreach (var m in statusList) { var row = new FrameLayout() { @@ -743,7 +752,7 @@ Height = Application.GetRealHeight(50), }; optionBaseView.AddChidren(row); - if (trait.value.Count > hei) + if (statusList.Count > hei) { optionBaseView.AddChidren(new Button() { @@ -767,7 +776,7 @@ }; row.AddChidren(btnChoose); - if (trait.curValue.ToString() == m) + if (trait.value == m) { lastButton = btnChoose; btnChoose.IsSelected = true; @@ -779,7 +788,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); @@ -809,7 +818,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