黄学彪
2020-12-17 9f326f4000847e6167d8166fa2f6a66f53cb3734
ZigbeeApp/Shared/Phone/UserCenter/SharedContent/LookSharedListRoomForm.cs
@@ -18,13 +18,9 @@
        /// </summary>
        private VerticalFrameControl listView = null;
        /// <summary>
        /// 成员信息
        /// 成员ID
        /// </summary>
        private MemberInfoRes memberResult = null;
        /// <summary>
        /// 成员的分享数据
        /// </summary>
        private MemberShardInfoData memberShardInfo = null;
        private string ChildAccountId = string.Empty;
        #endregion
@@ -35,11 +31,9 @@
        /// </summary>
        /// <param name="i_memberResult">成员信息</param>
        /// <param name="i_memberShardInfo">成员的共享信息</param>
        public void ShowForm(MemberInfoRes i_memberResult, MemberShardInfoData i_memberShardInfo)
        public void ShowForm(string i_ChildAccountId)
        {
            this.memberResult = i_memberResult;
            this.memberShardInfo = i_memberShardInfo;
            this.memberShardInfo.SubAccountDistributedMark = this.memberResult.SubAccountDistributedMark;
            this.ChildAccountId = i_ChildAccountId;
            //设置头部信息
            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uShared2));
@@ -50,7 +44,7 @@
            btnAdd.ButtonClickEvent += (sender, e) =>
            {
                var form = new AddNewSharedListRoomForm();
                form.AddForm(this.memberResult, this.memberShardInfo);
                form.AddForm(this.ChildAccountId);
            };
            topFrameLayout.AddChidren(btnAdd);
            btnAdd.InitControl();
@@ -67,21 +61,18 @@
            //清空bodyFrame
            this.ClearBodyFrame();
            HdlThreadLogic.Current.RunThread(async () =>
            HdlThreadLogic.Current.RunThread(() =>
            {
                //获取成员的共享列表
                var result = await HdlShardLogic.Current.GetMemberShardContentListAndSetToLocation(memberShardInfo);
                //初始化成员的共享列表
                var result = HdlShardLogic.Current.InitMemberShardContentListAndSetToLocation(this.ChildAccountId);
                if (result == false)
                {
                    //显示重新加载的界面
                    this.ShowReLoadView();
                    return;
                }
                //从本地获取成员的分享列表
                HdlShardLogic.Current.GetMemberShardContentListFromLocal(memberShardInfo);
                //初始化区域列表
                this.InitAreaListRow();
            });
        }
@@ -94,19 +85,23 @@
        /// </summary>
        private void InitAreaListRow()
        {
            if (memberShardInfo.dicShardRoom.Count == 0)
            var dicShardRoom = HdlShardLogic.Current.GetShardRoomFromMemory();
            if (dicShardRoom.Count == 0)
            {
                HdlThreadLogic.Current.RunMain(() =>
                {
                    //显示没有分享数据模式
                    this.ShowNotShardMode();
                    bodyFrameLayout.RemoveAll();
                    //还没有共享区域给成员{0}可点击右上角“+”添加
                    string msg = Language.StringByID(R.MyInternationalizationString.uNotShardComtentMsg);
                    string[] Arry = msg.Split(new string[] { "{0}" }, StringSplitOptions.RemoveEmptyEntries);
                    this.ShowNotDataImage(bodyFrameLayout, Arry, "Item/NotShardPic.png", 383, 279);
                });
            }
            else
            {
                //合并同一楼层的房间
                var dicGroup = new Dictionary<string, List<Common.Room>>();
                foreach (var room in memberShardInfo.dicShardRoom.Values)
                foreach (var room in dicShardRoom.Values)
                {
                    if (dicGroup.ContainsKey(room.FloorId) == false)
                    {
@@ -114,6 +109,9 @@
                    }
                    dicGroup[room.FloorId].Add(room);
                }
                //获取分享的楼层(排序)
                var dicSortFloor = HdlShardLogic.Current.GetShardFloorFormMemory();
                dicSortFloor = HdlRoomLogic.Current.GetFloorSortList(dicSortFloor);
                HdlThreadLogic.Current.RunMain(() =>
                {
@@ -123,22 +121,22 @@
                    listView.Height = bodyFrameLayout.Height;
                    bodyFrameLayout.AddChidren(listView);
                    //排序楼层
                    var dicSort = Common.Room.CurrentRoom.GetFloorSortList();
                    foreach (var floorId in dicSort.Keys)
                    foreach (var floorId in dicSortFloor.Keys)
                    {
                        if (dicGroup.ContainsKey(floorId) == true)
                        {
                            //添加各自楼层的房间列表
                            this.AddRoomListRow(floorId, dicGroup[floorId]);
                            this.AddRoomListRow(floorId, dicSortFloor[floorId], dicGroup[floorId]);
                            dicGroup.Remove(floorId);
                        }
                    }
                    //添加各自楼层的房间列表(这里是指定楼层并不在排序记录里面的)
                    foreach (var floorId in dicGroup.Keys)
                    {
                        this.AddRoomListRow(floorId, dicGroup[floorId]);
                        this.AddRoomListRow(floorId, string.Empty, dicGroup[floorId]);
                    }
                    //调整桌布高度
                    listView.AdjustTableHeight();
                });
            }
        }
