xm
2021-12-01 6d73bf6e816570291865674bef8bce8972e4de3f
HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs
@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using HDL_ON.DriverLayer;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
@@ -20,14 +21,14 @@
        /// 场景内容显示区域
        /// </summary>
        FrameLayout floorChangeView;
        /// <summary>
        /// 楼层房间选择的下拉对象
        /// </summary>
        FloorRoomSelectPopupView floorRoomSelectView = null;
        Button btnSceneTilte;
        #region 场景底部切换显示区域
        FrameLayout topView;
        /// <summary>
        /// 场景区域,顶部区域
        /// </summary>
        FrameLayout sceneTopView;
        /// <summary>
        /// 楼层选择下拉图标
        /// </summary>
@@ -60,6 +61,7 @@
        public void LoadPage()
        {
            MainPage.CurPageIndex = 2;
            bodyView.BackgroundColor = CSS_Color.MainBackgroundColor;
            #region top
            topView = new FrameLayout()
@@ -69,41 +71,71 @@
            };
            bodyView.AddChidren(topView);
            btnSceneTilte = new Button()
            //不是A网关或者是成员 只允许添加场景隐藏自动化
            var HideAutoPage = DB_ResidenceData.Instance.CurrentRegion.isOtherShare;
            //判断是否需要隐藏自动化
            if (HideAutoPage)
            {
                Y = Application.GetRealHeight(30),
                Width = Application.GetRealWidth(170),
                Height = Application.GetRealHeight(25),
                TextAlignment = TextAlignment.CenterRight,
                TextSize = CSS_FontSize.HeadlineFontSize,
                TextColor = CSS_Color.PromptingColor1,
                SelectedTextColor = CSS_Color.MainColor,
                TextID = StringId.Scenes,
                IsSelected = true
            };
            topView.AddChidren(btnSceneTilte);
            btnAutomationTitle = new Button()
                btnSceneTilte = new Button()
                {
                    Y = Application.GetRealHeight(30),
                    //Width = Application.GetRealWidth(170),
                    Height = Application.GetRealHeight(25),
                    TextAlignment = TextAlignment.Center,
                    TextSize = CSS_FontSize.HeadlineFontSize,
                    TextColor = CSS_Color.PromptingColor1,
                    SelectedTextColor = CSS_Color.MainColor,
                    TextID = StringId.Scenes,
                    IsSelected = true
                };
                topView.AddChidren(btnSceneTilte);
                btnAutomationTitle = new Button();
            }
            else
            {
                X = Application.GetRealWidth(209),
                Y = Application.GetRealHeight(30),
                Width = Application.GetRealWidth(170),
                Height = Application.GetRealHeight(25),
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = CSS_FontSize.TextFontSize,
                TextColor = CSS_Color.PromptingColor1,
                SelectedTextColor = CSS_Color.MainColor,
                TextID = StringId.Automation,
            };
            topView.AddChidren(btnAutomationTitle);
            btnAddIcon = new Button()
                btnSceneTilte = new Button()
                {
                    Y = Application.GetRealHeight(30),
                    Width = Application.GetRealWidth(170),
                    Height = Application.GetRealHeight(25),
                    TextAlignment = TextAlignment.CenterRight,
                    TextSize = CSS_FontSize.HeadlineFontSize,
                    TextColor = CSS_Color.PromptingColor1,
                    SelectedTextColor = CSS_Color.MainColor,
                    TextID = StringId.Scenes,
                    IsSelected = true
                };
                topView.AddChidren(btnSceneTilte);
                btnAutomationTitle = new Button()
                {
                    X = Application.GetRealWidth(209),
                    Y = Application.GetRealHeight(30),
                    Width = Application.GetRealWidth(170),
                    Height = Application.GetRealHeight(25),
                    TextAlignment = TextAlignment.CenterLeft,
                    TextSize = CSS_FontSize.TextFontSize,
                    TextColor = CSS_Color.PromptingColor1,
                    SelectedTextColor = CSS_Color.MainColor,
                    TextID = StringId.Automation,
                };
                topView.AddChidren(btnAutomationTitle);
            }
            var btnAddIconBg = new Button()
            {
                X = Application.GetRealWidth(337),
                Y = Application.GetRealHeight(29),
                Width = Application.GetMinRealAverage(28),
                Height = Application.GetMinRealAverage(28),
                UnSelectedImagePath = "Public/AddIcon.png",
            };
            topView.AddChidren(btnAddIconBg);
            btnAddIcon = new Button()
            {
                X = Application.GetRealWidth(337 - 20),
                Width = Application.GetMinRealAverage(28 + 30),
                Height = Application.GetMinRealAverage(28 + 29),
            };
            topView.AddChidren(btnAddIcon);
            #endregion
