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/SceneEditPage.cs | 364 ++++++++++++++++++++++++++++----------------------- 1 files changed, 202 insertions(+), 162 deletions(-) diff --git a/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs b/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs index 056eb91..76d7f8f 100644 --- a/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs +++ b/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs @@ -3,6 +3,8 @@ using Shared; using HDL_ON.Entity; using System.Collections.Generic; +using System.Threading; +using HDL_ON.DAL.Server; namespace HDL_ON.UI { @@ -74,7 +76,6 @@ Scene scene; - int pageTitleId; /// <summary> /// 鏇存柊鍔熻兘row /// </summary> @@ -91,21 +92,13 @@ 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(); } @@ -136,9 +129,13 @@ Gravity = Gravity.CenterHorizontal, Height = Application.GetRealWidth(184), Radius = (uint)Application.GetRealWidth(12), - ImagePath = scene.ImagePath + //ImagePath = scene.ImagePath }; sceneBgView.AddChidren(addSceneImageView); + + //2020-12-03 淇敼鍥剧墖鍔犺浇鏂规硶 + ImageUtlis.Current.LoadLocalOrNetworkImages(scene.ImagePath, addSceneImageView); + #region 鍦烘櫙鍚嶇Оrow sceneNameView = new FrameLayout() @@ -239,7 +236,7 @@ #endregion #region 鍦烘櫙寤舵椂row - if (DB_ResidenceData.residenceData.GatewayType == 1) + if (DB_ResidenceData.Instance.GatewayType == 1) { FrameLayout sceneDelayRow = new FrameLayout() { @@ -264,7 +261,7 @@ TextAlignment = TextAlignment.CenterRight, TextColor = CSS_Color.PromptingColor1, TextSize = CSS_FontSize.PromptFontSize_FirstLevel, - Text = scene.delayText + Text = FunctionList.List.GetDelayText( scene.delay) }; sceneDelayRow.AddChidren(btnSceneDelayInfo); @@ -282,7 +279,12 @@ btnSceneDelayTitle.MouseUpEventHandler = (sender, e) => { - new PublicAssmebly().SetSceneDelayDialog(scene, btnSceneDelayInfo); + Action<string> action = (obj) => { + scene.delay = obj; + btnSceneDelayInfo.Text = FunctionList.List.GetDelayText(obj); + scene.EditScene(); + }; + new PublicAssmebly().SetSceneDelayDialog(action,scene.delay); }; contentView.AddChidren(new Button() @@ -327,7 +329,7 @@ }; contentView.AddChidren(functionListView); - LoadFunctionRow(functionListView); + LoadFunctionRow(); Button btnLine1 = new Button() { @@ -359,20 +361,52 @@ 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(() => { + 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(); + }); + } + else + { + Application.RunOnMainThread(() => + { + waitPage.Hide(); + IMessageCommon.Current.ShowErrorInfoAlter(pack.Code); + }); + } + }).Start(); } /// <summary> /// 鍔犺浇鍔熻兘鍒楄〃 /// </summary> - void LoadFunctionRow(VerticalScrolViewLayout functionListView) + void LoadFunctionRow() { functionListView.RemoveAll(); functionListView.Height = Application.GetRealWidth(65 * scene.functions.Count); @@ -403,8 +437,6 @@ }; row.AddChidren(btnRight); - - var btnFunctionInfo = new Button() { Width = Application.GetRealWidth(327), @@ -429,7 +461,7 @@ if (Convert.ToInt32( scenefunction.delay) > 0) { - btnFunctionDelayInfo.Text = Language.StringByID(StringId.Delay) + " " + scenefunction.localFunction.delayText; + btnFunctionDelayInfo.Text = Language.StringByID(StringId.Delay) + " " + FunctionList.List.GetDelayText(scenefunction.delay); } else { @@ -483,13 +515,11 @@ row.AddRightView(btnDelSceneFunction); btnDelSceneFunction.MouseUpEventHandler = (sender, e) => { scene.functions.Remove(scenefunction); - scene.SaveSceneData(); + scene.EditScene(); row.RemoveFromParent(); functionListView.Height = Application.GetRealWidth(65 * scene.functions.Count); //LoadFunctionRow(functionListView); }; - - } } @@ -507,65 +537,38 @@ if (sfs.value == "off") return Language.StringByID(StringId.Close); } - if (sfs.key == FunctionAttributeKey.Mode) - { - - } } - FunctionAttributes perTrait; - switch (sceneFunction.localFunction.functionType) + if (sceneFunction.status.Count == 1) { - 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 += 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) + { + sceneFunctionInfo += FunctionList.List.GetValueText(modeState.key, modeState.value); + } + if (tempState != null) + { + sceneFunctionInfo += FunctionList.List.GetValueText(tempState.key, tempState.value); + sceneFunctionInfo += FunctionList.List.GetUintString(tempState.key); + } + if (fanState != null) + { + sceneFunctionInfo += FunctionList.List.GetValueText(fanState.key, fanState.value); + } + var briState = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Brightness); + if (briState != null) + { + sceneFunctionInfo += Language.StringByID(StringId.Open) + " " + briState.value + "%"; + } + var perState = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Percent); + if (perState != null) + { + sceneFunctionInfo += Language.StringByID(StringId.Open) + " " + perState.value + "%"; } return sceneFunctionInfo; } @@ -679,7 +682,14 @@ 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); @@ -698,7 +708,7 @@ 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; @@ -740,29 +750,12 @@ { 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; + var imageName = Guid.NewGuid().ToString(); CropImage.TakePicture((imagePath) => { - CropImageCallBack(imagePath, imageName); + CropImageCallBack(imagePath); }, imageName, 4, 3); - //if (pageTitleId == StringId.EditScene) - //{ - // scene.SaveFunctionData(); - //} pictureOptionView.Parent.RemoveFromParent(); }; btnAlbum.MouseDownEventHandler = (sender, e) => { @@ -784,18 +777,14 @@ //}, pid.ToString(), 4, 3); //浠庣浉鍐岄�夋嫨鍥剧墖瑁佸壀 - //var imageName = Guid.NewGuid().ToString(); - var imageName = scene.sid; + var imageName = Guid.NewGuid().ToString(); + //var imageName = scene.sid; CropImage.SelectPicture((imagePath) => { - CropImageCallBack(imagePath, imageName); + CropImageCallBack(imagePath); }, imageName, 4, 3); - //if (pageTitleId == StringId.EditScene) - //{ - // scene.SaveFunctionData(); - //} pictureOptionView.Parent.RemoveFromParent(); }; @@ -804,10 +793,7 @@ Action<string> action = (obj) => { scene.ImagePath = obj; addSceneImageView.ImagePath = scene.ImagePath; - if (pageTitleId == StringId.EditScene) - { - scene.SaveSceneData(); - } + scene.EditScene(); }; var galleryPage = new GalleryPage(scene.ImagePath,action); @@ -823,51 +809,22 @@ /// </summary> /// <param name="imagePath">瑁佸壀鍚庣殑鐪熷疄璺緞</param> /// <param name="imageName">鑷畾涔夌殑鍥剧墖鍚嶇О</param> - void CropImageCallBack(string imagePath, string imageName) + void CropImageCallBack(string selectImagePath) { - if (string.IsNullOrEmpty(imagePath) == true) + if (string.IsNullOrEmpty(selectImagePath) == true) { return; } - try + //涓婁紶鎴愬姛鍒板洖璋� + Action<string> uploadSuccessAction = (imageUrl) => { - var mPath = imagePath; - MainPage.Log("SelectPicture 瑁佸壀鍥剧墖杩斿洖璺緞: " + imagePath); - -#if __IOS__ - - -#else - //1.浣跨敤鏂板悕瀛楋紝瑙e喅鐩稿悓璺緞涓嶅埛鏂板浘鐗囬棶棰� - imageName = Guid.NewGuid().ToString() + ".png"; - //1.2濡傛灉鏄嚜瀹氫箟鍥剧墖鍒犻櫎涔嬪墠鐨� - if (!addSceneImageView.ImagePath.Contains("Gallery/scenebg")) - { - Utlis.WriteLine("鍒犻櫎: " + addSceneImageView.ImagePath); - System.IO.File.Delete(addSceneImageView.ImagePath); - } - //1.3濡傛灉鏄畨鍗撻渶瑕佹嫹璐濆洖鏉PP鏍圭洰褰� - FileUtils.FileCopyToRootPath(imagePath, imageName); - System.IO.File.Delete(imagePath); - MainPage.Log("SelectPicture 鏈�缁堣矾寰�: " + imageName); - mPath = imageName; -#endif - //娓呯┖鍘熸潵鍥剧墖 - addSceneImageView.ImagePath = "NULL"; - addSceneImageView.ImagePath = mPath; - scene.ImagePath = mPath; - - if (pageTitleId == StringId.EditScene) - { - scene.SaveFunctionData(); - } - } - catch - { - - } - + //2020-12-03 闇�瑕佽鏈�鏂扮殑鍥剧墖璺緞鍚屾鍒颁簯绔� + scene.ImagePath = imageUrl; + scene.EditScene(); + }; + //涓婁紶鍥剧墖鍒颁簯绔� + UploadImage(selectImagePath, addSceneImageView, scene, uploadSuccessAction); } /// <summary> @@ -889,7 +846,7 @@ }.Show(bodyView); return; } - foreach (var tempRoom in DB_ResidenceData.functionList.scenes) + foreach (var tempRoom in FunctionList.List.scenes) { if (scene.name == tempRoom.name) { @@ -897,8 +854,8 @@ return; } } - scene.SaveSceneData(); - DB_ResidenceData.functionList.scenes.Add(scene); + scene.EditScene(); + FunctionList.List.scenes.Add(scene); backAction(); this.RemoveFromParent(); } @@ -906,11 +863,11 @@ { Action action = () => { - DB_ResidenceData.DelSceneFunction(scene.sid); + FunctionList.List.DeleteScene(scene,true); backAction(); this.RemoveFromParent(); }; - new PublicAssmebly().TipMsg(StringId.Tip, StringId.DeleteSceneTip, action); + new PublicAssmebly().TipOptionMsg(StringId.Tip, StringId.DeleteSceneTip, action); }; }; } @@ -934,17 +891,17 @@ }.Show(bodyView); return; } - btnSceneName.Text = str; scene.name = str; - if (pageTitleId == StringId.EditScene) + var result = scene.EditScene(); + if (result == StateCode.SUCCESS) { - scene.SaveSceneData(); + btnSceneName.Text = str; } }; EventHandler<MouseEventArgs> eventHandler = (sender, e) => { List<string> sceneNameList = new List<string>(); - foreach (var tempScene in DB_ResidenceData.functionList.scenes) + foreach (var tempScene in FunctionList.List.scenes) { sceneNameList.Add(tempScene.name); } @@ -955,6 +912,89 @@ btnEditSceneNameIcon.MouseUpEventHandler = eventHandler; } + /// <summary> + /// 涓婁紶鍥剧墖鏂规硶 + /// </summary> + /// <param name="selectImagePath">瑁佸壀鍚庣殑鍥剧墖璺緞</param> + /// <param name="imageView"></param> + /// <param name="uploadSuccessAction"></param> + void UploadImage(string selectImagePath, ImageView imageView, Scene mScene, Action<string> uploadSuccessAction) + { + try + { + //MainPage.Log("SelectPicture 瑁佸壀鍥剧墖杩斿洖璺緞: " + selectImagePath); + //1.璇诲彇瑁佸壀鍚庣殑鍥剧墖锛岀劧鍚庡垹闄� + var imageBytes = Shared.IO.FileUtils.ReadFile(selectImagePath); + System.IO.File.Delete(selectImagePath); + var waitPage = new Loading(); + bodyView.AddChidren(waitPage); + waitPage.Start(Language.StringByID(StringId.PleaseWait)); + //寮�濮嬩笂浼� + new Thread(() => + { + try + { + var newImageName = mScene.name.Trim() + ".png"; + var uploadImageObj = new UploadImageObj() + { + prefix = "Scene" + Utlis.GetTimestamp(), + fileName = newImageName, + uid = mScene.sid, + content = imageBytes, + }; + + var imageUrl = ImageUtlis.Current.UploadImage(uploadImageObj); + if (!string.IsNullOrEmpty(imageUrl) && imageUrl.Contains(newImageName)) + { + //涓婁紶鎴愬姛 + Application.RunOnMainThread(() => + { + //Utlis.WriteLine("涓婁紶鎴愬姛锛�" + imageUrl); + //1.2濡傛灉鏄嚜瀹氫箟鍥剧墖鍒犻櫎涔嬪墠鐨� + if (!string.IsNullOrEmpty(imageView.ImagePath) && !imageView.ImagePath.Contains("Classification/Room/Roombg")) + { + //Utlis.WriteLine("鍒犻櫎: " + imageView.ImagePath); + System.IO.File.Delete(imageView.ImagePath); + } + //閲嶅懡鍚嶄繚瀛� + ImageUtlis.Current.WriteFileByBytes(imageUrl, imageBytes); + imageView.ImagePath = null; + imageView.ImageBytes = imageBytes; + //涓婁紶鎴愬姛 + Utlis.ShowTip(Language.StringByID(StringId.UploadSuccessfully)); + uploadSuccessAction?.Invoke(imageUrl); + }); + } + else + { + //涓婁紶澶辫触 + Application.RunOnMainThread(() => + { + //涓婁紶澶辫触 + Utlis.ShowTip(Language.StringByID(StringId.UploadFailed)); + }); + } + + } + catch (Exception ex) + { + } + finally + { + Application.RunOnMainThread(() => + { + if (waitPage != null) + { + waitPage.RemoveFromParent(); + waitPage = null; + } + }); + } + }) + { IsBackground = true }.Start(); + } + catch { } + } } } -- Gitblit v1.8.0