| | |
| | | { |
| | | 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() |
| | | { |
| | |
| | | }; |
| | | bodyView.AddChidren(contentView); |
| | | |
| | | //加载开关Row |
| | | LoadFunctionRow(sceneFunction.localFunction.trait_on_off); |
| | | LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff)); |
| | | |
| | | switch (sceneFunction.localFunction.functionType) |
| | | foreach (var attr in sceneFunction.status) |
| | | { |
| | | 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; |
| | | 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; |
| | | } |
| | | } |
| | | |
| | | //加载开关Row |
| | | //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(); |
| | |
| | | |
| | | btnConfrim.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | //var temp = localFunction.ConvertSceneFunction(); |
| | | var temp = scene.functions.Find((obj) => obj.sid == sceneFunction.sid); |
| | | if (temp != null) |
| | | { |
| | |
| | | { |
| | | scene.functions.Add(sceneFunction); |
| | | } |
| | | scene.SaveSceneData(true); |
| | | 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); |
| | | } |
| | | } |
| | | }; |
| | | } |
| | | |
| | |
| | | /// <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() |
| | |
| | | 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 }); |
| | | } |
| | |
| | | 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() |
| | | { |
| | |
| | | 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_temp": |
| | | 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 |
| | |
| | | /// </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(); |
| | | |
| | |
| | | SelectedTextColor = CSS_Color.MainColor, |
| | | TextSize = CSS_FontSize.SubheadingFontSize, |
| | | TextID = StringId.On, |
| | | IsSelected = trait.curValue.ToString() == "on" |
| | | IsSelected = trait.value.ToString() == "on" |
| | | }; |
| | | optionView.AddChidren(btnOn); |
| | | |
| | |
| | | SelectedTextColor = CSS_Color.MainColor, |
| | | TextSize = CSS_FontSize.SubheadingFontSize, |
| | | TextID = StringId.OFF, |
| | | IsSelected = trait.curValue.ToString() == "off" |
| | | IsSelected = trait.value.ToString() == "off" |
| | | }; |
| | | optionView.AddChidren(btnOff); |
| | | |
| | |
| | | }; |
| | | btnOn.MouseUpEventHandler = (sender, e) => { |
| | | dialog.Close(); |
| | | trait.curValue = "on"; |
| | | trait.value = "on"; |
| | | sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff).value = "on"; |
| | | btn.Text = trait.GetCurValueText() + trait.uintString; |
| | | btn.Text = FunctionList.List.GetValueText(trait.key, trait.value) + FunctionList.List.GetUintString(trait.key); |
| | | }; |
| | | btnOff.MouseUpEventHandler = (sender,e) =>{ |
| | | dialog.Close(); |
| | | trait.curValue = "off"; |
| | | trait.value = "off"; |
| | | sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff).value = "off"; |
| | | btn.Text= trait.GetCurValueText() + trait.uintString; |
| | | btn.Text= FunctionList.List.GetValueText(trait.key,trait.value) + FunctionList.List.GetUintString(trait.key); |
| | | }; |
| | | |
| | | } |
| | |
| | | /// </summary> |
| | | /// <param name="function"></param> |
| | | /// <param name="btn"></param> |
| | | void LoadEditDialog_Temp(FunctionAttributes trait, Button btn) |
| | | void LoadEditDialog_Temp(SceneFunctionStatus trait, Button btn) |
| | | { |
| | | List<string> pickerItems = new List<string>(); |
| | | if(trait == null) |
| | |
| | | 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 = trait.value.ToString() + FunctionList.List.GetUintString(trait.key); |
| | | |
| | | dialog.Show(); |
| | | |
| | |
| | | btnConfrim.MouseUpEventHandler = (sender, e) => { |
| | | dialog.Close(); |
| | | btn.Text = selectItem; |
| | | sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff).value = trait.curValue.ToString() ; |
| | | 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) |
| | | { |
| | |
| | | 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, |
| | |
| | | }; |
| | | topView.AddChidren(btnConfrim); |
| | | |
| | | |
| | | |
| | | Button btnMinusSignIcon = new Button() |
| | | { |
| | | X = Application.GetRealWidth(26), |
| | |
| | | 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); |
| | |
| | | controlBar.Progress++; |
| | | }; |
| | | |
| | | |
| | | dialog.Show(); |
| | | pView.MouseUpEventHandler = (sender, e) => { |
| | | dialog.Close(); |
| | |
| | | }; |
| | | btnConfrim.MouseUpEventHandler = (sender, e) => { |
| | | dialog.Close(); |
| | | trait.curValue = controlBar.Progress; |
| | | sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff).value = trait.curValue.ToString() ; |
| | | btn.Text = trait.curValue + trait.uintString; |
| | | trait.value = controlBar.Progress.ToString(); |
| | | btn.Text = trait.value + FunctionList.List.GetUintString(trait.key); |
| | | if (controlBar.Progress > 0) |
| | | { |
| | | var temp = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff); |
| | | if (temp != null) |
| | | { |
| | | temp.value = "on"; |
| | | 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 = ""; |
| | |
| | | |
| | | 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, |
| | |
| | | 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, |
| | |
| | | }; |
| | | topView.AddChidren(btnConfrim); |
| | | int hei = 1; |
| | | foreach (var m in trait.value) |
| | | foreach (var m in statusList) |
| | | { |
| | | var row = new FrameLayout() |
| | | { |
| | |
| | | Height = Application.GetRealHeight(50), |
| | | }; |
| | | optionBaseView.AddChidren(row); |
| | | if (trait.value.Count > hei) |
| | | if (statusList.Count > hei) |
| | | { |
| | | optionBaseView.AddChidren(new Button() |
| | | { |
| | |
| | | |
| | | }; |
| | | row.AddChidren(btnChoose); |
| | | if (trait.curValue.ToString() == m) |
| | | if (trait.value == m) |
| | | { |
| | | lastButton = btnChoose; |
| | | btnChoose.IsSelected = true; |
| | |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = CSS_FontSize.TextFontSize, |
| | | Tag = m, |
| | | Text = trait.GetValueText(m) |
| | | Text = FunctionList.List.GetValueText(trait.key, m) |
| | | }; |
| | | row.AddChidren(btnPropertyTitle); |
| | | |
| | |
| | | }; |
| | | btnConfrim.MouseUpEventHandler = (sender, e) => { |
| | | dialog.Close(); |
| | | trait.curValue = lastData; |
| | | sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff).value = trait.curValue.ToString() ; |
| | | trait.value = lastData; |
| | | //sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff).value = trait.curValue.ToString() ; |
| | | btn.Text = lastText; |
| | | }; |
| | | |