WJC
2019-12-30 f1c3921b08bb22ac6f5db22d620e01d7e8e5c49f
ZigbeeApp/Shared/Phone/Device/Room/RoomManagement.cs
old mode 100644 new mode 100755
@@ -1,208 +1,189 @@
using System;
using Shared.Common;
using Shared.Phone.Device.Category;
using Shared.Phone.Device.CommonForm;
using Shared.Phone.UserView;
namespace Shared.Phone.Device.Room
{
    public class RoomManagement : FrameLayout
    {
        public  Action action;
        #region ◆ 变量____________________________
        /// <summary>
        /// bodyFrameLayout
        /// </summary>
        private FrameLayout bodyFrameLayout;
        private Button floorBtn;
        public FrameLayout itemView;
        #endregion
        public Action action;
        public override void RemoveFromParent()
        {
            //更新界面
            //action?.Invoke();
            base.RemoveFromParent();
        }
        /// <summary>
        /// 房间管理
        /// </summary>
        public void Show()
        {
            RoomPage();
            AddTop();
            AddBodyView(Config.Instance.Home.CurrentFloorId);
        }
        public override void RemoveFromParent()
        #region Add____________________________________
        /// <summary>
        /// AddTop
        /// </summary>
        public void AddTop()
        {
            //更新界面
            action();
            base.RemoveFromParent();
            var top = new TopFrameLayout();
            AddChidren(top);
            top.InitTopview();
            top.SetTopTitle(R.MyInternationalizationString.RoomList);
            top.backButton.MouseUpEventHandler += (sender, e) =>
            {
                CommonPage.Instance.CloseLeftMenu();
            };
            floorBtn = new Button()
            {
                X = Application.GetRealWidth(750),
                Width = Application.GetRealWidth(200),
                Height = Application.GetRealHeight(60),
                Gravity = Gravity.CenterVertical,
                TextAlignment = TextAlignment.CenterRight,
                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
            };
            var selectFloorBtn = new Button()
            {
                X = Application.GetRealWidth(950),
                Width = Application.GetMinRealAverage(69),
                Height = Application.GetMinRealAverage(69),
                Gravity = Gravity.CenterVertical,
                UnSelectedImagePath = "Item/Drop_Down.png"
            };
            floorBtn.Text = Config.Instance.Home.GetCurrentFloorName;
            top.topView.AddChidren(floorBtn);
            top.topView.AddChidren(selectFloorBtn);
            selectFloorBtn.MouseUpEventHandler += SelectedFloor_MouseUpEventHandler;
            floorBtn.MouseUpEventHandler += SelectedFloor_MouseUpEventHandler;
        }
        /// <summary>
        /// 选择楼层
        /// </summary>
        /// <param name="sender">Sender.</param>
        /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
        private void SelectedFloor_MouseUpEventHandler(object sender, MouseEventArgs mouseEventArgs)
        {
            var floors = new SelectFloor();
            AddChidren(floors);
            floors.Init(599, 161,Direction.Right);
            floors.FloorAction += (floorId) =>
            {
                floorBtn.Text = Config.Instance.Home.GetFloorNameById(floorId);
                AddBodyView(floorId);
            };
        }
        /// <summary>
        /// AddBodyView
        /// </summary>
        public void AddBodyView(string floorId)
        {
            bodyFrameLayout = new FrameLayout()
            {
                Y = Application.GetRealHeight(184),
                Height = Application.GetRealHeight(1737),
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor,
            };
            AddChidren(bodyFrameLayout);
            var roomScrolView = new VerticalScrolViewLayout { };
            bodyFrameLayout.AddChidren(roomScrolView);
            var roomList = Common.Room.CurrentRoom.GetRoomsByFloorId(floorId);
            for (int i = 0; i < roomList.Count+1; i++)
            {
                int xx = 43 + i % 2 * (20 + 487);
                int yy = 0;
                if (i == 0 || i == 1)
                {
                    if (i % 2 == 0)
                    {
                        itemView = new FrameLayout()
                        {
                            Height = Application.GetRealHeight(354 + 58)
                        };
                        roomScrolView.AddChidren(itemView);
                    }
                    yy = 58;
                }
                else if (i % 2 == 0)
                {
                    itemView = new FrameLayout()
                    {
                        Height = Application.GetRealHeight(354)
                    };
                    roomScrolView.AddChidren(itemView);
                }
                if (i< roomList.Count)
                {
                    var room = roomList[i];
                    var roomView = new RoomMainView(xx, yy);
                    itemView.AddChidren(roomView);
                    roomView.Init();
                    roomView.SetRoomName(room.Name);
                    roomView.SetRoomIcon(room.BackgroundImage);
                }
                else
                {
                    var roomView = new RoomNoNameMainView(xx, yy);
                    itemView.AddChidren(roomView);
                    roomView.Init();
                    roomView.Icon.MouseUpEventHandler += ShowUnallocatedRoom_MouseUpEvent;
                    roomView.RoomNameButton.MouseUpEventHandler += ShowUnallocatedRoom_MouseUpEvent;
                    roomView.iconFL.MouseUpEventHandler += ShowUnallocatedRoom_MouseUpEvent;
                }
            }
        }
        #endregion
        /// <summary>
        /// 房间管理界面
        /// </summary>
        void RoomPage()
        {
            RemoveAll();
            #region topview
            var topBGView = new FrameLayout()
            {
                Height = Application.GetRealHeight(CommonPage.Navigation_Height),
                BackgroundColor = ZigbeeColor.Current.GXCTopViewBackgroundColor
            };
            AddChidren(topBGView);
            var topView = new FrameLayout()
            {
                Y = Application.GetRealHeight(CommonPage.NavigationTitle_Y),
                Height = Application.GetRealHeight(CommonPage.Navigation_Height - CommonPage.NavigationTitle_Y),
                BackgroundColor = ZigbeeColor.Current.GXCTopViewBackgroundColor,
            };
            AddChidren(topView);

            var title = new Button()
            {
                TextAlignment = TextAlignment.Center,
                TextID=R.MyInternationalizationString.RoomList,
                TextSize = 20,
                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                Width = Application.GetRealWidth(CommonPage.AppRealWidth - 500),
                Gravity = Gravity.CenterHorizontal
            };
            topView.AddChidren(title);
            BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
        }
            var back = new Device.CommonForm.BackButton() { };
            topView.AddChidren(back);
            back.MouseUpEventHandler += (sender, e) =>
            {
                this.RemoveFromParent();
            };
            var addRoomItemBtn = new Device.CommonForm.SelectedStatuButton()
            {
                Width = Application.GetMinRealAverage(100),
                Height = Application.GetMinRealAverage(100),
                UnSelectedImagePath = "Item/Add.png",
                SelectedImagePath="Item/AddSelected.png",
                X = Application.GetRealWidth(1080 - 150),
                Gravity = Gravity.CenterVertical
            };
            topView.AddChidren(addRoomItemBtn);
            //Action action = RoomPage;
            addRoomItemBtn.MouseUpEventHandler += (sender, e) =>
            {
                //AddOrUpdateRoom(action);
                var addRoom = new AddRoom();
                Shared.Phone.UserView.HomePage.Instance.AddChidren(addRoom);
                Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
                addRoom.action = () =>
                {
                    Show();
                };
                AddRoom.OldBackgroundImagePath = string.Empty;
                addRoom.Show("");
            };
            #endregion
            var middleHomePage = new FrameLayout()
            {
                Width = LayoutParams.MatchParent,
                Height = Application.GetRealHeight(CommonPage.AppRealHeight - CommonPage.Navigation_Height),
                Y = topView.Bottom,
                BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor,
            };
            this.AddChidren(middleHomePage);
            var RoomBodyView = new VerticalScrolViewLayout()
            {
                Height = Application.GetRealHeight(CommonPage.AppRealHeight - CommonPage.Navigation_Height),
                BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor,
            };
            middleHomePage.AddChidren(RoomBodyView);
            foreach (var roomFilePath in Config.Instance.Home.RoomFilePathList)
            {
                var room = Shared.Common.Room.GetRoomByFilePath(roomFilePath);
                if (room == null)
                {
                    continue;
                }
                var roomFL = new FrameLayout()
                {
                    Height = Application.GetRealHeight(570),
                    Width = Application.GetRealWidth(CommonPage.AppRealWidth - CommonPage.XLeft * 2),
                    BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor,
                    Gravity = Gravity.CenterHorizontal,
                    Radius = CommonPage.BigFormRadius,
                };
                RoomBodyView.AddChidren(roomFL);
                var roomRowView = new RowLayout()
                {
                    Y = Application.GetRealHeight(20),
                    Height = Application.GetMinRealAverage(550),
                    Width = Application.GetRealWidth(CommonPage.AppRealWidth - CommonPage.XLeft * 2),
                    BackgroundColor =ZigbeeColor.Current.GXCBackgroundColor,
                    LineColor= ZigbeeColor.Current.GXCBackgroundColor,
                    Radius = CommonPage.BigFormRadius,
                    Gravity = Gravity.CenterHorizontal
                };
                roomFL.AddChidren(roomRowView);
                var backGroundBtn = new Button()
                {
                    UnSelectedImagePath = room.BackgroundImage,
                    Radius = CommonPage.BigFormRadius,
                    Height = Application.GetMinRealAverage(550),
                    Width = Application.GetRealWidth(CommonPage.AppRealWidth - CommonPage.XLeft * 2),
                };
                roomRowView.AddChidren(backGroundBtn);
                var hardBlackBG = new FrameLayout()
                {
                    Radius = CommonPage.BigFormRadius,
                    BackgroundColor = ZigbeeColor.Current.GXCBlack70Color
                };
                roomRowView.AddChidren(hardBlackBG);
                var btnRoomName = new Button()
                {
                    Width = Application.GetRealWidth(500),
                    Height=Application.GetRealHeight(200),
                    Text = room.Name,
                    TextAlignment = TextAlignment.Center,
                    TextSize=25,
                    TextColor=ZigbeeColor.Current.GXCTextWhiteColor,
                    Gravity=Gravity.Center
                };
                roomRowView.AddChidren(btnRoomName);
                var btnEditRoom = new Device.CommonForm.SelectedStatuButton()
                {
                    X = roomRowView.Width- Application.GetRealWidth(100+30),
                    Y=backGroundBtn.Y,
                    Width = Application.GetMinRealAverage(110),
                    Height=Application.GetMinRealAverage(110),
                    UnSelectedImagePath = "Room/More.png",
                    SelectedImagePath="Room/MoreSelected.png",
                };
                roomRowView.AddChidren(btnEditRoom);
                var delBtn = new Shared.Phone.Device.CommonForm.RowLayoutDeleteButton();
                //第一个是房间喜爱,不允许滑动删除  分享过来的也不允许删除
                if (!room.IsLove || !room.IsSharedRoom){
                    roomRowView.AddRightView(delBtn);
                }
                //删除住宅
                delBtn.MouseUpEventHandler += (sender, e) =>
                {
                    var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.ConfirmDeleteThisRoom), Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
                    alert.Show();
                    alert.ResultEventHandler += (send, ee) =>
                    {
                        if(ee)
                        {
                            Shared.Common.Room.CurrentRoom.Remove(roomFilePath);
                            Show();
                        }
                    };
                };
                btnEditRoom.MouseUpEventHandler += (sender, e) =>
                {
                    //AddOrUpdateRoom(action, roomFilePath);
                    var addRoom = new AddRoom();
                    Shared.Phone.UserView.HomePage.Instance.AddChidren(addRoom);
                    Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
                    addRoom.action = () =>
                    {
                        Show();
                    };
                    AddRoom.OldBackgroundImagePath = string.Empty;
                    addRoom.Show(roomFilePath);
                };
                roomRowView.MouseUpEventHandler += (sender, e) =>
                {
                    //var userRoom = new RoomAddDevice();
                    //this.AddChidren(userRoom);
                    //userRoom.Show(roomFilePath);
                };
            }
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="mouseEventArgs"></param>
        private void ShowUnallocatedRoom_MouseUpEvent(object sender,MouseEventArgs mouseEventArgs)
        {
            var unalloctedRoom = new UnallocatedRoom();
            HomePage.Instance.AddChidren(unalloctedRoom);
            HomePage.Instance.PageIndex += 1;
            unalloctedRoom.Show();
        }
    }
}
}