From 2a23fbede38fadaf7060510a3cd72a93a8a95ec0 Mon Sep 17 00:00:00 2001
From: 陈嘉乐 <cjl@hdlchina.com.cn>
Date: 星期五, 18 十二月 2020 17:49:46 +0800
Subject: [PATCH] 2020-12-18-3

---
 HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs |  203 ++++++++++++++++++++++++++++++++------------------
 1 files changed, 131 insertions(+), 72 deletions(-)

diff --git a/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs b/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs
index bfdf1d2..049a185 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs
@@ -245,7 +245,7 @@
             #endregion
 
             #region 鍦烘櫙寤舵椂row
-            if (DB_ResidenceData.residenceData.GatewayType == 1)
+            if (DB_ResidenceData.Instance.GatewayType == 1)
             {
                 FrameLayout sceneDelayRow = new FrameLayout()
                 {
@@ -374,6 +374,37 @@
             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(() =>
+                    {
+                        waitPage.Hide();
+                    });
+                }
+                else
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        waitPage.Hide();
+                        IMessageCommon.Current.ShowErrorInfoAlter(pack.Code);
+                    });
+                }
+            }).Start();
         }
         /// <summary>
         /// 鍔犺浇鍔熻兘鍒楄〃
@@ -489,7 +520,7 @@
                 row.AddRightView(btnDelSceneFunction);
                 btnDelSceneFunction.MouseUpEventHandler = (sender, e) => {
                     scene.functions.Remove(scenefunction);
-                    scene.SaveSceneData();
+                    scene.SaveSceneData(true);
                     row.RemoveFromParent();
                     functionListView.Height = Application.GetRealWidth(65 * scene.functions.Count);
                     //LoadFunctionRow(functionListView);
@@ -513,66 +544,94 @@
                     if (sfs.value == "off")
                         return Language.StringByID(StringId.Close);
                 }
-                if (sfs.key == FunctionAttributeKey.Mode)
-                {
-                    
-                }
             }
-            FunctionAttributes perTrait;
 
-            switch (sceneFunction.localFunction.functionType)
+            if (sceneFunction.status.Count == 0)
             {
-                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 + "%";
+            }
+            //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_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;
+            //}
             return sceneFunctionInfo;
         }
 
@@ -813,7 +872,7 @@
                     addSceneImageView.ImagePath = scene.ImagePath;
                     if (pageTitleId == StringId.EditScene)
                     {
-                        scene.SaveSceneData();
+                        scene.SaveSceneData(true);
                     }
                 };
 
@@ -844,7 +903,7 @@
                     scene.ImagePath = imageUrl;
                 if (pageTitleId == StringId.EditScene)
                 {
-                    scene.SaveSceneData();
+                    scene.SaveSceneData(true);
                 }
             };
             //涓婁紶鍥剧墖鍒颁簯绔�
@@ -870,7 +929,7 @@
                         }.Show(bodyView);
                         return;
                     }
-                    foreach (var tempRoom in DB_ResidenceData.functionList.scenes)
+                    foreach (var tempRoom in FunctionList.List.scenes)
                     {
                         if (scene.name == tempRoom.name)
                         {
@@ -878,8 +937,8 @@
                             return;
                         }
                     }
-                    scene.SaveSceneData();
-                    DB_ResidenceData.functionList.scenes.Add(scene);
+                    scene.SaveSceneData(true);
+                    FunctionList.List.scenes.Add(scene);
                     backAction();
                     this.RemoveFromParent();
                 }
@@ -887,11 +946,11 @@
                 {
                     Action action = () =>
                     {
-                        DB_ResidenceData.functionList.DeleteScene(scene);
+                        FunctionList.List.DeleteScene(scene,true);
                         backAction();
                         this.RemoveFromParent();
                     };
-                    new PublicAssmebly().TipMsg(StringId.Tip, StringId.DeleteSceneTip, action);
+                    new PublicAssmebly().TipOptionMsg(StringId.Tip, StringId.DeleteSceneTip, action);
                 };
             };
         }
@@ -919,13 +978,13 @@
                 scene.name = str;
                 if (pageTitleId == StringId.EditScene)
                 {
-                    scene.SaveSceneData();
+                    scene.SaveSceneData(true);
                 }
             };
             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);
                 }
@@ -946,7 +1005,7 @@
         {
             try
             {
-                MainPage.Log("SelectPicture 瑁佸壀鍥剧墖杩斿洖璺緞: " + selectImagePath);
+                //MainPage.Log("SelectPicture 瑁佸壀鍥剧墖杩斿洖璺緞: " + selectImagePath);
                 //1.璇诲彇瑁佸壀鍚庣殑鍥剧墖锛岀劧鍚庡垹闄�
                 var imageBytes = Shared.IO.FileUtils.ReadFile(selectImagePath);
                 System.IO.File.Delete(selectImagePath);
@@ -962,7 +1021,7 @@
                         var newImageName = mScene.name.Trim() + ".png";
                         var uploadImageObj = new UploadImageObj()
                         {
-                            prefix = "ONS",
+                            prefix = "Scene" + Utlis.GetTimestamp(),
                             fileName = newImageName,
                             uid = mScene.sid,
                             content = imageBytes,
@@ -974,15 +1033,15 @@
                             //涓婁紶鎴愬姛
                             Application.RunOnMainThread(() =>
                             {
-                                Utlis.WriteLine("涓婁紶鎴愬姛锛�" + imageUrl);
+                                //Utlis.WriteLine("涓婁紶鎴愬姛锛�" + imageUrl);
                                 //1.2濡傛灉鏄嚜瀹氫箟鍥剧墖鍒犻櫎涔嬪墠鐨�
                                 if (!string.IsNullOrEmpty(imageView.ImagePath) && !imageView.ImagePath.Contains("Classification/Room/Roombg"))
                                 {
-                                    Utlis.WriteLine("鍒犻櫎: " + imageView.ImagePath);
+                                    //Utlis.WriteLine("鍒犻櫎: " + imageView.ImagePath);
                                     System.IO.File.Delete(imageView.ImagePath);
                                 }
                                 //閲嶅懡鍚嶄繚瀛�
-                                FileUtils.WriteFileByBytes(imageUrl, imageBytes);
+                                ImageUtlis.Current.WriteFileByBytes(imageUrl, imageBytes);
                                 imageView.ImagePath = null;
                                 imageView.ImageBytes = imageBytes;
                                 //涓婁紶鎴愬姛

--
Gitblit v1.8.0