xm
2020-07-14 d87400af518ebc9274f4447f06476959c3aa5102
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlControlLogic.cs
@@ -32,41 +32,6 @@
        #endregion
        #region ■ 子控件的Y轴坐标____________________
        /// <summary>
        /// 指定位置类型获取Rowlayout的子控件的Y轴坐标(请确保子控件不大于父容器)
        /// </summary>
        /// <param name="fatherCtrHeight">父控件的真实高度</param>
        /// <param name="ctrHeight">子控件的真实高度</param>
        /// <param name="alignment">位置对齐方式</param>
        /// <param name="Space">上下间的空白间距,省略时,取行控件共通变量的值。设置为-1时,不计算空白间距</param>
        /// <returns></returns>
        public int GetControlChidrenYaxis(int fatherCtrHeight, int ctrHeight, UViewAlignment alignment, int Space = 0)
        {
            if (Space < 0)
            {
                //不计算间距值
                Space = 0;
            }
            if (alignment == UViewAlignment.Center)
            {
                return fatherCtrHeight / 2 - ctrHeight / 2;
            }
            else if (alignment == UViewAlignment.Top)
            {
                return (fatherCtrHeight / 2 - Space / 2) / 2 - ctrHeight / 2;
            }
            else
            {
                int top = fatherCtrHeight / 2 + Space / 2;
                return top + (fatherCtrHeight - top) / 2 - ctrHeight / 2;
            }
        }
        #endregion
        #region ■ 计算图片真实大小___________________
        /// <summary>
@@ -80,5 +45,150 @@
        }
        #endregion
        #region ■ 显示底部弹窗的房间列表_____________
        /// <summary>
        /// 显示底部弹窗的房间列表(当还没有房间时,会返回false)
        /// </summary>
        /// <param name="RoomKey">默认选择的房间主键</param>
        /// <param name="titleText">标题信息</param>
        /// <param name="SelectRoomEvent">确认选择房间的回调函数(房间ID,房间名(会拼上楼层))</param>
        public bool ShowBottomListRoomView(string RoomKey, string titleText, Action<string, string> SelectRoomEvent)
        {
            //楼层列表名字
            var listFloorName = new List<string>();
            //楼层列表主键
            var listFloorKeys = new List<string>();
            //房间名字
            var listRoomName = new List<List<string>>();
            //房间主键
            var listRoomKeys = new List<List<string>>();
            //初始化房间列表数据
            bool result = this.InitRoomListData(ref listFloorName, ref listFloorKeys, ref listRoomName, ref listRoomKeys);
            if (result == false)
            {
                return false;
            }
            var room = HdlRoomLogic.Current.GetRoomById(RoomKey);
            int index1 = room != null ? listFloorKeys.IndexOf(room.FloorId) : 0;
            if (index1 == -1) { index1 = 0; }
            int index2 = listRoomKeys[index1].IndexOf(RoomKey);
            if (index2 == -1) { index2 = 0; }
            if (listFloorKeys.Count == 0)
            {
                //无楼层模式
                PickerView.Show(listRoomName[0], (value) =>
                {
                    RoomKey = listRoomKeys[0][value];
                    string roomName = string.Empty;
                    if (RoomKey != string.Empty)
                    {
                        //房间
                        roomName = listRoomName[0][value];
                    }
                    else
                    {
                        roomName = Language.StringByID(R.MyInternationalizationString.uDeviceNotAssignedRoom);
                    }
                    SelectRoomEvent?.Invoke(RoomKey, roomName);
                }, index2, titleText,
                Language.StringByID(R.MyInternationalizationString.uFinish),
                Language.StringByID(R.MyInternationalizationString.uCancel));
            }
            else
            {
                //有楼层模式
                PickerView.ShowSecondary(listFloorName, listRoomName, (value1, value2) =>
                {
                    RoomKey = listRoomKeys[value1][value2];
                    string roomName = string.Empty;
                    if (RoomKey != string.Empty)
                    {
                        //楼层+房间
                        roomName = listFloorName[value1] + " " + listRoomName[value1][value2];
                    }
                    else
                    {
                        roomName = Language.StringByID(R.MyInternationalizationString.uDeviceNotAssignedRoom);
                    }
                    SelectRoomEvent?.Invoke(RoomKey, roomName);
                }, index1, index2, titleText,
                Language.StringByID(R.MyInternationalizationString.uFinish),
                Language.StringByID(R.MyInternationalizationString.uCancel));
            }
            return true;
        }
        /// <summary>
        /// 初始化房间列表数据
        /// </summary>
        /// <param name="listFloorName">楼层列表名字</param>
        /// <param name="listFloorKeys">楼层列表主键</param>
        /// <param name="listRoomName">房间名字</param>
        /// <param name="listRoomKeys">房间主键</param>
        private bool InitRoomListData(ref List<string> listFloorName, ref List<string> listFloorKeys, ref List<List<string>> listRoomName, ref List<List<string>> listRoomKeys)
        {
            var dicFloor = HdlRoomLogic.Current.GetFloorSortList();
            if (dicFloor.Count == 0)
            {
                //第一位默认添加未分配
                var listKeys = new List<string>() { "" };
                var listName = new List<string>() { Language.StringByID(R.MyInternationalizationString.uUndistributed) };
                //房间名字和主键收集
                var listRoom = HdlRoomLogic.Current.GetFloorSortRoom(string.Empty, false);
                foreach (var myRoom in listRoom)
                {
                    listName.Add(myRoom.Name);
                    listKeys.Add(myRoom.Id);
                }
                listRoomName.Add(listName);
                listRoomKeys.Add(listKeys);
            }
            else
            {
                //第一位默认添加未分配(未分配放在楼层那个菜单)
                var listKeys = new List<string>() { "" };
                var listName = new List<string>() { "" };
                listRoomName.Add(listName);
                listRoomKeys.Add(listKeys);
                listFloorKeys.Add("");
                listFloorName.Add(Language.StringByID(R.MyInternationalizationString.uUndistributed));
                foreach (string fKeys in dicFloor.Keys)
                {
                    var listRoom = HdlRoomLogic.Current.GetFloorSortRoom(fKeys, false);
                    if (listRoom.Count > 0)
                    {
                        //楼层名字和主键收集
                        listFloorKeys.Add(fKeys);
                        listFloorName.Add(dicFloor[fKeys]);
                        //房间名字和主键收集
                        listName = new List<string>();
                        listKeys = new List<string>();
                        foreach (var myRoom in listRoom)
                        {
                            listName.Add(myRoom.Name);
                            listKeys.Add(myRoom.Id);
                        }
                        listRoomName.Add(listName);
                        listRoomKeys.Add(listKeys);
                    }
                }
            }
            //没有建立房间
            if (listFloorKeys.Count == 0 && listRoomKeys.Count == 0)
            {
                return false;
            }
            return true;
        }
        #endregion
    }
}