@@ -147,25 +145,25 @@
        /// 添加房间列表行
        /// </summary>
        /// <param name="listRoom"></param>
        private void AddRoomListRow(string floorId, List<Common.Room> listRoom)
        private void AddRoomListRow(string floorId, string floorName, List<Common.Room> listRoom)
        {
            var frameBack = new FrameListControl(29);
            frameBack.BackgroundColor = UserCenterColor.Current.White;
            frameBack.Height = 10;
            this.listView.AddChidrenFrame(frameBack);
            this.listView.AddChidren(frameBack);
            //楼层
            if (string.IsNullOrEmpty(floorId) == false)
            {
                var btnFloor = new NormalViewControl(800, 60, true);
                btnFloor.X = ControlCommonResourse.XXLeft;
                btnFloor.X = HdlControlResourse.XXLeft;
                btnFloor.Y = Application.GetRealHeight(52);
                btnFloor.TextColor = UserCenterColor.Current.TextColor2;
                btnFloor.TextSize = 15;
                frameBack.AddChidren(btnFloor);
                if (memberShardInfo.dicShardFloor.ContainsKey(floorId) == true)
                if (floorName != string.Empty)
                {
                    btnFloor.Text = memberShardInfo.dicShardFloor[floorId];
                    btnFloor.Text = floorName;
                }
                else if (floorId == "Other")
                {
@@ -178,51 +176,29 @@
                }
            }
            //房间排序
            var listSortRoom = Common.Room.CurrentRoom.GetFloorSortRoom(floorId, false);
            var listSort = new HashSet<string>();
            foreach (var room in listSortRoom)
            var listSortRoom = HdlRoomLogic.Current.SortRoom(listRoom);
            for (int i = 0; i < listSortRoom.Count; i++)
            {
                //收集现有的排序ID
                listSort.Add(room.Id);
            }
            var dicRoom = new Dictionary<string, Common.Room>();
            foreach (var room in listRoom)
            {
                //保存需要显示出来的房间
                dicRoom[room.Id] = room;
                if (listSort.Contains(room.Id) == false)
                {
                    //不再排序记录内,则在尾部追加
                    listSort.Add(room.Id);
                }
            }
            foreach(var roomId in listSort)
            {
                if (dicRoom.ContainsKey(roomId) == false)
                {
                    continue;
                }
                var room = dicRoom[roomId];
                dicRoom.Remove(roomId);
                var room = listSortRoom[i];
                var frameRow = new RowLayoutControl(frameBack.rowSpace / 2);
                frameBack.AddChidren(frameRow);
                //图标
                var btnIcon = frameRow.frameTable.AddLeftIcon(81);
                btnIcon.UnSelectedImagePath = "Item/RoomIcon.png";
                btnIcon.UnSelectedImagePath = "Item/RoomIconSelected.png";
                //名称
                var btnName = frameRow.frameTable.AddLeftCaption(room.Name, 600);
                btnName.TextSize = 15;
                //右箭头
                frameRow.frameTable.AddRightArrow();
                if (dicRoom.Count != 0)
                if (i != listSortRoom.Count - 1)
                {
                    //底线
                    frameRow.frameTable.AddBottomLine();
                }
                frameRow.frameTable.ButtonClickEvent += (sender, e) =>
                {
                    var form = new LookSharedContentForm();
                    form.AddForm(room, this.ChildAccountId);
                };
                //删除
@@ -257,34 +233,10 @@
        /// <param name="room">指定要删除的共享区域</param>
        public void DoDeleteShardContentByRoom(Common.Room room)
        {
            //获取全部设备
            var listDevice = new List<CommonDevice>();
            foreach (var deviceUi in room.DeviceUIList)
            {
                var device = deviceUi.CommonDevice;
                if (device == null)
                {
                    string deviceFile = deviceUi.FileName.Replace("DeviceUI_", string.Empty);
                    var byteData = HdlShardLogic.Current.GetShardFileContent(deviceFile);
                    if (byteData == null)
                    {
                        continue;
                    }
                    device = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice>(System.Text.Encoding.UTF8.GetString(byteData));
                }
                listDevice.Add(device);
            }
            //获取全部场景
            var listScene = new List<Common.SceneUI>();
            foreach (var sceneUi in room.SceneUIList)
            {
                listScene.Add(sceneUi);
            }
            HdlThreadLogic.Current.RunThread(async () =>
            HdlThreadLogic.Current.RunThread(() =>
            {
                //执行删除
                var result = await HdlShardLogic.Current.DoDeleteSharedContent(memberShardInfo, room, listDevice, listScene);
                var result = HdlShardLogic.Current.DeleteSharedRoom(this.ChildAccountId, new List<Common.Room> { room });
                if (result == true)
                {
                    HdlThreadLogic.Current.RunMain(() =>
@@ -308,45 +260,6 @@
            //重新刷新界面
            this.InitMiddleFrame();
            return 1;
        }
        #endregion
        #region ■ 一般方法___________________________
        /// <summary>
        /// 显示没有分享数据模式
        /// </summary>
        private void ShowNotShardMode()
        {
            bodyFrameLayout.RemoveAll();
            //图片
            var btnPic = new PicViewControl(383, 279);
            btnPic.Gravity = Gravity.CenterHorizontal;
            btnPic.Y = Application.GetRealHeight(498);
            btnPic.UnSelectedImagePath = "Item/NotShardPic.png";
            bodyFrameLayout.AddChidren(btnPic);
            //还没有共享区域给成员{0}可点击右上角“+”添加
            string msg = Language.StringByID(R.MyInternationalizationString.uNotShardComtentMsg);
            string[] Arry = msg.Split(new string[] { "{0}" }, StringSplitOptions.RemoveEmptyEntries);
            var btnMsg1 = new NormalViewControl(bodyFrameLayout.Width, Application.GetRealHeight(50), false);
            btnMsg1.Y = Application.GetRealHeight(962);
            btnMsg1.TextAlignment = TextAlignment.Center;
            btnMsg1.TextSize = 12;
            btnMsg1.TextColor = UserCenterColor.Current.TextGrayColor1;
            btnMsg1.Text = Arry[0];
            bodyFrameLayout.AddChidren(btnMsg1);
            if (Arry.Length > 1)
            {
                var btnMsg2 = new NormalViewControl(bodyFrameLayout.Width, Application.GetRealHeight(50), false);
                btnMsg2.Y = btnMsg1.Bottom;
                btnMsg2.TextAlignment = TextAlignment.Center;
                btnMsg2.TextSize = 12;
                btnMsg2.TextColor = UserCenterColor.Current.TextGrayColor1;
                btnMsg2.Text = Arry[1];
                bodyFrameLayout.AddChidren(btnMsg2);
            }
        }
        #endregion