hxb
2020-12-17 5eeafe3af80bfd88306bd8ad9e76c8f4b51ca35f
HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs
@@ -76,7 +76,6 @@
        Scene scene;
        int pageTitleId;
        /// <summary>
        /// 更新功能row
        /// </summary>
@@ -93,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();
        }
@@ -270,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);
@@ -288,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()
@@ -333,7 +329,7 @@
            };
            contentView.AddChidren(functionListView);
            LoadFunctionRow(functionListView);
            LoadFunctionRow();
            Button btnLine1 = new Button()
            {
@@ -365,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);
@@ -409,8 +437,6 @@
                };
                row.AddChidren(btnRight);
                var btnFunctionInfo = new Button()
                {
                    Width = Application.GetRealWidth(327),
@@ -435,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
                {
@@ -489,13 +515,11 @@
                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);
                };
            }
        }
@@ -513,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_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 += 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;
        }
@@ -685,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);
@@ -704,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;
@@ -746,30 +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;
                CropImage.TakePicture((imagePath) =>
                {
                    CropImageCallBack(imagePath);
                }, imageName, 4, 3);
                //if (pageTitleId == StringId.EditScene)
                //{
                //    scene.SaveFunctionData();
                //}
                pictureOptionView.Parent.RemoveFromParent();
            };
            btnAlbum.MouseDownEventHandler = (sender, e) => {
@@ -799,10 +785,6 @@
                }, imageName, 4, 3);
                //if (pageTitleId == StringId.EditScene)
                //{
                //    scene.SaveFunctionData();
                //}
                pictureOptionView.Parent.RemoveFromParent();
            };
@@ -811,10 +793,7 @@
                Action<string> action = (obj) => {
                    scene.ImagePath = obj;
                    addSceneImageView.ImagePath = scene.ImagePath;
                    if (pageTitleId == StringId.EditScene)
                    {
                        scene.SaveSceneData(true);
                    }
                    scene.EditScene();
                };
                var galleryPage = new GalleryPage(scene.ImagePath,action);
@@ -840,12 +819,9 @@
            //上传成功到回调
            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);
@@ -878,7 +854,7 @@
                            return;
                        }
                    }
                    scene.SaveSceneData(true);
                    scene.EditScene();
                    FunctionList.List.scenes.Add(scene);
                    backAction();
                    this.RemoveFromParent();
@@ -915,11 +891,11 @@
                    }.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) =>