wxr
2021-07-01 43b0d5870d528f23ecd6aeceb6cfd4325188b46f
HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs
@@ -81,7 +81,7 @@
        /// </summary>
        Action refreshFunctionRowAction;
        /// <summary>
        /// 回掉更新
        /// 回调更新
        /// </summary>
        Action backAction;
        public SceneAddPage(Scene s, Action act)
@@ -90,23 +90,18 @@
            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),
@@ -114,7 +109,7 @@
            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),
@@ -135,7 +130,6 @@
            //2020-12-03 修改图片加载方法
            ImageUtlis.Current.LoadLocalOrNetworkImages(scene.ImagePath, addSceneImageView);
            #region 场景名称row
            sceneNameView = new FrameLayout()
@@ -202,7 +196,7 @@
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.TextFontSize,
                TextID = StringId.BelongToZone,
                TextID = StringId.LocationManagement,
            };
            belongToZoneRow.AddChidren(btnBelongToTitle);
@@ -223,7 +217,7 @@
                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);
@@ -261,7 +255,7 @@
                    TextAlignment = TextAlignment.CenterRight,
                    TextColor = CSS_Color.PromptingColor1,
                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                    Text = scene.delayText
                    Text = scene.GetDelayText()
                };
                sceneDelayRow.AddChidren(btnSceneDelayInfo);
@@ -276,10 +270,20 @@
                };
                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()
@@ -314,7 +318,7 @@
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.MainColor,
                TextSize = CSS_FontSize.SubheadingFontSize,
                TextID = StringId.AddFunction,
                TextID = StringId.FunctionManagement,
                IsBold = true,
            };
            addFunctionRow.AddChidren(btnAddFunctionTitle);
@@ -367,6 +371,8 @@
            LoadEventList();
        }
        /// <summary>
        /// 加载功能列表
        /// </summary>
@@ -401,8 +407,6 @@
                };
                row.AddChidren(btnRight);
                var btnFunctionInfo = new Button()
                {
                    Width = Application.GetRealWidth(327),
@@ -427,7 +431,7 @@
                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
                {
@@ -457,14 +461,7 @@
                };
                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);
@@ -472,6 +469,8 @@
                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                };
                btnFunctionName.MouseUpEventHandler = skipEvent;
                btnFunctionFloorAndRoom.MouseUpEventHandler = skipEvent;
                Button btnDelSceneFunction = new Button()
                {
@@ -482,13 +481,9 @@
                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);
                };
            }
        }
@@ -506,66 +501,37 @@
                    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;
        }
@@ -697,7 +663,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;
@@ -803,6 +769,7 @@
                pictureOptionView.Parent.RemoveFromParent();
                Action<string> action = (obj) => {
                    scene.ImagePath = obj;
                    addSceneImageView.ImageBytes = null;//解决有ImageBytes不加载ImagePath
                    addSceneImageView.ImagePath = scene.ImagePath;
                };
@@ -837,47 +804,65 @@
        }
        /// <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();
            };
        }