@@ -118,7 +150,11 @@
            bodyView.AddChidren(contentPageView);
            LoadScenePageView();
            LoadAutomationPageView();
            //判断是否需要隐藏自动化
            if (!HideAutoPage)
            {
                LoadAutomationPageView();
            }
            LoadEventList();
        }
@@ -135,18 +171,10 @@
            /// </summary>
            floorChangeView = new FrameLayout()
            {
                Height = Application.GetRealHeight(52),
                Height = Application.GetRealHeight(53),
            };
            scenePageView.AddChidren(floorChangeView);
            #region 场景底部切换显示区域
            /// <summary>
            /// 场景区域,顶部区域
            /// </summary>
            sceneTopView = new FrameLayout()
            {
                Height = Application.GetRealHeight(53),
            };
            floorChangeView.AddChidren(sceneTopView);
            /// <summary>
            /// 楼层选择下拉图标
            /// </summary>
@@ -155,7 +183,7 @@
                Width = Application.GetMinRealAverage(16),
                Height = Application.GetMinRealAverage(16),
                X = Application.GetRealWidth(16),
                Y = Application.GetRealHeight(18),
                Gravity = Gravity.CenterVertical,
                UnSelectedImagePath = "Public/DownIcon.png",
            };
            floorChangeView.AddChidren(btnFloorDownIcon);
