| | |
| | | /// </summary> |
| | | Action refreshFunctionRowAction; |
| | | /// <summary> |
| | | /// 回掉更新 |
| | | /// 回调更新 |
| | | /// </summary> |
| | | Action backAction; |
| | | public SceneAddPage(Scene s, Action act) |
| | |
| | | scene = s; |
| | | backAction = act; |
| | | |
| | | |
| | | refreshFunctionRowAction = () => { |
| | | LoadFunctionRow(functionListView); |
| | | }; |
| | | } |
| | | |
| | | public void LoadPage( Action backRefresh) |
| | | public void LoadPage() |
| | | { |
| | | new TopViewDiv(bodyView, Language.StringByID(StringId.NewScene)).LoadTopView(backRefresh); |
| | | initPage(); |
| | | } |
| | | |
| | | void initPage() |
| | | { |
| | | new TopViewDiv(bodyView, Language.StringByID(StringId.NewScene)).LoadTopView(); |
| | | |
| | | bodyView.BackgroundColor = CSS_Color.MainBackgroundColor; |
| | | |
| | | VerticalScrolViewLayout contentView = new VerticalScrolViewLayout() |
| | | var contentView = new VerticalScrolViewLayout() |
| | | { |
| | | Y = Application.GetRealHeight(64), |
| | | Height = Application.GetRealHeight(603 - 50), |
| | |
| | | bodyView.AddChidren(contentView); |
| | | contentView.AddChidren(new Button() { Height = Application.GetRealWidth(12) }); |
| | | |
| | | FrameLayout sceneBgView = new FrameLayout() |
| | | var sceneBgView = new FrameLayout() |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Width = Application.GetRealWidth(252), |
| | |
| | | |
| | | //2020-12-03 修改图片加载方法 |
| | | ImageUtlis.Current.LoadLocalOrNetworkImages(scene.ImagePath, addSceneImageView); |
| | | |
| | | |
| | | #region 场景名称row |
| | | sceneNameView = new FrameLayout() |
| | |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = CSS_FontSize.TextFontSize, |
| | | TextID = StringId.BelongToZone, |
| | | TextID = StringId.LocationManagement, |
| | | }; |
| | | belongToZoneRow.AddChidren(btnBelongToTitle); |
| | | |
| | |
| | | TextAlignment = TextAlignment.CenterRight, |
| | | TextColor = CSS_Color.PromptingColor1, |
| | | TextSize = CSS_FontSize.TextFontSize, |
| | | Text = scene.GetRoomListName() == "" ? Language.StringByID(StringId.WholeHouseScene) : scene.GetRoomListName() |
| | | Text = scene.GetRoomListName() == "" ? Language.StringByID(StringId.WholeZone) : scene.GetRoomListName() |
| | | }; |
| | | belongToZoneRow.AddChidren(btnZoneName); |
| | | |
| | |
| | | TextAlignment = TextAlignment.CenterRight, |
| | | TextColor = CSS_Color.PromptingColor1, |
| | | TextSize = CSS_FontSize.PromptFontSize_FirstLevel, |
| | | Text = scene.delayText |
| | | Text = scene.GetDelayText() |
| | | }; |
| | | sceneDelayRow.AddChidren(btnSceneDelayInfo); |
| | | |
| | |
| | | }; |
| | | sceneDelayRow.AddChidren(btnSceneDelayTitle); |
| | | |
| | | |
| | | btnSceneDelayTitle.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | new PublicAssmebly().SetSceneDelayDialog(scene, btnSceneDelayInfo); |
| | | Action<string> action = (obj) => { |
| | | scene.delay = obj; |
| | | btnSceneDelayInfo.Text = scene.GetDelayText(); |
| | | }; |
| | | Dictionary<string, string> items = new Dictionary<string, string>(); |
| | | items.Add("30", "30s"); |
| | | items.Add("60", "1min"); |
| | | items.Add("120", "2min"); |
| | | items.Add("300", "5min"); |
| | | new PublicAssmebly().SetSceneDelayDialog( action ,scene.delay); |
| | | |
| | | |
| | | }; |
| | | |
| | | contentView.AddChidren(new Button() |
| | |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextColor = CSS_Color.MainColor, |
| | | TextSize = CSS_FontSize.SubheadingFontSize, |
| | | TextID = StringId.AddFunction, |
| | | TextID = StringId.FunctionManagement, |
| | | IsBold = true, |
| | | }; |
| | | addFunctionRow.AddChidren(btnAddFunctionTitle); |
| | |
| | | |
| | | LoadEventList(); |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 加载功能列表 |
| | | /// </summary> |
| | |
| | | }; |
| | | row.AddChidren(btnRight); |
| | | |
| | | |
| | | |
| | | var btnFunctionInfo = new Button() |
| | | { |
| | | Width = Application.GetRealWidth(327), |
| | |
| | | |
| | | if (Convert.ToInt32(scenefunction.delay) > 0) |
| | | { |
| | | btnFunctionDelayInfo.Text = Language.StringByID(StringId.Delay) + " " + scenefunction.localFunction.delayText; |
| | | btnFunctionDelayInfo.Text = Language.StringByID(StringId.Delay) + " " + new Scene() { delay = scenefunction.delay }.GetDelayText(); |
| | | } |
| | | else |
| | | { |
| | |
| | | }; |
| | | row.AddChidren(btnFunctionFloorAndRoom); |
| | | |
| | | btnFunctionName.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | var ssf = new SceneFunctionInfoEditPage(scene, scenefunction, refreshFunctionRowAction); |
| | | MainPage.BasePageView.AddChidren(ssf); |
| | | ssf.LoadPage(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | }; |
| | | btnFunctionFloorAndRoom.MouseUpEventHandler = (sender, e) => |
| | | EventHandler<MouseEventArgs> skipEvent= (sender, e) => |
| | | { |
| | | var ssf = new SceneFunctionInfoEditPage(scene, scenefunction, refreshFunctionRowAction); |
| | | MainPage.BasePageView.AddChidren(ssf); |
| | |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | }; |
| | | |
| | | btnFunctionName.MouseUpEventHandler = skipEvent; |
| | | btnFunctionFloorAndRoom.MouseUpEventHandler = skipEvent; |
| | | |
| | | Button btnDelSceneFunction = new Button() |
| | | { |
| | |
| | | row.AddRightView(btnDelSceneFunction); |
| | | btnDelSceneFunction.MouseUpEventHandler = (sender, e) => { |
| | | scene.functions.Remove(scenefunction); |
| | | scene.SaveSceneData(true); |
| | | row.RemoveFromParent(); |
| | | functionListView.Height = Application.GetRealWidth(65 * scene.functions.Count); |
| | | //LoadFunctionRow(functionListView); |
| | | }; |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | |
| | | if (sfs.value == "off") |
| | | return Language.StringByID(StringId.Close); |
| | | } |
| | | if (sfs.key == FunctionAttributeKey.Mode) |
| | | { |
| | | |
| | | } |
| | | } |
| | | FunctionAttributes perTrait; |
| | | |
| | | switch (sceneFunction.localFunction.functionType) |
| | | sceneFunctionInfo += Language.StringByID(StringId.Open); |
| | | |
| | | var modeState = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Mode); |
| | | var tempState = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.SetTemp); |
| | | var fanState = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.FanSpeed); |
| | | if (modeState != null) |
| | | { |
| | | case FunctionType.AC: |
| | | sceneFunctionInfo += sceneFunction.localFunction.attributes.Find((obj) => obj.key == "mode").GetCurValueText(); |
| | | sceneFunctionInfo += " " + sceneFunction.localFunction.attributes.Find((obj) => obj.key == "set_temp").curValue.ToString() + |
| | | sceneFunction.localFunction.attributes.Find((obj) => obj.key == "set_temp").uintString; |
| | | sceneFunctionInfo += sceneFunction.localFunction.attributes.Find((obj) => obj.key == "fan").GetCurValueText(); |
| | | break; |
| | | case FunctionType.FloorHeating: |
| | | sceneFunctionInfo += sceneFunction.localFunction.attributes.Find((obj) => obj.key == "mode").GetCurValueText(); |
| | | sceneFunctionInfo += " " + sceneFunction.localFunction.attributes.Find((obj) => obj.key == "set_temp").curValue.ToString() + |
| | | sceneFunction.localFunction.attributes.Find((obj) => obj.key == "set_temp").uintString; |
| | | break; |
| | | case FunctionType.Dimmer: |
| | | perTrait = sceneFunction.localFunction.attributes.Find((obj) => obj.key == "brightness"); |
| | | if (perTrait != null) |
| | | { |
| | | sceneFunctionInfo += Language.StringByID(StringId.Open) + " " + sceneFunction.localFunction.attributes.Find((obj) => obj.key == "brightness").curValue.ToString() + "%"; |
| | | } |
| | | else |
| | | { |
| | | sceneFunctionInfo += Language.StringByID(StringId.Open); |
| | | } |
| | | break; |
| | | case FunctionType.Relay: |
| | | sceneFunctionInfo += Language.StringByID(StringId.Open); |
| | | break; |
| | | case FunctionType.RGB: |
| | | perTrait = sceneFunction.localFunction.attributes.Find((obj) => obj.key == "percent"); |
| | | if (perTrait != null) |
| | | { |
| | | sceneFunctionInfo += Language.StringByID(StringId.Open) + " " + sceneFunction.localFunction.attributes.Find((obj) => obj.key == "brightness").curValue.ToString() + "%"; |
| | | } |
| | | else |
| | | { |
| | | sceneFunctionInfo += Language.StringByID(StringId.Open); |
| | | } |
| | | break; |
| | | case FunctionType.Curtain: |
| | | sceneFunctionInfo += Language.StringByID(StringId.Open); |
| | | break; |
| | | case FunctionType.MotorCurtain: |
| | | perTrait = sceneFunction.localFunction.attributes.Find((obj) => obj.key == "percent"); |
| | | if (perTrait != null) |
| | | { |
| | | sceneFunctionInfo += Language.StringByID(StringId.Open) + " " + sceneFunction.localFunction.attributes.Find((obj) => obj.key == "percent").curValue.ToString() + "%"; |
| | | } |
| | | else |
| | | { |
| | | sceneFunctionInfo += Language.StringByID(StringId.Open); |
| | | } |
| | | break; |
| | | sceneFunctionInfo += modeState.GetValueText(); |
| | | } |
| | | if (tempState != null) |
| | | { |
| | | sceneFunctionInfo += tempState.GetValueText(); |
| | | sceneFunctionInfo += tempState.GetUintString(); |
| | | } |
| | | if (fanState != null) |
| | | { |
| | | sceneFunctionInfo += tempState.GetValueText(); |
| | | } |
| | | var briState = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Brightness); |
| | | if (briState != null) |
| | | { |
| | | sceneFunctionInfo += briState.value + "%"; |
| | | } |
| | | var perState = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Percent); |
| | | if (perState != null) |
| | | { |
| | | sceneFunctionInfo += perState.value + "%"; |
| | | } |
| | | |
| | | return sceneFunctionInfo; |
| | | } |
| | | |
| | |
| | | void LoadEvent_ChangeFunctionList() |
| | | { |
| | | btnAddFunctionTitle.MouseUpEventHandler = (sender, e) => { |
| | | var sefp = new SceneFunctionListEditPage(scene, refreshFunctionRowAction); |
| | | var sefp = new SceneFunctionListChoosePage(scene, refreshFunctionRowAction); |
| | | MainPage.BasePageView.AddChidren(sefp); |
| | | sefp.LoadPage(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | |
| | | pictureOptionView.Parent.RemoveFromParent(); |
| | | Action<string> action = (obj) => { |
| | | scene.ImagePath = obj; |
| | | addSceneImageView.ImageBytes = null;//解决有ImageBytes不加载ImagePath |
| | | addSceneImageView.ImagePath = scene.ImagePath; |
| | | }; |
| | | |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 创建场景 |
| | | /// 完成按钮点击事件 |
| | | /// </summary> |
| | | void LoadEvent_CompleteEvent() |
| | | { |
| | | btnComplete.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | if (btnComplete.TextID == StringId.Complete) |
| | | if (string.IsNullOrEmpty(scene.name)) |
| | | { |
| | | if (string.IsNullOrEmpty(scene.name)) |
| | | new Tip() |
| | | { |
| | | new Tip() |
| | | { |
| | | CloseTime = 1, |
| | | Text = Language.StringByID(StringId.SceneNameCannotBeEmpty), |
| | | Direction = AMPopTipDirection.None, |
| | | }.Show(bodyView); |
| | | CloseTime = 1, |
| | | Text = Language.StringByID(StringId.SceneNameCannotBeEmpty), |
| | | Direction = AMPopTipDirection.None, |
| | | }.Show(bodyView); |
| | | return; |
| | | } |
| | | foreach (var tempRoom in FunctionList.List.scenes) |
| | | { |
| | | if (scene.name == tempRoom.name) |
| | | { |
| | | new PublicAssmebly().TipMsg(StringId.Tip, StringId.SceneNameAlreadyExists); |
| | | return; |
| | | } |
| | | foreach (var tempRoom in FunctionList.List.scenes) |
| | | { |
| | | if (scene.name == tempRoom.name) |
| | | { |
| | | new PublicAssmebly().TipMsg(StringId.Tip, StringId.SceneNameAlreadyExists); |
| | | return; |
| | | } |
| | | } |
| | | scene.SaveSceneData(true); |
| | | FunctionList.List.scenes.Add(scene); |
| | | backAction(); |
| | | this.RemoveFromParent(); |
| | | } |
| | | if (btnComplete.TextID == StringId.Del) |
| | | var waitPage = new Loading(); |
| | | MainPage.BaseView.AddChidren(waitPage); |
| | | waitPage.Start(Language.StringByID(StringId.PleaseWait)); |
| | | new Thread(() => |
| | | { |
| | | Action action = () => |
| | | try |
| | | { |
| | | FunctionList.List.DeleteScene(scene, true); |
| | | backAction(); |
| | | this.RemoveFromParent(); |
| | | }; |
| | | new PublicAssmebly().TipOptionMsg(StringId.Tip, StringId.DeleteSceneTip, action); |
| | | }; |
| | | var serverScene = new Scene(); |
| | | var result = FunctionList.List.AddScene(scene, out serverScene); |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | if (result == StateCode.SUCCESS) |
| | | { |
| | | scene = serverScene; |
| | | FunctionList.List.scenes.Add(scene); |
| | | backAction(); |
| | | RemoveFromParent(); |
| | | } |
| | | else |
| | | { |
| | | IMessageCommon.Current.ShowErrorInfoAlter(result); |
| | | } |
| | | }); |
| | | } |
| | | catch { } |
| | | finally |
| | | { |
| | | Application.RunOnMainThread(() => { |
| | | waitPage.Hide(); |
| | | waitPage.RemoveFromParent(); |
| | | }); |
| | | } |
| | | }) |
| | | { IsBackground = true, Priority = ThreadPriority.AboveNormal }.Start(); |
| | | }; |
| | | } |
| | | |