| | |
| | | |
| | | Scene scene; |
| | | |
| | | int pageTitleId; |
| | | /// <summary> |
| | | /// 更新功能row |
| | | /// </summary> |
| | |
| | | |
| | | |
| | | refreshFunctionRowAction = () => { |
| | | LoadFunctionRow(functionListView); |
| | | LoadFunctionRow(); |
| | | }; |
| | | } |
| | | |
| | | public void LoadPage(int titleId,Action backRefresh) |
| | | public void LoadPage(Action backRefresh) |
| | | { |
| | | pageTitleId = titleId; |
| | | new TopViewDiv(bodyView, Language.StringByID(pageTitleId)).LoadTopView(backRefresh); |
| | | initPage(); |
| | | } |
| | | |
| | | public void LoadPage(int titleId) |
| | | { |
| | | pageTitleId = titleId; |
| | | new TopViewDiv(bodyView, Language.StringByID(pageTitleId)).LoadTopView(); |
| | | new TopViewDiv(bodyView, Language.StringByID(StringId.EditScene)).LoadTopView(backRefresh); |
| | | initPage(); |
| | | } |
| | | |
| | |
| | | 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); |
| | | |
| | |
| | | #endregion |
| | | |
| | | #region 场景延时row |
| | | if (DB_ResidenceData.residenceData.GatewayType == 1) |
| | | if (DB_ResidenceData.Instance.GatewayType == 1) |
| | | { |
| | | FrameLayout sceneDelayRow = new FrameLayout() |
| | | { |
| | |
| | | TextAlignment = TextAlignment.CenterRight, |
| | | TextColor = CSS_Color.PromptingColor1, |
| | | TextSize = CSS_FontSize.PromptFontSize_FirstLevel, |
| | | Text = scene.delayText |
| | | Text = scene.GetDelayText() |
| | | }; |
| | | sceneDelayRow.AddChidren(btnSceneDelayInfo); |
| | | |
| | |
| | | |
| | | btnSceneDelayTitle.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | new PublicAssmebly().SetSceneDelayDialog(scene, btnSceneDelayInfo); |
| | | Action<string> action = (obj) => { |
| | | scene.delay = obj; |
| | | btnSceneDelayInfo.Text = scene.GetDelayText(); |
| | | scene.EditScene(); |
| | | }; |
| | | 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); |
| | |
| | | }; |
| | | contentView.AddChidren(functionListView); |
| | | |
| | | LoadFunctionRow(functionListView); |
| | | LoadFunctionRow(); |
| | | |
| | | Button btnLine1 = new Button() |
| | | { |
| | |
| | | Y = Application.GetRealHeight(667 - 50), |
| | | Height = Application.GetRealHeight(50), |
| | | TextAlignment = TextAlignment.Center, |
| | | TextColor = pageTitleId == StringId.NewScene ? CSS_Color.MainColor : CSS_Color.WarningColor, |
| | | TextColor = CSS_Color.WarningColor, |
| | | TextSize = CSS_FontSize.SubheadingFontSize, |
| | | TextID = pageTitleId == StringId.NewScene ? StringId.Complete : StringId.Del, |
| | | TextID = StringId.Del, |
| | | BackgroundColor = CSS_Color.MainBackgroundColor, |
| | | //IsBold = true |
| | | }; |
| | | bodyView.AddChidren(btnComplete); |
| | | |
| | | LoadEventList(); |
| | | |
| | | var waitPage = new Loading(); |
| | | new Thread(() => { |
| | | try |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | bodyView.AddChidren(waitPage); |
| | | waitPage.Start(Language.StringByID(StringId.PleaseWait)); |
| | | }); |
| | | var pm = new HttpServerRequest(); |
| | | var pack = pm.GetSceneInfo(scene.userSceneId); |
| | | if (pack.Code == StateCode.SUCCESS) |
| | | { |
| | | var sceneList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Scene>>(pack.Data.ToString()); |
| | | var tempScene = sceneList.Find((obj) => obj.userSceneId == scene.userSceneId); |
| | | if (tempScene != null) |
| | | { |
| | | scene.functions = tempScene.functions; |
| | | } |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | LoadFunctionRow(); |
| | | waitPage.Hide(); |
| | | waitPage.RemoveFromParent(); |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | IMessageCommon.Current.ShowErrorInfoAlter(pack.Code); |
| | | } |
| | | } |
| | | catch { } |
| | | finally |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | waitPage.Hide(); |
| | | waitPage.RemoveFromParent(); |
| | | }); |
| | | } |
| | | }).Start(); |
| | | } |
| | | /// <summary> |
| | | /// 加载功能列表 |
| | | /// </summary> |
| | | void LoadFunctionRow(VerticalScrolViewLayout functionListView) |
| | | void LoadFunctionRow() |
| | | { |
| | | functionListView.RemoveAll(); |
| | | functionListView.Height = Application.GetRealWidth(65 * scene.functions.Count); |
| | | foreach (var scenefunction in scene.functions) |
| | | for(int i =0;i<scene.functions.Count;) |
| | | { |
| | | var scenefunction = scene.functions[i]; |
| | | if (scenefunction.localFunction == null) |
| | | { |
| | | scene.functions.Remove(scenefunction); |
| | | continue; |
| | | } |
| | | i++; |
| | | var row = new RowLayout() |
| | | { |
| | | Height = Application.GetRealWidth(65), |
| | |
| | | }; |
| | | row.AddChidren(btnRight); |
| | | |
| | | |
| | | |
| | | var btnFunctionInfo = new Button() |
| | | { |
| | | Width = Application.GetRealWidth(327), |
| | |
| | | TextAlignment = TextAlignment.BottomRight, |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = CSS_FontSize.PromptFontSize_FirstLevel, |
| | | Text = GetFunctionScnenInfo(scenefunction), |
| | | Text = scenefunction.GetFunctionScnenInfo(), |
| | | }; |
| | | row.AddChidren(btnFunctionInfo); |
| | | |
| | |
| | | |
| | | 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) => |
| | | EventHandler<MouseEventArgs> skipEvent = (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) => |
| | | { |
| | | var ssf = new SceneFunctionInfoEditPage(scene, scenefunction, refreshFunctionRowAction); |
| | | MainPage.BasePageView.AddChidren(ssf); |
| | | ssf.LoadPage(); |
| | | 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); |
| | | scene.EditScene(); |
| | | row.RemoveFromParent(); |
| | | functionListView.Height = Application.GetRealWidth(65 * scene.functions.Count); |
| | | //LoadFunctionRow(functionListView); |
| | | }; |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 解析场景功能数据 |
| | | /// </summary> |
| | | /// <param name="sceneFunction"></param> |
| | | string GetFunctionScnenInfo(SceneFunction sceneFunction) |
| | | { |
| | | var sceneFunctionInfo = ""; |
| | | foreach (var sfs in sceneFunction.status) |
| | | { |
| | | if (sfs.key == FunctionAttributeKey.OnOff) |
| | | { |
| | | if (sfs.value == "off") |
| | | return Language.StringByID(StringId.Close); |
| | | } |
| | | if (sfs.key == FunctionAttributeKey.Mode) |
| | | { |
| | | |
| | | } |
| | | } |
| | | FunctionAttributes perTrait; |
| | | |
| | | switch (sceneFunction.localFunction.functionType) |
| | | { |
| | | case FunctionType.AC: |
| | | sceneFunctionInfo += sceneFunction.localFunction.attributes.Find((obj) => obj.key == "mode").GetCurValueText(); |
| | | sceneFunctionInfo += " " + sceneFunction.localFunction.attributes.Find((obj) => obj.key == "set_temperature").curValue.ToString() + |
| | | sceneFunction.localFunction.attributes.Find((obj) => obj.key == "set_temperature").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_temperature").curValue.ToString() + |
| | | sceneFunction.localFunction.attributes.Find((obj) => obj.key == "set_temperature").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; |
| | | } |
| | | return sceneFunctionInfo; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | EventHandler<MouseEventArgs> eventHandler = (sender, e) => |
| | | { |
| | | Action backAction = () => { |
| | | btnZoneName.Text = scene.GetRoomListName(); |
| | | var result = scene.EditScene(); |
| | | if (result == StateCode.SUCCESS) |
| | | { |
| | | btnZoneName.Text = scene.GetRoomListName(); |
| | | }else |
| | | { |
| | | IMessageCommon.Current.ShowErrorInfoAlter(result); |
| | | } |
| | | }; |
| | | var ssl = new SetSceneLocationPage(scene, backAction); |
| | | MainPage.BasePageView.AddChidren(ssl); |
| | |
| | | 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; |
| | |
| | | { |
| | | btnTakePicture.IsSelected = false; |
| | | |
| | | //var pid = Guid.NewGuid(); |
| | | //CropImage.TakePicture((imagePath) => |
| | | //{ |
| | | // if (imagePath != null) |
| | | // { |
| | | // addSceneImageView.ImagePath = imagePath.ToString(); |
| | | // scene.ImagePath = addSceneImageView.ImagePath; |
| | | // MainPage.Log("SelectPicture 裁剪图片返回路径: " + imagePath); |
| | | // } |
| | | //}, pid.ToString(), 4, 3); |
| | | |
| | | |
| | | var imageName = Guid.NewGuid().ToString(); |
| | | //var imageName = scene.sid; |
| | | CropImage.TakePicture((imagePath) => |
| | | { |
| | | CropImageCallBack(imagePath); |
| | | |
| | | }, imageName, 4, 3); |
| | | |
| | | //if (pageTitleId == StringId.EditScene) |
| | | //{ |
| | | // scene.SaveFunctionData(); |
| | | //} |
| | | pictureOptionView.Parent.RemoveFromParent(); |
| | | }; |
| | | btnAlbum.MouseDownEventHandler = (sender, e) => { |
| | |
| | | }, imageName, 4, 3); |
| | | |
| | | |
| | | //if (pageTitleId == StringId.EditScene) |
| | | //{ |
| | | // scene.SaveFunctionData(); |
| | | //} |
| | | pictureOptionView.Parent.RemoveFromParent(); |
| | | }; |
| | | |
| | |
| | | pictureOptionView.Parent.RemoveFromParent(); |
| | | Action<string> action = (obj) => { |
| | | scene.ImagePath = obj; |
| | | addSceneImageView.ImageBytes = null;//解决有ImageBytes不加载ImagePath |
| | | addSceneImageView.ImagePath = scene.ImagePath; |
| | | if (pageTitleId == StringId.EditScene) |
| | | { |
| | | scene.SaveSceneData(true); |
| | | } |
| | | scene.EditScene(); |
| | | }; |
| | | |
| | | var galleryPage = new GalleryPage(scene.ImagePath,action); |
| | |
| | | //上传成功到回调 |
| | | Action<string> uploadSuccessAction = (imageUrl) => |
| | | { |
| | | //2020-12-03 需要讲最新的图片路径同步到云端 |
| | | scene.ImagePath = imageUrl; |
| | | if (pageTitleId == StringId.EditScene) |
| | | { |
| | | scene.SaveSceneData(true); |
| | | } |
| | | //2020-12-03 需要讲最新的图片路径同步到云端 |
| | | scene.ImagePath = imageUrl; |
| | | scene.EditScene(); |
| | | }; |
| | | //上传图片到云端 |
| | | UploadImage(selectImagePath, addSceneImageView, scene, uploadSuccessAction); |
| | |
| | | return; |
| | | } |
| | | } |
| | | scene.SaveSceneData(true); |
| | | scene.EditScene(); |
| | | FunctionList.List.scenes.Add(scene); |
| | | backAction(); |
| | | this.RemoveFromParent(); |
| | |
| | | backAction(); |
| | | this.RemoveFromParent(); |
| | | }; |
| | | new PublicAssmebly().TipMsg(StringId.Tip, StringId.DeleteSceneTip, action); |
| | | new PublicAssmebly().TipOptionMsg(StringId.Tip, StringId.DeleteSceneTip, action); |
| | | }; |
| | | }; |
| | | } |
| | |
| | | }.Show(bodyView); |
| | | return; |
| | | } |
| | | btnSceneName.Text = str; |
| | | scene.name = str; |
| | | if (pageTitleId == StringId.EditScene) |
| | | var result = scene.EditScene(); |
| | | if (result == StateCode.SUCCESS) |
| | | { |
| | | scene.SaveSceneData(true); |
| | | btnSceneName.Text = str; |
| | | } |
| | | }; |
| | | EventHandler<MouseEventArgs> eventHandler = (sender, e) => |