@@ -165,73 +193,65 @@
            btnFloor = new Button()
            {
                X = btnFloorDownIcon.Right,
                Y = Application.GetRealHeight(18),
                Gravity = Gravity.CenterVertical,
                Width = Application.GetRealWidth(200),
                Height = Application.GetMinRealAverage(16),
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                TextAlignment = TextAlignment.CenterLeft,
                Text = DB_ResidenceData.residenceData.CurFoor,
                Text = DB_ResidenceData.Instance.CurFloor.roomName,
            };
            floorChangeView.AddChidren(btnFloor);
            string nowSelectId = null;
            btnFloor.MouseUpEventHandler += (sender, e) =>
            {
                if (this.floorRoomSelectView == null)
                {
                    //先初始化
                    this.floorRoomSelectView = new FloorRoomSelectPopupView();
                }
                //显示下拉列表
                this.floorRoomSelectView.ShowSceneView(btnFloor, (selectId, listScene) =>
                {
                    nowSelectId = selectId;
                    //重新刷新场景列表
                    this.LoadSceneFunctionControlZone(listScene);
                }, nowSelectId);
            };
            #endregion
            sceneFunctionView = new VerticalScrolViewLayout()
            {
                Y = floorChangeView.Bottom,
                Height = Application.GetRealHeight(667 - 64 - 49 - 52 + 30),
                Y = Application.GetRealHeight(53),
                Height = Application.GetRealHeight(667 - 64 - 49 - 52 + 0),
            };
            scenePageView.AddChidren(sceneFunctionView);
            LoadSceneFunctionControlZone();
            LoadSceneFunctionControlZone(null);
        }
        /// <summary>
        /// 加载场景功能显示区域
        /// </summary>
        void LoadSceneFunctionControlZone()
        void LoadSceneFunctionControlZone(List<Scene> listScene)
        {
            //topView.AddChidren(btnAddIcon);
            sceneFunctionView.RemoveAll();
            var rowView = new FrameLayout();
            try
            {
                int index = 0;
                foreach (var scene in DB_ResidenceData.functionList.scenes)
                //获取能够显示的场景
                if (listScene == null)
                {
                    if (scene.roomIds.Count == 0)//如何在房间已经移除了这个功能,则收藏界面也不会再显示
                    //初始值
                    if (this.floorRoomSelectView == null)
                    {
                        scene.collect = false;
                        continue;
                        //先初始化
                        this.floorRoomSelectView = new FloorRoomSelectPopupView();
                    }
                    if (index % 2 == 0)
                    {
                        sceneFunctionView.AddChidren(new Button() { Height = Application.GetRealHeight(7) });
                        rowView = new FrameLayout()
                        {
                            Height = Application.GetRealWidth(122),
                        };
                        sceneFunctionView.AddChidren(rowView);
                        sceneFunctionView.AddChidren(new Button() { Height = Application.GetRealHeight(7) });
                    }
                    var functionView_X = Application.GetRealWidth((16 + 164) * (index % 2) + 16);
                    var functionView = new FrameLayout()
                    {
                        X = functionView_X,
                        Width = Application.GetRealWidth(164),
                        Height = Application.GetRealWidth(122),
                        Tag = scene.sid,
                        BackgroundImagePath = (scene as Scene).ImagePath,
                    };
                    rowView.AddChidren(functionView);
                    LoadSceneFunctionDiv(functionView, scene);
                    index++;
                    listScene = this.floorRoomSelectView.GetCanShowListScene();
                }
                if (index == 0)
                if (listScene.Count == 0)
                {
                    var view = new FrameLayout();
                    sceneFunctionView.AddChidren(view);
@@ -257,6 +277,38 @@
                    };
                    view.AddChidren(btnNoCollectionTip);
                }
                else
                {
                    var rowView = new FrameLayout();
                    new System.Threading.Thread(() =>
                    {
                        foreach (var scene in listScene)
                        {
                            System.Threading.Thread.Sleep(10);
                            Application.RunOnMainThread(() =>
                            {
                                if (index % 2 == 0)
                                {
                                    rowView = new FrameLayout()
                                    {
                                        Height = Application.GetRealWidth(122),
                                    };
                                    sceneFunctionView.AddChidren(rowView);
                                    sceneFunctionView.AddChidren(new Button()
                                    {
                                        Height = Application.GetRealHeight(7 + 7),
                                    });
                                }
                                var functionView_X = Application.GetRealWidth((16 + 164) * (index % 2) + 16);
                                var functionView = LoadSceneFunctionDiv(functionView_X, scene);
                                rowView.AddChidren(functionView);
                                index++;
                            });
                        }
                    })
                    { IsBackground = true }.Start();
                }
            }
            catch (Exception ex)
            {
@@ -269,8 +321,19 @@
        /// <summary>
        /// 加载场景控制卡片
        /// </summary>
        void LoadSceneFunctionDiv(FrameLayout view, Scene scene)
        //FrameLayout LoadSceneFunctionDiv(FrameLayout view, Scene scene)
        FrameLayout LoadSceneFunctionDiv(int functionView_X, Scene scene)
        {
            var view = new FrameLayout()
            {
                X = functionView_X,
                Width = Application.GetRealWidth(164),
                Height = Application.GetRealWidth(122),
                Tag = scene.sid,
            };
            //2020-12-03 修改图片加载方法
            ImageUtlis.Current.LoadLocalOrNetworkImages(scene.ImagePath, view);
            try
            {
                Button btnCoverd = new Button()
@@ -278,6 +341,19 @@
                    UnSelectedImagePath = "Collection/SceneCovered.png",
                };
                view.AddChidren(btnCoverd);
                Button btnShowDelay;
                btnShowDelay = new Button()
                {
                    X = Application.GetRealWidth(40),
                    Y = Application.GetRealWidth(4),
                    Height = Application.GetRealWidth(32),
                    Width = Application.GetRealWidth(100),
                    TextColor = CSS_Color.AuxiliaryColor1,
                    TextAlignment = TextAlignment.CenterLeft,
                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                };
                view.AddChidren(btnShowDelay);
                Button btnName;
                btnName = new Button()
@@ -297,7 +373,7 @@
                btnZone = new Button()
                {
                    X = Application.GetRealWidth(12),
                    Y = btnName.Bottom,
                    Y = Application.GetRealWidth(68+24),
                    Height = Application.GetRealWidth(18),
                    Width = Application.GetRealWidth(113),
                    TextColor = CSS_Color.MainBackgroundColor,
@@ -308,7 +384,6 @@
                };
                view.AddChidren(btnZone);
                Button btnSettingIcon;
                btnSettingIcon = new Button()
                {
@@ -318,7 +393,10 @@
                    Width = Application.GetRealWidth(32),
                    UnSelectedImagePath = "Public/FuncInfoSetIcon_white.png",
                };
                view.AddChidren(btnSettingIcon);
                if (scene.userId == UserInfo.Current.ID)
                {
                    view.AddChidren(btnSettingIcon);
                }
                Button btnCollection;
                btnCollection = new Button()
@@ -332,29 +410,42 @@
                    IsSelected = scene.collect,
                };
                view.AddChidren(btnCollection);
                btnCollection.MouseUpEventHandler = (sender, e) => {
                btnCollection.MouseUpEventHandler = (sender, e) =>
                {
                    scene.collect = btnCollection.IsSelected = !btnCollection.IsSelected;
                    scene.SaveSceneData();
                    scene.CollectScene();
                };
                LoadEvent_ControlScene(btnCoverd,btnName,btnZone, scene);
                btnSettingIcon.MouseUpEventHandler = (sender, e) => {
                    Action backAction = () => {
                        LoadSceneFunctionControlZone();
                LoadEvent_ControlScene(btnCoverd, btnName, btnZone, btnShowDelay, scene);
                btnSettingIcon.MouseUpEventHandler = (sender, e) =>
                {
                    Action backAction = () =>
                    {
                        LoadSceneFunctionControlZone(null);
                    };
                    Action refreshAction = () => {
                    Action refreshAction = () =>
                    {
                        btnName.Text = scene.name;
                        btnZone.Text = scene.GetRoomListName();
                        view.BackgroundImagePath = scene.ImagePath;
                        //2020-12-03 修改图片加载方法
                        ImageUtlis.Current.LoadLocalOrNetworkImages((scene as Scene).ImagePath, view);
                    };
                    var aep = new SceneEditPage(scene, backAction);
                    MainPage.BasePageView.AddChidren(aep);
                    aep.LoadPage(StringId.EditScene, refreshAction);
                    aep.LoadPage(refreshAction);
                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                };
                //场景正在倒计时执行中
                scene.SceneCountDown(btnShowDelay);
                return view;
            }
            catch (Exception ex)
            {
                MainPage.Log("homepage LoadControlView error : " + ex.Message);
                return view;
            }
            finally
            {
            }
        }
        #endregion
@@ -365,12 +456,10 @@
        /// </summary>
        void LoadAutomationPageView()
        {
            //btnAddIcon.RemoveFromParent();
            automationPage = new FrameLayout();
            contentPageView.AddChidren(automationPage);
            HDL_ON.UI.UI2.Intelligence.Automation.MainView.automationPage = automationPage;
            HDL_ON.UI.UI2.Intelligence.Automation.MainView.MainShow();
            UI2.Intelligence.Automation.MainView.automationPage = automationPage;
            UI2.Intelligence.Automation.MainView.MainShow();
        }
        #endregion
    }
@@ -450,9 +539,21 @@
            {
                if (!btnAutomationTitle.IsSelected)
                {
                    //如果是成员
                    if (DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
                    {
                        //如果没有场景权限
                        if (!DB_ResidenceData.Instance.CurrentRegion.isAllowCreateScene)
                        {
                            //提示没有场景的创建权限
                            Utlis.ShowTip(Language.StringByID(StringId.PermissionDenied));
                            return;
                        }
                    }
                    Action action = () =>
                    {
                        LoadSceneFunctionControlZone();
                        LoadSceneFunctionControlZone(null);
                    };
                    var aep = new NewSceneMenuListPage(action);
                    MainPage.BasePageView.AddChidren(aep);
@@ -462,7 +563,8 @@
                else
                {
                    //跳转到逻辑界面
                    HDL_ON.UI.UI2.Intelligence.Automation.MainView.SkipAddLogicPage();
                    UI2.Intelligence.Automation.MainView logicMainView = new UI2.Intelligence.Automation.MainView();
                    logicMainView.SkipAddLogicPage();
                }
            };
        }
@@ -471,14 +573,24 @@
        /// <summary>
        /// 加载场景控制事件
        /// </summary>
        void LoadEvent_ControlScene(Button btnCoverd, Button btnName, Button btnZone, Scene scene)
        void LoadEvent_ControlScene(Button btnCoverd, Button btnName, Button btnZone, Button btnShowDelay, Scene scene)
        {
            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
            {
                //场景正在倒计时执行中,不允许再点击
                if (scene.LastExecutionTime == "" || Convert.ToDouble(scene.LastExecutionTime) + Convert.ToDouble(scene.delay) < Convert.ToDouble(Utlis.GetTimestamp(false)))
                {
                    scene.LastExecutionTime = Utlis.GetTimestamp(false);
                }
                else
                {
                    return;
                }
                string msg = scene.name + Language.StringByID(StringId.AlreadyOpened);
                new PublicAssmebly().TipMsgAutoClose(msg, true);
                Control.Ins.ControlScene(scene);
                scene.SceneCountDown(btnShowDelay);
            };
            btnCoverd.MouseUpEventHandler = eventHandler;
            btnName.MouseUpEventHandler = eventHandler;