xm
2021-12-01 6d73bf6e816570291865674bef8bce8972e4de3f
HDL_ON/UI/UI2/2-Classification/RoomPage.cs
@@ -23,9 +23,25 @@
        static Room room;
        Action skipEditPageAction;
        Action ReloadRoomName;
        /// <summary>
        /// 删除房间事件
        /// </summary>
        Action deleteAction;
        /// <summary>
        /// 图片修改事件
        /// </summary>
        Action modifyImageAction;
        #endregion
        public RoomPage(Room r,Action rrn)
        /// <summary>
        ///
        /// </summary>
        /// <param name="r"></param>
        /// <param name="rrn">编辑事件</param>
        /// <param name="delAction">删除事件回调</param>
        /// <param name="modifyImageAction">房间背景图修改事件回调</param>
        public RoomPage(Room r, Action rrn, Action delAction, Action modifyImageAction)
        {
            bodyView = this;
            room = r;
@@ -34,6 +50,8 @@
                LoadEvent_SkipEditRoomPage();
            };
            ReloadRoomName = rrn;
            deleteAction = delAction;
            this.modifyImageAction = modifyImageAction;
        }
        /// <summary>
        /// 重载界面
@@ -48,7 +66,7 @@
        {
            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
            new TopViewDiv(bodyView,room.name).LoadTopView_RoomTop(ReloadRoomName, skipEditPageAction);
            new TopViewDiv(bodyView,room.roomName).LoadTopView_RoomTop(ReloadRoomName, skipEditPageAction);
            functionListView = new VerticalScrolViewLayout()
            {
@@ -59,14 +77,14 @@
            foreach (var function in room.GetRoomFunctions(false))
            {
                if (function.functionCategory == FunctionCategory.Sensor)
                if (MainPage.RoomNotSupportFunctionList.Contains( function.spk))
                {
                    continue;
                }
                functionListView.AddChidren(new Button() { Height = Application.GetRealHeight(12) });
                if (function.functionType == FunctionType.RGB || function.functionType == FunctionType.Dimmer)
                if (function.spk == SPK.LightRGB || function.spk == SPK.LightDimming)
                {
                    var functionDiv = new FunctionControlZone(function)
                    {
@@ -77,7 +95,7 @@
                        BorderColor = 0x00FFFFFF,
                        BorderWidth = 1,
                        BackgroundColor = CSS_Color.MainBackgroundColor,
                        Tag = function.functionCategory.ToString() + "-" + function.functionType + "-" + function.sid
                        Tag = function.spk + function.sid
                    };
                    functionDiv.LoadFunctionDiv();
                    functionListView.AddChidren(functionDiv);
@@ -93,13 +111,136 @@
                        BorderColor = 0x00FFFFFF,
                        BorderWidth = 1,
                        BackgroundColor = CSS_Color.MainBackgroundColor,
                        Tag = function.functionCategory.ToString() + "-" + function.functionType + "-" + function.sid
                        Tag = function.spk + function.sid
                    };
                    functionDiv.LoadFunctionDiv();
                    functionListView.AddChidren(functionDiv);
                }
            }
            foreach (var scene in room.GetRoomScenes(false))
            {
                functionListView.AddChidren(new Button() { Height = Application.GetRealHeight(12) });
                var sceneRow = new FrameLayout()
                {
                    Gravity = Gravity.CenterHorizontal,
                    Width = Application.GetRealWidth(343),
                    Height = Application.GetRealHeight(116),
                    Radius = (uint)Application.GetMinRealAverage(12),
                    BorderColor = 0x00FFFFFF,
                    BorderWidth = 1,
                    BackgroundColor = CSS_Color.MainBackgroundColor,
                    Tag = "Scene-" +  scene.sid
                };
                functionListView.AddChidren(sceneRow);
                LoadSceneRow(sceneRow, scene);
            }
        }
        /// <summary>
        /// 加载功能类型控制卡片
        /// </summary>
        public void LoadSceneRow(FrameLayout bodyDiv, Scene scene)
        {
          var  btnIcon = new Button()
            {
                X = Application.GetRealWidth(10),
                Y = Application.GetRealHeight(15),
                Width = Application.GetRealWidth(32),
                Height = Application.GetRealWidth(32),
            };
            bodyDiv.AddChidren(btnIcon);
            var btnName = new Button()
            {
                X = Application.GetRealWidth(8 + 10 + 32),
                Y = Application.GetRealHeight(10),
                Width = Application.GetRealWidth(200),
                Height = Application.GetRealHeight(24),
                Text = scene.name,
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.TextFontSize,
            };
            bodyDiv.AddChidren(btnName);
            var btnFromFloor = new Button()
            {
                X = Application.GetRealWidth(8 + 10 + 32),
                Y = Application.GetRealHeight(10 + 24),
                Width = Application.GetRealWidth(200),
                Height = Application.GetRealHeight(18),
                Text = scene.GetRoomListName(),
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.PromptingColor1,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
            };
            bodyDiv.AddChidren(btnFromFloor);
            var btnCollectionIcon = new Button()
            {
                X = Application.GetRealWidth(299),
                Y = Application.GetRealHeight(10),
                Width = Application.GetMinRealAverage(40),
                Height = Application.GetMinRealAverage(40),
                SelectedImagePath = "Collection/CollectionIcon.png",
                UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
                IsSelected = scene.collect
            };
            bodyDiv.AddChidren(btnCollectionIcon);
            //2020-12-16 如果是成员隐藏收藏功能
            //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
            //{
            //    bodyDiv.AddChidren(btnCollectionIcon);
            //}
            btnIcon.UnSelectedImagePath = "FunctionIcon/Scene/SceneIcon.png";
            if (scene.sceneType == SceneType.MovieScene)
            {
                var movieIcon = new Button()
                {
                    X = Application.GetRealWidth(52),
                    Y = Application.GetRealHeight(14),
                    Width = Application.GetRealWidth(16),
                    Height = Application.GetRealWidth(16),
                    UnSelectedImagePath = "FunctionIcon/Scene/MovieMark.png",
                };
                bodyDiv.AddChidren(movieIcon);
                btnName.X = Application.GetRealWidth(52 + 16);
            }
            //加载场景控制事件
            LoadEvent_ControlScene(btnName,btnFromFloor,bodyDiv,scene );
            LoadEvent_FunctionCollection(btnCollectionIcon,scene);
        }
        /// <summary>
        /// 加载功能收藏按钮事件
        /// </summary>
        void LoadEvent_FunctionCollection(Button btnCollectionIcon,Scene scene)
        {
            btnCollectionIcon.MouseUpEventHandler += (sender, e) =>
            {
                btnCollectionIcon.IsSelected = scene.collect = !btnCollectionIcon.IsSelected;
                scene.CollectScene();
            };
        }
        /// <summary>
        /// 加载场景控制事件
        /// </summary>
        void LoadEvent_ControlScene(Button btnName,Button btnFromFloor,FrameLayout bodyDiv, Scene scene)
        {
            EventHandler<MouseEventArgs> upEvent = (sender, e) => {
                DriverLayer.Control.Ins.ControlScene(scene);
                string msg = scene.name + Language.StringByID(StringId.AlreadyOpened);
                new PublicAssmebly().TipMsgAutoClose(msg, false);
            };
            btnName.MouseUpEventHandler = upEvent;
            btnFromFloor.MouseUpEventHandler = upEvent;
            bodyDiv.MouseUpEventHandler = upEvent;
        }
    }
}